环保数据采集仪上传无数据,先查这四处

故障现象:连接成功,平台就是没数据

“环保数据采集仪显示连接成功,平台就是没数据。”这是运维工程师最常发来的一句话。屏幕上的“已连接”只说明 TCP 链路通了、注册有回应,并不等于数据报文被平台接收并入库。结论先给:八成问题出在“报文能收到、但被判无效后丢弃”,重点查三样——MN 与平台备案是否一致、CN=3020 的实时数据报文是否按 HJ212 组包、Flag 长度与 CRC 校验是否对得上。

四层原因:从协议到平台

协议层:

  • MN 设备编号与平台备案不一致,平台收到 3020 后找不到对应排口,直接丢包。
  • CN 码用错:把实时数据打成 3011 分钟数据或 3012 小时数据,实时页面自然空白。
  • QN 时间戳不是 yyyyMMddHHmmssSSS 格式,或设备时间偏差过大,被平台判为过期数据。
  • 因子编码与平台侧因子表对不上,值传上去了但归不到对应污染物。
  • Flag 写死成固定长度,实际 CP 段长度变了,CRC 校验不过。

网络层:

  • 能 ping 通平台 IP,但 212 端口被防火墙或白名单拦了,只有心跳偶尔通。
  • 现场用 4G 路由,NAT 后长连接被回收,数采仪没重连,显示在线其实是假在线。
  • DNS 解析到旧地址,平台已经切域名,设备还往老 IP 发。

设备层:

  • 环保数据采集仪的 RS-485 采集正常,但组包线程卡死,本地有数、上报队列不消费。
  • 存储写满或掉电重启后参数丢失,MN、密码 PW、平台地址回到默认值。
  • 模拟量通道量程设错,值超出平台合理区间,被判为无效数据。

平台层:

  • 平台侧排口未启用、因子未绑定,或数据审核规则把异常值过滤了。
  • 平台升级后校验变严,原来能过的报文现在被拒。
  • 多台设备共用同一个 MN,后到的覆盖先到的。

排查顺序:为什么先协议后网络

很多人一上来就 ping、换卡、重启,折腾半天,最后发现是 MN 少了一位。顺序应该是:先确认“平台有没有收到包”,再确认“收到的包能不能过校验”,最后才查链路。因为链路问题会同时影响心跳和实时数据,而协议问题往往心跳正常、只有数据不通——这本身就是一条判断线索。

  • 第一步,看数采仪的发送日志。有没有 3020 发出、平台有没有回包。有发无回,先怀疑平台拒收或校验失败。
  • 第二步,核对 MN、PW、平台地址、端口四项。MN 必须和平台备案完全一致,大小写、空格都算错。
  • 第三步,抓一包 3020 报文,人工核对 QN、CN、Flag、CP 和 CRC。Flag 是 CP 段的长度,不是整包长度,这一点最容易错。
  • 第四步,换一条网络(手机热点即可)复测。换网正常,问题在路由、防火墙或运营商侧。
  • 第五步,让平台侧查接入日志和入库日志。接入日志有、入库日志无,基本就是因子或排口绑定问题。
  • 另外可用 1014 做一次设备信息交互,看平台回读的 MN 与现场设置是否一致,比只盯屏幕可靠。

三个容易误判的坑

  • 坑一:把“连接成功”当成“数据通了”。长连接和注册心跳是一回事,3020 有没有被接收是另一回事,判断标准是平台入库记录,不是设备屏幕。
  • 坑二:只看 CRC 对不对,不看 Flag 和 CP 是否匹配。CRC 算的是 CP 段,Flag 写错时 CRC 照样能算对,但平台按长度解析对不上,整包丢弃。
  • 坑三:用 2000–2999 段的历史数据命令反复补传。补传和实时走不同入库逻辑,补传成功不代表实时通道正常,反而会掩盖 3020 的问题。

FAQ

我这个情况到底要不要传?

只要排口在联网名单里,实时数据就要传。判不判断是平台的事,传不传是设备的事,先保证 3020 正常发出去。

数采仪显示在线,平台说没数据,谁的问题?

先看平台接入日志有没有 3020 的包。有包没数,是因子或排口绑定;没包,是设备没发出去或网络没到。

CRC 校验老不过,是不是设备坏了?

多数是数据段里有中文、空格或半角全角混用,或者 Flag 长度算错。先把 CP 段打出来逐字节核对,再怀疑硬件。

换一台环保数据采集仪就能好吗?

不一定。MN 没改、平台没备案,换十台也一样。先把参数和报文对齐,再考虑换机。