プロトコルコンバータ GW EIP/MODBUS の EtherNet/IP ⇔ Modbus/RTU 間の通信設定方法

プロトコルコンバータ GW EIP/MODBUS は、さまざまな EtherNet/IP ベースのコントローラーから様々な Modbus® マスターおよび/またはスレーブへの強化された接続を提供します。Modbusマスター間の接続、Modbusスレーブ間の接続、およびModbus シリアル ネットワークから EtherNet/IP および Modbus TCP ネットワークへの接続をサポートします。
ここでは、プロトコルコンバータ GW EIP/MODBUS について、EtherNet/IP ⇔ Modbus/RTU 間の通信設定方法について説明します。EtherNet/IP ⇔ Modbus/TCP 間の通信設定方法については、リンクの記事 を参照してください。
なお、プロトコルコンバータ GW EIP/MODBUS がサポートしている EtherNet/IP対応のコントローラは、次の通りです。
- Rockwell: ControlLogix®、CompactLogix®、SoftLogix、FlexLogic、SLC、PLC-5®、および MicroLogix PLC
- オムロン: NJ および一部の CJ シリーズ
- Schneider Electric: Modicon シリーズ, LMC058
- パナソニック: FP7
- 三菱: Qシリーズ
- AutomationDirect: Productivity 1000、2000、3000、Do-more H2-DM1E
- B&R: X20 システム
- CodeSys: ソフト PLC
- 通信接続方法

接続方法
プロトコルコンバータの各通信プロトコルの対応を、以下の一覧表にまとめています。この中で、EtherNet/IP ⇔ Modbus/RTU 間の通信は、双方向で共有メモリ(Shared memory)を使用します。

プロトコルコンバータ GW EIP/MODBUS を使用した Modbus/RTU → EtherNet/IP のデータの流れは、以下の通りになります。
Modbus/RTU デバイス(Modbusスレーブ)⇒ GW EIP/MODBUS(シリアル通信、Modbusマスタ(Read)、Modbus(Write)⇒ 共有メモリ)⇒ PLC(EtherNet/IP class1 通信)
通信設定
EtherNet/IP ⇔ Modbus/RTU 間の通信設定は、次の手順で行います。
①ログイン、WBMホームページ
②デバイス情報、IPアドレス設定、EtherNet/IP 設定
③Modbus/RTU 設定
④データマッピング設定(Shared Memory)
設定例は、以下の仕様となります。
- Modbusデバイスのホールディングレジスタ 6つのデータを、プロトコルコンバータ GW EIP/MODBUS 経由で、EtherNet/IP 通信で PLC に送信
- Modbusデバイスのホールディングレジスタには、サンプルデータとして 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 を設定
- EtherNet/IP 通信は、class1 のサイクリック通信で、UINTの配列変数で PLC に読込み
①ログイン、WBMホームページ
まず、GW EIP/MODBUS の各種パラメータを設定するために、本体にログインします。
- GW EIP/MODBUS は、一般的なブラウザを利用したWebベース管理画面 (WBM: Web based management)を提供しています。ここで、デバイスに関する、様々な設定や、詳細な診断情報を表示します。
- ブラウザから GW EIP/MODBUS の IPアドレスを入力し、ログイン画面からログインパラメータを入力してログインします。
- ネットワーク設定: デフォルトの IPアドレス:192.168.254.254、 サブネットマスク:255.255.255.0
- ログインパラメータ: デフォルトのユーザ名:Admin、 パスワード:admin(大文字、小文字に注意)

- ログイン後に、WBMのホームページが表示されます。
- ホームページから、基本設定画面や詳細設定画面に遷移してパラメータを構成します。
- 各種設定画面からホームページに遷移するときは、画面左上の 「⌂」 マークをクリックします。

②デバイス情報、IPアドレス設定、EtherNet/IP 設定
次に、デバイス情報、IPアドレス、EtherNet/IP 設定をします。
- デバイスの情報設定を設定します。
- 「General Setting」 タブをクリックします。
- 設定情報は、次の通りです。
- Device Name:デバイス名(半角英数字で16文字まで)
- Contact:担当者、担当グループ名(半角英数字で16文字まで)
- 設定情報を保存するために、「Apply Changes」 ボタンをクリックします。

- IPアドレスを設定します。
- 「LAN Setting」 タブをクリックします。
- 設定情報は、次の通りです。
- DHCP サーバで IPアドレス設定の場合は、「Automatic address assignment (DHCP)」 を選択します。
- 固定 IPアドレスの場合は、 「Manual address assignment」 を選択し、IPアドレス、サブネットマスク、デフォルトゲートウェイを入力します 。
- 設定情報を保存するために、「Apply Changes」 ボタンをクリックします。

