-
Повторение по таймеру
Добрый день, помогите новичку разобраться!
Есть условие IF AVT1=TRUE AND P1>=8.05 AND P1<=8.09 THEN taskv1:= ( tas - (tas*2/100) ); END_IF;
Как сделать, чтобы оно повторялось и проверялось по циклу через определенное время?
я попробывал использовать таймер :
IF P1>=8.05 AND P1<=8.09 THEN F:=TRUE; ELSE F:=FALSE; END_IF;
IF F=TRUE THEN TON_1:=TRUE; END_IF;
TON(IN:=TON_1 , PT:= T#30s, Q=>VarBOOL , ET=> );
IF VarBOOL THEN taskv1:= ( taskv1 - (taskv1*2/100) ) ; F1:=TRUE; END_IF;
IF F1=TRUE THEN TON.IN:=TON_1:=FALSE ; END_IF;
как сделать чтобы это работало по циклу?у меня не получается перезапустить таймер, срабатывает только 1 раз(
-
Обратите внимание, у Вас таймер никогда не сбрасывается, поэтому срабатывает всего 1 раз.
TON1(IN:=NOT TON1.Q , PT:=t#30s ); (*генератор импульсов раз в 30 секунд*)
IF TON1.Q THEN
(*делаем что нужно*);
END_IF
-
IF F1=TRUE THEN TON.IN:=TON_1:=FALSE ; END_IF - этой строкой вроде как я перевожу вход TON в FALSE! тем самым сбрасываю его или я это не так делаю! необходимо как написал "amn " ??
-
делайте как все и не изобретайте велосипед где не нужно
-
Чет я совсем запутался!в генераторе импульса я разобрался спс, но мне необходимо немного другое.
Как только переменная P1 - зайдет в диапазон P1>=8.05 AND P1<=8.09 вкл таймер (время таймера) если P1 выйдет за этот диапазон, а таймер еще вкл то обнулить таймер. Если P1 не выйдет за диапазон то выполнить условие taskv1:= ( taskv1 - (taskv1*2/100) ) и запустить таймер заново!
-
Mettall, добавьте на вход таймера диапазон, в котором он будет срабатывать:
TON1(IN:=NOT TON1.Q AND P1>=8.05 AND P1<=8.09 , PT:=t#30s );