CoderTools

Modbusプロトコルパーサー

Modbus RTU/ASCII/TCP通信の解析、変換、デバッグ

データを入力してください

Modbusプロトコルリファレンス

Modbusは1979年にModicon社が開発した、産業分野で最も広く使用されている通信プロトコルです。シリアル回線(RTU)またはイーサネット(TCP/IP)を介した電子機器間の通信を可能にします。このツールは、専用のハードウェアやソフトウェアなしでModbus通信のデバッグと分析を支援します。

Modbus RTUフレーム構造

Modbus RTU(リモートターミナルユニット)は、RS-232やRS-485などのシリアル接続を介してバイナリ形式でデータを送信します。各フレームにはスレーブアドレス、ファンクションコード、データ、およびエラー検出用の16ビットCRCチェックサムが含まれます。コンパクトなバイナリ形式により、帯域幅が制限された環境でも効率的です。

Slave ID
1 byte
Function
1 byte
Data
N bytes
CRC-16
2 bytes

Modbus RTU Frame Structure

Modbus TCPフレーム構造

Modbus TCPは、RTUフレームをTCP/IPパケット内にカプセル化し、7バイトのMBAP(Modbusアプリケーションプロトコル)ヘッダーを使用します。このヘッダーには、要求応答のマッチング用トランザクションID、プロトコル識別子(Modbusでは常に0)、メッセージ長、ユニットIDが含まれます。TCP通信はデフォルトでポート502を使用します。

Trans ID
2 bytes
Proto ID
2 bytes
Length
2 bytes
Unit ID
1 byte
Function
1 byte
Data
N bytes

Modbus TCP Frame Structure (MBAP Header + PDU)

一般的なファンクションコード

ファンクションコードはModbus要求の操作タイプを定義します。読取操作(01-04)はコイル状態やレジスタ値を取得し、書込操作(05、06、0F、10)はデバイスデータを変更します。各ファンクションコードには特定のデータ形式要件があります。

コード 機能 タイプ
0x01コイル読み取り読み取り
0x02離散入力読み取り読み取り
0x03保持レジスタ読み取り読み取り
0x04入力レジスタ読み取り読み取り
0x05シングルコイル書き込み書き込み
0x06シングルレジスタ書き込み書き込み
0x0Fマルチコイル書き込み書き込み
0x10マルチレジスタ書き込み書き込み

Modbusのバイトオーダー

PLCメーカーによって32ビットおよび64ビット値のバイトオーダーが異なります。一般的な4つの配置は:ビッグエンディアン(ABCD)- 標準ネットワークオーダー、リトルエンディアン(DCBA)、ミッドビッグエンディアン(BADC)、ミッドリトルエンディアン(CDAB)です。誤った値を読み取った場合は、異なるバイトオーダーを試して正しい解釈を見つけてください。

ビッグエンディアン (ABCD)
A B C D
リトルエンディアン (DCBA)
D C B A
ミッドビッグエンディアン (BADC)
B A D C
ミッドリトルエンディアン (CDAB)
C D A B

CRC-16/Modbusアルゴリズム

Modbus RTUは、多項式0x8005と初期値0xFFFFのCRC-16をエラー検出に使用します。CRCはスレーブアドレス、ファンクションコード、データバイトに対して計算され、下位バイト先頭の順序で追加されます。CRCが不正なフレームは受信側で破棄されます。

多項式: 0x8005
初期値: 0xFFFF
入力反転: はい
出力反転: はい

実用的なアプリケーション

  • 生のパケットデータを分析してPLCとSCADAシステム間の通信エラーをトラブルシューティング
  • コミッショニング中に16進データをエンジニアリング単位に変換してレジスタ値を検証
  • 専用のModbusマスターソフトウェアなしでデバイス検証用のテストコマンドを生成
  • 異なるメーカーのデバイスを統合する際のバイトオーダー問題をデバッグ

関連ツール

クイックメニュー

最近のツールはありません