一位运维工程师的原话是:“数采仪面板上显示联网成功,心跳也在走,可平台那边一条数据都没有。”这种情况一年要遇到几十次,先把结论放在前面:八成不是网络问题,是数采仪MN码和平台登记的对不上。
MN 码是 HJ212 协议报文里的设备唯一标识字段,一条上报报文大致是这样:##QN=20240513100000123;ST=32;CN=2011;PW=123456;MN=SH0001ABC;CP=&&……&&XXXX。平台收到包,先判断 MN 能在自己库里对应到哪个排污口、哪台设备;找不到时,多数平台不会返回错误,直接丢弃,或者归到“未知设备”里。现场看到的就是“连上了,没数据”。
先把“联网成功”这四个字拆开
9011 请求连接、9012 应答这一对走通,只能证明三件事:IP 和端口是通的、TCP 链路起来了、密码 PW 对。数据能不能被平台接收,取决于后面的 CN=2011(小时数据)、CN=2051(分钟数据)这些数据包,而 MN 就在数据包里。所以“连接成功”和“上传成功”不是一回事,这一步最容易被跳过。
四层原因逐个看
协议层
- 手工填 MN 时带进了空格、全角字符或尾随回车,从台账 Excel 直接复制最容易带进来。
- MN 字段有长度上限,超长时部分平台会截断存储,现场看起来只是“少了几位”。
- 改完 MN 没有重新组包,配置虽然存下来了,报文里还是旧值,要重启采集程序或断开重连才生效。
- 改码时多打了字符,整包 CRC 校验不过,被平台静默丢弃,日志里看不到明确报错。
网络层
- 某些平台用 MN 做反向鉴权、按 MN 绑定 IP 白名单,换成新设备后没同步,链路能连上,业务包却被拒。
- 专网卡、VPDN 卡绑定的是旧设备编号,换机后卡没换。
设备层
- 多通道配置:通道 1 传省平台、通道 2 传市平台,MN 各是各的,只改了一个。
- 配置恢复出厂或从备份还原,MN 回滚成出厂值或上一版的值。
平台层
- 平台侧排污口重新编号了,现场没跟着改。
- 同一 MN 的旧设备记录被停用,新连接直接被拒。
排查顺序:为什么先查平台后端
先确认平台到底有没有收到包,再确认收到的是不是这个 MN,最后才动网络。链路既然有心跳,网络层出问题的概率已经很低,先跑现场查网线、查信号,多半是白跑。
每步的判断标准和处置动作
- 第一步,调平台侧的原始报文或接收日志。判断:有没有带这个 MN 的包进来。有包但库里没数,问题在解析或绑定关系;完全没包,进第二步。
- 第二步,抓现场发出的报文。判断:报文中的 MN 与平台登记的 MN 是否逐字符一致,包括空格、大小写、全角半角。不一致就两边同时改,改一边等于没改。
- 第三步,看数采仪的上传队列和失败计数。判断:队列持续增长、失败原因集中在校验错误或超时。校验错误去查 CRC 和特殊字符;超时再去查网络。
- 第四步,才查网络。判断:ping 通不通、端口 telnet 能不能连、专网状态是否正常。
三个最容易误判的坑
- 只改一边。现场改了平台没改,或者平台改了现场没改,两边都以为对方动过了。
- 肉眼看一样,实际不一样。MN 里带了不可见字符,屏幕上对比完全一致,逐字符比对才发现尾部多了一个空格。
- 把心跳成功当成上传成功。心跳只验证链路,数据包才验证 MN,两者不能互相替代。
常见问题
我在平台上把 MN 改短了,数采仪这边要不要跟着改?
要。平台按字段长度截断存储,现场发的是全长的,两边就不是同一个值了,改完重新组包或重启采集再确认一次。
新装一台数采仪,MN 直接用旧设备的行不行?
多数平台不允许同一个 MN 同时存在两条有效设备记录,旧记录不停用,新设备的数据大概率会被判成重复或挂到旧档案上。
平台说收到数据了,但算在别的厂名下,怎么回事?
基本可以认定是 MN 沿用了旧值,或者是台账复制时把别家的号带过来了,逐字符对一遍就能看出来。
MN 我自己编一串数字可以吗?
只要平台侧同步登记、长度和字符集符合要求,现场自己编是可以的,但一旦换了运维单位或者平台迁移,这串号就成了唯一的追溯依据,建议和台账一起管。