故障现象:数采仪显示连接成功,平台就是没数据
一位运维工程师的原话是:“VOC在线监测系统数采仪显示连接成功,平台就是没数据。”先把结论放在前面:这类故障最可能不是网线、4G模块或交换机,而是应用层没有形成有效上传。TCP连接成功只说明数采仪到平台IP和端口通了,平台有没有收到HJ 212报文、MN有没有注册、因子编码能不能对上、数据时间在不在平台接收窗口,才是关键。排查时先看平台侧接收日志和MN、因子配置,再抓数采仪上行报文看CN、CP和CRC,最后才拆串口、换模块。
VOC在线监测系统上传链路可以分成四层:协议层、网络层、设备层、平台层。连接成功但平台无数据,九成现场会先怀疑网络,实际更多卡在协议层和平台层。下面按现场能执行的顺序拆开说。
结论:先查平台注册和报文,不要先换模块
如果平台侧一条有效报文都没有,先查平台是否登记了该MN,ST、PW是否与数采仪一致,VOC因子是否启用、是否在审核或屏蔽状态。若平台能收到TCP连接但没有数据入库,重点看数采仪发出的CN是否落在2000–2999上传命令族,历史补传是否用了1014,平台应答类是否出现3020超时。若报文发出但平台判为无效,逐项比对QN、MN、CP中的DataTime、PolId、Rtd和CRC16校验。把这些查完,再去测心跳1000和串口采集,顺序反过来会白忙。
原因分层:协议层
- 上报命令不对:实时数据常见走2000–2999段的上传命令,历史补传会碰到1014;如果对接文档要求2011或2051,数采仪仍按旧模板发,平台收不到也会显示无数据。
- 报文结构缺字段:HJ 212报文通常包含QN、ST、CN、PW、MN、CP、Flag、CRC。QN请求编号重复、MN带空格、CP数据区没有用&&包裹,平台可能直接丢弃。
- 数据区字段不一致:CP里的DataTime格式、PolId因子编码、Rtd值、Flag数据标记与平台配置不一致,平台能收报文但入不了库。
- 校验失败:CRC16校验范围或大小写不对,现场抓包看有报文,平台日志却记校验错。把CRC16作为必查项,不要只看“发送成功”。
- 应答没处理:平台返回3020类应答后,数采仪未正确解析或未更新发送状态,会出现“显示连接成功,实际未确认”的假象。
原因分层:网络层
- TCP通但应用端口不对:能ping通或能建立TCP,不代表平台数据端口正确;有的现场把调试端口当数据端口。
- 心跳1000正常但数据不发:心跳只能证明链路活着,不能证明上传命令触发。看心跳间隔和上传周期是否被设成不同策略。
- NAT或防火墙超时:长连接被中间设备回收,数采仪未重连,平台侧连接表已断。表现为时好时坏。
- SIM卡、APN、VPDN、白名单:能上公网但到不了平台固定地址,或换了卡后APN未改。
- DNS解析:平台用域名时,DNS失败后数采仪仍显示上次连接成功状态。
原因分层:设备层
- 串口参数:RS485波特率、数据位、停止位、校验位与VOC分析仪不一致,数采仪收不到原始数据,自然不上传。
- Modbus地址或寄存器:地址错、寄存器偏移错,读出来是空值或固定值。
- 模拟量通道:4-20mA接线、量程、零点漂移,数采仪采到无效值后按无效标记上传,平台过滤掉。
- 数采仪时间:设备时间与平台时间偏差大,DataTime落到接收窗口外;补传时更明显。
- 存储与补传:本地有历史但补传队列未启用,或补传命令1014参数缺失。
原因分层:平台层
- MN未注册或重复:平台没有该现场机编号,或同MN被别的站点占用。
- 因子未启用:VOC在线监测系统里NMHC、苯、甲苯等因子在平台侧未勾选,报文到了也不展示。
- 数据审核与显示过滤:平台收到但处于待审核、无效、停运标记状态,页面曲线为空。
- 接收时间窗:平台只接收一定时间范围内的数据,补传过早或过晚被拒。
- 协议版本差异:平台按一种报文模板解析,现场按另一种模板发送,字段名和顺序对不上。
排查顺序:为什么先平台、再报文、再网络、最后设备
第一步看平台接收日志,因为不用到现场,能最快判断是“没收到”还是“收到但无效”。第二步抓数采仪上行报文,确认CN、CP、CRC有没有发出,平台有没有3020应答。第三步才测TCP、心跳1000、端口和白名单,因为链路问题会表现为完全没连接,而连接成功时网络通常不是第一嫌疑。第四步查串口、Modbus、4-20mA和数采仪时间,因为设备层错误往往表现为有报文但数值空、固定或标记无效。这个顺序能避免一上来换模块、重启设备,把应用层配置问题掩盖掉。
每步的判断标准和处置动作
- 现象:平台无该MN记录。判断:现场机未注册或MN填错。动作:核对数采仪MN与平台登记,检查大小写、空格、前后缀,补录ST和PW。
- 现象:抓包有TCP连接,看不到CN=2011或2000–2999段命令。判断:上传未触发或协议模板未启用。动作:查上传周期、目标地址、协议类型,确认实时上传开关。
- 现象:有CN和CP,平台日志记CRC错。判断:CRC16校验不通过。动作:比对校验范围和大小写,换用平台提供的报文样例逐字段核对。
- 现象:平台收到报文但无数据曲线。判断:因子编码、DataTime或Flag不匹配。动作:核对PolId、DataTime格式、数据标记,检查因子是否启用和审核状态。
- 现象:心跳1000正常,数据命令不发。判断:应用层策略问题,不是网络断。动作:查数采仪上传任务、平台应答3020处理、补传队列。
- 现象:数采仪本地无原始值。判断:采集源头问题。动作:查RS485参数、Modbus地址、4-20mA通道和VOC分析仪状态。
三个容易误判的坑
- 把“连接成功”当成“上传成功”。连接成功只代表TCP层,平台要的是HJ 212应用层报文和有效CP数据。只看连接状态会反复换天线、换卡。
- 只看平台页面没有曲线,就反复重启数采仪。平台可能已收到报文,但因子未启用、数据待审核或时间窗不接收。先看接收日志和入库状态。
- 用1014补传历史时只改时间,不改Flag和DataTime格式。补传报文进了平台,却被判无效或乱序,现场误以为是网络丢包。
FAQ
问:数采仪显示连接成功,平台就是没数据,到底先查哪?答:先查平台有没有该MN、因子有没有启用,再抓上行报文看CN、CP、CRC和3020应答。不要先换模块。
问:我这个情况到底要不要传?VOC在线监测系统停运期间的数据还要补吗?答:这要看排污许可证、平台补传规则和运维记录要求,现场不能凭经验替企业下结论。先把停运标记、时间范围和平台接收窗口核对清楚,再决定补传范围。
问:平台说因子编码不对,我改数采仪还是改平台?答:以双方对接文档为准。数采仪CP里的PolId和平台因子表必须一致,改一端就要同步另一端,改完用一条实时报文验证入库。
问:用1014补传历史一直失败,是不是网络问题?答:不一定。先看平台有没有收到1014报文和3020应答,再看DataTime、Flag、CRC16和补传时间窗。网络问题通常连TCP都建不起来,能建连接但补传失败更多是报文和平台规则问题。