如果多寄存器Modbus数据项重叠,会发生什么问题?

时间:2019-01-21 14:11:49

标签: modbus

通常使用2个寄存器在Modbus中读取/写入浮点值。 我的问题是,如果我按如下所示指定数据重叠的设备寄存器映射,则会出现什么问题或兼容性问题。

40001 (float a), 40002 (float b), 40003 (float c), 40004 (float d),依此类推。

使用FC03可以在40001读取浮点(a),寄存器的数量为2。 使用FC03可以在40002读取浮点(b),寄存器的数量为2。 使用FC03可以在40001读取浮点(a)和(b),寄存器的数量为4。

1 个答案:

答案 0 :(得分:0)

这将使您的设备成为modbus-compatible设备,而不是modbus-like设备。

缺点是存在大量的Modbus客户端,主要是SCADA系统,它们将停止使用此类寄存器映射。因此,如果您不关心第三方客户,可以这样做,但是目的是什么?

UPD

此外,您在读取同时属于不同值的寄存器时也会得到未定义的行为。在4002读单词的预期输出是什么? a是LSB还是b是MSB?

我如何读取2个后续数字(ab)?

  

当涉及到多寄存器时,Modbus已经仅仅是类Modbus   值

错误,它仍然是modbus,但是无论何时准备多寄存器值或实现时间戳,都应在文档中显式定义它们,并且规则不应违反上述通用modbus规则。告诉您正在使用带有MSB BOM的2个寄存器没有错。

所以答案是它可以在某些特定情况下使用,但通常根本不可用