「数采仪屏幕上显示连接成功,平台后台一条数据都没有」——这是工地扬尘噪声监测项目里我们被问得最多的一句话。先把结论放前面:绝大多数情况既不是 4G 卡没信号,也不是平台那边坏了,而是设备上报的 MN(设备唯一标识)和平台上登记的号码对不上,或者平台下发请求命令之后,设备回的应答在命令码、校验位、字段格式上不合规,被平台直接丢掉,连日志都不留。工地扬尘噪声监测的链路短,一台扬尘噪声一体机、一台数采仪、一张 4G 卡,环节越少,故障越集中,基本就锁定在这两处。
先把「在线」和「上传」拆成两件事
工地扬尘噪声监测走的是 HJ 212 这套传输规约,不少地方平台还会做扩展。它本质上是「一问一答」:平台下发请求,设备应答。平台侧的「设备在线」通常只代表两件事之一——TCP 链路建起来了,或者收到了设备的心跳。它不代表平台收到了数据,更不代表数据能入库。
所以看到「在线」两个字,别急着松口气。真正要确认的是:平台最近一次成功解析的报文是什么时间、那条报文的 CN 是多少、MN 是多少。这三个字段对不上,后面查网络、查天线、查卡都是白费功夫。
四层原因,从上往下捋
平台层:MN 对不上、点位重复绑定
- 设备换过主板、换过数采仪,MN 跟着变了,但平台上的点位还是老的号码,平台收到陌生 MN 直接丢弃。
- 同一个 MN 被绑到了两个点位,或者一个工地接了两个平台却共用同一套设备参数,两边互相顶号,表现就是数据时有时无。
- 平台侧配置的污染物编码、量纲和设备上报的不一致,比如颗粒物设备按 mg/m³ 上报,平台按 μg/m³ 入库,数值被判定为超量程后过滤掉。
协议层:命令码应答对不上、校验不过
- 平台下发 2011(提取实时数据),设备回了 1011,但报文体里 CP 段的字段缺项,或者数据段的时间标志位、数据标志位填错,平台解析失败。
- 有些平台的历史数据是主动召唤的,靠 3020(提取历史数据)下发时间段,设备回 1014 应答。设备这边如果没实现 3020 这条命令,实时数据看着正常,一到查历史就是空的。
- 校验方式不一致。HJ 212 用的是 CRC 校验,校验范围从 ## 之后到四位 CRC 之前;数据段长度字段有的平台按 4 位解析。这两处只要有一处约定不同,报文整条被判为无效。
- Flag 标志位的约定两端不一致,报文被当作拆分包处理,大的数据段被截断。
设备层:采集周期、时钟、串口
- 数采仪和扬尘噪声一体机之间是 RS485,一体机 60 秒才刷新一组数,数采仪却 30 秒去取一次,取到的是缓存值,平台看到的就是同一组数重复上报,看着像「卡住」。
- 时钟不同步。QN 是 17 位时间戳,设备没通 NTP,掉电后时间回到出厂值,上报的数据时间戳是几年前的,平台按时间范围一过滤,全丢。
- 噪声通道的量纲和分辨率没配对上,一体机出的是整数 dB,平台按 0.1 dB 存,数值看着正常但和现场对不上。
网络层:假在线、定向卡
- 4G 链路经过 NAT,表项在一段时间没有流量后老化。TCP 连接处于半开状态,数采仪这边还认为连着,实际发出去的包已经没有回应了。心跳间隔设得比老化时间长,就会出现规律的「隔一阵断一次」。
- 物联网卡是定向的,只能访问指定地址,换平台、改端口之后就通不了,但卡本身显示在线。
- 现场用的是工地临时电,电压波动导致模块反复重启,日志里能看到连接建立又断开的循环。
排查顺序:为什么先看平台,后看现场
顺序本身就是经验。我们习惯的顺序是:平台请求报文 → 设备应答日志 → MN 与时间 → 网络链路 → 现场硬件。理由很简单:平台是唯一能同时看到「请求」和「应答」的地方,先看这里能省掉一半的跑现场。
- 第一步,看平台有没有下发请求。平台一条请求都没下发,说明平台认为设备不在线,问题在链路或心跳,直接跳到网络层。平台有请求但没应答,说明请求到了设备侧,问题在设备或协议。
- 第二步,看数采仪的通讯日志里的 CN 和应答码。平台发 2011,设备有没有回 1011;平台发 3020,设备有没有回 1014。这一条能直接区分「设备没收到」和「设备收到了但答得不对」。
- 第三步,核 MN 和 QN。MN 拿平台的登记号码和数采仪参数页逐一比对,包括后缀;QN 看时间戳是不是当前时间,差得远就是时钟问题。
- 第四步,才动网络。换卡、换天线、换个位置测信号强度,这一步放最后,是因为它最费时间,而且「在线但无数据」的故障里它占比并不高。
- 第五步,现场硬件。串口线、485 接线端子、一体机供电。这一步放在最后还有个好处:前面几步如果已经定位到问题,现场可能根本不用跑。
每一步的判断标准和动作
- 现象:平台显示在线,最近一条数据是几小时前。判断:优先怀疑链路半开或心跳设置不合理。动作:把心跳间隔调到比链路老化时间短,观察是否能稳定住;同时看日志里有没有反复重建连接。
- 现象:平台有请求,设备日志无应答。判断:请求没到设备,或到了但没被识别。动作:核对平台下发的 MN 与设备参数是否完全一致,注意有没有空格、后缀差异。
- 现象:设备有应答,平台解析失败。判断:报文格式或校验不合规。动作:抓一条完整报文,逐段核对数据段长度字段、CRC 校验范围、Flag 位约定。
- 现象:实时数据正常,历史数据查不到。判断:历史召唤命令未实现或未响应。动作:确认设备是否支持 3020 召唤,以及 1014 应答里时间段是否正确回填。
- 现象:数据有,但数值明显偏大或偏小。判断:量纲或分辨率不一致,不是传感器故障。动作:在数采仪侧统一量纲后再比对。
三个最容易走错的坑
坑一:把「在线」当成「通了」
平台上的在线状态往往只反映心跳或 TCP 建链。NAT 老化之后连接是半开的,设备还在按自己的判断发数据,平台收不到也不报警。真正要看的是最近一条成功入库的报文时间,而不是那个绿色的小圆点。
坑二:把「断断续续」当成「信号差」
很多平台的历史数据不是设备主动推的,而是平台按 3020 去召唤。平台不召唤,设备就不补传,看起来就像丢包。先确认平台的数据补传机制,再判断是不是信号问题,能少跑很多趟工地。
坑三:把「数值乱跳」当成「传感器坏了」
工地上扬尘和噪声的数值本来就波动大,再加上采集周期和上传周期错配、量纲不统一,平台曲线会显得很夸张。先核对量纲和刷新周期,再考虑换传感器。某些品牌的设备默认按 μg/m³ 输出,而平台按 mg/m³ 展示,差了三个数量级,一上来就换探头很浪费。
常见问题
问:我这个情况到底要不要传?工地扬尘噪声监测的数据是不是必须实时上传?
答:看当地主管部门对在建工地的联网要求,不同省份、不同规模的项目要求不一样,近期不少地方在往「分钟数据+超标报警」的方向靠。建议直接问属地监管平台的对接人,确认要传的数据类型和频次,别按别的工地的配置照抄。
问:数采仪显示连接成功,平台就是没数据,是不是卡的问题?
答:先别换卡。让平台方拉一下最近有没有下发 2011 请求,有请求没应答,问题在设备或 MN;连请求都没有,再去看链路和心跳。换卡是最后一步。
问:平台说我们数据超标,可现场看着没那么大灰,谁的问题?
答:先查量纲和采集周期。设备按 mg/m³ 上报、平台按 μg/m³ 显示,或者一体机 60 秒刷新、数采仪 30 秒取值,都会让曲线失真。确认这两项之后再谈传感器。
问:换了个主板,平台就说设备离线了,怎么回事?
答:MN 变了。设备唯一标识一般跟着主板走,换了主板要在平台上把点位重新绑定新号码,否则平台收到陌生 MN 一律丢弃。