Цитата Сообщение от yray Посмотреть сообщение
Очевидно один таймер для включения "триггерной переменной" при изменении любой из вашего большого списка переменных.
У меня так на последнем.
код:
// передача триггеров в частотник
front_on_delayTimer(IN:=front_on_delayTimer_start, PT:=front_delayTime); // Запуск таймера задержки после поднятия фронта
front_off_delayTimer(IN:=front_off_delayTimer_star t, PT:=front_delayTime); // Запуск таймера задержки после снятия фронта
IF (G.ROT <> G.ROT_SET) THEN pchv_send:=TRUE; G.ROT:=G.ROT_SET; END_IF
IF (G.FREQ <> G.FREQ_SET) THEN pchv_send:=TRUE; G.FREQ := G.FREQ_SET; END_IF
IF pchv_send AND pchv_send_en THEN pchv_send1Completed:=FALSE;pchv_send:=FALSE; END_IF
// установка переднего фронта
IF NOT pchv_send1Completed THEN pchv_send_en:=FALSE;
pchv_send1Completed := TRUE; // Установка флага завершения первого действия
front_on_delayTimer_start:=TRUE;
G.TR1:=G.TR2:=TRUE; // включить передачу команды управления
END_IF
// снятие переднего фронта
IF front_on_delayTimer.Q AND pchv_send1Completed AND NOT pchv_send2Completed THEN
front_on_delayTimer_start:=FALSE; // Сброс таймера
front_off_delayTimer_start:=TRUE;
pchv_send2Completed := TRUE; // Установка флага завершения второго действия
G.TR1:=G.TR2:=FALSE; // выключить передачу команды управления
END_IF
// задержка после снятия фронта
IF front_off_delayTimer.Q AND pchv_send2Completed THEN pchv_send2Completed:=FALSE; front_off_delayTimer_start:=FALSE; pchv_send_en:=TRUE; END_IF
Спасибо. Буду знать что и так можно.
Я в принципе сделал, как в свое время нам показал Евгений Кислов, через По нажатию> Изменение значения>выполнить ST код>присвоить триггеру True. Если триггер True, то запускается таймер на 1 с, триггер = not (выход таймера ).
Запихал таймер в функциональный блок по руководству Первый старт 3.5.
Хотелось бы чтобы пример записи по переднему фронту вошла в новый Первый старт или руководство по Modbus.