一、Modbus协议简介
{来自百度百科}
每个Modbus 数据包都由以下几个部分组成:
(1) 地址域
(2) 功能码域
(3) 数据域
(4) 校验域
地址域:0~247,0一般作为广播地址,1~247作为装置(下位机)使用的地址号。
功能码:用来确认该包报文的具体功能。(常见03码、10码)
0x03 | 读寄存器 |
0x10 | 写寄存器 |
0x05 | 遥控操作 |
读寄存器数据包格式 |
响应格式 |
||
从站地址 |
1 字节 |
从站地址 |
1 字节 |
功能码 |
1 字节 |
功能码 |
1 字节 |
寄存器起始地址高位 |
1 字节 |
字节数n |
1 字节 |
寄存器起始地址低位 |
1 字节 |
Data1 高位 |
1 字节 |
寄存器数量高位 |
1 字节 |
Data1 低位 |
1字节 |
寄存器数量低位 |
1 字节 |
…… |
|
|
|
Datan/2 高位 |
1 字节 |
|
|
Datan/2 低位 |
1 字节 |
CRC校验码低位 |
1 字节 |
CRC低位 |
1 字节 |
CRC校验码高位 |
1 字节 |
CRC高位 |
1 字节 |
写寄存器数据包格式 |
响应格式 |
||
从站地址 |
1 字节 |
从站地址 |
1 字节 |
功能码 |
1 字节 |
功能码 |
1 字节 |
寄存器起始地址高位 |
1 字节 |
寄存器起始地址高位 |
1 字节 |
寄存器起始地址低位 |
1 字节 |
寄存器起始地址低位 |
1 字节 |
寄存器数量高位 |
1 字节 |
寄存器数量高位 |
1 字节 |
寄存器数量低位 |
1 字节 |
寄存器数量低位 |
1 字节 |
字节数(n) |
1 字节 |
CRC校验码低位 |
1 字节 |
Data1 高位 |
1 字节 |
CRC校验码高位 |
1 字节 |
Data1 低位 |
1 字节 |
|
|
…… |
|
|
|
Data(n/2) 高位 |
1 字节 |
|
|
Data(n/2) 低位 |
1 字节 |
|
|
CRC校验码低位 |
1 字节 |
|
|
CRC校验码高位 |
1 字节 |
|
|
请求格式 |
响应格式 |
||
从站地址 |
0x11 |
从站地址 |
0x11 |
功能码 |
0x05 |
功能码 |
0x05 |
预置地址高 |
0 x 23 |
预置地址高 |
0 x 23 |
预置地址低 |
0 x 8C |
预置地址低 |
0 x 8C |
设置数据高 |
0 x FF |
设置数据高 |
0 x FF |
设置数据低 |
0x00 |
设置数据低 |
0x00 |
CRC 校验码低 |
44 |
CRC 校验码低 |
44 |
CRC 校验码高 |
C5 |
CRC 校验码高 |
C5 |