在我正在编写Modbus驱动程序的单元测试时,我遇到了以下情况:我可以读取保持寄存器0到1022。我无法读取保存寄存器1022到13000.我收到非法数据地址错误…
这两种假设都是错误的。完全取决于设备决定支持哪些寄存器。有些设备很好,支持各种寄存器,即使它们未被使用。不过,我用过的大多数都没有。他们将使用寄存器组,例如您的设备。
此外,并非所有Modbus设备都支持所有Modbus功能代码。仅仅因为它由Modbus协议标准定义并不一定意味着设备将支持它。
关键是要坚持设备手册中定义的地址。手册通常需要阅读,否则你只需要猜测范围,单位和比例。