现象:连上了,平台上一条数据都没有
「数采仪界面显示已连接,平台上这个点位一直是灰的,一条数据都没有。」这是一位运维工程师在华东某电镀园区的原话。仪表本地屏有读数,数采仪与仪表的串口通信也通,4G 信号满格,可数据就是不进平台。
先说结论:这类情况绝大多数不是网络断了,而是平台收到了报文但不认。高频原因有两个:一是数采仪上报的因子编码和平台点位配置的因子表对不上;二是重金属在线监测仪的单次测量周期长于数采仪轮询周期,数采仪取到的是空值或故障标记,被平台按无效数据丢掉。真正卡在网络层的比例,比大家想的低。
第一步:先分清「没到」还是「到了不认」
排查顺序本身就是知识。第一步永远不是重启设备,而是对齐两边的记录:数采仪发送日志里有没有 CN=2011 的实时数据包,平台接入日志里有没有同一个 MN 的报文。
平台一条记录都没有,往网络层和设备层查;平台有记录但界面不显示,往协议层和平台层查,这时候再去折腾 APN 和端口就是白费时间。
协议层:最费时间,也最容易命中
- 命令码:实时数据用 2011,分钟数据用 2021,平台侧应答码一般在请求码上加 1000,即 3011、3021。上位机主动提取用 1012(实时)、1014(历史),1011 用来设置超时与重发次数。命令码对不上,平台直接丢弃。
- 报文头字段:QN 请求编号、ST 系统编码、CN 命令码、PW 访问密码、MN 设备唯一编码、Flag 数据标志、CP 数据段。PW 错一位、MN 与平台登记值大小写或前缀不一致,都会表现为「连接正常、数据为零」。
- 因子编码:重金属因子的 w 开头五位编码必须和平台点位因子表一一对应,铅、镉、铬、砷各自独立,配错一个,对应那条数据就进不去。
- 校验:从 QN 到 CP 段结束的 && 之前逐字节异或,结果转十六进制附在末尾。手工改过报文或换过传输模块,校验最容易出错。
- CP 段字段:DataTime 时间戳、-Rtd 实时值、-Avg 均值、-Flag 数据标志(N 正常、F 故障、M 维护、D 停运)。平台对 F、D 通常不显示为有效数据。
网络层:能 ping 通不代表能上传
- 专网 APN 名称、用户名密码填错,模块能拨号上网,但到不了平台的内网地址。
- 目标 IP 与端口变更后未同步,尤其是平台侧做过迁移的点位。
- 心跳包(CN=0)间隔设得过长,中间经过 NAT 后连接被老化,表现为「白天正常、夜里掉线」。
- 部分省份的平台只放行登记过的固定 IP 或卡号,换卡后需重新报备。
设备层:重金属仪和普通仪表不一样
- 串口参数:波特率、数据位、停止位、校验位,以及 Modbus 从站地址,任何一项不一致都读不到寄存器。
- 寄存器与数据类型:功能码 03、04 读取,32 位浮点与 16 位整数缩放(乘 1000)混用会读出离谱数值。
- 单位:仪表输出 μg/L,平台按 mg/L 存储,数值差一千倍,会被平台按异常值剔除。
- 测量周期:重金属在线监测仪做一次消解或富集往往要十几到几十分钟,远长于数采仪的轮询间隔,采到的多是保持值。
- 无效值:仪表测量中常返回 -9999、-1 之类的占位值,数采仪未做过滤就直接上传。
平台层:数据到了也可能被挡在门外
- 点位未启用、因子未绑定,或平台侧因子表更新后现场未同步。
- 数据审核规则:超量程、恒值、重复值被自动标记为无效,界面上就看不到。
- 现场与平台时间偏差过大,跨天数据被判为异常。
现象、判断、动作对照
- 现象:平台接入日志无任何记录。判断:链路或设备未上报。动作:查 APN、IP 端口、模块状态,再看数采仪发送日志有无发送失败重试。
- 现象:平台有报文,CN 与 MN 都对,但因子显示为空。判断:因子编码未匹配。动作:导出报文核对 w 编码与平台因子表。
- 现象:报文正常,数值为 0 或恒值。判断:取到仪表占位值或单位不符。动作:核对寄存器、缩放系数与单位,配置无效值过滤。
- 现象:数据断续、夜间缺失。判断:心跳间隔与 NAT 老化。动作:缩短心跳周期,开启断线重连。
三个容易误判的坑
- 把「连接成功」当成通信正常。TCP 建链成功、心跳有回应,只能说明链路通,应用层报文被不被接受是另一回事。
- 把仪表测量周期当成数采仪采集周期。重金属仪三十分钟出一次数,数采仪一分钟采一次,日志里数据很整齐,其实全是重复值,平台按恒值剔除。
- 一上来就换卡换模块。多数故障最后落在因子编码、PW 密码、单位或无效值过滤上,换硬件只是把同样的错误重做一遍。
常见问题
问:我这个情况到底要不要传?
答:只要点位已纳入联网范围,实时数据就要传;历史数据在断线恢复后通过 1014 补传,前提是数采仪本地有足够存储。
问:平台说没收到,数采仪说发了,谁在说谎?
答:都没说谎。数采仪日志记的是「发出」,平台记的是「接收并解析通过」,中间还隔着链路和校验两道关。
问:仪表明明是好的,平台上为什么一直是 0?
答:多半是取到了占位值,或者单位与缩放系数不匹配,先去核对寄存器读数和平台显示值的关系。
问:换个平台账号密码是不是就行了?
答:PW 只是报文头的一个字段,改了密码还要确认 MN、ST、因子表是否同步,否则照样不显示。