定时器没有复位,TEMP1,TEMP2,TEMP3始终为ON,从而导致Q0.0~Q0.2不断的在0~1之间变化。
建议您以秒脉冲+计数的方式进行延时。
例如下列例程:
ORGANIZATION_BLOCK OB1
VAR_TEMP
// Reserved
info : ARRAY[0..19] OF BYTE;
// Temporary Variables
Step:INT;
currentTime:S5TIME;
delayTime:INT;
END_VAR
currentTime:=S_ODT(T_NO:=T0,
S:=NOT M0.0,
TV:=T#1S,
Q:=M0.0 );
IF I0.0 THEN
Step:=1;
Q0.0:=FALSE;
Q0.1:=FALSE;
Q0.2:=FALSE;
delayTime:=0;
END_IF;
CASE Step OF
1 : Q0.0:=TRUE;
IF M0.0 THEN
IF delayTime=3 THEN
Step:=2;
delayTime:=0;
Q0.0:=FALSE;
ELSE
delayTime:=delayTime+1;
END_IF;
END_IF;
2 : Q0.1:=TRUE;
IF M0.0 THEN
IF delayTime=1 THEN
Step:=3;
delayTime:=0;
Q0.1:=FALSE;
ELSE
delayTime:=delayTime+1;
END_IF;
END_IF;
3: Q0.2:=TRUE;
IF M0.0 THEN
IF delayTime=2 THEN
Step:=1;
delayTime:=0;
Q0.2:=FALSE;
ELSE
delayTime:=delayTime+1;
END_IF;
END_IF;
END_CASE;
END_ORGANIZATION_BLOCK