“PS-S01环保数采仪显示连接成功,平台上就是没数据。”这是排污企业运维群里出现频率最高的一句话。先给结论:多数情况不是网络断了,而是HJ212报文没走完“发送—应答—入库”这条链路的后两步。TCP建链成功只说明IP和端口通,平台能不能看到数据,还要看报文格式对不对、MN号与访问密码认不认、平台有没有回3020应答、数据时间戳有没有落在平台接收窗口里。按下面的顺序查,通常20分钟内就能定位到具体哪一层出问题。
一、把故障拆成四层看
协议层(最常见)
- 上传命令段用错。现场机上传类命令编码在2000–2999区间,实时、分钟、小时数据各有对应的CN,平台一般只入库其中几类。如果数采仪只配了实时数据,而平台要的是小时数据,结果就是“发了,但平台不显示”。
- 报文不完整。HJ212报文以##开头、以&&结尾,末尾四位是CRC校验位。少一个&、CP段里字段名大小写不一致、DataTime不是yyyyMMddHHmmss格式,平台解析就会失败。
- 校验位算错。CRC的计算范围是##之后到四位校验位之前的全部内容,多算或少算一个&&都会对不上。抓包时表现为平台直接丢包,连应答都不回。
- QN重复。QN是请求编号,平台用它把请求和应答配对。设备重启后时间回跳,QN跟着重复,平台会按重复包丢弃。
网络层
- TCP链路建起来不等于能长期保持。运营商NAT表项一般几分钟到十几分钟老化一次,心跳间隔如果比老化时间还长,链路会被静默切断,而数采仪以为还连着。
- 域名解析失败。平台地址填的是域名、DNS又指向内网,网络一恢复就再也解析不到。
- 出口防火墙只放行了去程,没放行回程。表现为连得上、发得出去、收不回来。
设备层
- 串口参数不一致。波特率、数据位、停止位、校验位与仪表对不上,数采仪采到的就是空值或全0。
- RS485的A/B接反、地址冲突,一条总线上挂多台仪表时尤其常见。
- 时钟漂移。数采仪本地时间比平台快,DataTime成了“未来数据”,平台按规则丢弃,本地日志却写着发送成功。
- 断网期间历史数据存满,或只保留固定天数。恢复后平台下发1014提取历史数据,补传补不齐。
平台层
- MN号重复。换机后旧设备没下线,两台设备用同一个MN,平台按MN归并,数据互相覆盖,表现就是时有时无。
- PW访问密码与平台登记不一致,平台可能收下报文但不入库。
- 排口未绑定、因子编码不在平台字典里,数据进了缓冲区但页面上不显示。
- 平台显示“在线”只代表心跳到了,不代表数据通道通。
二、为什么按这个顺序查
排查顺序本身就是经验:先看数采仪本地发出的日志,再看平台回的应答,最后才动仪表。理由是——发送日志在设备本地,不用停机、不用等人配合;平台应答要平台侧协助,成本高一档;拆接线成本最高,而且一旦动了线,前面的现场证据就没了。所以顺序是:本地发送日志 → 抓包确认有没有3020应答 → 核对MN、PW、协议版本 → 最后查串口和仪表。从外到内、从共性到个性,能避免“一上来就换模块”的盲目试错。
三、每一步的判断标准和动作
| 现象 | 判断 | 动作 |
|---|
表格说明(按行对照):
- 本地日志写“发送成功”,平台无数据 → 只看到了设备侧动作,没确认应答 → 抓包看有没有收到CN=3020的确认报文。
- 收到3020但ExeRtn不等于1 → 平台校验没通过 → 把报文和平台返回结果逐字段比对,重点看MN、PW、DataTime。
- 完全没有3020 → 报文没到平台,或平台没回 → 查TCP是否被NAT老化,把心跳间隔压到比老化时间短。
- 平台显示在线、数据空白 → 心跳通、数据通道不通 → 检查Flag位有没有打应答标记、CN是否被平台过滤。
- 数据时有时无 → 高度怀疑MN重复 → 在平台设备列表里按MN查重。
- 数据时间整段跳跃 → 数采仪时钟偏了 → 校时并开启自动对时。
- 报文有、平台说CRC错 → 校验计算范围不对 → 核对##之后到校验位之前的字符范围。
四、三个最容易踩的坑
坑一:把“平台显示在线”当成数据通了
在线状态来自心跳,数据能不能入库走的是另一条判断。很多现场把“在线”当成链路正常的证据,转头去拆仪表,其实是Flag位没打应答标记,平台收到了也不确认。
坑二:日志写“发送成功”就以为平台收到了
数采仪的“发送成功”通常只指数据写进socket缓冲区,不代表对方收到、更不代表入库。必须看到平台回3020且ExeRtn=1,才算这一条数据走完。
坑三:以为重启能好,其实是MN号重复
重启后短暂恢复、过一阵又断,这种情况八成不是设备问题,是同一MN下有两台设备在抢着上报。换机、并站、旧设备未销户时最常出现。
五、FAQ
“我这个情况到底要不要传?”
先把上传要求搞清:是实时数据、小时数据还是日数据,平台侧只入库哪几类。类别对不上,配得再细也白搭。
“数采仪显示已连接,平台就是没有数,是不是设备坏了?”
先抓包看有没有3020应答,再看MN和PW对不对。设备硬件故障在上传异常里的占比很低。
“我换了一台新机器,MN号能直接沿用旧的吧?”
可以沿用,但必须先把旧设备从平台下线,否则同一个MN两个来源,数据一定打架。
“为什么白天有数,晚上就断?”
先看心跳间隔和NAT老化时间的差值,再看晚上有没有定时重启或大批量补传。补传占满通道、心跳被挤掉,也会表现为夜间掉线。