将LD转换为ST程序

如果想要将LD程序转换为ST程序,请注意以下事项:

1.具有标准输出的网络

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_TRIGF_TRIG功能块实例。

也可行:

(* rising edge *)
IF	DF(X0) THEN
	Count:=Count+1;
END_IF;
(* falling edge *)
IF	DFN(X1)  THEN
	Count:=Count-1;
END_IF;

使用基本函数DFDFN

最后更新日期: 2019-05-02此页面上的反馈松下热线