Modbus RTUとModbus TCPの深さ:物理層からアプリケーション層までの包括的な分析
キーワード:Modbus RTU対TCP、Modbus TCPメッセージフォーマット、Modbus RTUシリアルCommunication、MBAPヘッダ、Modbus伝送モードの比較
Modbusプロトコルは1979 yearに誕生し、40年以上にわたって進化し、シリアルリンクベースのModbus RTU(およびASCI I)とイーサネットベースのModbus TCPの2つの主要な伝送モードを開発しました。2つのモードはアプリケーション層で同じ機能コードとデータモデルを共有しているが、物理層、フレームフォーマット、アドレス指定方式、性能特性において著しい違いがある。間違ったモードを選択すると、プロジェクトの遅延やシステムの使用不能につながります。
本稿では、物理層、データリンク層、ネットワーク層、アプリケーション層の4つの次元からModbus RTUとModbus TCPのすべての主要な違いを深く比較し、実際のプロジェクトでの選択のための提案を行います。
歴史的進化:シリアルからイーサネットへ
Modbus RTUはModbusプロトコルの最も元の的な形態であり、1979 yearにRS-232またはRS-485シリアルバス上で動作するように設計された。当時の産業環境では、シリアルCommunicationは最も費用対効果の高いソリューションでした。RTUモードは、コンパクトなバイナリエンコーディングと高い伝送効率を使用しており、今日でも産業現場で最も広く使用されているModbusの変種です。
Modbus TCPは、イーサネット/IPネットワークの急速な発展に対応するために1999 yearに誕生しました。Modbusのアプリケーション層データをTCPパケットにカプセル化し、標準的なイーサネットインフラストラクチャを介して転送できるようにします。Modbus TCPはModbus RTUの機能コードとデータモデルを保持しているが、CRCチェック(TCP層によるデータ整合性の保証)を排除し、IPネットワークシナリオを処理するためにMBAPヘッダを追加している。
2.物理レベルの比較
| 次元の比較 | Modbus RTU | Modbus TCP |
|---|---|---|
| 物理メディア | RS-485(ミッドレンジ)/ RS-232(ポイントツーポイント) | イーサネットツイストペア/光ファイバ |
| トポロジ | バス型(デイジーチェーン) | スター(スイッチ) |
| 機器の最大数 | 32ノード()/ 256(エンハンストランシーバ) | 理論的には無制限。 |
| 通信距離の推移 | 1200m(RS-485 @ 9600bps) | 100m(銅線)/ 数km(光ファイバ) |
| 通信速度 | 1200 ~ 115200 bps | 10/100/1000 Mbps |
| 干渉に対する耐性 | 差動信号が良い。 | 優れた(ファイバー下での干渉はほぼゼロ) |
| 配線コスト | Low(ツイストペア) | 高さスイッチ、ネットワークケーブル/光ファイバ |
| インストールの複雑性 | シンプルに。 | より複雑(IP構成が必要) |
2.1 RS-485バスの物理特性
RS-485はModbus RTUで最も一般的な物理層規格である。差動信号伝送(A/Bライン)を採用し、コモンモード干渉に強い耐性があります。RS-485の主な物理パラメータは次のとおりです。
- 差動電圧:ロジック1はAライン電圧Bライン電圧(通常 ≥ +200 mV)で、ロジック0は逆です。
- コモンモード電圧範囲:-7V ~ +12V
- 終端抵抗:120Ω(整合特性インピーダンス、信号の反射防止)
- バイアス抵抗:バスがアイドル状態になっているときに確定した論理状態を維持し、受信機の誤判断を回避する
よくある配線エラー:
- A/Bラインを逆に接続する-スレーブ信号が受信できなくなる
- デイジーチェーンではなくスター型トポロジを使用-信号の反射が大きい
- バスの両端に終端抵抗を追加するのを忘れた-長距離通信が不安定
- 終端抵抗値が一致しない-120Ωが標準値
3.フレーム形式の比較
3.1 Modbus RTUフレーム構造
Modbus RTUメッセージは、フレーム間隔フラグとして“アイドル時間≥ 3.5文字”を使用します。フレーム構成は以下の通り。
���������������
│ ≧ 3.5文字│アドレス1 B │ファンクションコード1 B │データNバイト│ CRC 2 B │ 3.5文字の│
└ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┘
例リードホールドレジスタ
3.5 T 0 1 0 3 0 0 6 B 0 0 3 76 87 3.5 T
↑ ↑は ↑ ↑は 3-データ--そのCRC
アドレスの機能 検証済み。RTUフレームの主な特徴:
- フレームヘッダとフレームテールフラグはなく、フレーム境界は3.5文字の空き時間に完全に依存しています。
- CRC-16はメッセージ全体をカバーする。
- バスには一度に1つの駅しかありません。
- 最大フレーム長256バイト(アドレス+ファンクションコード+データ+ CRC)
3.2 Modbus TCPフレーム構造(MBAPヘッダ付き)
Modbus TCPは、標準的なModbus PDU(プロトコルデータユニット)の前に7バイトのMBAPヘッダ(Modbus Application Protocol Header)を追加している。
���������������
トランザクション識別子プロトコル識別子長さ2 B │ユニット識別子│機能コード1 B │データNバイト│
│ │ │ 2 Bは │ │ │ 2 Bは │ │ │ │ 1 Bさん │ │ │ │ │ │ │ │ │
└ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┴ ── ── ── ── ── ┘
← → → → → → →
フィールド
- トランザクション識別子Transaction ID-要求と応答を一致させるためにプライマリ·ステーションが生成する
- プロトコルID Modbusプロトコルを表す0x0000に固定
- “長さ”Length-後続のバイト数セル識別子+ファンクションコード+データ
- “ユニット識別子”Unit ID-ゲートウェイシーンで使用され、ダウンストリームスレーブアドレスを識別します。完全なTCPフレームの例
スレーブ1の保持レジスタ108-110を読み取る(例と同じ)
TCPメッセージ
0 0 0 6 0 1 0 3 0 0 6 B 0 0 3
└─ ┬ ── ┘ └ ─ ┬ ── ┘ └ ─ ┬ ── ┘ └ ┬ ┘ └ ─ ┬ ── ┘ └ ── ┬ ── ┘
トランザクションIDプロトコルID長=6ユニット1機能コード開始アドレス=107 Quantity=33.3 MBAPヘッダ各フィールド深度解析
トランザクション識別子Transaction Identifier
これはTCPモードで最も特徴的なフィールドです。TCPは全二重通信をサポートしているため、プライマリ局は複数のリクエストを同時に送信でき(異なるTCP接続または同じ接続上の異なるトランザクション内で)、トランザクション識別子は応答を対応するリクエストと照合するために使用される。リクエスト/レスポンスが1つしかない単純なシナリオでは、通常は0 x 00 01に設定され、インクリメントされます。
プロトコル識別子Protocol Identifier
0 x 0000に固定され、Modbusプロトコルであることを示します。このフィールドは将来の拡張のためにexistenceします。理論的には同じTCPポート上で複数のプロトコルを実行でき、プロトコル識別子は区別に使用されます。
長さLength
後続のすべてのバイトの数、すなわち“ユニット識別子(1バイト)+ PDU(ファンクションコード+データ)”を示します。TCP層には3.5文字のアイドル検出機構がなく、長さフィールドはTCPモードでフレーム境界をParseする鍵となる。
ユニット識別子Unit Identifier
Modbus TCPメッセージをシリアルリンク上のModbus RTUデバイスに転送する必要がある場合、ユニット識別子はRTUスレーブアドレスとして機能します。直接接続されたデバイス(デバイス自体がModbus TCPをサポートする)のシナリオでは、このフィールドは通常0 x 0 1または0 x FFに設定されます。
4.アドレス指定とCommunicationメカニズムの比較
| 次元の比較 | Modbus RTU | Modbus TCP |
|---|---|---|
| アドレス指定方式 | 8ビットのスレーブアドレス(1- 24 7) | IPアドレス+ポート番号デフォルト502 |
| Communicationモード | 半二重(同時に一方のみ送信可能) | 全二重(同時送受信可能) |
| 同時接続 | サポートされていません(バス共有) | 複数のTCP接続をサポート |
| 主要駅の数 | 1(バス調停困難) | 複数IPルートネイティブサポート |
| 放送サポート | サポート(アドレス0) | 直接サポートなし(アプリケーション層の処理が必要) |
| エラー検出 | CRC-16 | TCPチェックサム |
五、性能特性の深さの
5.1通信速度のParse
典型的な“10個のホールドレジスタを読み込む”Operationを例にとり、2つのモードの時間を比較します。
| リンクのリンク | Modbus RTU (9600bps) | Modbus TCP (100Mbps) |
|---|---|---|
| 要求メッセージサイズ | 8バイト。 | 12バイトMBAP+ |
| リクエスト転送時間 | 8 × 11 / 9600 ≈ 9.2ms | < 0.01ms |
| 応答メッセージサイズ | 25バイト | 29バイト |
| 応答転送時間 | 25 × 11 / 9600 ≈ 28.6ms | < 0.01ms |
| 駅からの処理時間 | 1~10ms | 1~10ms |
| フレーム間隔 | 3.5 4msの略。 | |
| 0 総所要時間 | ≈ 42-52ms | ≈ 1-10ms |
結論:Modbus TCPの単一通信遅延はRTUモードよりも5~50 倍低い。高周波データ収集が必要なシナリオ(振動監視、高速カウントなど)では、TCPには明らかな性能上の利点があります。
5.2複数デバイス同時通信
Modbus RTUモードでは、RS-485は共有バスであるため、マスタはスレーブに1つずつアクセスする必要がある。30台のスレーブがそれぞれ50msの場合、1ラウンドは1.5 秒になります。これはリアルタイム制御シナリオでは許容できません。
Modbus TCPモードでは、マスターは同時に複数のTCP接続を確立し、複数のスレーブと同時にCommunicationすることができます。これにより、TCPモードは大規模なデータ収集システムで圧倒的に有利になります。
Modbus ASCIIモードの概要
RTUとTCPに加えて、ModbusはASCI I伝送モードも持っている。ASCIIモードでは、各バイトを2つの印刷可能なASCII文字0-9、A-Fにエンコードし、LRCチェックを使用し、コロンで始まり、キャリッジリターンCRLFで終わる。最も効率的ではありませんが(同じデータvalueの約2 倍のバイト数が必要です)、ASCIIモードのメッセージは人間が読めるため、デバッグや教育シナリオではユニークな利点があります。
ASCIIモードメッセージ例(リードホールドレジスタ108、1つ)
RTU WWN 0 1 0 3 0 0 6 B 0 0 0 1(CRC)
ASCII 0103006B0001[LRC]rn
同じPDUでは、ASCIIは19文字(フレームヘッダを含む)を必要とし、RTUは8バイトしか必要としない。VII.選定決定ガイド
7.1 Modbus RTUの選択
- RS-485ケーブルがあります。工場現場にはRS-485バスが敷設されており、イーサネットへの改造はコストが高すぎる
- 少ないデバイス(20未満):ポーリング遅延が许容范囲内である
- リアルタイムの要件が少ない:数秒または数分のデータ収集が必要です。
- 低コストシナリオ:デバイス自体はRS-485インタフェースのみで、イーサネットモジュールのインストールはコストを増加させます。
- 設備間隔が広い(100m~1200m):RS-485はトランクなしで長距離をカバー
7.2 Modbus TCPを優先するシナリオ
- 高速データ収集:ミリ秒以上のデータ更新が必要
- 設備数が多い(>30):ポーリングの遅延がボトルネックになっている
- Ethereumインフラストラクチャの利用可能性:工場にイーサネットケーブルが敷設された
- 遠隔監視:インターネット経由でデバイスにアクセスする必要がある(VPNとの併用も可能)
- 主要な訪問者:複数のホストが同じスレーブに同時にアクセスする必要がある
- ITシステムとの統合:データベース、MES、ERPなどのITシステムとのドッキングが必要
7.3ハイブリッドアーキテクチャ:ゲートウェイブリッジ
実際のエンジニアリングでは、最も一般的なソリューションはハイブリッドアーキテクチャであり、Modbus TCPからRTUへのゲートウェイデバイスを使用して多数のRS-485デバイスをイーサネットに接続します。
��������������� Modbus TCP ��������������� ModバスRTU ����������
│ │ │ SCADA │---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│サーバー。 │ │ │ イーサネット(イーサネット) │ゲートウェイ │ │ │ RS-485バス 3---------------------
その― ― ― ― ― ― ― ― ― ― ― ― ― その― ― ― ― ― ― ― ― ― ― ― ― ―RTUの低設備コストとTCPの高いパフォーマンスをと柔軟性を兼ね備えたこのアーキテクチャは、現在の産業用モノのインターネットプロジェクトの主流となっています。
8.セキュリティ上の考慮事項
Modbus RTUは本質的に“裸”であり、セキュリティ機構は組み込まれていません。RS-485バスでは、バスにアクセスする任意のデバイスが任意のメッセージを読み取りまたは変更できます。
Modbus TCPにはセキュリティ機構が組み込まれていないが、TLS(トランスポート層セキュリティ)を介して暗号化と認証ができる。Modbusセキュリティプロトコル(ポート80 2を使用)はTLSカプセル化を正式に標準化し、以下を提供します。
- X.50 9 v 3証明書
- TLS暗号化通信
- メッセージ整合性保護
重要インフラストラクチャでは、標準のModbus TCP(ポート502)よりもModbusセキュリティプロトコル(ポート80 2)を使用することを推奨します。
9.よくある質問FAQ
Q1)Modbus RTUデバイスはModbus TCPネットワークに直接接続できますか。
直接接続できません。Modbus TCP/RTUゲートウェイを介したプロトコル変換が必要です。ゲートウェイは、MBAPヘッダの追加/削除、CRCチェックの生成と検証を担当します。
Q2)Modbus RTUとModbus TCPの両方を同じネットワークで使用できますか?
はい、ゲートウェイブリッジで十分です。ゲートウェイは片側にイーサネット(Modbus TCP)を接続し、反対側にRS-485バス(Modbus RTU)を接続する。これは、産業現場で最も一般的なハイブリッドアーキテクチャです。
Q3)デバイスがModbus RTUかModbus TCPかを判断する方法を教えてください。
物理インタフェース:RS-232/RS-485インタフェース→ Modbus RTU; RJ 45イーサネットインタフェース→ Modbus TCP。ただし、両方のインタフェースを持つデバイス(高度PLCなど)もあり、サポートされているプロトコルを確認するために機器マニュアルを参照する必要があります。
Q4)Modbus TCPのデフォルトポート502がブロックされている場合は?
ほとんどのModbus TCPデバイスはデフォルトポートの変更をサポートする。VPNを使用してファイアウォール間のセキュリティなトンネルを確立することもできます。Modbusセキュリティプロトコルは代替として802ポートを使用する。
X.サマリー
Modbus RTUとModbus TCPは競合ではなく、補完関係にある。RTUはデバイス側で低コストで配線が簡単であり、TCPはネットワーク側で高速で拡張性が高い。産業用通信システム設計における正しいアーキテクチャ決定を行うために、両者の違いとそれぞれの適用シナリオを理解することができます。
一言でまとめるとRTUは“フィールドバス”の選択であり、TCPは“情報ハイウェイ”の選択であり、ゲートウェイは2つを結びつけるブリッジです。
関連する読書:ModbusシリアルラインCommunicationの実践ガイド|Modbus TCP/IPネットワークの導入と最適化|Modbusセキュリティプロトコルの詳細
Leave a Reply