SCUの通信パラメータ設定
このFP命令は、通信パラメータの変更をユニットに送信します。変更は、s1_Portで指定される通信ポート用のs2_dutParameterによって指定されます。
入力
通信ポートの指定(PLC機種による):
COMポート、例:SYS_COM0_PORT
Ethernetポート 例: SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU、例:16#xx01 (xx =スロット番号) COM01
SCUポートに設定するパラメータ
出力
処理結果(1ワード)を格納するマスターユニット内のメモリエリアの先頭アドレス
処理結果d_Resultの内容
FALSE:正常完了
TRUE: 異常完了
FALSE:処理が完了
TRUE: 処理が進行中
命令を実行する前に、dResultで指定された処理結果ストレージエリアのビット15(プロセス進行中フラグ)がFALSEであることを確認します。
送信/受信が進行中のCOMポートに対してパラメータの変更を行うと、送信/受信のプロセスはキャンセルされ、パラメータが変更されます。このとき、受信データは失われます。送信プロセスは停止状態になります。
この命令は、ユーザ定義ファンクションで呼び出すことはできません。プログラムおよびファンクションブロックでのみ使用してください。
ユーザープログラムを使用してCPUユニットのCOMポート用通信パラメータを変更します。
要求された変更が処理される間、処理結果の格納エリアd_Resultのビット15はTRUEになります。処理が完了するとFALSEになります。
処理結果は、d_Resultで指定したエリアに格納されます。エラーが発生した場合、実行結果フラグ(ビット14)はTRUEになります。エラーコードは、d_Resultの下位バイトに格納されます。
FP_COM_GET_PARAMETER命令を使用して設定パラメータを読み出し、さらにFP_COM_PMSET命令を使用して変更パラメータを設定することで、設定を簡素化することができます。
インデックス修飾時にエリアを超えたとき
インデックス修飾時にエリアを超えたとき
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
dutComParameter: FP_COM_PARAMETER_DUT;
bChangeStationNumber: BOOL:=FALSE;
wResult: WORD:=0;
bIsChangeInProgress: BOOL:=FALSE;
bIsChangeError: BOOL:=FALSE;
END_VAR
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,,bChangeStationNumber,5,2,7,4,);
B(B_F,E_MOVE!,,21,1,27,5,,?DEN?D?AENO?C);
B(B_VARIN,,2,19,3,21,5,);
B(B_VAROUT,,dutComParameter.wStationNumber,27,3,29,5,);
L(1,3,5,3);
L(7,3,21,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bChangeStationNumber,5,1,7,3,R);
B(B_CONTACT,,bIsChangeInProgress,5,4,7,6,);
B(B_F,FP_COM_PMSET!,,21,0,31,5,,?DEN?Ds1_Port?Ds2_dutParameter?AENO?Cd_Result);
B(B_VARIN,,SYS_COM0_PORT,19,2,21,4,);
B(B_VARIN,,dutComParameter,19,3,21,5,);
B(B_VAROUT,,wResult,31,2,33,4,);
L(1,2,5,2);
L(1,5,5,5);
L(7,2,21,2);
L(7,5,11,5);
L(11,2,11,5);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,FP_TEST_BIT!,,21,0,29,5,,?DEN?D@'s'?Dn_Pos?AENO?Cd);
B(B_VARIN,,wResult,19,2,21,4,);
B(B_VARIN,,15,19,3,21,5,);
B(B_COIL,,bIsChangeInProgress,35,2,37,4,);
L(1,2,21,2);
L(29,3,35,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,FP_TEST_BIT!,,21,0,29,5,,?DEN?D@'s'?Dn_Pos?AENO?Cd);
B(B_VARIN,,wResult,19,2,21,4,);
B(B_VARIN,,14,19,3,21,5,);
B(B_COIL,,bIsChangeError,35,2,37,4,);
L(1,2,21,2);
L(29,3,35,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (bChangeStationNumber) then
dutComParameter.wStationNumber := 2;
END_IF;
IF DF(bChangeStationNumber) OR bIsChangeInProgress then
FP_COM_PMSET(s1_Port := SYS_COM0_PORT,
s2_dutParameter := dutComParameter,
d_Result => wResult);
End_IF;
FP_TEST_BIT(s := wResult, n_Pos := 15, d => bIsChangeInProgress);
FP_TEST_BIT(s := wResult, n_Pos := 14, d => bIsChangeError);