Modbus RTU 485通讯结构详解
Modbus RTU 通讯结构详解
功能码 01H – 读线圈状态
字段名称 | 说明 | 示例值 |
---|---|---|
从站地址 | 目标设备编号 | 0x01 |
功能码 | 读线圈状态 | 0x01 |
起始地址 | 地址高 + 低 | 0x00 0x13 |
线圈数量 | 高位 + 低位 | 0x00 0x25 |
CRC | CRC 校验 | 0xXXXX |
字段名称 | 说明 | 示例值 |
---|---|---|
从站地址 | 响应地址 | 0x01 |
功能码 | 回显功能码 | 0x01 |
字节数 | 返回字节 | 0x05 |
线圈状态 | 状态打包 | 0xCD 0x6B 0x05 0x00 0x00 |
CRC | CRC 校验 | 0xXXXX |
功能码 03H – 读保持寄存器
从站地址 | 目标地址 | 0x01 |
功能码 | 读取保持寄存器 | 0x03 |
起始地址 | 高位 + 低位 | 0x00 0x6B |
寄存器数量 | 高位 + 低位 | 0x00 0x03 |
CRC | CRC 校验 | 0xXXXX |
从站地址 | 回显地址 | 0x01 |
功能码 | 回显功能码 | 0x03 |
字节数 | 返回字节数 | 0x06 |
数据 | 寄存器值 | 0x02 0x2B 0x00 0x00 0x00 0x64 |
CRC | 校验 | 0xXXXX |
功能码 05H – 写单个线圈
从站地址 | 设备地址 | 0x01 |
功能码 | 写线圈 | 0x05 |
线圈地址 | 高位 + 低位 | 0x00 0xAC |
写入值 | 0xFF00 = ON, 0x0000 = OFF |
0xFF 0x00 |
CRC | 校验 | 0xXXXX |
回显请求 | 所有字段与请求帧一致 | 完全一致 |
功能码 06H – 写单个保持寄存器
从站地址 | 设备地址 | 0x01 |
功能码 | 写单个寄存器 | 0x06 |
寄存器地址 | 高位 + 低位 | 0x00 0x01 |
写入值 | 2 字节 | 0x00 0x03 |
CRC | 校验 | 0xXXXX |
回显请求 | 所有字段与请求帧一致 | 完全一致 |
功能码 10H – 写多个保持寄存器
从站地址 | 设备地址 | 0x01 |
功能码 | 写多个寄存器 | 0x10 |
起始地址 | 高位 + 低位 | 0x00 0x01 |
寄存器数量 | 写几个寄存器 | 0x00 0x02 |
字节数 | 后续数据长度 | 0x04 |
数据 | 数据内容 | 0x00 0x0A 0x01 0x02 |
CRC | 校验 | 0xXXXX |
从站地址 | 响应设备 | 0x01 |
功能码 | 回显 | 0x10 |
起始地址 | 确认地址 | 0x00 0x01 |
寄存器数量 | 确认写入个数 | 0x00 0x02 |
CRC | 校验 | 0xXXXX |
下面以工业在线PH/ORP分析仪进行modbus rtu 485通讯采集PH值为例:【有些时候使用modscan32软件无法采集,得使用串口调试助手软件才可以】
接线图
电气接线图
Modbus RTU通讯地址功能码列表
如图所示:01 从站地址 03功能码 00 97是0x97起始地址 00 01是读取两个字节即1个字,35 6E是CRC;响应帧 01 从站地址 03功能码 02 返回2个字节分别是03 68,即0x0368就是872,小数点左移2位就是PH值为8.72;B9 5A是CRC