LD程序
|
ST程序代码
|
标注
|
|
Y0 := X0 AND X1 OR X2 AND NOT X3;
|
|
也可行:
|
IF X0 AND X1 OR X2 AND NOT X3 THEN
Y0:=TRUE;
ELSE
Y0:=FALSE;
END_IF;
|
表现相同,但需要更多资源。
注释 WHILE循环将造成扫描时间错误并导致看门狗错误。
|
2.具有设置或复位输出的网络
|
LD程序
|
ST程序代码
|
|
|
IF X0 AND X1 THEN
Y0 := TRUE;
END_IF;
IF X2 AND NOT X3 THEN
Y0 := FALSE;
END_IF;
|
|
3.具有脉冲标志(上升沿/下降沿)的网络
|
LD程序
|
ST程序代码
|
标注
|
|
(* rising edge *)
IF X0 AND NOT X0_Old THEN
Count:=Count+1;
END_IF;
X0_Old:=X0;
(* falling edge *)
IF NOT X1 AND X1_Old THEN
Count:=Count-1;
END_IF;
X1_Old:=X1;
|
不使用函数或功能块,显式查询边沿检测。
|
也可行:
|
(* rising edge *)
R_TRIG_X0( CLK:= X0 );
IF R_TRIG_X0.Q THEN
Count:=Count+1;
END_IF;
(* falling edge *)
F_TRIG_X1( CLK:= X1 );
IF F_TRIG_X1.Q THEN
Count:=Count-1;
END_IF;
|
使用来自IEC标准库的R_TRIG或F_TRIG功能块实例。
|
也可行:
|
(* rising edge *)
IF DF(X0) THEN
Count:=Count+1;
END_IF;
(* falling edge *)
IF DFN(X1) THEN
Count:=Count-1;
END_IF;
|
使用基本函数DF或DFN。
|