在对我正在编写的 Modbus 驱动程序进行单元测试时,我遇到了以下情况:
- 我可以读取保持寄存器 0 到 1022。
- 我无法读取保持寄存器 1022 到 13000。我收到
illegal data address错误代码。 - 我可以读取保持寄存器 13000 到 25000。
我本来希望支持 Modbus 的设备以以下两种方式之一运行:
- 每个设备都支持从 0x0000 到 0xFFFF 的全部地址范围。
- 每个设备都支持从 0x0000 到 N 的地址范围,其中 N < 0xFFFF。
有没有经验丰富的人知道:
- 关于 Modbus 设备预期行为的假设 1 或 2 是否正确?
- 除了超出范围之外还有其他原因使地址成为一个
illegal data address?