通常使用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。
答案 0 :(得分:0)
这将使您的设备成为modbus-compatible
设备,而不是modbus-like
设备。
缺点是存在大量的Modbus客户端,主要是SCADA系统,它们将停止使用此类寄存器映射。因此,如果您不关心第三方客户,可以这样做,但是目的是什么?
此外,您在读取同时属于不同值的寄存器时也会得到未定义的行为。在4002
读单词的预期输出是什么? a
是LSB还是b
是MSB?
我如何读取2个后续数字(a
和b
)?
当涉及到多寄存器时,Modbus已经仅仅是类Modbus 值
错误,它仍然是modbus,但是无论何时准备多寄存器值或实现时间戳,都应在文档中显式定义它们,并且规则不应违反上述通用modbus规则。告诉您正在使用带有MSB BOM的2个寄存器没有错。
所以答案是它可以在某些特定情况下使用,但通常根本不可用。