FUNCTION_BLOCK PER_KLAPANA
VAR_INPUT (*входные переменые датчики кнопки и тп*)
A:BOOL; (*Экранная кнопка положение A*)
B:BOOL; (*Экранная кнопка положение B*)
SENSOR_A:BOOL; (*Вход датчика положение A*)
SENSOR_B:BOOL; (*Вход датчика положение B*)
(*PK_AVTO_MAN:BOOL; (*Переключатель Автомат / Ручное*)*)
ALARM_RES:BOOL; (*Вход гашения аварии перкидного клапана*)
END_VAR
VAR_OUTPUT (*выходные переменые пускатели аварии и тп*)
OUT_A:BOOL; (*Выход на пускатель положение A*)
OUT_B:BOOL; (*Выход на пускатель положение B*)
ALARM_OUT:BOOL; (*Выход авария перкидного клапана*)
END_VAR
VAR (*локальные переменые для внутрених нужд*)
tim1:TON;
tim2:TON;
END_VAR
-------------------------------------------------------------------------
IF A=TRUE AND B=FALSE THEN
OUT_A:=TRUE;
END_IF;
IF OUT_A=TRUE THEN
tim1(IN := OUT_A, PT := T#5s);
ALARM_OUT:=tim1.Q;
END_IF;
IF SENSOR_A=TRUE THEN
OUT_A:=FALSE;
END_IF;
IF B=TRUE AND A=FALSE THEN
OUT_B:=TRUE;
END_IF;
IF OUT_B=TRUE THEN
tim2(IN := OUT_B, PT := T#5s);
ALARM_OUT:=tim2.Q;
END_IF;
IF SENSOR_B=TRUE THEN
OUT_B:=FALSE;
END_IF;
IF ALARM_OUT=TRUE THEN
OUT_A:=FALSE;
OUT_B:=FALSE;
END_IF;
IF ALARM_RES=TRUE THEN
ALARM_OUT:=FALSE;
END_IF;