Modbus協(xié)議(三)
ModbusTCP協(xié)議
應(yīng)用層協(xié)議:ModbusTCP
物理層協(xié)議:標(biāo)準(zhǔn)TCP/IP協(xié)議
默認(rèn)端口:502
校驗(yàn):無校驗(yàn)
報(bào)文頭(MBAP):有
簡(jiǎn)而言之,就是在通用的功能碼+數(shù)據(jù)模型基礎(chǔ)上,加上MBAP報(bào)文頭,即構(gòu)成了ModbusTCP的通信報(bào)文。
MBAP報(bào)文頭
定義
?MBAP?? 是 ??Modbus Application Protocol Header??(Modbus應(yīng)用協(xié)議頭)的縮寫,專為 ??Modbus TCP?? 協(xié)議設(shè)計(jì),用于在以太網(wǎng)通信中封裝Modbus數(shù)據(jù)幀。
MBAP結(jié)構(gòu)(7字節(jié))
| 字段 | 長度 | 示例 | 說明 |
|---|---|---|---|
| 事務(wù)標(biāo)識(shí)符 | 2字節(jié) | 00 01 | 請(qǐng)求-響應(yīng)匹配ID |
| 協(xié)議標(biāo)識(shí)符 | 2字節(jié) | 00 00 | 固定值0x0000,表示Modbus協(xié)議 |
| 長度字段 | 2字節(jié) | 00 06 | 后續(xù)PDU(協(xié)議數(shù)據(jù)單元)的字節(jié)數(shù)(含單元標(biāo)識(shí)符) |
| 單元標(biāo)識(shí)符 | 1字節(jié) | 01 | 從站地址(兼容RTU設(shè)備地址,默認(rèn)0x01,廣播地址0x00無效 |
樣例1
軟件
使用運(yùn)行在同一臺(tái)電腦上的2個(gè)軟件,分別做服務(wù)器和客戶端實(shí)現(xiàn)操作。
Server服務(wù)器:ModSim32
Client客戶端:帶網(wǎng)絡(luò)調(diào)試功能的串口調(diào)試軟件
讀多個(gè)保持寄存器

可以看到,使用串口調(diào)試軟件發(fā)送報(bào)文
00 01 00 00 00 06 01 03 00 00 00 02
報(bào)文解釋
| 字段 | 事務(wù)ID | 協(xié)議ID | 后續(xù)字節(jié)長度 | 從站地址 | 功能碼 | 寄存器地址 | 寄存器數(shù)量 |
|---|---|---|---|---|---|---|---|
| 值 | 00 01 | 00 00 | 00 06 | 01 | 03 | 00 00 | 00 02 |
| 含義 | 請(qǐng)求響應(yīng) | Modbus協(xié)議 | 后續(xù)數(shù)據(jù)有6字節(jié) | 從站1 | 讀多個(gè)保持寄存器 | 從寄存器0開始 | 讀2個(gè) |
反饋信息
00 01 00 00 00 07 01 03 04 00 06 0A 16
| 字段 | 事務(wù)ID | 協(xié)議ID | 后續(xù)字節(jié)長度 | 從站地址 | 功能碼 | 后續(xù)數(shù)據(jù)長度(字節(jié)數(shù)) | 寄存器0 | 寄存器1 |
|---|---|---|---|---|---|---|---|---|
| 值 | 00 01 | 00 00 | 00 07 | 01 | 03 | 04 | 00 06 | 0A 16 |
| 含義 | 請(qǐng)求響應(yīng) | Modbus協(xié)議 | 后續(xù)數(shù)據(jù)有7字節(jié) | 從站1 | 讀多個(gè)保持寄存器 | 后續(xù)數(shù)據(jù)有4字節(jié) | 00 06:6 | 0A 16:16 * 16 * 10 + 16 + 6 = 2582 |
所以,讀出來從站1的地址為0和1的兩個(gè)保持寄存器的值,分別為6和2582。
樣例2
使用2臺(tái)電腦,win10系統(tǒng)
A電腦:運(yùn)行Autoshop仿真H5U作為服務(wù)器
B電腦:使用Modbus仿真軟件或串口調(diào)試軟件作為客戶端
A電腦 ModbusTCP服務(wù)器
查看服務(wù)器IP

192.168.254.129
打開Autoshop,新建H5UPLC,開啟仿真,然后對(duì)M存儲(chǔ)區(qū)寫入部分內(nèi)容。

M區(qū)繼電器得電狀態(tài)
| M | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| ON/OFF狀態(tài) | ON | OFF | ON | OFF | ON | OFF | ON |
匯川H5U的仿真開啟后,默認(rèn)開啟ModbusTCP的服務(wù)器。
B電腦 ModbusTCP客戶端
查看客戶端IP

192.168.254.158
查看連接狀態(tài)

打開串口調(diào)試軟件,設(shè)置服務(wù)器IP,發(fā)送報(bào)文

如圖,發(fā)送:
00 01 00 00 00 06 01 02 00 00 00 05
報(bào)文含義:
| 字段 | 事務(wù)ID | 協(xié)議ID | 后續(xù)字節(jié)長度 | 從站地址 | 功能碼 | 線圈地址 | 線圈數(shù)量 |
|---|---|---|---|---|---|---|---|
| 值 | 00 01 | 00 00 | 00 06 | 01 | 02 | 00 00 | 00 05 |
| 含義 | 請(qǐng)求響應(yīng) | Modbus協(xié)議 | 后續(xù)數(shù)據(jù)有6字節(jié) | 從站1 | 讀多個(gè)線圈 | 從線圈0開始 | 讀5個(gè) |
接收數(shù)據(jù)
00 01 00 00 00 04 01 02 01 15
| 字段 | 事務(wù)ID | 協(xié)議ID | 后續(xù)字節(jié)長度 | 從站地址 | 功能碼 | 后續(xù)數(shù)據(jù)長度(字節(jié)數(shù)) | 寄存器 |
|---|---|---|---|---|---|---|---|
| 值 | 00 01 | 00 00 | 00 04 | 01 | 02 | 01 | 15 |
| 含義 | 請(qǐng)求響應(yīng) | Modbus協(xié)議 | 后續(xù)數(shù)據(jù)有4字節(jié) | 從站1 | 讀多個(gè)線圈 | 后續(xù)數(shù)據(jù)有1字節(jié) | 15:0001 0101 |

由此可知,把服務(wù)器的M0~M4共計(jì)5個(gè)線圈的狀態(tài)讀出來了。
| M | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|
| ON/OFF狀態(tài) | OFF | ON | OFF | ON | OFF | ON |

浙公網(wǎng)安備 33010602011771號(hào)