先给结论:在线不等于有数据
“数采仪显示连接成功,平台就是没数据。”这是排污单位自行监测上传中最常见的一类反馈。最可能的原因不是网络断了,而是数采仪发出去的3020报文里CP数据段为空,或者MN编码、DataTime与平台登记不一致。平台看到链路在线,但解析不到有效因子值,页面自然显示为空。
故障现象:连接成功,小时数据为空
华东某化工园区的一位运维工程师反馈:现场数采仪联网指示灯正常,平台站点状态显示在线,但排污单位自行监测的小时数据连续为空,手工补传也不成功。现场先换了网线、重启了路由器,问题仍在。
协议层:先看3020报文里有没有内容
HJ 212-2017的报文由QN、ST、CN、PW、MN、Flag、CP等字段组成。CN=3020表示上传污染物数据,CP=&&DataTime=...;...&&才是因子值所在的位置。平台在线只说明TCP链路和心跳存在,不能说明CP段有数据。
- CP段为空:数采仪只发了空壳报文,平台解析不到污染物浓度或流量。
- MN编码不一致:现场配置的MN与平台站点档案不一致,数据被挂到别的站点或被丢弃。
- DataTime错位:上报时间与平台统计周期不在同一小时,小时值落不到当前时段。
- Flag标记异常:维护、校准、故障状态未按约定设置,平台按无效数据处理。
- CRC校验失败:链路能通,但报文被平台判为无效。
现场可先抓一条原始报文,核对QN时间、MN、CN=3020和CP段是否完整;需要核对现场机信息时,可用1014类交互命令;需要读实时数据时,可用2000–2999范围内的读取命令辅助判断。
网络层:TCP通不代表业务通
- 上传端口被防火墙策略限制,现场能访问平台页面,但业务报文发不出去。
- 心跳维持住了连接,业务报文发送失败后没有重发,平台只看到在线状态。
- 平台地址变更后,现场仍解析到旧地址,或固定IP未更新。
设备层:表有数,数采仪不一定取到
- 仪表通讯参数不一致:波特率、校验位、站号与数采仪通道配置对不上。
- 点位映射错误:量程、单位、小数点位数配错,值被写成0或空。
- 采集周期不匹配:仪表分钟值未生成,数采仪按小时取值时拿到空。
- 本地缓存不足:断网期间数据未存,恢复后没有历史数据可补。
平台层:在线状态和入库是两件事
- 站点档案未关联:排污单位自行监测的排口编码、监测因子与平台档案不匹配。
- 审核规则拦截:平台对异常值、缺失值做了拦截,页面不展示。
- 统计任务延迟:小时数据已入库,统计任务未完成,页面仍为空。
排查顺序:先报文,后网络,再设备,最后平台
先抓3020原始报文,能同时判断“有没有发、发得对不对”;再看网络,因为链路问题通常表现为完全无报文;然后回到设备层核对仪表和点位;最后才找平台核档案。反过来先怀疑平台,容易把现场配置问题拖成几天。判断标准可以按下面几步走。
- 现象:平台在线、小时值为空。判断:链路通但业务数据缺失。动作:抓3020报文,看CP段和MN。
- 现象:报文有CN=3020,CP段为空。判断:数采仪未取到仪表值。动作:查通道参数、点位映射和采集周期。
- 现象:CP段有值,平台仍为空。判断:MN或DataTime与平台档案不一致。动作:核对站点编码、排口编码和统计时段。
- 现象:完全无报文。判断:网络或上传地址异常。动作:查端口、防火墙、平台地址和重发机制。
- 现象:报文正常、平台页面空。判断:平台审核或统计延迟。动作:查原始入库记录和审核规则。
容易误判的三个坑
- 坑一:把“在线”当“上传成功”。在线只是链路状态,3020报文的CP段为空照样在线。
- 坑二:只看平台页面,不看原始报文。页面空可能是统计未完成,也可能是数据被审核规则拦截。
- 坑三:一上来改仪表量程。很多空值其实是MN或排口编码不一致,改量程会把原本正常的数据也弄乱。
FAQ
问:我这个情况到底要不要传?答:只要属于排污单位自行监测的上传范围,链路在线但小时值为空不能当作“已上传”,应先按3020报文核对,再判断是补传还是修配置。
问:平台显示在线,为什么还要查3020报文?答:在线只证明连接存在,平台入库看的是CN=3020里的CP段、MN和DataTime,字段对不上就不会形成有效小时值。
问:手工补传也不成功,是不是平台坏了?答:不一定。先看补传报文的MN、DataTime和Flag是否与平台档案一致,再看平台是否对异常值做了拦截。
问:自行监测数据上传要不要做本地缓存?答:建议做。断网期间没有本地缓存,恢复后就没有历史数据可补,排查时也少了一条判断依据。