PDA

Просмотр полной версии : Повторение по таймеру



Mettall
23.12.2016, 16:11
Добрый день, помогите новичку разобраться!

Есть условие 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 раз(

amn
23.12.2016, 17:09
Обратите внимание, у Вас таймер никогда не сбрасывается, поэтому срабатывает всего 1 раз.

TON1(IN:=NOT TON1.Q , PT:=t#30s ); (*генератор импульсов раз в 30 секунд*)
IF TON1.Q THEN
(*делаем что нужно*);
END_IF

Mettall
23.12.2016, 20:07
IF F1=TRUE THEN TON.IN:=TON_1:=FALSE ; END_IF - этой строкой вроде как я перевожу вход TON в FALSE! тем самым сбрасываю его или я это не так делаю! необходимо как написал "amn " ??

capzap
23.12.2016, 20:14
делайте как все и не изобретайте велосипед где не нужно

Mettall
23.12.2016, 20:48
Чет я совсем запутался!в генераторе импульса я разобрался спс, но мне необходимо немного другое.
Как только переменная P1 - зайдет в диапазон P1>=8.05 AND P1<=8.09 вкл таймер (время таймера) если P1 выйдет за этот диапазон, а таймер еще вкл то обнулить таймер. Если P1 не выйдет за диапазон то выполнить условие taskv1:= ( taskv1 - (taskv1*2/100) ) и запустить таймер заново!

amn
23.12.2016, 23:53
Mettall, добавьте на вход таймера диапазон, в котором он будет срабатывать:

TON1(IN:=NOT TON1.Q AND P1>=8.05 AND P1<=8.09 , PT:=t#30s );