Сообщение от
pyonth
Заработало как надо! Только скажите, не криво ли это выглядит и стоит ли так делать? Я замечаю, что пока не получается мыслить о процессе кодирования как кодирование конечного автомата.
Код:
Timer1(IN:=T1, PT:=T#5s);
Timer2(IN:=T2, PT:=T#10s);
IF Timer1.Q THEN
T1 := FALSE;
T2 := TRUE;
END_IF
IF NOT Timer2.Q AND NOT inv THEN
T1 := TRUE;
T2 := FALSE;
END_IF
inv := NOT inv;
Главное понимать, как это работает.
Я бы сделал так:
Код:
TP1(IN:=TRUE , PT:=T#10s);
TON1;
F_TRIG1(CLK:=TP1.Q);
IF F_TRIG1.Q THEN
TON1(IN:=TRUE , PT:=T#5s);
END_IF
IF TON1.Q THEN
TP1(IN:=FALSE);
TON1(IN:=FALSE);
END_IF
или так:
Код:
TOF1(IN:=FALSE);
F_TRIG1(CLK:=TP1.Q);
IF NOT TOF1.Q THEN
TP1(IN:=TRUE , PT:=T#10s);
END_IF
IF F_TRIG1.Q THEN
TP1(IN:=FALSE);
TOF1(IN:=TRUE , PT:=T#5s);
END_IF
Я правильно понимаю, что за один цикл работы ПЛК входные/выходные переменные меняют значение один раз, а локальные переменные в коде могут меняться несколько раз?
Правильно.