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 Standard Libraryの"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を使用

最終修正日: 2019-08-05このページに関するフィードバックお問い合わせ窓口