modbus TCP 示例報文

原文地址:https://blog.csdn.net/xingyuan1hao/article/details/53573478

調試modbus  tcp 整理百度文庫文檔如下

《modbus-tcp-報文舉例分析》

《MODBUSTCP通訊報文》


關於Modbus 報文

Client request:

19 B2 00 00 00 06 06 03 00 27 00 02

上面是modbus客戶端發出的報文內容,爲modbus tcp/ip協議格式,其前面的六個字節爲頭字節( header handle);

19 B2 00 00 00 06

19 B2 兩個字節是Client發出的檢驗信息,Sever端只是需要將這兩個字節的內容copy以後再放到response的報文的相應位子就可以了

00 00 兩個字節是表示tcp/ip 的協議的modbus的協議;

00 06 兩個字節表示的是header handle後面還有多長的字節,即表示的是該字節以後的字節長度(lengch),可以看到在00 06後面還有 “06 03 00 27 00 02”六個字節,所以這兩個字節表示的就是6;

 

PDU:

“06 03 00 27 00 02”

06 一個字節表示slave address;

03 爲Fuction code ;

00 27 表示Client request的寄存器地址;

00 02 表示request 寄存器的長度;(寄存器個數)

 

Server response:

19 B2 00 00 00 07 06 03 04 00 00 00 00

Header handle : “ 19 B2 00 00 00 07”

19 B2 爲Server返回的檢驗碼,copy from Client request;

其它的表示與客戶端的表示相同

 

PDU:

“ 06 03 04 00 00 00 00”

06 是Slave address,從地址數;

03是Function code ;

04表示了回覆給Client request的需要讀的寄存器的值的個數,這裏因爲主地址向從地址讀了2個寄存器即2個16位的寄存器(2個字)所以這裏爲4個字節,因爲2個字爲4個字節,而04這個字節表示的就是從地址要回復給主地址的寄存器字節長度,

00 00 00 00 表示了4個字節的值

 

ModBusTcp與串行鏈路Modbus的數據域是一致的,具體數據域可以參考串行modbus。這裏給出幾個ModbusTcp的鏈路解析說明,輔助新人分析報文。

1、數據請求

97 76 00 00 00 06 04 04 00 7D 00 7D

 

示例

長度

說明

備註

Map報文頭

0x97

1

事務處理標Hi

客戶機發起,服務器複製,用於事務處理配對

0x96

1

事務處理標Lo

0x0000

2

協議標識符號

客戶機發起,服務器複製

Modbus協議 = 0.

0x0006

2

長度

從本字節下一個到最後

 

0x04

1

單元標識符

客戶機發起,服務器複製

串口鏈路或其他總線上遠程終端標識

功能碼

0x04

1

功能碼,讀寄存器

參考標準modbus協議

數據

0x007D

2

起始地址

 

0x 007D

2

寄存器數量

 

校驗

 

 

2、數據請求回覆

97 76 00 00 00 FD 04 04 FA AB 9E 41 18 7A E1 3F 94 7A E1 3F 94 0A 3D 3F 97 51 EC 3F 98 CC CD C0 6C 33 33 C0 E3 CC CD C0 EC EB 85 41 F1 D7 0A 41 E9 47 AE 41 ED EB 85 41 F1 19 9A 43 D0 E6 66 43 C9 4C CD 43 CF EB 85 41 F3 66 66 42 0F CC CD 41 C2 E6 66 44 0A 1E B8 41 FB A3 D7 42 0C CC CD 41 BC C0 00 44 0A B8 52 41 F6 5C 29 42 0F 47 AE 41 D1 C6 66 44 0A 00 00 00 00 C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 0A 00 0A 00 0A 00 04 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F

 

示例

長度

說明

備註

Map報文頭

0x97

1

事務處理標Hi

客戶機發起,服務器複製,用於事務處理配對

0x96

1

事務處理標Lo

0x0000

2

協議標識符號

客戶機發起,服務器複製

Modbus協議 = 0.

0x00FD

2

長度

從本字節下一個到最後

 

0x04

1

單元標識符

客戶機發起,服務器複製

串口鏈路或其他總線上遠程終端標識

功能碼

0x04

1

功能碼,讀寄存器

參考標準modbus協議

數據

0x FA

1

字節個數

 

0x----

 

數據

校驗

 

 

 

3、寫多個寄存器

97 79 00 00 00 09 04 10 00 00 00 01 02 00 01

 

示例

長度

說明

備註

Map報文頭

0x97

1

事務處理標Hi

客戶機發起,服務器複製,用於事務處理配對

0x79

1

事務處理標Lo

0x0000

2

協議標識符號

客戶機發起,服務器複製

Modbus協議 = 0.

0x0009

2

長度

從本字節下一個到最後

 

0x04

1

單元標識符

客戶機發起,服務器複製

串口鏈路或其他總線上遠程終端標識

功能碼

0x10

1

功能碼,讀寄存器

參考標準modbus協議

數據

0x0000

2

起始地址

 

0x 0001

2

寫寄存器數量

 

0x 02

1

寫字節的個數

 

00 01

2

目標值

 

校驗

 

 

 

4、寫多個寄存器響應

97 79 00 00 00 06 04 10 00 00 00 01

 

示例

長度

說明

備註

Map報文頭

0x97

1

事務處理標Hi

客戶機發起,服務器複製,用於事務處理配對

0x79

1

事務處理標Lo

0x0000

2

協議標識符號

客戶機發起,服務器複製

Modbus協議 = 0.

0x0006

2

長度

從本字節下一個到最後

 

0x04

1

單元標識符

客戶機發起,服務器複製

串口鏈路或其他總線上遠程終端標識

功能碼

0x10

1

功能碼,讀寄存器

參考標準modbus協議

數據

0x0000

2

起始地址

 

0x 0001

2

寄存器個數

 

校驗

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章