在用Modbus Slave模拟modbus从设备,主设备用0x03功能码读取保持寄存器的值,工具返回0x83错误码。
002347-Rx:01 03 30 10 00 02 CA CE
002393-Rx:01 03 30 00 00 0B 0B 0D
002394-Tx:01 83 02 C0 F1
Modbus Slave设置如下:
原因:通常,Modbus返回83错误码一般都是modbus slave 设备的地址有问题。
我们分析下,主设备读取了两段地址,0x3000读取10个寄存器,0x3010读取两个寄存器;从设备只配置了0x3000开始的10个寄存器,导致从设备判断读取的地址越界,所以返回了0x83错误码。
修改从设备配置0x3000开始的20个寄存器,问题解决。
002365-Rx:01 03 30 00 00 0B 0B 0D
002366-Tx:01 03 16 00 0B 36 80 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 56 EB
002367-Rx:01 03 30 10 00 02 CA CE
002368-Tx:01 03 04 00 00 00 00 FA 33