SensorCatalog

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 输出的传感器和变送器?

联系我们

↑ ↓ 选择 · Enter 打开 · Esc 关闭