“数采仪界面上显示连接正常,平台那边一条数据都没有。”这是华东一家运维服务商打来电话时的原话。站点在江苏某化工园区,装的是一台江苏环保数采仪,下面挂着一台 COD 和一台氨氮分析仪,4G 卡上网。
先说结论:九成以上不是“没连上”,而是“连上了但报文没被平台收下”。最可能的顺序是三个——第一,MN 编码(设备唯一标识)与平台侧备案的不一致,平台按 MN 找点位,找不到就丢;第二,数据段 CRC 校验不通过或 Flag 字段与实际报文不符,平台解析失败直接丢弃;第三,QN 时间戳与平台服务器时间偏差过大,被判为无效数据。网络链路本身出问题的概率反而最低,因为 TCP 能握手成功,说明 IP、端口、路由都是通的。
把故障拆成四层,比一层层瞎试快得多
协议层:报文格式不对,平台收到也当没收到
HJ 212 的报文结构是固定的:QN 请求时间、ST 系统编码、CN 命令编码、PW 访问密码、MN 设备编码、Flag 标志位、CP 数据段。任何一段错了,平台都可能在日志里记一条“解析失败”就完了,前端表现就是“没数据”。常见的有:
- MN 编码填错一位,或换过主板、换过数采仪后 MN 没同步到平台;
- PW 密码与平台开通时下发的不一致,部分平台对错误密码只回错误码、不踢连接;
- Flag 标志位的 CRC 位与实际报文不匹配:置位了却没带 4 位十六进制校验码,或没置位却多贴了一段;
- QN 时间戳格式不是 yyyyMMddHHmmssSSS,位数不够;
- 数据段里因子编码(如 a34004 表示 COD、a34005 表示氨氮)与平台侧配置的因子表对不上;
- 数据段末尾漏了 && 结束符,或字段分隔符用了中文分号。
网络层:通了不等于通对了
- 平台 IP 或端口改过,数采仪还指着老地址;
- 物联网卡欠费、未激活,或 APN、专网 VPDN 参数被人动过;
- 现场防火墙或 NAT 只放通了心跳周期,长报文被截断;
- 4G 信号在 -105dBm 以下时,短心跳能过、长报文重传。
设备层:报文从哪来
- 串口参数与仪表不一致,最常见的是波特率、数据位 8、无校验、1 位停止位这三项组合被改;
- 分析仪没有输出有效值,数采仪上传的是空数据段或 Flag 全为 N 的数据;
- 数采仪内部时钟漂移,DataTime 落后平台时间超过允许窗口;
- 采集间隔被平台下发的 1014 命令(设置实时数据间隔)改成了很长时间,看着像“不发”。
平台层:数据和点位是两回事
- 点位新建后没走启用流程,数据进了待匹配表;
- 平台侧因子没下发到点位,收到的因子被忽略;
- 同一个 MN 被两台设备同时占用,平台按 MN 判重,后到的报文被丢弃。
为什么先查平台、再查报文、最后查串口
排查顺序本身就是省时间。第一步先确认平台到底有没有“看到”这台设备——如果平台侧连上线记录都没有,那就是网络层的事,直接看 IP、端口、卡状态,十分钟能有结论;如果平台侧有连接记录、有心跳、就是没数据,那问题一定在协议层或设备层,跟网络无关,再去拆报文。最后才动串口,因为串口一改,前面所有验证都要重做,而且现场一旦动了接线,仪表本身的故障就被搅进来了。
每一步的判断标准和处置动作
| 现象 | 判断 | 动作 |
|---|
| 平台无任何上线记录,数采仪显示连接成功 | 连接的是错误目标,或平台侧端口未监听 | 在数采仪上看目标 IP、端口;用平台方给的测试端口回连,确认端口连通 |
| 有连接、有心跳,命令编码 1014 等下发能收到,但 2011 实时数据不显示 | 解析层问题,重点看 MN、Flag、CRC | 调出数采仪发送报文原文,逐字段核对 MN、PW、QN 位数,重算 CRC 对一遍 |
| 平台日志显示收到报文但校验失败 | CRC 或结束符问题 | 确认 CRC 计算范围是 && 之间的数据段,结果为 4 位十六进制;检查结尾 && |
| 平台收到数据但归到未匹配点位 | MN 与平台备案不一致 | 以平台备案的 MN 为准改设备,改完重启链路,避免双设备同 MN 上线 |
| 2011 没有,只有 3020 历史数据能补上来 | 实时上传被间隔参数或时钟拖住 | 核对 1014 下发间隔、设备当前时间与平台时间差,必要时先校准时间再补传 |
三个最容易误判的坑
第一个坑:把“连接成功”当成“数据已送达”。TCP 握手只证明 IP 和端口能通,报文有没有被接收、有没有通过解析,是两回事。平台上没有数据,先看平台日志里有没有收到包,而不是先跑去现场拔卡重启。
第二个坑:改了 MN 只改设备,没同步平台。换主板、换机器之后 MN 变了,平台上还是老编号,数据全部掉进未匹配表。更麻烦的是老设备没下线,两台设备同一个 MN 往平台推,平台判重后随机丢弃,表现出来就是“时有时无”,最容易把人带偏。
第三个坑:为了让 QN 不超时,直接改设备时间。改完看着数据上来了,但历史数据的时间戳全乱,后面用 3020 补传时顺序错乱,反而要重新清库。正确做法是先确认平台允许的时间窗口,再统一校准,不要在现场随手调。
常见问题
我这个情况到底要不要联系平台那边?
要。只要是“连接正常、平台没数”,第一步就该找平台确认有没有收到报文、MN 是否匹配。这一步花五分钟,能省掉半天现场排查。
数采仪换了主板,MN 变了怎么办?
先在平台侧把新 MN 备案好,再把老设备从链路里摘掉,确认没有双设备同 MN 在线,最后才让新机上线。
平台说我们校验不过,是不是设备坏了?
多数不是。先核对 Flag 里的 CRC 位设置与报文实际内容是否一致,再看 CRC 计算范围。这种问题改配置就能解决,不用换件。
江苏环保数采仪上传正常,但个别因子平台不显示,是什么原因?
大概率是因子编码没在平台侧开通,或者仪表输出的因子编码与平台因子表不一致。把数据段里的因子编码和平台因子表逐条对,比在现场查线路快得多。
最后提醒一句:这类上传异常,八成能在报文原文里找到答案。现场排查之前,先把数采仪发出的那条报文完整导出来,比带一堆工具去现场有用。