Modbus 协议规约
功能码及其示例格式
功能码01H:读输出开关量。位操作,可以读单个也可以多个。
发送指令
地址 | 功能码 | 起始地址高8位(位) | 起始地址低8位(位) | 寄存器数量高8位(位) | 寄存器数量低8位(位) | CRCH | CRCL |
0X01 | 0X01 | 0X00 | 0X08 | 0X00 | 0X0C | 0XBD | 0XCD |
响应
从机 地址 | 功能码 | 返回字节数 | Data1 | Data2 | CRCH | CRCL |
0X01 | 0X01 | 0X02 | 0X66 | 0X88 | 0X9A | 0X93 |
Data1:0X66
BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Data2:0X08 不够8位,字节高位填充0
BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
功能码02H:读输入开关量。位操作,可以读单个也可以多个。与01H 功能码相似,此处略
功能码03H:读保持寄存器。字节操作,可以读单个也可以多个。
发送指令
从机 地址 | 功能码 | 起始地址H | 起始地址L | 数据数量H | 数据数量L | CRCH | CRCL |
0X01 | 0X03 | 0X00 | 0X06 | 0X00 | 0X02 | 0X24 | 0X0A |
响应
从机 地址 | 功能码 | 返回字节数 | Data1H | Data1L | Data2H | Data2L | CRCH | CRCL |
0X01 | 0X03 | 0X04 | 0X66 | 0X88 | 0X99 | 0XFF | 0X4E | 0X81 |
数据存储顺序
0X0009 | 0X0008 | 0X0007 | 0X0006 |
0X99 | 0XFF | 0X66 | 0X88 |
功能码05H
发送指令
从机 地址 | 功能码 | 起始地址H(位) | 起始地址L(位) | DATA H | DATA L | CRCH | CRCL |
0X01 | 0X05 | 0X00 | 0X06 | 0XFF | 0X00 | 0X6C | 0X3B |
响应
同发送指令
功能码06H:写单个保持寄存器。字节操作,只能写一个
发送指令
从机 地址 | 功能码 | 起始地址高8位(位) | 起始地址低8位(位) | DataH | DataL | CRCH | CRCL |
0X01 | 0X06 | 0X00 | 0X05 | 0X66 | 0X88 | 0XB2 | 0X0D |
响应
功能码0FH:写多个输出开关量。位操作,可以写单个也可以多个。起始地址只能是8的整数倍。(待改)。若数据区的某一个位为1,则对应的线圈状态为ON,
若数据区的某一个位为0,则对应的线圈状态为OFF
发送指令
从机 地址 | 功能码 | 起始地址高8位(位) | 起始地址低8位(位) | 寄存器数量高8位(位) | 寄存器数量低8位(位) | 字节数 | Data1 | Data2 | CRCH | CRCL |
0X01 | 0X0F | 0X00 | 0X08 | 0X00 | 0X0C | 0X02 | 0X66 | 0X88 | 0XCE | 0X9E |
Data1:0X66
BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Data2:0X08 不够八位,字节高位填充为0
BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
响应
从机 地址 | 功能码 | 起始地址高8位(位) | 起始地址低8位(位) | 寄存器数量高8位(位) | 寄存器数量低8位(位) | 字节数 | CRCH | CRCL |
0X01 | 0X01 | 0X00 | 0X05 | 0X00 | 0X20 | 0X20 | 0X00 | 0X00 |
功能码10H:写多个保持寄存器。字节操作,可以写单个也可以多个数据。
发送指令
从机 地址 | 功能码 | 起始地址H | 起始地址L | 数据数量H | 数据数量L | Data1H | Data1L | Data2H | Data2L | CRCH | CRCL |
0X01 | 0X10 | 0X00 | 0X06 | 0X00 | 0X02 | 0X66 | 0X88 | 0X99 | 0XFF | 0X47 | 0X70 |
响应
从机 地址 | 功能码 | 起始地址H | 起始地址L | 数据数量H | 数据数量L | CRCH | CRCL |
0X01 | 0X10 | 0X00 | 0X06 | 0X00 | 0X02 | 0XA1 | 0XC9 |
上述协议格式均是本人查阅资料,自己理解的Modbus协议。如有和标准协议不同之处,请不吝赐教。duo_lin0119@163.com