部分I/Oリフレッシュ
実行条件ENがONになると、プログラムが実行され、d1_Start (先頭ワードアドレス)からd2_End (終了ワードアドレス)の間の入出力について、I/Oリフレッシュを行います。
入力
先頭ワードアドレス
終端ワードアドレス
この命令を使用することによって、スキャンタイムの遅れの影響を受けることなく、I/Oリフレッシュを実行することができます。
変数d1_Start、d2_Endには、同じ種類のオペランドを指定してください。
FP2, FP2SH, FP3 /5 /10 /10SH (マザーボードを持つPLC)
ワードアドレスは、0 £d1_Start£d2_End£ 127の範囲で指定してください。WX10 (またはWY10)のみをI/Oリフレッシュした場合は、d1_Startとd2_Endを次のように同じ値に指定してください: d1_Start = 10、d2_End = 10.
d1_Startとd2_Endに同じ値を指定すると、1ワード分のみI/Oリフレッシュされます。
I/Oリフレッシュは、基本マザーボードまたは増設マザーボードに装着されているI/Oユニットに対してのみ実行されます。リモートI/Oシステムの子局に装着されているI/Oユニットに対しては、実行されません。
FP-S, FP0 (マザーボードを持たないPLC)
実行条件がONになると、F143_IORF命令が実行され、d1_Start (先頭ワードアドレス)とd2_End (終了ワードアドレス)で指定された入出力が、I/Oリフレッシュされます。
FP0とFP-Sの場合、F143 IORF命令でI/Oリフレッシュができるのは、コントロールユニットの入出力のみです。
d1_Start、d2_Endが定数ではなく変数のときは、コンパイラがインデックスレジスタを経由して自動的に変数値にアクセスします。
変数d1_Start、d2_Endには、同じ種類のオペランドを指定してください。
入力リフレッシュの場合、d1_Startとd2_EndにWX0を指定してください。
出力リフレッシュの場合、d1_Startとd2_EndにWY0を指定してください。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
start: BOOL:=FALSE;
(*activates the funtion*)
FirstRefreshAddr: INT:=10;
LastRefreshAddr: INT:=10;
END_VAR
変数startがFALSEからTRUEになったとき、命令が実行されます。
WX10、WY10をI/Oリフレッシュするには、d1 = 10、d2 = 10に設定します。BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,start,5,1,7,3,);
B(B_F,F143_IORF!,Instance,9,0,16,5,,?DEN?Dd1_Start?Dd2_End?AENO);
B(B_VARIN,,FirstRefreshAddr,7,2,9,4,);
B(B_VARIN,,LastRefreshAddr,7,3,9,5,);
L(1,2,5,2);
L(1,0,1,5);
L(7,2,9,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* PLCs with backplanes FP-C/FP2/FP2SH/FP3/FP10SH *)
IF start then
(* Updates the input/output of word no. 0 to 1 *)
F143_IORF( 0, 1);
END_IF;
(* PLCs without backplanes FP0, FP-Sigma *)
IF start then
(* Updates the input/output of word no. 0 to 1 *)
F143_IORF(WX0, WX1);
F143_IORF(WY0, WY1);
END_IF;