-
R_Trig
Добрый день. Пытаюсь создать апликацию которая бы начинала бы двигать мотор по событию изменения значения переменной BOOL. Попытался для этого использовать R_Trig но система реагирует только на первое нажатие, во всех последуюших нажатиях Q остается FALSE. Посоветуйте пожалуйсто есть ли способ обнулить значение R_Trig или для таких задач существует какая то более удобная команда ?
-
При каждом переходе переменной Start в значение TRUE, R-trig будет выдавать короткий импульс
VAR
Start: BOOL;
R_TRIG1: R_TRIG;
Q1: BOOL;
END_VAR
R_TRIG1(CLK:=Start , Q=>Q1 );
IF Start THEN Start := FALSE;
END_IF
-
Для реакции на все передние фронты - просто нужно вызывать фб
VAR
Start: BOOL;
R_TRIG1: R_TRIG;
END_VAR
R_TRIG1(CLK:=Start); // событие для отработки - R_TRIG1.Q
И все.
А если нужно ловить вообще любое изменение чего-либо, то тригеры не нужны - нужны копии.
var
V, Копия : любой тип
if V <> Копия then
Копия := V;
... //отработка события
end_if
-
Спасибо. Заработало. Теперь пойду читать как используется Ламда (=>) в Codesys :)
-
Нету в кодесисе никакой лямбды. Единственное, что умеет =>, так это присваивать в обратном направлении значения переменных ФБ внешним переменным. Помимо внешнего сходства ничего общего с лямбдами в других языках не имеет.