条件付きエンド
現在のプログラム位置で、プログラムコードのスキャンを終了します。
入力
TRUEの場合、命令が実行されます
出力
命令が正常に実行されると、TRUEがセットされます。
実行条件がTRUEになると、プログラムは現在のスキャンを終了し、I/O処理を開始します。プログラムは、先頭アドレスへ戻ります。
この命令は、サブルーチンプログラムや割り込みプログラムのような、副プログラム内で実行することはできません。主プログラム内でのみ FP_END_SCAN 命令を使用してください。
主プログラム内で、2つ以上の FP_END_SCAN 命令を使用することができます。
以下の命令は、実行条件(トリガ)の立ち上がりエッジを検出することによって実行されますので注意してください。
DF(立ち上がりエッジ検出(微分))
カウンタ入力 CT (カウンタ)用
カウンタ入力 F118_UDC (アップダウンカウンタ)用
シフト入力 SR (シフトレジスタ)用
シフト入力 F119_LRSR (左右シフトレジスタ)用
P 命令の立ち上がり実行 (P と番号によって指定, 例 P20_ADD)
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
bEndCurrentScan: BOOL:=FALSE;
iCounterExecuted: INT:=0;
iCounterNotExecuted: INT:=0;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_F,FP_END_SCAN!,,19,0,27,3,,?DEN?AENO);
B(B_CONTACT,,bEndCurrentScan,6,1,8,3,);
L(1,2,6,2);
L(8,2,19,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterNotExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
FP_INC(d := iCounterExecuted);
If (bEndCurrentScan) then
FP_END_SCAN();
End_if;
FP_INC(d := iCounterNotExecuted);