Modbus应答成功,只能证明交换了消息,不能证明返回字节被正确解释。Modbus雷达数值解码可能在数据类型、寄存器偏移、字序或单位换算环节出错。不断增加乘数直到显示合理,可能掩盖原始错误。
解释数字前先读寄存器映射
取得所供仪表版本的寄存器定义,明确功能、地址约定、寄存器数量、数据类型、单位及比例系数。Modbus寄存器承载16-bit数值,更大的应用量需要在这些寄存器间采用有文件规定的表示方式。
32-bit数值的字排列顺序不能从另一设备推断。有些应用采用缩放整数,而非浮点数。检查PLC或网关的字节交换选项前,应先确认此区别。
区分寄存器寻址与字序
Modbus应用协议V1.1b3采用从零开始的PDU地址。应检查设备映射及PLC驱动显示的是该偏移,还是从一开始的参考编号。记录功能及实际请求地址;驱动已转换时,不要再次减一。相邻寄存器也可能返回有效应答,但测量量错误。
协议先发送16-bit寄存器的高字节:0x1234按0x12、0x34的顺序传输。但该规则不能确定设备专用32-bit数值的两个寄存器中,哪一个包含高位字。应分别检查寄存器内字节序、寄存器间字序及工程量换算。
Modbus雷达数值解码示例
12.5的IEEE 754单精度表示为十六进制41 48 00 00。假设高位字在前,映射为0x4148后接0x0000;低位字在前时则调换这两个字。这只是数据格式示例,并非MV-RD12寄存器映射或测量值。
| 检查项 | 应保留的证据 |
|---|---|
| 原始字 | 换算前返回的寄存器数值。 |
| 表示方式 | 文件规定的整数或浮点类型及字序。 |
| 工程单位 | 寄存器单位及所需比例系数。 |
| 参考值 | 同一观测时刻的已知就地数值。 |

对于METRAVON MV-RD12,应指定对应RS485电子部件并索取适用映射。产品页面明确的是接口选项,而非通用地址、32-bit表示方式或诊断寄存器。
验证不止一个方便取得的数值
采用授权试验方法,在不同已知条件下比较解码数值。零不适合作为唯一检查值,因为多种错误解释也可能产生零。应保留原始字及预期测量量,以便网关或软件变更后复现测试。
数值跨多个寄存器时,应采用文件规定的读取安排,并确认所需一致性行为。不要假定分次读取捕获的是同一次测量更新。通信异常及无效值代码应与有效数值分开;不能将哨兵值乘上系数,变成可信液位。
Q1. 所有32-bit数值都应解码为浮点数吗?
不是。它可能是整数、位域或其他表示。含义由设备映射定义,不能只看寄存器数量。
Q2. 改乘数能修正字序吗?
没有可靠乘数能够修复错误的二进制解释。应先解决表示方式,再应用文件规定的工程量换算。
总结
相信显示前,应验证从字节到测量量的转换。发送MV-RD12版本、映射版本及原始寄存器采集记录,进行针对性的集成评估。
