高锰酸盐指数分析仪连接成功却无数据,先查这三处

先给结论:多数不是表坏了,而是报文对不上

“数采仪上显示连接成功,平台那边一条数据都没有,是不是你们设备坏了?”这是现场最常听到的一句话。直接给答案:高锰酸盐指数分析仪硬件故障的概率并不高,更常见的是上传环节的报文字段对不上。可能是污染因子编码没按协议附录填写,高锰酸盐指数在 HJ 212 里对应 w01018 一类编码,最终以你手上那份协议附录为准;也可能是数据标志位被置成了超时或故障,或者报文里的时间戳超前于平台服务器,被当成脏数据直接丢弃。

下面按协议层、网络层、设备层、平台层拆开说,顺序本身就是排查顺序。

一、协议层:报文里究竟写了什么

HJ 212 的报文结构是固定的:CN 命令编码、PW 密码、MN 设备唯一标识、ST 系统编码、Flag 标志位、CP 数据区,以 #### 结尾,前面带 CRC 校验。高锰酸盐指数的实测值在 CP 里的 Rtd 段,形如 w01018-Rtd=3.62、w01018-Flag=N。

  • CN 对不对:上位机提取用 1011(实时)、1012(分钟)、1013(小时)一类命令,现场机应答上传用 2011、2012、2013 一类命令,具体编码以协议版本为准。命令码对不上,平台收到也不认。
  • PolId 对不对:因子编码写错,值传上去了,平台归不到高锰酸盐指数这个栏目里,界面上就是空的。
  • Flag 对不对:N 为正常,T 为超时,D 为故障。很多“没数据”其实是数据传了,但被打上 T 或 D,平台按无效处理。
  • 校验对不对:CRC 算错,平台直接丢包,现场看连接却是通的。

二、网络层:连上不等于通

TCP 长连接建立,只能说明三次握手成功。之后还要看心跳有没有按时发、NAT 有没有把空闲连接回收、丢包率高不高。用抓包工具在数采仪侧看有没有完整的请求与应答,比反复点“测试连接”有用得多。

三、设备层:源头有没有值

高锰酸盐指数用酸性高锰酸钾氧化法,需要沸水浴消解一段时间才出一个结果,测量周期通常是几十分钟。这意味着分钟数据不可能是每分钟一个新值。如果数采仪按分钟向上取数,而分析仪寄存器里还是上一周期的旧值,或者干脆没刷新,上传的就会是带 T 标志的重复值。先确认分析仪本机显示值、RS485 或 4-20mA 输出、数采仪采集值三者是否一致,单位是否为 mg/L,量程有没有配对。

四、平台层:数据到了也可能被拦下

  • MN 站点编号没在平台建档,报文被拒。
  • 因子未绑定或绑定到了别的污染物栏目。
  • 平台侧时间校验严格,现场时间快几分钟,整包被判超前。

排查顺序:先报文,后网络,再设备,最后平台

顺序不是随便排的。抓报文成本最低,一条报文就能同时验证命令码、因子编码、标志位、时间戳四件事;网络问题可以靠抓包和 ping、telnet 端口快速排除;设备层要现场看表,费时间;平台层要协调对方查后台,最慢。所以从信息量最大、成本最低的一层开始。

  • 连接正常、报文有、平台无:判断为因子编码或 MN 未建档;动作是比对协议附录,联系平台核对站点。
  • 报文有、Flag 为 T 或 D:判断为源数据未刷新或分析仪报故障;动作是查分析仪测量周期与寄存器刷新。
  • 报文有、平台提示校验错:判断为 CRC 或结束符问题;动作是核对校验方式与 #### 结尾。
  • 无报文、连接时断时续:判断为网络层;动作是查心跳间隔、端口、运营商链路。
  • 数值正常但时间超前:判断为时钟不同步;动作是对时后重传历史数据。

三个容易踩的坑

  • 把“连接成功”当成“数据已上传”。心跳包也是数据,链路通和数据合规是两件事。
  • 只盯数采仪不看分析仪。上传的是数采仪的缓存,源头没刷新,传上去的全是旧值加超时标志。
  • 以为分钟数据必须每分钟一个新值。高锰酸盐指数消解周期长,这个预期本身就不成立,按分钟考核时要提前和平台确认取值规则。

FAQ

问:我这个数采仪连上了,平台就是没数据,到底是谁的问题?
先抓一条上传报文,看 CN、PolId、Flag、时间戳四项。四项都对还不显示,基本就是平台侧建档或绑定问题。

问:分钟数据要不要传?我们仪器几十分钟才出一个数。
要传,但传的是当前有效值和对应标志位,不是编造新值。标志位按实际情况填,别一律填 N。

问:平台说数据无效,我这边看着明明是好的,怎么证明?
把原始报文和平台入库记录对时间戳,一看就知道是标志位问题还是被平台判了超前。

问:换一个平台,参数要重新配吗?
要。MN、ST、密码、因子编码、上报间隔都得按新平台的要求重配,协议版本不同还要改命令码。