Modbus TCPデータ报文構造详解

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

Modbus TCPデータ报文構造详解

ModbusTCP与Modbus UDP的メッセージ形式是一样的,它们之间違いはありません其实就是TCP与UDP違いはありません,因此下面就针对ModbusTCP的协议进行分析,Modbus TCP与Modbus Rtu(ModbusASCII)之间違いはありません如下图:

Modbus TCPデータ报文構造详解イラスト

从上图可以看出,ModbusTCP在Modbus串行通信的基础上,去除了チェック(由于TCP本身就带有チェック和)和デバイスアドレス(ModbusTCP弱化了デバイスアドレス,用IPアドレス来取代),再加上MBAPmessage header(占7 bytes),下面针对MBAP进行分析説明:

Length説明客户机Server
トランザクション処理标识符2バイトModbusRequest/レスポンストランザクション処理的标识客户机启动コピーレスポンス
Protocol Identifier2バイト0=ModbusProtocol客户机启动コピーレスポンス
Length2バイト長さ之后的バイト总数客户机启动サーバー·サーバー启动
Unit identifier1バイト串行链路或其它バス的スレーブ识别クライアント側は启动コピーレスポンス

下面针对具体报文进行分析,Modbusプロトコル在イーサネット(イーサネット)链路上的メッセージ形式如下所示:

トランザクション処理标识符Protocol IdentifierLengthUnit identifierfunction codedata
2 bytes2 bytes2 bytes1 byte1 byteN bytes

有了以上理论基础之后,下面针对各个機能コード进行详细分析:

読み取り出力コイル

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト1

送信报文含义:読み取りサーバー·サーバー1駅から。出力コイル,開始アドレス为0x13=19,对应アドレス为00020,コイルの数为0x1B=27,即読み取り1駅から。出力コイル,アドレス从00020-00046,共271つのコイル的ステータス值。

这里值得注意一下,协议中的開始アドレス指的是索引,后面的アドレス指的是具体アドレス,对于任意一个存储区,索引都是Start from 0的,但是对应的具体アドレス,与存储区是相关的,比如出力コイル,0对应00001;入力コイル,0对应10001;入力レジスタ。,0对应30001;レジスタを保持する。,0对应40001。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト2

戻る报文含义:戻るサーバー·サーバー1駅から。出力コイル00020-00046,共271つのコイル的ステータス值,戻るBytesの数为4个,分别为CD 6B B2 05。

CD=1100 1101 对应 00020-00027

6B=0110 1011 对应 00028-00035

B2=1011 0010 对应 00036-00043

05=0000 0101 对应 00044-00046

読み取り入力コイル

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト3

送信报文含义:読み取りサーバー·サーバー1駅から。入力コイル,開始アドレス为0xC4=196,对应アドレス为10197,コイルの数为0x1D=29,即読み取り1駅から。入力コイル,アドレス从10197-10225,共291つのコイル的ステータス值。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト4

戻る报文含义:戻るサーバー·サーバー1駅から。入力コイル10197-10225,共291つのコイル的ステータス值,戻るBytesの数为4个,分别为CD 6B B2 05。

CD=1100 1101 对应 10197-10204

6B=0110 1011 对应 10205-10212

B2=1011 0010 对应 10213-10220

05=0000 0101 对应 10221-10225

Read and hold register

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト5

送信报文含义:読み取りサーバー·サーバー1駅から。レジスタを保持する。,開始アドレス为0x6B=107,对应アドレス为40108,レジスタの数为0x02=2,即読み取り1駅から。レジスタを保持する。,アドレス从40108-40109,共21つのレジスタ的数值。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト6

戻る报文含义:戻るサーバー·サーバー1駅から。レジスタを保持する。40108-40109,共21つのレジスタ的数值,戻るBytesの数为4个,分别为02 2B 01 06,40108对应数值为0x022B,40109对应数值为0x0106。

Read input register

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト7

送信报文含义:読み取りサーバー·サーバー1駅から。入力レジスタ。,開始アドレス为0x6B=107,对应アドレス为30108,レジスタの数为0x02=2,即読み取り1駅から。レジスタを保持する。,アドレス从30108-30109,共21つのレジスタ的数值。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト8

戻る报文含义:戻るサーバー·サーバー1駅から。入力レジスタ。30108-30109,共21つのレジスタ的数值,戻るBytesの数为4个,分别为02 2B 01 06,30108对应数值为0x022B,30109对应数值为0x0106。

预置单コイル

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト9

送信报文含义:预置サーバー·サーバー1駅から。单1つのコイル的值,コイルアドレス为0x00AC=172,对应アドレス为00173,断通标志0xFF00表示置位,0x000表示复位,即置位1駅から。出力コイル00173。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト10

戻る报文含义:预置单出力コイル原报文戻る。

プリセットシングルレジスタ

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト11

送信报文含义:预置サーバー·サーバー1駅から。单レジスタを保持する。的值,レジスター·アドレス为0x0087=135,对应アドレス为40136,値の書き込み为0x039E,即预置1駅から。レジスタを保持する。40136值为0x039E。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト12

戻る报文含义:预置单レジスタを保持する。原报文戻る。

预置多コイル

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト13

送信报文含义:预置サーバー·サーバー1駅から。多1つのコイル的值,コイルアドレス为0x0013=19,对应アドレス为00020,コイル数为0x0A=10,値の書き込み为0xCD00,即预置1駅から。コイル00020-00027=0xCD=1100 1101,00028-00029=0x00=0000 0000。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト14

戻る报文含义:预置多出力コイル戻る报文是在原报文基础上除去Bytesの数及具体バイト后戻る。

プリセットマルチレジスタ

送信メッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト15

送信报文含义:预置サーバー·サーバー1駅から。多1つのレジスタ的值,レジスター·アドレス为0x0087=135,開始アドレス为40136,レジスタの数为0x02=2,结束アドレス为40137,値の書き込み为0xCD00和0x0A10,即预置1駅から。レジスタ40136=0x0105,40137=0x0A10。

戻るメッセージ形式如下:

Modbus TCPデータ报文構造详解イラスト16

戻る报文含义:预置多レジスタを保持する。戻る报文是在原报文基础上除去Bytesの数及具体バイト后戻る。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.