“数采仪显示连接成功,平台就是没数据。”这是最近一位运维工程师的原话。先把结论放前面:这类故障里,绝大多数情况是数采仪确实把报文发出去了、TCP 也确实建立了,但报文到了智慧水务管理平台之后没有被写进数据库——问题多半不在“网通不通”,而在“平台认不认这台设备、认不认这个数据因子”。换句话说,你要查的是应用层,不是物理层。
下面按平台层、网络层、协议层、设备层四层拆开讲,再给出建议的排查顺序。顺序本身就是知识:先看对端、再看链路、再看报文、最后回到设备,能少走很多弯路。
一、平台层:报文到了,但不入库
智慧水务管理平台收到报文不等于会存下来。它至少要做三道校验:这台设备有没有备案、这个数据因子的编码对不对、这条数据的时间能不能接受。
- 设备编号(MN)没对上。MN 是报文里标识“我是谁”的字段。平台侧一般要先为设备建档,MN 与建档记录必须完全一致。换过主板、复制过配置文件、批量刷过参数,都可能出现“现场填的 MN 和平台登记的 MN 不是同一个”。这种报文平台收得到,但因为找不到归属,直接丢弃,有的平台还不回错误码。
- 数据因子没有映射。报文 CP 区里用编码表示污染因子,例如 w01018 对应化学需氧量、w21003 对应氨氮。平台侧通常有一张因子对照表,如果这张表里没配当前站点要上报的那几项,报文解析时就被跳过了,页面上表现为“设备在线、因子空白”或数值恒为 0。
- 时间不在平台允许的窗口内。CP 区的 DataTime 是 14 位时间戳(yyyyMMddHHmmss)。部分平台对超前或滞后的数据有窗口限制,现场设备时间快了几小时,报文看着正常,实际被当作异常数据过滤。
- 多平台只推一路。不少企业同时接属地监管平台和企业自建的智慧水务管理平台,数采仪配置里只启用了其中一个上报通道,另一个自然长期“没数据”。
二、网络层:能建连,不代表能通信
数采仪界面上那句“已连接”,通常只表示 TCP 三次握手成功。后面报文有没有被对端应用接收,它并不知道。
- 专网 APN 与普通公网 APN 填混,能拿到 IP 但路由不到平台地址。
- 平台侧做了 IP 白名单,现场换了出口 IP 或者换了卡,连接就静默失败。
- NAT 会话超时。长连接长时间没有数据往来会被中间设备回收,数采仪侧状态仍显示连接,实际链路已死。这类现象典型特征是“早上有数、下午没有”。
- SIM 卡流量池耗尽或欠费停机,状态栏信号满格也照样发不出去。
三、协议层:报文字段错一位,全篇作废
环保数采仪普遍走 HJ 212-2017。一条上传报文大致是 QN、ST、CN、PW、MN、Flag、CP 这样的结构,CP 区再用 && 包起来。命令码(CN)里,2000–2999 段是现场机主动上传,3000–3999 段是平台下发指令,1011 这类交互命令用于取数请求。日常上传实时数据用的是 2011。
- CN 用错。该用 2011 的用了别的码,平台按未知命令处理。
- CP 区结构不完整。结尾的 && 缺失、字段之间逗号写成中文逗号、因子值后面漏了 Flag 标志位,都会让解析失败。Flag 里 N 表示正常、F 表示故障、D 表示停运、M 表示维护、C 表示校准,平台会按它决定这条数据是否参与统计。
- 校验值不对。报文尾部的 CRC 校验是按数据段计算的,任何一处字符变化都会导致校验不过,平台直接丢弃,且通常不回报错。
- 协议版本不一致。个别老平台还在用旧版格式,新数采仪默认按 HJ 212-2017 发,双方对不上。
四、设备层:数据源头本身有问题
- 时钟漂移。主板纽扣电池电量不足,设备重启后时间回到出厂值,DataTime 全部错位。
- 采集通道量程或小数点位置配错,报文里的数值和现场表头对不上。
- 补传队列积压。断网期间数据存在本地,恢复后集中补传,如果补传时间戳超出平台接收窗口,会被判为无效数据。
- 存储写满,新数据覆盖不上,看起来一条没少,其实全是旧值。
五、排查顺序:从接收端往回倒推
建议先向平台方要一段接收日志,确认“到底有没有收到这条 MN 的报文”。这一步能直接把范围砍掉一半:收到了就走协议和因子,没收到就走网络和设备。反过来先爬上杆子查线、先换卡,是最常见的无效劳动。
| 现象 | 判断 | 动作 |
|---|---|---|
| 平台日志里有该 MN 的报文,但因子列为空 | 因子编码未配置或映射错误 | 对照平台因子表与数采仪上报配置,逐项核对编码 |
| 平台日志提示设备未知或未备案 | MN 与平台建档不一致 | 平台补录,或按平台登记值修改数采仪 MN |
| 平台完全没有记录,数采仪显示已连接 | 链路或白名单问题 | 在数采仪侧测目标 IP 与端口连通性,联系平台确认白名单 |
| 报文能看到,但时间与平台相差较大 | 设备时钟失准 | 校验 RTC,配置自动校时,或由平台下发校时指令 |
| 报文截断或校验失败 | 数据段不完整 | 抓一段原始报文,检查结尾 && 与 CRC 值 |
六、三个最容易误判的坑
坑一:把“已连接”当成“已上传”。连接状态只反映链路层,真正能证明数据被接收的,是平台侧的数据列表或者平台回的业务应答。只看设备屏幕,很容易得出错误结论。
坑二:本地历史数据齐全,就认定上传正常。数采仪的本地存储和上传是两条链路。历史记录满屏都是,只能说明采集没问题;断网补传的数据一旦超出平台接收窗口,照样不会出现在平台上。
坑三:平台显示 0 就判定仪表故障。先分清是“测出来是 0”还是“没接到所以显示 0”。因子未映射、量程下限设置不当、平台按检出限做了截断,都会显示 0,此时换探头纯属浪费。
七、客户常问的四个问题
问:数采仪上显示已连接,是不是就代表传上去了?
不代表。已连接只说明网络通,数据有没有入库要看智慧水务管理平台那边有没有记录。让平台方截一段接收日志,比在设备上反复重启有用得多。
问:平台说没收到,我这边历史数据都有,到底是谁的问题?
先看报文有没有到对端。到了就是协议或因子的问题,没到就是链路或设备的问题。这个判断做出来,责任自然就清楚了,不用互相扯。
问:换了台新数采仪,参数照抄旧的,为什么还是上不去?
重点查 MN。批量复制配置最常见的后果就是两台设备用同一个编号,平台侧会互相覆盖,看起来像时有时无。另外协议版本和因子表也要跟着核对一遍。
问:网络时好时坏,是不是换张卡就好了?
不一定。先看掉线的时间规律:如果是固定时长后断开,多半是长连接被中间设备回收,需要调整心跳周期;如果集中在某个时段,可能是流量或信号问题。不定位就换卡,往往换完还是原样。