EtherNet/IP通信の仕組み:暗黙的メッセージング(Implicit)とカプセル化ヘッダーを理解する
産業オートメーションにおいて広く利用されているEtherNet/IP。その通信アーキテクチャは非常に緻密に設計されています。今回は、PLCとデバイス間でのデータ通信を理解するために欠かせない「暗黙的メッセージング」「カプセル化ヘッダー」「セッション管理」の仕組みを解説します。
1. 暗黙的メッセージング(Implicit Messaging / Cyclic 通信)
産業用ネットワークにおいて、定周期でデータを送受信する方式を「暗黙的メッセージング(I/Oメッセージング)」と呼びます。
主な特徴
- 実時間性と周期性: 設定された時間(RPI: Requested Packet Interval)ごとにデータを自動転送するため、リアルタイム制御に最適です。
- データ構造の簡略化: 通信路(Connection)を確立する際に「何をやり取りするか」を事前に合意するため、パケット内に詳細なアドレスやコマンド情報を含める必要がありません。これが「暗黙的」と呼ばれる理由です。
- UDP/IPの利用: 高速通信を実現するため、応答確認を省略するUDPプロトコルを使用します。
生産者-消費者モデル(Producer-Consumer)
EtherNet/IPは「生産者-消費者モデル」に基づいています。
- 生産者(Producer): データを生成してネットワークに配信するデバイス。
-
消費者(Consumer): 配信されたデータを選択的に受信するデバイス。
マルチキャスト通信をサポートしており、一つのデータを複数の機器が同時に受信できるため、帯域幅を非常に効率的に使用できます。
2. EtherNet/IP カプセル化(Encapsulation)ヘッダー
CIP(Common Industrial Protocol)メッセージを標準的なイーサネット上で転送するためには、パケットを「封筒」で包む必要があります。これがカプセル化ヘッダーです。
構造と役割(固定24バイト)
- Command: パケットの役割(セッション確立、データ転送など)を識別。
- Session Handle: 通信開始時に発行される固有のセッション識別番号。
- Length: ヘッダー以降の実際のデータサイズ。
通信失敗の主な原因
- セッションタイムアウト: ネットワーク負荷等でセッション維持信号が途切れると、デバイスは即座にセッションを破棄します。
- ヘッダーパッシングエラー: 24バイトの規定外のデータや、不整合なデータ長が送られた場合、デバイス側でパケットが破棄されます。
3. ID確認とセッション登録プロセス
EtherNet/IPはModbus TCPのような単純なプロトコルとは異なり、通信前に厳格な「身元確認」を行います。
Identity Object(身元確認)
通信開始時に、X-SCADAやPLCが相手デバイスの正当性を確認します。
- Vendor ID: 製造元コード
- Device Type: デバイスのカテゴリ(PLC、I/Oなど)
- Product Code / Revision: モデル番号とファームウェア版
Register Session
デバイスから「セッションハンドル」を発行してもらうプロセスです。これがない限り、データ交換用の「専用の対話ルーム」に入ることができません。
4. Forward Open:通信路の確立
最も重要なステップです。クライアント(Scanner)がサーバー(Adapter)に対して「通信のルール(RPI、データサイズ、接続経路)」を提示し、合意を得るプロセスです。
- Connectionリクエスト: 接続条件を提示。
- リソース割り当て: サーバーが通信用のメモリを確保。
- ID発行: 接続IDが発行され、これ以降はUDPによる高速なサイクリカル通信へ移行します。
まとめ:Modbus TCPとの違い
| 比較項目 | Modbus TCP | EtherNet/IP |
|---|---|---|
| 接続方式 | TCP接続後、即通信可能 | TCP接続 → セッション登録 → 身元確認 → Forward Open |
| 識別方法 | Unit ID (単純な数値) | Identity Object (詳細な機器情報) |
| 信頼性 | アドレスベースの簡易通信 | セッション管理による堅牢な通信 |
EtherNet/IPでのトラブルは、多くの場合この「セッション登録」や「Forward Open」段階での設定不一致に起因します。接続がうまくいかない場合は、まずEDSファイルの確認と、RPI設定がデバイスの許容範囲内であるかを確認することをお勧めします。