江苏环保数采仪连接成功却无数据:四层排查顺序

“数采仪界面上显示连接正常,平台那边一条数据都没有。”这是华东一家运维服务商打来电话时的原话。站点在江苏某化工园区,装的是一台江苏环保数采仪,下面挂着一台 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 计算范围。这种问题改配置就能解决,不用换件。

江苏环保数采仪上传正常,但个别因子平台不显示,是什么原因?

大概率是因子编码没在平台侧开通,或者仪表输出的因子编码与平台因子表不一致。把数据段里的因子编码和平台因子表逐条对,比在现场查线路快得多。

最后提醒一句:这类上传异常,八成能在报文原文里找到答案。现场排查之前,先把数采仪发出的那条报文完整导出来,比带一堆工具去现场有用。