Modbus 寄存器解码器
把原始的保持寄存器或输入寄存器转换成它们承载的数值,涵盖每种字节序和字序,也可反向把数值转换成寄存器。
两个 Modbus 寄存器里的 32 位浮点数采用 IEEE 754 格式:大端(ABCD)顺序的 0x4148 0x0000 等于 12.5;字序交换(CDAB)时,同一个值以 0x0000 0x4148 传来。
寄存器
方向
寄存器值
输入格式
值
每种字节序
- ABCD · 大端
- 1041 20 00 00
- CDAB · 字交换
- 2.3362448 × 10⁻⁴¹读数不太可能 · 00 00 41 20
- BADC · 字节交换
- 1.6347736 × 10⁻¹⁹读数不太可能 · 20 41 00 00
- DCBA · 小端
- 1.1570521 × 10⁻⁴¹读数不太可能 · 00 00 20 41
寄存器地址
- 协议地址
- 00x0000 · 从 0 开始计数,即请求中发送的地址
- 数据表
- 保持寄存器(4x)读 FC 03 · 写 FC 06, 16
- 参考号
- 40001 · 4000015 位和 6 位记法,从 1 开始计数
- 读取的寄存器
- 0 … 1该数据类型连续占 2 个寄存器
公式与标准
ABCD: A B C D CDAB: C D A B BADC: B A D C DCBA: D C B A
值 = raw × 比例因子 + 偏置
Modbus 发送每个 16 位寄存器时高字节在前。跨多个寄存器的 32 位或 64 位数值在协议中没有固定顺序:许多设备高寄存器在前(ABCD),另一些低寄存器在前(CDAB),少数还会交换每个寄存器内的字节(BADC、DCBA)。每一行按其中一种顺序解码同一组寄存器;字母表示数值的哪个字节到达哪个位置,A 为最高有效字节。
浮点数采用 IEEE 754 binary32(FLOAT32)或 binary64(FLOAT64)。顺序错误通常会得到大得离谱或小得离谱的值,或非数值;这些行会变灰。工程值 = 原始值 × 比例因子 + 偏置。40001 这类参考号是 Modicon 惯例:第一位表示数据表,其余从 1 开始计数,而请求中携带的地址从 0 开始计数。
需要带 Modbus RTU 或 TCP 输出的传感器和变送器?
联系我们