You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确访问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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:15:00