FP_COM_PMSET

SCUの通信パラメータ設定

このFP命令は、通信パラメータの変更をユニットに送信します。変更は、s1_Portで指定される通信ポート用のs2_dutParameterによって指定されます。

パラメータ

入力

s1_Port (WORD, INT, UINT)

通信ポートの指定(PLC機種による):

  • COMポート、例:SYS_COM0_PORT

  • Ethernetポート 例: SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU、例:16#xx01 (xx =スロット番号) COM01

s2_dutParameter (FP_COM_PARAMETER_DUT)

SCUポートに設定するパラメータ

出力

d_Result (WORD, INT, UINT)

処理結果(1ワード)を格納するマスターユニット内のメモリエリアの先頭アドレス

処理結果d_Resultの内容

  1.  (1) 上位バイト
  2.  (2) 実行結果フラグ

    FALSE正常完了

    TRUE: 異常完了

  3.  (3) 処理進行中フラグ

    FALSE処理が完了

    TRUE: 処理が進行中

  4.  (4) 下位バイト
    • 0:正常完了
    • 1: 指定した通信ポートが無効
    • 2: 設定エラー
    • 3: モード変更エラー
    • 4: 指定した通信ポートが使用中
    • 5: 変更対象パラメータの不一致(設定処理開始時/完了時に、オペランド指定のパラメータが異なっている場合)

解説

  • 命令を実行する前に、dResultで指定された処理結果ストレージエリアのビット15(プロセス進行中フラグ)がFALSEであることを確認します。

  • 送信/受信が進行中のCOMポートに対してパラメータの変更を行うと、送信/受信のプロセスはキャンセルされ、パラメータが変更されます。このとき、受信データは失われます。送信プロセスは停止状態になります。

  • この命令は、ユーザ定義ファンクションで呼び出すことはできません。プログラムおよびファンクションブロックでのみ使用してください。

  • ユーザープログラムを使用してCPUユニットのCOMポート用通信パラメータを変更します。

  • 要求された変更が処理される間、処理結果の格納エリアd_Resultのビット15はTRUEになります。処理が完了するとFALSEになります。

  • 処理結果は、d_Resultで指定したエリアに格納されます。エラーが発生した場合、実行結果フラグ(ビット14)はTRUEになります。エラーコードは、d_Resultの下位バイトに格納されます。

  • FP_COM_GET_PARAMETER命令を使用して設定パラメータを読み出し、さらにFP_COM_PMSET命令を使用して変更パラメータを設定することで、設定を簡素化することができます。

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • インデックス修飾時にエリアを超えたとき

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • インデックス修飾時にエリアを超えたとき

POUヘッダ

POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。

	VAR
		dutComParameter: FP_COM_PARAMETER_DUT;
		bChangeStationNumber: BOOL:=FALSE;
		wResult: WORD:=0;
		bIsChangeInProgress: BOOL:=FALSE;
		bIsChangeError: BOOL:=FALSE;
	END_VAR

LDボディ

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

STボディ

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);

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