国发5.0联网后数采仪显示连接成功平台却无数据

“数采仪屏上显示已连接,国发5.0平台那边一条数据都没有。”这是华东一位运维工程师在电话里的原话。结论先给:问题大概率不在网络上。TCP 能建立连接,说明链路、端口、白名单这一层已经通了;真正卡住的是应用层——报文发上去了,但 MN 编码、CN 命令码、Flag 标志位或 DataTime 跟平台登记的对不上,平台收下后按无效报丢弃。下面按层拆开说。

一、“连接成功”只代表三次握手

数采仪上的连接状态灯,判断依据是 TCP 三次握手是否完成,跟平台有没有解析你的报文是两回事。国发5.0 这一侧,数据接收入库前还要过协议解析、MN 鉴权、点表匹配三道关,任何一道不过,报文就只留在日志里,不进实时库。所以排查第一步不是重启设备,是去平台或数采仪上把原始报文调出来看。

二、协议层:这四处对不上,平台收下也不认

  • MN 编码:数采仪里填的 MN 必须与平台登记的设备唯一编号逐位一致,多一位少一位都算未登记设备,日志里通常只记一条“设备不存在”。
  • CN 命令码:HJ 212 体系里,1000 是心跳,1011 是实时数据,1013 是小时数据,1014 是日数据,2011 是平台反控提取实时数据。只配了 1011、没配 1013 和 1014,平台上就是“有连接、无历史”,实时曲线偶尔跳一下,报表整片空白。
  • Flag 标志位:应答标志、补发标志配错,报文能发出去,平台按无需应答或重复包处理,现象和没发一样。
  • CP 数据区:字段名、因子编码、单位要与平台点表一一对应;DataTime 是 yyyyMMddHHmmss 十四位,少一位、或者用了本地时间没做换算,直接判无效。

三、网络层:心跳被 NAT 掐掉

HJ 212 报文的外层结构是“## + 4 字节数据段长度 + 数据段 + 4 字节 CRC + 回车换行”。如果长度字段与实际数据段差一个字节,CRC 又刚好没挡住,平台侧解析就会失败。这类问题在改过因子数量、临时加过字段之后特别常见。另外,走 4G 的场景,运营商 NAT 会回收长时间空闲的连接,心跳间隔设得比平台超时时间长,连接看着还在,实际早断了。判断办法很简单:把心跳从 1000 命令的应答日志里对一遍时间戳,看是不是每隔固定时长断一次。

四、设备层与平台层

  • 设备层:数采仪本地时间与平台偏差过大,DataTime 超出平台可接受范围;补发队列积压,新数据排在旧数据后面;串口或模拟量通道取不到值,CP 里字段是空的。
  • 平台层:点位未关联到排口、因子编码与设备侧不一致、数据进了待审核队列没释放。这几项在数采仪侧完全看不出来,只能到平台后台查。

五、排查顺序:先看日志,再看报文,最后动设备

顺序本身就是效率。第一步查平台通信日志或数采仪发送日志,确认报文到底有没有到;第二步比对 MN、CN、Flag 三处;第三步看 DataTime 与平台时间的偏差;第四步才查网络和串口。反过来先换卡、先重启,往往把现场证据清掉了,再找原因只能靠猜。

六、三个容易误判的坑

  • 把“连接成功”当成“数据通了”,跳过日志直接换设备。
  • 只测实时数据不测历史数据。1011 通了不等于 1013、1014 通,很多现场就是历史通道没配。
  • 临时用手机热点联调,忘了把新出口 IP 加进平台白名单;或者改完没切回专线,第二天又断。

七、现场常问的四个问题

问:我这个情况到底要不要传?看平台日志。报文到了平台、被解析丢弃,就要在协议参数上改;报文根本没到,才去查网络和卡。

问:连接成功但平台没数据,是不是数采仪坏了?先别拆。九成以上是参数或点表问题,设备硬件故障反而少见,用 1000 心跳应答就能验证设备是否正常在工作。

问:心跳正常,为什么数据一条没有?心跳走的是 1000,数据走的是 1011、1013、1014,通道是分开配的。心跳通只证明链路活,不证明上传通道配对了。

问:补上去的数据平台显示时间不对,是怎么回事?先看数采仪本地时钟,再看 DataTime 有没有做时区换算,最后看平台侧接收时间与数据时间的字段是不是被混用了。国发5.0 联网这类问题,多数出在前两步。