Modbus 可读保持寄存器中间的保持寄存器是否可以是“登记”;非法数据地址;?

Modbus 可读保持寄存器中间的保持寄存器是否可以是“登记”;非法数据地址;?,modbus,Modbus,在编写Modbus驱动程序的单元测试时,我经历了以下几点: 我可以读取保持寄存器0到1022 I无法读取保持寄存器1022到13000。我得到一个非法数据地址错误代码 我能读13000到25000个寄存器 我预计支持Modbus的设备将以以下两种方式之一运行: 每个设备都支持从0x0000到0xFFFF的完整地址范围 每个设备都支持从0x0000到N的地址范围,其中N

在编写Modbus驱动程序的单元测试时,我经历了以下几点:

  • 我可以读取保持寄存器0到1022
  • I无法读取保持寄存器1022到13000。我得到一个
    非法数据地址
    错误代码
  • 我能读13000到25000个寄存器
  • 我预计支持Modbus的设备将以以下两种方式之一运行:

  • 每个设备都支持从0x0000到0xFFFF的完整地址范围
  • 每个设备都支持从0x0000到N的地址范围,其中N<0xFFFF
  • 你们当中有没有经验更丰富的人知道:

  • 关于Modbus设备预期行为的假设1或2是否正确
  • 一个地址成为非法数据地址除了超出范围之外,还有其他原因吗

  • 这两种假设都是错误的。完全由设备决定支持哪些寄存器。有些设备很好,支持广泛的寄存器,即使它们未使用。不过,我用过的大部分都没有。他们将使用寄存器组,如您的设备

    此外,并非所有Modbus设备都支持所有Modbus功能代码。仅仅因为它是由Modbus协议标准定义的,并不一定意味着设备将支持它


    关键是要坚持设备手册中定义的地址。手册通常是必读的,否则你只能猜测范围、单位和比例。

    这两个假设都是错误的。完全由设备决定支持哪些寄存器。有些设备很好,支持广泛的寄存器,即使它们未使用。不过,我用过的大部分都没有。他们将使用寄存器组,如您的设备

    此外,并非所有Modbus设备都支持所有Modbus功能代码。仅仅因为它是由Modbus协议标准定义的,并不一定意味着设备将支持它

    关键是要坚持设备手册中定义的地址。手册通常是必读的,否则您只能猜测范围、单位和比例