由于项目需要,使用了恒亚HY-AI02-43模拟量转485模块读取压力传感器的数据。由于供应商没有提供说明书和通讯协议,当时花了不少时间用串口助手一次次调试,目前已经能正常使用。最后将最终的结果做一下记录。
供应商也提供了一份协议,但实际调试发现是错误的,后来在网上找了一份,经调试与实际情况吻合。
一、通讯协议


二、读寄存器
1、读取设备地址0x01的1、2通道模拟量信号值
发送帧 | 0x01 | 0x03 | 0x00 | 0x04 | 0x00 | 0x02 | 0x85 | 0xCA |
设备地址 | 功能码:读 | 寄存器地址 | 寄存器长度 | CRC-16(Modbus) |
应答帧 | 0x01 | 0x03 | 0x04 | 0x00 | 0x24 | 0x00 | 0x37 | 0xFB | 0xEE |
设备地址 | 功能码:读 | 返回字节数 | 通道1 | 通道2 | CRC-16(Modbus) |
2、读取设备地址0x04的波特率
发送帧 | 0x04 | 0x03 | 0x00 | 0x00 | 0x00 | 0x01 | 0x84 | 0x5F |
设备地址 | 功能码:读 | 波特率寄存器 | 寄存器长度 | CRC-16(Modbus) |
应答帧 | 0x04 | 0x03 | 0x02 | 0x00 | 0x06 | 0xF4 | 0x46 |
设备地址 | 功能码:读 | 返回字节数 | 6对应的是115200 | CRC-16(Modbus) |
三、写寄存器
1、写设备地址:
将当前地址0x04设置成0x01
发送帧 | 0x04 | 0x06 | 0x00 | 0x01 | 0x00 | 0x01 | 0x19 | 0x9F |
设备地址 | 功能码:写 | 设备寄存器 | 新地址 | CRC-16(Modbus) |
应答帧 | 0x04 | 0x06 | 0x00 | 0x01 | 0x00 | 0x01 | 0x19 | 0x9F |
设备地址 | 功能码:写 | 设备寄存器 | 新地址 | CRC-16(Modbus) |
2、写设备波特率
将设备地址0x01的波特率设置为115200(出厂默认是9600)
发送帧 | 0x01 | 0x06 | 0x00 | 0x00 | 0x00 | 0x06 | 0x09 | 0xC8 |
设备地址 | 功能码:写 | 波特率寄存器 | 要设置的波特率 | CRC-16(Modbus) |
设置完波特率,似乎每次回复都不一样。因为项目时间紧所以就没有继续研究了,目前这样能用就行。