楼主最近还看过
R_Trig_0(CLK:=x清空当前已入液值 , Q=> );
R_Trig_1(CLK:=xEnable , Q=> );
ton_30(IN:= , PT:=INT_TO_TIME(i采样时间_ms) , Q=> , ET=> );
ton_31(IN:= , PT:=T#10MS , Q=> , ET=> );
IF x入液中 AND NOT x入液完成 AND NOT xEnable THEN /////////暂停入液状态判断
x暂停入液:=TRUE;
END_IF
IF R_Trig_0.Q THEN r已入液量:=0;i:=0; END_IF ////////清空已入液量
IF R_Trig_1.Q THEN x暂停入液:=FALSE;END_IF
//IF R_Trig_1.Q AND x入液完成 THEN r已入液量:=0; END_IF
FOR i_count:=0 TO 48 BY 1 DO
v_采样值buff[50-i_count]:=v_采样值buff[49-i_count];
END_FOR
v_采样值buff[1]:=r管道流量_升每分钟;
v_采样值Sum:=0;
FOR j_count:=1 TO 50 BY 1 DO
v_采样值Sum:=v_采样值Sum+v_采样值buff[j_count];
END_FOR
r流量值_滤波:=v_采样值Sum/50.0;
CASE i OF
0:///初始化
IF x入液完成 THEN
i:=40;
ELSE
i:=60;
END_IF
(*IF xEnable AND x入液完成=FALSE THEN
x入液中:=TRUE;
i:=100;
ELSIF xEnable AND x入液完成 THEN
x入液完成:=FALSE;
r已入液量:=0;
i:=100;
ELSE
x入液中:=FALSE;
i:=0;
END_IF*)
40:
IF xEnable THEN
x清空当前已入液值:=FALSE;
x入液完成:=FALSE;
r已入液量:=0;
i:=100;
ELSE
x入液中:=FALSE;
END_IF
60:
IF xEnable THEN
x清空当前已入液值:=FALSE;
x入液中:=TRUE;
i:=100;
ELSE
x入液中:=FALSE;
END_IF
100:////管道流量换算
r当前流量值_滤波:=r管道流量_升每分钟/60/1000; //L/ms
ton_30.IN:=TRUE;
i:=200;
200:///采样间隔计时
IF ton_30.Q THEN
ton_30.IN:=FALSE;
i:=300;
END_IF
300://已入液量计算
r已入液量:=r已入液量+r当前流量值_滤波*i采样时间_ms;
i:=400;
400://已入液量判断
IF r已入液量>=r液量设定值 THEN
x入液完成:=TRUE;
x入液中:=FALSE;
i:=0;
ELSE
x入液完成:=FALSE;
i:=0;
END_IF
END_CASE