我目前正在开发一个modbus服务器来控制设备。
设备手册说关于保存寄存器:
Adress 6000:ValueA,2 Byte地址6001:ValueB,1 Byte; ValueC,4字节; ValueD,4 Byte…
我偶然发现了一个类似的情况,并在一个更专业的论坛上询问了这个问题。 “长,没读”是,地址空间大部分时间是线性的,但并非总是如此。
看看以下示例:
请原谅德语部分,但你可以看到,寄存器地址0x2021保存由8个字或8个16位块组成的数据。按照上面的逻辑,你会希望第二个字存储在寄存器0x2022中,但是我检查了我的本地设备并且它们不一样。总而言之,有一些设备决定,它们给一个寄存器提供了比它应该拥有的更多的内存。因此,寄存器0x2021自己实际上保持8个字,并且不使用寄存器0x2022来保持存储器。 你可能有类似的情况。