Код:
PROGRAM PLC_PRG
VAR
Aout: BOOL;
Bout: BOOL;
Start: BOOL;
Tim: TON:=(PT:=T#3S);
X: INT;
L: INT;
R_TRIG1: R_TRIG;
END_VAR
R_TRIG1(CLK:=Ain , Q=>Start );
IF Start THEN X:=1; END_IF
IF L<100 AND Ain THEN
Tim(IN:= NOT Tim.Q );
CASE X OF
1: Aout:=TRUE; X:=X+BOOL_TO_INT(Tim.Q);
2: Aout:=FALSE; X:=X+BOOL_TO_INT(Tim.Q);
3: Bout:=TRUE; X:=X+BOOL_TO_INT(Tim.Q);
4: Bout:=FALSE; X:=X+BOOL_TO_INT(Tim.Q);
5: L:=L+1; X:=1;
END_CASE
ELSE
X:=0;
L:=0;
Aout:=FALSE;
Bout:=FALSE;
Tim(IN:= FALSE );
END_IF
Как-то так.
ЗЫ.
Сообщение от
Zik
А как повторить таймер-то без цикла? Даже функция Tim(IN:=TRUE, PT:=T#2S); без привязки к входным и выходным параметрам, выполнится только 1 раз и программа остановится, хотя согласно логике плк должна повторяться.
Таймер-то через 2с нужно перезапустить по входу IN.
Вложение 23336
У меня в примере так - Tim(IN:= NOT Tim.Q ), т.е. он сам себя перезапускает.