如何正确访问Enron Modbus寄存器?NModbus读取OMNI流量计算机数据咨询
OMNI Flow Computer Modbus浮点数读取解决方案
核心差异原因
你遇到的非预期值问题本质是Enron Modbus与标准Modicon Modbus的寻址规则不同,对应处理方案如下:
1. 两种模式的寻址规则
- Enron Modbus(设备默认模式):32位IEEE浮点数仅占1个逻辑地址,单地址对应物理层2个16位寄存器,地址步进为1:
- 第一个浮点数地址为8080,第二个为8081,第三个为8082,以此类推
- Modicon Modbus兼容模式:遵循标准Modbus规则,32位浮点数占2个连续16位寄存器地址,地址步进为2:
- 第一个浮点数占8080、8081,第二个占8082、8083,和你之前的常规操作逻辑一致
2. 文档标注含义
你提到的文档说明:
The starting address of the variable still applies
指的是无论切换到哪种模式,单个变量的起始逻辑地址不变,比如第一个浮点数永远从8080开始,差异仅在后续变量的地址偏移步长。你之前的理解有误,不是「1个点位访问2个寄存器」,而是Enron模式下1个逻辑点位本身就对应2个寄存器的返回值。
3. NModbus适配操作
若使用默认Enron Modbus模式
- 读取单个浮点数:调用
ReadHoldingRegisters时numberOfPoints参数设为1即可,设备会直接返回2个ushort值,用你现有的ToFloat方法转换即可得到正确值 - 读取连续2个浮点数:起始地址设为8080,
numberOfPoints设为2,会返回4个ushort值,前2个转换为第一个浮点数,后2个转换为第二个浮点数
若切换为Modicon Modbus兼容模式
直接沿用你之前的操作逻辑即可:单个浮点数numberOfPoints设为2,第一个浮点数起始地址8080,第二个起始地址8082。
4. 偏移排查建议
如果按上述规则读取仍有异常,可排查地址的基数偏移:OMNI系列部分固件存在1-based地址偏移,可尝试将起始地址±1后重新读取验证。
内容的提问来源于stack exchange,提问作者FrougeurPro
相关产品推荐
相关产品推荐

