智慧渡运系统上传断链:数采仪连上却没数据

“数采仪显示连接成功,平台就是没数据。”这是某渡口运维工程师在智慧渡运系统项目里最常见的一句反馈。结论先说:TCP 建链成功只代表 IP 和端口通了,不代表业务报文被平台接收入库。最可能的原因是平台侧 MN 未备案或绑定错渡口、船舶,其次是 CN 命令码订阅不一致、PW 访问密码不匹配、DataTime 格式或 CRC 校验被平台丢弃。网络断开反而排在后面。

先分清“连上”和“传上去”

PS-S01 这类环保数采仪与智慧渡运系统对接时,通常走 HJ212 报文。平台看的是 QN、ST、CN、PW、MN、Flag、CP、DataTime 这些字段,不是只看 socket 是否在线。1014 属于提取类命令,平台下发后设备要回对应数据;真正体现上传的是 2000–2999 数据段和 3020 运行状态段。现场只看到 1014 有交互,不能说明上传正常。

四层原因

  • 协议层:MN 与平台备案不一致,PW 错误,CN 不在平台订阅范围,DataTime 不是平台要求的时间格式,CRC 校验失败。
  • 网络层:防火墙白名单未放行,APN/VPDN 路由不对,NAT 会话老化导致“假在线”,TCP keepalive 未开。
  • 设备层:RS485 地址或波特率不对,寄存器无数据,Flag 补传标志未置位,本地存储已满或时钟漂移。
  • 平台层:智慧渡运系统平台未绑定该 MN,重复数据被去重,2000–2999/3020 未入库,只记录 TCP 连接日志。

排查顺序为什么这样排

先查平台侧 MN 绑定和 CN 订阅,再抓包看设备到底发没发,最后到现场查串口和仪表。原因是“显示连接成功”已经排除了物理链路完全断开的可能,而 MN/PW/CN 错配成本最低、出现频率最高。抓包能区分“没发”和“发了被丢”:只有 TCP ACK 没有业务报文,往设备和 MN 方向查;有 2000–2999 或 3020 但平台无记录,往平台校验和入库规则查。

判断与处置

  • 现象:平台无数据,抓包只有 TCP 握手和 ACK。判断:设备未发业务报文或发到错误 MN。动作:核对 MN 与平台备案表,检查 PW,确认目标 IP 端口。
  • 现象:抓包有 2000–2999/3020,平台仍无记录。判断:平台校验丢弃。动作:查 DataTime 格式、CRC、CN 订阅、去重规则,让平台导出接收日志。
  • 现象:白天正常、夜间断传。判断:NAT 或防火墙会话老化。动作:开 TCP keepalive,心跳调到 30–60 秒,补白名单。
  • 现象:数采仪本地有数、平台缺段。判断:补传队列或时钟异常。动作:查 Flag 补传标志、本地存储余量、NTP 对时。

三个容易误判的坑

  • 把 TCP 连接成功当成上传成功。平台在线状态可能只来自链路探测,业务报文一条没入库。
  • 换平台只改 IP 和端口,不改 MN、PW。新平台没备案旧 MN,报文到了也会被丢。
  • 看到 1014 有来有回就收工,忽略 2000–2999 和 3020 上传段。提取命令正常,不代表实时数据和运行状态正常。

FAQ

问:我这个情况到底要不要传?答:接入智慧渡运系统的渡口,按平台接入清单传;不确定就让平台导出 MN 绑定表和 CN 订阅表,别凭感觉配。

问:数采仪显示连接成功,平台就是没数据,先找谁?答:先找平台要接收日志和抓包,确认 MN、PW、CN 三个字段,再决定是否去现场。

问:换了个平台地址后一直补传失败怎么办?答:先看 Flag 和本地队列,再核对新地址的 MN/PW 是否备案;补传失败多半不是网络,而是平台不认旧标识。

问:现场断电一次后平台数据缺了一段,是数采仪丢数吗?答:不一定,先看本地存储和时钟。时钟漂移会让 DataTime 超出平台接收窗口,表现为“有数但入不了库”。