先给结论
客户的原话是:“数采仪显示连接成功,平台就是没数据。”在环保数采仪替代进口的项目里,这话大多不是网络断了,而是两个原因之一:一是报文发出去后,MN(设备唯一标识)、ST(系统编码)、PW(密码)这些身份字段和平台建档信息对不上,平台把它当成未登记设备直接丢弃;二是 TCP 长连接被运营商侧静默回收,设备不主动发心跳,平台看着“在线”,链路其实早就断了。
协议层:先看报文发没发出去、发得对不对
HJ 212 的报文结构是固定的:## 加四位长度,接 QN、ST、CN、PW、MN、Flag,再接 CP=&&数据段&&,最后是 CRC 校验。替代进口设备时,问题基本集中在以下几个字段。
- MN:设备唯一编号。不少项目把旧进口设备的 MN 抄进新设备,或者新机出厂编号忘了改,平台按旧档案找不到这台设备,报文集直接进回收站。
- CN 命令码:实时数据是 1012,历史数据补传是 1013,心跳是 9011,心跳应答是 9012;平台下发提取实时数据是 1011,参数命令走 2000–2999 段,参数设置常见 3020。日志里只有 9011 没有 1012,说明设备根本没进采集上报流程,这时候别急着查平台。
- CRC:从 ## 之后算到 && 结束的异或校验,取四位十六进制。拼装习惯各家不同,CP 结尾的分号多一个、大小写不一致、Flag 长度算错一位,平台就判校验失败,现场表现同样是“连接成功、没有数据”。
网络层:握手成功不等于链路可用
TCP 三次握手能完成,只说明 IP 和端口通,不代表应用层数据被接受。现场常见的三个点:专网卡没开通对应 APN 或 VPDN,拿调试用的有线网络试通了,换上现场卡就不通;平台侧做了 IP 白名单,新设备换了出口 IP 没报备;链路空闲几分钟后被 NAT 老化回收,设备还停在“已连接”状态。
- 判断:让设备按平台要求主动发 9011 心跳,间隔不要长于链路老化时间,看平台有没有回 9012。
- 处置:心跳无回应,先用同一张卡、同一网口的笔记本做端口连通测试,再回头查白名单和 APN,别一上来就重启设备。
设备层:源头没有数,传上去也是空表
替代进口时,采集侧最容易断在串口和地址上。RS485 的 A/B 接反、波特率不是 9600 而设备按 4800 发、数据位校验位对不上、Modbus 从站地址还是出厂的 1,都会让数采仪“在线但没数”。模拟量通道还要核对 4–20mA 对应的量程上下限,量程填反了,平台收到的是负数或明显失真的值。时间戳也别忽略,QN 是十七位(年月日时分秒加毫秒),设备本地时间没校,历史补传会被平台判成过期数据。
平台层:收下了不等于入库
报文到达平台只是第一步。设备在平台侧没审核、没绑定排口,数据进不了业务表;排口编码或因子编码和现场实际监测项错位,数据会被丢进异常队列;还有些平台前端有缓存,入库几分钟后才显示。判断办法很直接:看平台侧有没有对应 1012 的接收记录,有接收记录没数据,问题在平台;连接收记录都没有,问题在链路或报文。
排查顺序为什么是协议、网络、设备、平台
顺序本身就是省时间的办法:先看设备发出的报文,成本最低,抓包或看本地日志十几分钟就有结论;再看网络,涉及运营商和平台白名单,沟通周期长,放在后面;设备层要动现场接线,放在网络之后;平台层权限不在自己手里,最后确认。反过来先找平台,大多数时候只是白等一轮回复。
三个最容易误判的坑
- 把“连接成功”当成“通了”。TCP 连上只是传输层的事,应用层被平台丢弃的情况非常普遍,MN 没登记时设备照样显示连接正常。
- 认为替代设备必须完全照抄进口设备的报文。HJ 212 是国标,但扩展字段的处理各家有差异,CP 数据段的分隔符、分号、小数位、Flag 长度照抄反而容易出校验错,应该按平台侧的解析规则调。
- 看到平台有应答就认为数据已经入库。应答只证明报文被收到,排口或因子编码没对上,数据照样进不了业务表,现场经常在这一步反复折腾。
FAQ
问:进口设备能连,换成国产就连不上,是不是设备有问题?
答:先别下这个结论。把新设备发出的第一条 1012 报文抓出来,对着平台档案逐字核 MN、ST、PW 和 CRC,八成能直接看出差异。
问:平台显示在线,为什么历史数据补不上来?
答:补传走的是 1013,和实时上报是两条路径。重点看设备本地存储有没有断点、QN 时间戳是否超前或过期,以及平台对补传数据的时间窗口限制。
问:我这个情况到底要不要换 MN?
答:看平台建档。平台按新设备建档,就必须用新 MN;如果项目要求沿用原排口档案,就要在平台侧完成变更,不能只改设备不改平台。
问:心跳设多长合适?
答:短于运营商链路的空闲回收时间,同时别短到让平台判成重复上报。改完心跳后观察一到两个小时,看连接是否还会自己掉。