- EtherNet/IP の設定をします。
- 「EtherNet/IP Stack」 タブをクリックします。
- デフォルトの設定は、ほとんどのシステムで推奨される値が設定されており、特殊要求がある場合に専任のエンジニアで実施して下さい。

③Modbus/RTU 設定
次に、Modbus/RTU の設定を行います。
- Serial Settings 設定画面に遷移します。
- 「Serial Settings」 タブをクリックします。
- 「Overview」 ページが表示され、Modbus/RTUのシリアル通信設定概要が表示されます。

- Modbus/RTU 設定画面に遷移します。
- 「Port(x) Configuration」 タブをクリックします。 (x はポート番号)
- この例は、RS-422通信(4線式)で 19,200bps、8ビット、ノンパリティ、ストップビット1ビットの設定例です。
- Serial port configuration
- Port Name: ポート番号
- Port Mode: ポートの運転モード
- RS-232/RS-422/RS485 2-wire/RS-485 4-wire(M)/RS-485 4-wore(S) から選択
- M: 送信常時有効 (Master)、 S: GWの送信時のみ送信有効 (Slave)
- Baud Rate: 通信速度(300 ~ 230,400 bps)
- パリティ: Odd/Even/Mark/Space/None
- データビット: 5/6/7/8
- ストップビット: 1/2
- フローコントロール: RS-232のみ(RTS/CTS、Xon/Xoff、half deplex、none)
- 終端抵抗: RS-485のみ(ネットワークの終端の時に有効(on))
- DTRモード: on; 常時、 off; 接続有効時のみ
- Rx Timeout Between Packets (ms): 受信データ間の時間(デフォルト:200ms)
- Discard packets with errors: 有効時には、パリティ、 フレーミング、 オーバーラン エラーのあるパケットはすべてドロップ
- Modbus configuration
- Serial Device: Modbusデバイスの種別設定
- (Modbus RTU Slaves / Modbus ASCII Slaves / Modbus RTU Master / Modbus ASCII Master / Modbus RTU Master/Slaves / Modbus ASCII Master/Slaves)
- Response Timeout (ms): スレーブデバイスのレスポンス時間(デフォルト:1000ms)
- Inactivity Wait Time Before Tx (ms): GW が応答を受信、またはModbus要求を送信してから次の要求を送信するまで待機する最小時間(デフォルト:0ms )
- Send Write Messages First: 有効にすると、すでに送信キューに入っている可能性のある読み取りメッセージを送信する前に、書き込みメッセージが送信されます。
- Write Mode: Modbusデバイスからの書込制御(Read Only / Read/Write)
- Device ID Offset Mode: 有効にすると、シリアル Modbus スレーブ デバイスにメッセージを送信するときにデバイス ID を変更可能
- Device ID Offset: デバイスIDオフセット量
- Serial Device: Modbusデバイスの種別設定

- 結線方法

- 終端抵抗 (参照: Modbus/RTU設定 > Serial port configuration)
- RS-422 または RS-485 通信ネットワークで構成されるアプリケーションでは、最初と最後のデバイスで終端抵抗をアクティブにする必要があります。
- 終端抵抗は、プロトコルコンバータ内部に統合されており、Web ベース管理インターフェイスを介して設定することができます。
④データマッピング設定(Shared Memory)
- Data Mapping Settings 設定画面に遷移します。
- 「Data Mapping Settings」 タブをクリックします。
- データマッピング設定では、Modbus/RTU、共有メモリ、EtherNet/IP 間の通信を構成します。
- EtherNet/IP は、Class 1通信であるサイクリック通信の設定について説明します。

(1) Modbus to Modbus Configuration
- Modbus to Modbus 設定画面に遷移します。
- 「Modbus to Modbus」 タブをクリックします。
- 機能概要
- 「Modbus to Modbus Configuration」では、Modbus スレーブまたは共有メモリからデータを読み取り、 そのデータを別の Modbus スレーブまたは共有メモリの別の領域に書き込むことができます。
- Modbus スレーブへの EtherNet/IP クラス 1 通信を使用する場合は、「 Modbus to Modbus Configuration」ページと、「Shared Memory」ページとを組み合わせて構成する必要があります。
- 「Modbus to Modbus Configuration」では、Modbus データをより便利な順序で構造化するのに便利です。
- この例では、Modbusデバイス(Modbus ID:1)のホールディングレジスタの Modbus アドレス 1番から連続する 6つのデータを「FC3 ファンクションコード」で 500ms周期でサンプリングして読込み、共有メモリ(Modbus ID:252)の Modbus アドレス 1番から「FC16 ファンクションコード」で複数書込みする設定となっています。
- 設定を保存します。
- 「Apply Changes」 ボタンをクリックします。

