Загрузка данных
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