Загрузка данных



IF BlinkState_05S THEN
 C := NOT(C);
END_IF
 
IF Stop OR Flow_alarm OR Pump_fault OR NOT(phase_ok) THEN // остановка аварийной кнопкой
 PV.On_chiller:= FALSE;
END_IF

Alarm_comp := (pressure_real > 30) OR NOT(Pressure_low) OR NOT(Pressure_up);
 
IF PV.On_chiller THEN                                    // включение с панели
     On_sw_chiller:="СТОП";
	 Pump_on:=TRUE;
ELSE On_sw_chiller:="ПУСК";	
	 Pump_on:=FALSE;
END_IF

Time_pump                                               //Задержка ошибки реле протока.
        (IN := Pump_on,PT := PV.Pump_time);
IF Time_pump.Q THEN
	Flow_alarm := NOT(Flow);
	Time_pump(IN := FALSE);
END_IF

IF PV.On_chiller THEN
 
  Water_PID(                                          //Пид регулятор воды
	ACT:= temp_in, 
	SET:= Pv.temp, 
	SUP:= 0.1, 
	OFS:= 0, 
	M_I:= , 
	MAN:= , 
	RST:= NOT (PV.On_chiller), 
	KP:= Water_KP, 
	TN:= Water_KI, 
	TV:= Water_KD,  
	LL:= Water_LL, 
	LH:= Water_LH, 
	Y=> Water_PI_out, 
	DIFF=> , 
	LIM=> Water_LIM);
    Water_PI_real_out := Water_LH - Water_PI_out;
	
	Pump1_time := PV.Comp_on_time;
    Pump2_time := PV.Comp_Comp_time;

 IF NOT(Alarm_comp) THEN
  IF Water_PI_real_out <= 5 THEN                      // выключение - standby
	Comp_1_on := FALSE;
	Comp_2_on := FALSE;
	Vent_1_on := FALSE;
	Vent_2_on := FALSE;
  END_IF	
  IF 5 < Water_PI_real_out AND Water_PI_real_out < 90 THEN // работа одним компрессором
	Comp_1_on:= TRUE;
	Comp_2_on := FALSE;
  END_IF
  IF 90 <= Water_PI_real_out AND Water_PI_real_out <= 100 THEN // работа двумя компрессорами
	Comp_1_on := TRUE;
	Comp_2_on := TRUE;
  END_IF
 ELSE
	Comp_1_on := FALSE;
	Comp_2_on := FALSE;
 END_IF
 
  Valve // таймер открытия клапана
        (
         IN := Comp_1_on OR Comp_2_on,
         PT := PV.Comp_on_time - PV.Valve_on_time
         );
         IF Valve.Q THEN
            Valve_on := TRUE;
		 END_IF	

  Time_comp_1_RUN // таймер миним простоя
        (
         IN := Comp_1_on,
         PT := Pump1_time
         );
         IF Time_comp_1_RUN.Q THEN
			Time_comp_1_STOP(IN := FALSE);
            Comp_1_RUN := TRUE;
		 END_IF
		 
  Time_comp_2_RUN // таймер миним простоя
        (
         IN := Comp_2_on,
         PT := Pump2_time
         );
         IF Time_comp_2_RUN.Q THEN
			Time_comp_2_STOP(IN := FALSE);
            Comp_2_RUN := TRUE;
		 END_IF
		 
  Time_comp_1_STOP // таймер миним работы
        (
         IN := NOT(Comp_1_on),
         PT := PV.Comp_off_time
         );
         IF Time_comp_1_STOP.Q THEN
			Time_comp_1_RUN(IN := FALSE);
            Comp_1_RUN := FALSE;
		 END_IF
		
  Time_comp_2_STOP // таймер миним работы
        (
         IN := NOT(Comp_2_on),
         PT := PV.Comp_off_time
         );
         IF Time_comp_2_STOP.Q THEN
			Time_comp_2_RUN(IN := FALSE);
            Comp_2_RUN := FALSE;
		 END_IF
		 
  IF Alarm_comp THEN    // отключение компрессоров по ошибке давления
	     	Time_comp_1_RUN(IN := FALSE);
            Comp_1_RUN := FALSE; 
			Time_comp_2_RUN(IN := FALSE);
            Comp_2_RUN := FALSE; 
  END_IF
		 
  Valve_TRIG(CLK :=  NOT(Comp_1_RUN) AND NOT(Comp_2_RUN));
  IF Valve_TRIG.Q THEN 
	  Valve(IN := FALSE);
	  Valve_on := FALSE;
  END_IF
  
  Valve_RES_timer(IN := Valve_RES,PT := T#5S);
  Valve_RESET(IN := Valve_RES_timer.Q,PT := T#3S);//сброс клапана кнопкой
  Valve_RESET_TRIG(CLK := Valve_RESET.Q);
  IF Valve_RESET.Q THEN
       Valve_on := TRUE;
  END_IF	
  IF Valve_RESET_TRIG.Q THEN
	   Valve_on := FALSE;
	   Valve_RES := FALSE;
  END_IF
  

		 
  Vent_PID(               //Пид регулятор вентиляторов
	ACT:= pressure_real, 
    SET := Pv.pressure,
	SUP:= 0.1, 
	OFS:= 0, 
	M_I:= , 
	MAN:= , 
	RST:= NOT (Comp_1_RUN OR Comp_2_RUN), 
	KP:= Vent_KP, 
	TN:= Vent_KI, 
	TV:= Vent_KD,  
	LL:= Vent_LL, 
	LH:= Vent_LH, 
	Y=> Vent_PI_out, 
	DIFF=> , 
	LIM=> Vent_LIM);	
    Vent_PI_real_out := Vent_LH - Vent_PI_out;
	Vent_PI_INT_out := TO_UINT (Vent_PI_real_out);
	Vent_1_on := Comp_1_RUN OR Comp_2_RUN;
	Vent_2_on := Comp_1_RUN OR Comp_2_RUN;
	
	
  // Расчет наработки компрессоров
  Time_comp1(IN := Comp_1_run, PT := T#1M);
  Time_comp1_TRIG(CLK :=  Time_comp1.Q);
  IF Time_comp1_TRIG.Q THEN
         PV.WorkTime_drill_comp1_MIN := PV.WorkTime_drill_comp1_MIN + 1; // наработка насос 1, мин
         Time_comp1(IN := FALSE);
  END_IF 
  IF  PV.WorkTime_drill_comp1_MIN = 1440 THEN 
	  PV.WorkTime_drill_comp1_D := PV.WorkTime_drill_comp1_D +1;         // наработка насос 1, дни
	  PV.WorkTime_drill_comp1_MIN := 0;
  END_IF
  
  Time_comp2(IN := Comp_2_run, PT := T#1M);
  Time_comp2_TRIG(CLK :=  Time_comp2.Q);
  IF Time_comp2_TRIG.Q THEN
         PV.WorkTime_drill_comp2_MIN := PV.WorkTime_drill_comp2_MIN + 1; // наработка насос 2, мин
         Time_comp2(IN := FALSE);
  END_IF 
  IF  PV.WorkTime_drill_comp2_MIN = 1440 THEN 
	  PV.WorkTime_drill_comp2_D := PV.WorkTime_drill_comp2_D +1;         // наработка насос 2, дни
	  PV.WorkTime_drill_comp2_MIN := 0;
  END_IF
ELSE
Comp_1_on := FALSE;
Comp_2_on := FALSE;
Vent_1_on := FALSE;
Vent_2_on := FALSE;
Comp_1_RUN := FALSE;
Comp_2_RUN := FALSE;
Valve_on := FALSE;
Time_comp_1_STOP(IN := FALSE); 
Time_comp_1_RUN(IN := FALSE); 
Time_comp_2_STOP(IN := FALSE); 
Time_comp_2_RUN(IN := FALSE);
Valve(IN := FALSE);
END_IF