MELSEC FX5U + M-SYSTEM R7E Modbus/TCP (2018/07/23)
FX5U Modbus/TCP 通信の覚書です。
FX5U がマスタ局、R7E(16点デジタル入力ユニット) がスレーブ局になります。
以下、書いていること、サンプルプログラムは、ほぼ、マニュアルどおりです。
■接続設定
"ナビゲーションウィンドウ" -> [パラメータ] -> [FX5UCPU] -> [ユニットパラメータ]
-> [Eternetポート] -> [基本設定]
"IP アドレス"、"サブネットマスク" を設定します。
[相手機器接続構成設定] -> "相手機器接続構成設定" の <詳細設定> をダブルクリックします。
"ユニット一覧" の "Active接続機器" を、画面左側にドラッグ&ドロップします。
更新手段を、"通信プロトコル"に設定。マスタ局のポート番号を設定。
"センサ・機器"の IP アドレス、ポート番号に R7E の IP アドレス、ポート番号 (502固定) を設定します。
■プロトコル設定
[ツール] -> [通信プロトコル支援機能]
ユニットタイプを指定
[ファイル] -> [新規作成]
[編集] -> [プロトコル追加]、または、"プロトコル番号" の [追加] をクリック
"プロトコル設定画面" -> [編集] -> [プロトコル追加]
"型式" のドロップダウンリストから "MODBUS/TCP" を選択
"プロトコル名" のドロップダウンリストから "02: RD Discrete Inputs" を選択
(今回 R7E 16点入力の場合)
[OK] ボタンをクリック
"パケット設定" の "変数未設定" をクリック
赤色の部分クリック
構成要素の変数に対して、デバイス番号を設定していきます。
デバイス番号の設定が面倒な場合は、[編集] -> "デバイス一括設定" で先頭のデバイス番号を設定します。
先頭のデバイス番号を設定します。
デバイス番号の設定が終わると、"変数設定済" に変わります。
コマンドを送信する場合、D1000 にトラザクション ID、D1001 にモジュール ID、D1002 に読み出し先頭番号、D1003 に読み出しデータ数を入力することになります。
レスポンスが正常であれば、D1006 を先頭に、読み出しデータが格納されます。
異常終了の場合は、D2009 に例外コードが格納されます。
FX5U に書き込みます。
名前を付けて保存します。
■プログラム
<コネクションの確立>
SM412 :1 秒クロック
SD10680.0 : オープン完了信号 (.0 = コネクション No.1)
SD10681.0 : オープン要求信号 (.0 = コネクション No.1)
SP.SOCOPEN "U0" K1 D100 M100
"U0" : 固定値
K1 : コネクション番号
D100 : コントロールデータを格納するデバイスの先頭番号
「相手機器接続構成設定」を使用する場合 D100 = 0、プログラムで設定する場合は、H8000 パラメータ格納デバイスについては、マニュアル参照
M100 : 完了で1スキャンON 異常終了時は+1デバイスもON
M1000 : オープン成功
M1001 : オープン失敗
<通信プロトコル支援機能の登録プロトコル実行>
SM411 : 0.2 秒クロック
SD10680.0 : オープン完了信号 (.0 = コネクション No.1)
D1000 : トラザクションID
D1001 : モジュールID
D1002 : データ読み出し先頭番号
D1003 : データ読み出し数
D302 : 実行プロトコル番号
SP.ECPRTCL "U0" K1 K1 D300 M300
"U0" : 固定値
K1 : コネクション番号
K1 : 連続実行するプロトコルの数
D300 : コントロールデータを格納するデバイスの先頭番号
M300 : 完了で1スキャンON 異常終了時は+1デバイスもON
M1002 : 正常終了
M1003 : 異常終了
<コネクションの切断>(実用上、不要)
SD10680.0 : オープン完了信号 (.0 = コネクション No.1)
SD10681.0 : オープン要求信号 (.0 = コネクション No.1)
M1004 : 相手機器から切断要求
M4000 : 切断実行指示
SP.SOCCLOSE "U0" K1 D200 M200
"U0" : 固定値
K1 : コネクション番号
D200 : コントロールデータを格納するデバイスの先頭番号
M200 : 完了で1スキャンON 異常終了時は+1デバイスもON
M1005 : 切断実行中フラグ
M1006 : 正常終了
M1007 : 異常終了
動作確認のため、R7E の 16 点入力を Y0~Y17 に出力
M1003 : プロトコル実行異常(ケーブル抜け、電源断 ... 等)
SM400 : RUN 中 ON