а у меня так получилось
Код:
function_block WaterLevel
var_input
rCurrent_lvl: real; //тек. уровень
iD_AlarmLamp_high_on: real;
iD_AlarmLamp_high_off: real;
iD_Pump1_Off: real;
iD_Pump1_On: real;
iD_Pump2_Off: real;
iD_Pump2_On: real;
iD_Pumps_vmeste_Off: real;
iD_Pumps_vmeste_On: real;
iD_AlarmLamp_low_on: real;
iD_AlarmLamp_low_off: real;
end_var
var_output
xPump1: BOOL;
xPump2: BOOL;
xAlarmUp: BOOL;
xAlarmLow: BOOL;
end_var
var
xFlag1: SYS.RS;
xFlag2: SYS.RS;
xFlag3: SYS.RS;
end_var
xFlag1(S := rCurrent_lvl < iD_Pump1_On, R := rCurrent_lvl >= iD_Pump1_Off);
xFlag2(S := rCurrent_lvl < iD_Pump2_On, R := rCurrent_lvl >= iD_Pump2_Off);
xFlag3(S := rCurrent_lvl < iD_Pumps_vmeste_On, R := rCurrent_lvl >= iD_Pumps_vmeste_Off);
xPump1 := (xFlag1.Q and not xFlag2.Q) or xFlag3.Q;
xPump2 := xFlag2.Q or xFlag3.Q;
xAlarmUp := xPump1 and xPump2;
end_function_block