华东某化工园区一位运维工程师的原话是:“数采仪显示连接成功,平台就是没数据,重金属在线监测仪这边曲线是有的。”我们现场处理这类单子,第一判断通常不是仪表没采到,也不是平台一定坏了,而是卡在“采得到”和“传得对”之间:数采仪与重金属在线监测仪之间的寄存器映射、数据类型、污染物因子编码,或者 HJ212 组包字段与平台约定不一致。先别急着换 SIM 卡、换天线,按下面顺序查,能少走很多弯路。
协议层:寄存器、数据类型、因子编码三处最容易错
重金属在线监测仪的输出协议常见 Modbus RTU,也有厂家自定义串口协议。数采仪要拿到总铅、总镉、六价铬、总砷等因子,至少要对上四样东西:串口参数、功能码与寄存器地址、数据类型与字节序、单位和因子编码。任何一项对不上,现象都可能是“连接成功但没数”。
- 串口参数:波特率 9600/19200、数据位 8、停止位 1、无校验,仪表侧和数采仪侧必须一致。现场遇到过仪表被恢复出厂设置后波特率变了,数采仪还在用旧参数轮询,日志里全是超时。
- 功能码与寄存器:读保持寄存器常用 03,读输入寄存器常用 04。寄存器起始地址有的从 0 开始,有的从 1 开始,差一位就全错。重金属仪往往一个因子占两个寄存器,32 位浮点要连读两个地址。
- 数据类型与字节序:某些品牌仪表默认输出 32 位浮点,字节序是 CDAB,数采仪按 ABCD 解析,数值会变成另一个量级,平台可能判为无效或直接不入库。整型、小数点位数也要核对,别把 0.012 mg/L 解析成 12。
- 因子编码:HJ212 报文里的 CP 字段要带污染物编码和值,重金属因子必须与平台下发的因子清单一致,不能拿 COD 或氨氮的编码套上去。编码不对,平台可能收得到包但归不到对应因子。
网络层:连接成功不等于平台收数
数采仪屏幕上的“连接成功”一般只代表 TCP 链路建立,或者心跳有应答。它不代表 HJ212 报文被平台接受。我们见过现场 4G 信号满格、平台显示 MN 在线,但实时数据一直是空的。网络层要查的是:APN、目标 IP/域名、端口、心跳周期、TCP 粘包处理、NAT 超时。
- 先用平台侧看最后心跳时间和 MN 编号是否注册。MN 没注册,数采仪发什么平台都不认。
- 再看数采仪调试口或抓包,确认有没有发出 QN、ST、CN、PW、MN、Flag、CP 这些字段。QN 是请求编码,ST 是系统时间,CN 是命令编码,PW 是访问密码,MN 是设备唯一编号,Flag 是数据标志,CP 是污染物参数。字段缺一个,平台可能返回错误。
- 命令码要对上业务:实时数据、日数据 1014、历史数据 2000–2999、3020 这类补传命令,平台开通了哪类就发哪类。有的平台只收小时数据,数采仪却一直发分钟数据,看起来在传,实际不入库。
- TCP 长连接被 NAT 回收后,数采仪没重连,平台侧就是“掉线但本地显示正常”。把心跳间隔和重连机制查一遍,比换卡有效。
设备层:仪表本地有曲线,不代表 RS485 口在输出
重金属在线监测仪本地显示屏有曲线,只能说明分析模块在工作。RS485 输出是否使能、输出的是哪一组寄存器、有没有做单位换算,是另一回事。某印染厂的总铬仪表本地显示 μg/L,数采仪按 mg/L 配,平台收到的数值放大了 1000 倍,被判为异常后直接剔除。
- 查仪表通信设置里“输出使能”有没有打开,有些仪表默认只开 4–20 mA,不开串口。
- 查 RS485 A/B 线有没有接反、终端电阻有没有、是否共地。线接反时数采仪可能偶尔收到乱码。
- 查数采仪通道配置里的采集周期和超时时间。重金属仪分析周期长,超时设得太短,轮询永远等不到完整帧。
- 查单位和小数点:mg/L 与 μg/L 不能混,总铅、总镉的检出限不同,平台对有效位数也有要求。
平台层:MN、因子订阅、数据有效性
平台层最容易被忽略。数采仪把包发上去了,平台也回了确认,但数据没展示,可能是 MN 没绑定排口、因子没订阅、数据被标记为无效、审核未通过,或者平台只允许补传最近一段时间。看平台原始报文比看展示页面有用。
- 确认 MN 编号与平台注册一致,注意大小写和前后空格。
- 确认因子清单里有没有总铅、总镉、六价铬、总砷这些项,单位是否与数采仪一致。
- 看 Flag 标志位:现场端标记为无效的数据,平台可能收而不显。
- 补传要看平台是否开放 2000–2999 历史数据命令,以及时间戳是否在允许范围内。
排查顺序为什么先平台后现场
顺序本身就是判断依据。先看平台有没有收到报文,是为了区分“没发”还是“发了不收”。平台侧有报文、字段不对,重点查协议层和因子编码;平台侧连心跳都没有,再查网络层;本地调试口有组包但平台收不到,查 IP、端口和防火墙;本地调试口连组包都没有,才回到设备层查串口和寄存器。这个顺序能避免一上来就拆仪表、换模块。
- 现象:平台显示 MN 离线,最后心跳是几小时前。判断:链路或网络参数问题。动作:查 APN、IP/端口、SIM 卡状态,重启通信模块后看心跳是否恢复。
- 现象:平台 MN 在线,实时数据为空。判断:组包字段或因子编码问题。动作:抓一条完整报文,核对 CN、CP、Flag、MN,和平台因子表逐项对。
- 现象:数采仪有采集值,平台数值量级不对。判断:数据类型、字节序或单位换算错误。动作:改 float 字节序,核对小数点位数和 mg/L、μg/L。
- 现象:数采仪日志轮询超时。判断:串口参数或 RS485 接线问题。动作:核对波特率、功能码、寄存器地址,检查 A/B 线和共地。
- 现象:平台收到包但提示校验错。判断:CRC 或报文长度问题。动作:检查 CRC16 计算范围,确认有没有粘包、半包。
三个容易误判的坑
- 把“连接成功”当成“数据通了”。TCP 连上只说明 socket 建立,平台可能因为 QN 重复、ST 时间错、Flag 无效而不入库。先看平台原始报文,不要只看本地指示灯。
- 拿常规因子的编码套重金属。重金属因子的污染物编码、单位、有效位数与 COD、氨氮不是一套,编码套错,平台收得到但归不了类。这个坑在改造项目里特别常见。
- 只查数采仪不查仪表输出。仪表本地有曲线,但 RS485 输出没使能,或者输出的是另一组寄存器,重启后偶尔恢复,容易被误判成网络不稳。先确认仪表通信口到底在输出什么。
FAQ
问:我这个情况到底要不要传?答:看排污许可证、自行监测方案和属地平台要求。重金属在线监测仪是否联网、传哪些因子、传实时还是小时数据,以平台下发的因子清单和联网通知为准,别只按仪表说明书配。
问:数采仪显示连接成功,平台就是没数据,是不是平台坏了?答:先别下结论。看平台最后心跳、MN 是否注册、有没有收到报文。有报文就看字段和因子编码,没报文再查网络和串口。
问:重金属仪本地有数,数采仪采不到,是不是数采仪坏了?答:多数不是。先核对波特率、功能码、寄存器地址、数据类型和字节序,再看 RS485 接线。四项里错一项,数采仪就采不到。
问:补传有没有用?答:看平台是否允许补传、时间戳是否在范围内。用 2000–2999 历史数据命令补传前,先确认平台开了权限,否则发了也不入库。