- Modbus to Modbus Configuration
- Line: 行番号
- Active: Modbus間通信を有効化
- Device ID (Read): Modbus スレーブ デバイス ID
- Function code: Modbus 読込ファンクションコード
- (01; コイル読込(00x)、02; 接点読込(10x)、03; ホールディングレジスタ読込(40x)、インプットレジスタ読込(30x))
- Address (base 1): 読込 Modbus アドレス(1~)
- Length (Regs/coils): 読込データ長
- Poll Rate (ms): データ読込周期(最短で 20ms)
- Device ID (Write) : 共有メモリのデバイスID(共有メモリを有効にすること)
- Function code: Modbus 書込ファンクションコード
- (05; 単一コイル書込(10x)、06; 単一レジスタ書込(40x)、15; 複数コイル書込(30x)、複数レジスタ書込(40x))
- Address (base 1): 書込 Modbus アドレス(1~)
(2) Shared Memory Configuration
- Shared Memory 設定画面に遷移します。
- 「Shared Memory」 タブをクリックします
- Shared Memory Configuration
- Enable Shared Memory: チェックを入れます
- Enable Shared Device ID: 共有メモリの Modbus ID
- Holding Register Start Address (Base 1): 400001(デフォルト)
- Coil Block Start Address (Base 1): 1(デフォルト)

- Shared Memory 機能概要
- 共有メモリは、EtherNet/IP コントローラ、Modbus マスター、および Modbus スレーブ デバイス間で通信するための簡単に設定でき、堅牢な方法を提供します。
- GW EIP/MODBUS… は Modbus スレーブをエミュレートし、各 EtherNet/IP コントローラまたは Modbus マスターは「共有」メモリを読み書きしてデータを交換できます。
- 「共有メモリ」ページは、200 個の Holding Register のブロックが 8 つと、320 個の Coil のブロックが 8 つから構成されています。
- Holding Register と Coil には、書き込みアクセスが可能です。
- 各ブロックは、すべてのマスターに書き込みアクセスを提供するか、特定のマスターのアクセスを制限するように構成できます。
- 共有メモリの内容は、GW EIP/MODBUS… Web サーバー経由で表示、消去ができます。
- 各ブロックの診断データは、読み取り、書き込み、およびブロックされた書き込みメッセージ数が表示されます。
- ブロックされた書き込みメッセージは、「書き込み違反」 ログ ファイルに記録されます。

- Shared Memory 設定画面で、「Display」 ボタンをクリックすると、共有メモリのデータ表示画面に遷移します。
-960x433.jpg)
-960x436.jpg)
(3) Shared Memory Map
- 共有メモリマップ 画面に遷移します。
- 「Shared Memory」 タブをクリックします。
- 機能概要
- 「共有メモリ マップ」ページには、GW EIP/MODBUS… コマンドと各共有メモリ ブロックへのクラス 1 アクセスが表示されます。
- 書き込み競合は赤で強調表示されます。
- 次の略語とそれに続くコマンド ライン番号は、競合の原因を示します。
- TM: Tag/File to Modbus
- MT: Modbus to Tag/File
- MM: Modbus to Modbus
- CL1: EtherNet/IP Class1
- この例では、Modbusデバイス(Modbus ID:1)のホールディングレジスタの Modbus アドレス 1番(400001)から連続する 6つのデータにを「FC3 ファンクションコード」で 500ms周期でサンプリングして読込み、共有メモリ(Modbus ID:252)の Modbus アドレス 1番から「FC16 ファンクションコード」で複数書込みする設定となっています。

(4) 診断機能
- 診断画面に遷移します。
- 「Diagnostics」 タブをクリックします。
- 機能概要
- さまざまなパケット統計情報を使用して、構成またはアプリケーションの問題を診断できます。
- 「診断」タブをクリックして適切なサブページに移動し、構成またはアプリケーションの問題を診断するために使用できるさまざまなパケット統計情報を表示します。

