Начал писать код для задвижки https://ibb.co/1Rbmscw выглядит для оператора. Сам код находится ниже. Код запускается без проблем, но он не работает. Почему я не знаю. Помогите пожалуйста.


FUNCTION_BLOCK GateValve


VAR_INPUT
//--------------------------------------------------------------------
bPermit :BOOL; (*Разрешение*)
bInterlock :BOOL; (*Блокировка*)
bProtect :BOOL; (*Защита*)
//--------------------------------------------------------------------
bManualControl :BOOL; (*Местное управление*)
bRemoteControl :BOOL; (*Дистанционное управление*)
//--------------------------------------------------------------------
bValveOpenIN :BOOL; (*Задвижка открывается*)
bValveCloseIN :BOOL; (*Задвижка закрывается*)
bValveFailureIN :BOOL; (*Задвижка авария*)
bValveOpenedIN :BOOL; (*Задвижка открыта*)
bValveClosedIN :BOOL; (*Задвижка закрыта*)
//--------------------------------------------------------------------
bMonitor :BOOL; (*Активация мониторинга запуска/останова*)
tMonTimeOpen :TIME; (*Время мониторинга запуска*)
tMonTimeClose :TIME; (*Время мониторинга останова*)
bFbkOpen :BOOL; (*Cтатус запуска*)
bFbkClose :BOOL; (*Cтатус останова*)
END_VAR

VAR_OUTPUT
//--------------------------------------------------------------------
bError :BOOL; (*Неисправность общая*)
bErrorFbkOpen :BOOL; (*Неисправность запуска*)
bErrorFbkClose :BOOL; (*Неисправность останова*)
//--------------------------------------------------------------------
bValveOpenOUT :BOOL; (*Открыть задвижку*)
bValveCloseOUT :BOOL; (*Закрыть задвижку*)
bValveStopOUT :BOOL; (*Остановка*)
//--------------------------------------------------------------------
TON_MonRun_ET :TIME; (*Отсчет таймера мон-га запуска*)
TON_MonStop_ET :TIME; (*Отсчет таймера мон-га останова*)
END_VAR

VAR
//--------------------------------------------------------------------
TON_MonitorRun :TON; (*Таймер мониторинга запуска*)
TON_MonitorStop :TON; (*Таймер мониторинга останова*)
END_VAR




//---------------------------------------- Проверка безопасного состояния ------------------------------------

IF bValveOpenIN AND bValveCloseIN THEN
bPermit := TRUE;
END_IF

//----------------------------------------- Открытие задвижки (В дистанционном режиме) ---------------------------

IF bPermit AND NOT bInterlock AND NOT bProtect AND NOT bValveOpenedIN AND NOT bValveFailureIN AND bRemoteControl THEN
bValveOpenOUT := TRUE;
bValveCloseOUT := FALSE;
ELSE
bRemoteControl := FALSE;
bManualControl := TRUE;
END_IF

//------------------------------------------ Закрытие задвижки (В дистанционном режиме) --------------------------

IF bPermit AND NOT bInterlock AND NOT bProtect AND NOT bValveClosedIN AND NOT bValveFailureIN AND bRemoteControl THEN
bValveOpenOUT := FALSE;
bValveCloseOUT := TRUE;
ELSE
bRemoteControl := FALSE;
bManualControl := TRUE;
END_IF


//------------------------------------------ Таймер открытия задвижки ----------------------------------------

TON_MonitorRun ( IN := bValveOpenIN AND bMonitor AND NOT bFbkOpen,
PT := tMonTimeOpen,
Q => bErrorFbkOpen,
ET => TON_MonRun_ET);

//------------------------------------------ Таймер закрытия задвижки ----------------------------------------

TON_MonitorStop ( IN := bValveCloseIN AND bMonitor AND NOT bFbkClose,
PT := tMonTimeClose,
Q => bErrorFbkClose,
ET => TON_MonStop_ET);