数码管温湿度通讯协议
V0.3 2021.4
设备采用RS485通讯接口,默认串口参数配置:9600 8 N 1。协议遵循标准Modbus_RTU通信协议,主要用到03/06功能码读写保持寄存器、04功能码读取输入寄存器,以下将对通讯协议进行简单介绍。
寄存器分配如下:
1.保持寄存器
寄存器地址 | 内容 | 权限 | 功能码 | 备注 |
0X0000 | Modbus地址 | R/W | 03/06 | 1-247,默认 1 |
0X0001 | 串口波特率 | R/W | 03/06 | 支持9600、14400、19200、38400、57600、115200。寄存器值=波特率/100 默认:96 |
保留 |
2.输入寄存器
寄存器地址 | 内容 | 权限 | 功能码 | 备注 |
0X0000 | 设备类型 | R | 04 | 厂家出厂测试用 |
0X0001 | 温度 | R | 04 | 实际值=寄存器值x0.1,单位:℃ |
0X0002 | 湿度 | R | 04 | 实际值=寄存器值x0.1,单位:RH% |
保留 |
举例:
- 修改Modbus地址: 把地址为1的设备地址修改为2。
主机发送:01 06 00 00 00 02 08 0B
解释:
示例(HEX) | 字节数 | 内容 | 解释 |
01 | 1 | Modbus地址 | 当前01地址的设备 |
06 | 1 | 功能码 | 06功能码写入保持寄存器 |
0000 | 2 | 寄存器地址 | 写入0000寄存器 |
0002 | 2 | 数据 | 写入0002数值 |
08 0B | 2 | ModbusCRC16校验 | 校验 |
设备应答:01 06 00 00 00 02 08 0B
应答与主机相同,不做解释。
注意:修改完毕后请使用修改后的新地址与设备通信。
- 读取温度值:
主机发送:01 04 00 01 00 01 60 0A
解释:
示例(HEX) | 字节数 | 内容 | 解释 |
01 | 1 | Modbus地址 | 当前01地址的设备 |
04 | 1 | 功能码 | 04功能码读取输入寄存器 |
0001 | 2 | 寄存器起始地址 | 从1寄存器开始 |
0001 | 2 | 读取寄存器数量 | 读取1 个寄存器 |
600A | 2 | ModbusCRC16校验 | 校验 |
设备应答:01 04 02 01 D1 78 FC
解释:
示例(HEX) | 字节数 | 内容 | 解释 |
01 | 1 | Modbus地址 | 当前01地址的设备 |
04 | 1 | 功能码 | 04功能码读取输入寄存器 |
02 | 1 | 返回字节数 | 读1个寄存器,返回2个字节数据 |
01D1 | 2 | 第1个寄存器数值 | 0x01D1换算10进制465,实际数值46.5℃ |
78FC | 2 | ModbusCRC16校验 | 校验 |
注意:以上仅对传感器部分寄存器读写做出介绍,其他寄存器可根据以上介绍类推。其他回复内容请遵循Modbus_RTU通讯协议,具体协议请参考互联网。