A) Communication
- Serial Port Statistics 画面に遷移します。
- 「Communication > Serial Statistics」 タブをクリックします。
- 機能概要
- 「Serial Port Statistics」ページには、各シリアル ポートのアクティビティの概要が表示されます。
- 「Reset Statistics」ボタンをクリックすると、値がゼロにリセットされます。

- Serial Logs 画面に遷移します。
- 「Communication > Serial Logs」 タブをクリックします。
- 機能概要
- 「Serial Logs」ページには、通常の操作中に送受信されたシリアル メッセージが表示されます。
- ゼロにリセットするには、「Reset Log」ボタンをクリックします。

B) Modbus to Diagnostics
- Modbus Slaves 画面に遷移します。
- 「Modbus Diagnostics > Modbus Slaves」 タブをクリックします。
- 機能概要
- 「Modbus Slaves」ページには、1 つ以上のシリアル ポートにローカルに接続されているデバイス、または、リモート Modbus TCP デバイス構成を介して リモートに接続されている各デバイスのデバイス固有のステータスと統計が表示されます。
- ゼロにリセットするには、「Reset Statistics」ボタンをクリックします。

- Shared Memory 画面に遷移します。
- 「Modbus Diagnostics > Shared Memory」 タブをクリックします。
- 機能概要
- 「Shared Memory」ページには、共有メモリ ブロックの内容が表示されます。
- ドロップダウン メニューを使用して、共有メモリの各ブロックに移動します。
- 「Display Format」で表示されるデータの形式を変更します。
- オプションは、HEX、WORD 16、DWORD 32、STRING です。

C) EtherNet/IP Diagnostics
- EtherNet/IP Diagnostics 画面に遷移します。
- 「EtherNet/IP Diagnostics」 タブをクリックします。
- 機能概要
- 「EtherNet/IP Diagnostics」ページには、EtherNet/IP の Class 1/3 の通信統計が表示されます。
- ゼロにリセットするには、「Reset Statistics」ボタンをクリックします。

D) Modbus to Modbus Diagnostics
- Modbus to Modbus 画面に遷移します。
- 「Data Mapping Diagnostics > Modbus to Modbus」 タブをクリックします。
- 機能概要
- 「Modbus to Modbus」ページには、Modbusの通信統計が表示されます。
- ゼロにリセットするには、「Reset Statistics」ボタンをクリックします。

PLC の EtherNet/IP 設定
最後に、PLC で EtherNet/IP class1 通信の設定を行います。
①EDSファイルのダウンロードと、PLCへのインストール
まず、プロトコルコンバータ GW EIP/MODBUS の EDSファイルを取得します。
- 製品ホームページにアクセスして、EDSファイル(Zipファイル)をダウンロードします。
- ダウンロード > 機器の説明
- Zipファイルを解凍して、対象製品のEDSファイル(*.eds)を取り出します。
- PLCの EtherNet/IP 設定ツールで、EDSファイルを読み込みます。
- EDSファイルに設定されているアッセンブリは、101 Rx Data Blocks と、118 TX Data Blocks で、それぞれ SINT(Byte)で 440 Byte サイズ(または、UINT(WORD)で 220 WORDサイズ)の配列で定義 します。
- このうち、最初の 400 Byte(200 WORD)は Modbus のレジスタデータで、あとの 40 Byte(320 bit)は Modbus のコイルデータになります。
- 各 SINT 配列は 8 ビットで、Modbus 保持レジスタは 16 ビット、Modbus コイルは 1 ビットです。したがって、保持レジスタごとに 2 つの SINT が使用され、8 つのコイルには 1 つの SINT が使用されます。最初の (偶数) SINT は下位バイトにマップされ、2 番目の (奇数) SINT は上位バイトにマップされます。

②PLCの設定
PLC の各種設定を行います。
- プロトコルコンバータ 設定
- IPアドレス: デバイスのIPアドレス
- UID: 252(デフォルト、共有メモリ設定の Shared Memory Device ID)
- PLC の EtherNet/IP 設定
- IPアドレス: デバイスのIPアドレス
- 配列の 0~399 バイトが Modbus の Holding Register にアクセスし、400~439 バイトが Modbus の Coil にアクセス
タグデータリンク (EtherNet/IP class 1、OMRON の PLC で Network Configurator を使用した場合)の設定例は、次の通りです。



まとめ
プロトコルコンバータ GW EIP/MODBUS について、共有メモリ(Shared memory)を使った EtherNet/IP ⇔ Modbus/RTU 間の通信設定について説明しました。EtherNet/IP と Modbus/RTU 間の通信プロトコル変換にご活用ください。