数采仪MN码不一致,平台显示在线却查不到数据

先把结论说了

客户的原话是:“数采仪上显示连接成功,平台那边就是一条数据没有。”这种情况在我们接触的案例里,占比最大的原因不是网络断了,也不是仪表坏了,而是报文里的数采仪MN码和平台侧备案的MN码对不上。TCP建链成功只代表网络层通了,平台按MN码认设备,字符串差一个字符,数据包就会被当成“未知设备”丢弃,界面上看起来就是在线、无数据。

还有一种更隐蔽的情况:数采仪里配了两处MN,一处用于建链注册,一处写进上送报文,两处不一致。平台认了连接,却不认报文,同样没数据。

MN码在报文里到底管什么

按HJ212的通讯包结构,一次上送大致是“##+4位数据段长度+数据段+4位CRC校验”。数据段里的字段是固定的:

  • QN:请求编码,一般取时间戳形式,平台用它回应答
  • ST:系统编码,常见取32,按属地平台约定
  • CN:命令编码,实时数据上送常见2011,设备运行状态上送常见2051,提取实时数据是9011,提取历史数据是1011
  • PW:访问密码,与平台侧配置一致
  • MN:设备唯一标识,就是数采仪MN码
  • CP:指令参数,里面是DataTime和数据标记Flag等

平台收到包之后,第一步不是解析浓度值,而是拿MN去设备档案里查。查不到,后面的数据一律不入库;查到了但对不上排污口、监测因子,数据会落到错误的档案下,现场表现同样是“平台没数”。所以MN码不是填个编号那么简单,它是设备在平台上的身份。

排查顺序:先平台,再报文,再链路,最后设备

顺序本身就是效率。很多现场一上来就换SIM卡、换天线、重启数采仪,折腾半天,其实平台侧一眼就能看出来。

  • 第一步看平台。设备管理里搜这个MN码,看在不在、在不在线、最后一条数据时间是什么时候。搜不到,基本可以锁定MN问题,后面几步可以省一半。
  • 第二步看报文。在数采仪调试口或平台日志里抓一条CN=2011的上行包,把MN字段逐字符抄下来,和平台备案的做比对。
  • 第三步看链路。看心跳保活是否正常、TCP长连接有没有被中间设备掐断、平台有没有按QN返回应答。
  • 第四步才看设备。SIM卡欠费、APN配错、DNS解析不到、设备时间偏差过大导致数据被平台判为超期,这些都会造成“连上了但没用”。

每一步看什么、怎么处置

  • 平台搜不到MN:说明设备从未成功注册或备案信息被删。动作是核对备案资料,按属地平台规则重新登记,登记后再看数据。
  • 平台能搜到但长期离线:看最后一条数据时间。若停在某个时间点,重点查链路和SIM卡状态;若从未有过数据,重点查MN和密码PW。
  • 报文里有MN、平台无数据:把两个字符串按字符逐一比对。重点看长度是否一致、大小写是否一致、中间有没有下划线或短横线的差异、末尾有没有复制粘贴带进来的空格或全角字符。动作是改成与平台完全一致后重启上送进程。
  • 平台有应答但数据不入库:看CP段里的DataTime和Flag。时间偏差过大、Flag标记为停运或维护,部分平台会做过滤。动作是校准设备时间、核对标记含义。
  • 链路反复断:看心跳间隔与平台要求是否匹配,看现场路由或防火墙是否存在长连接空闲回收。动作是调整保活周期并抓包确认。

三个容易踩的坑

  • 把“连接成功”当成“上传成功”。建链成功只证明能连到平台IP和端口,数据是否入库取决于MN匹配和报文格式。这两件事在网络层之外,界面上那个绿灯给不了答案。
  • 以为改完MN就万事大吉。MN变更后,平台侧的设备档案、排污口关联、历史数据补传通道都要跟着走。只改设备不改平台,补传的数据仍会落到旧档案里,现场看着“有时候有数有时候没数”。
  • 反复换卡换天线。有些MN是从表格里复制粘贴的,带进了不可见字符,肉眼比对完全一样,抓包才看得出来。这类问题换十张卡也不会好,先把十六进制报文打出来看一遍。

FAQ

  • 我这个情况到底要不要改MN码?先在平台搜这个码,搜得到且在线,就别动MN,去查报文和时间;搜不到,再按备案资料核对后修改。
  • MN码能不能自己随便填一个?不建议。部分省份对MN的长度和字符集有约定,有的要求与排污许可证或统一社会信用代码派生,自己编一个可能当场能连上,后续备案和数据归集都会出问题。
  • 平台显示在线,是不是说明数采仪没问题?只能说明网络和注册这一步过了。数据是否入库还要看CN、CP、时间和标记,在线无数据是常见组合。
  • 换了新数采仪,MN码还要重新报备吗?沿用原MN一般不用重新备案,但要确认新设备里两处MN配置一致;换成新MN,就必须先在平台登记,否则新设备上送的数据一条也进不去。