литературы по ST как таковой нет ведь. Вообще по МЭК языкам мало литературы. Петрова 2 книги, Деменков, Парр и еще книга автора с Бауманки.
литературы по ST как таковой нет ведь. Вообще по МЭК языкам мало литературы. Петрова 2 книги, Деменков, Парр и еще книга автора с Бауманки.
Спасибо уважаемые друзья за советы, помощь! rwg, остался вопрос касательно фрагмента программы! Будь добр, обьясни пожалуйста!
почему not timerON.Q и not timerOFF.Q?
OUT_ON := (Zadvizh_ON and (not timerON.Q)); (*10 секунд открытия*)
OUT_OFF := ((not Zadvizh_ON) and (not timerOFF.Q)); (*10 секунд закрытия*)
Это я понял, меня смутило именно (not timerON.Q))..............
Большое спасибо!
Начал писать код для задвижки 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);