Я тут набросал еще один функциональный блок для управления вертикальным транспортёром Норией хотелось бы чтобы прокомментировали правильно ли я все сделал может что можно сделать лучше хотя вроде все работает но хочется все сделать хорошо
во вложении проект с визуализацией для тестирования таджеты если нужно в предыдущем вложение
FUNCTION_BLOCK EL(*Функциональный блок для управления Норией*)
VAR(*Внутрении переменные для собственых нужд ФБ таймеры и прочее*)
step : ( stop, start, alarm_reset, alarm_reidi, alarm_sped, alarm_podpor, alarm_tok);(*Обявляем Функцию step*)
timer1:TON; (*Обявляем ФБ таймер аварии по контролю включения*)
timer2:TON; (*Обявляем ФБ таймер аварии по контролю скорости*)
timer3:TON; (*Обявляем ФБ таймер аварии по подпору продуктом*)
END_VAR
VAR_INPUT(*Входные переменные датчики кнопки и тп*)
auto:BOOL; (*Автоматический режим работы*)
man_start, man_stop:BOOL; (*Экранные кнопки СТАРТ и СТОП*)
auto_start, auto_stop:BOOL; (*Сигналы в режиме автомат СТАРТ и СТОП*)
sens_reidi:BOOL; (*Контроль включения механизма*)
sens_sped:BOOL; (*Контроль скорости механизма*)
sens_podpor:BOOL; (*Контроль подпора механизма прдуктом*)
sens_tok:BOOL; (*Контроль токовой нагрузки электродвигателя*)
reset: BOOL; (*Сигнал сброса аварии*)
END_VAR
VAR_OUTPUT(*выходные переменые пускатели аварии и тп*)
out:BOOL; (*Выходы на пускатель*)
out_alarm: WORD; (*Выход аварии нории*)
END_VAR
start:
step:=SEL(SEL(auto, man_stop, auto_stop), step, stop); (*Обработка кнопок ручного и автоматического режима СТОП*)
IF out =TRUE THEN
timer1(in:=TRUE, pt:=T#1s);
timer2(in:=TRUE, pt:=T#3s);
timer3(in:=sens_podpor, pt:=T#3s);
step:=SEL(sens_tok, step, alarm_tok);
ELSE
timer1(in:=FALSE);
timer2(in:=FALSE);
timer3(in:=FALSE);
END_IF
IF sens_reidi =TRUE THEN
timer1(in:=FALSE);
END_IF
IF sens_sped =TRUE THEN
timer2(in:=FALSE);
END_IF