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