ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

无信号测站渗压计数据回传方案:北斗短报文+4G双模通信实战解析

无信号测站渗压计数据回传方案:北斗短报文+4G双模通信实战解析

做自动化监测这些年,我最怕收到一类现场反馈:"测站那边没有手机信号,数据卡在终端里,传不回来。"渗压计这种仪器,十个里面有八个布在深山峡谷、库区上游、尾矿坝、隧道洞壁这类位置,恰好是公网覆盖最差的地方。测压管里水位涨了、孔隙水压力变了,测值明明已经采到,传不回来就等于白采。人工下去取数一次,成本高、时效差,汛期更是等不起。前阵子我集中做了一套"北斗短报文+4G"双模通信方案,专门解决这种无信号测站的渗压计数据回传问题,运行了一段时间,算是把"数据出得去、平台收得到"这条路彻底走通了。这篇就把整个方案拆开讲透,从硬件选型、通信逻辑到现场防雷部署,给同样在搞大坝、边坡、尾矿库监测的朋友提供一套可以落地复制的做法。

1. 信号盲区的数据回传困局:渗压计"测到了"不等于"传回了"

1.1 为什么渗压计总在没信号的地方

渗压计,全名叫孔隙水压力计,说白了就是埋在岩土体、坝体或者测压管里,专门测水压力变化的小传感器。常见的有振弦式和压阻式两种,振弦式靠测钢弦的振动频率换算压力,压阻式靠压力传感器输出电信号。这类仪器的工作性质决定了它必须埋在"问题发生的地方"——大坝坝基、坝肩、边坡深层位移孔、隧道围岩、尾矿库堆积坝、矿山采空区。这些地方往往恰恰没有公网信号。

我有一个测站在深山峡谷里,走进去单程要爬山两个半小时,移动、联通、电信三家卡轮着试,显示都是"无服务"。渗压计的数据其实一直都在采集,振弦采集模块按时把频率值读出来,换算成水压力,存到终端的Flash里。可问题是,汛期库水位上涨、降雨入渗导致孔压骤升时,监理和业主最需要实时数据,你却只能等一周人工下去取一次数。测到了,但传不回来,这比没测到更折磨人。

1.2 信号盲区的五种可选通信链路

在没有公网信号的地方做数据远传,圈子里常用的路子大概有五种。我在方案设计初期都过了一遍,优劣很清晰。

通信方式覆盖能力单次数据量功耗综合成本适用场景
人工巡检取数全地形大最低人力成本高非汛期低频巡检
数传电台/超短波视距范围中中需架中继地形开阔、测站密集
LoRa/ZigBee自组网几公里内小低需网关回传有基站或汇聚点的园区
4G/5G公网覆盖区大中流量费低有信号的城市边缘、坝区
北斗短报文全球覆盖小高卡费和模块费深山、戈壁、无公网区

人工巡检不解决"实时性"问题,数传电台和LoRa本质上是把数据先汇聚到一个点,最终那个汇聚点还是得有一条出山的链路。4G在覆盖好的地方确实便宜又稳定,可到了真正没信号的测站,它就是个摆设。剩下的就是卫星链路,北斗短报文是目前民用领域最现实的选项。

1.3 双模设计的真正动机:公网优先、卫星兜底

我需要强调一个观点:如果测站有稳定的4G信号,谁也别折腾双模,一套4G DTU就够了。双模方案真正适合的是"信号时有时无、时好时坏"的地带,以及"完全没信号但又不甘心只靠卫星单链路"的重点测站。

所谓双模,就是终端里同时装北斗短报文模块和4G模块,平时优先走4G,4G不可用自动切到北斗短报文。这么设计不是炫技,而是因为两条链路各有不能替代的价值:4G数据量大、便宜、时延低,适合传完整的数据包和平台交互;北斗短报文虽然速度和容量被限制,但它是真正的"兜底保险",哪怕四周荒无人烟,只要天线能看见天空,信息就能传出去。公网优先、卫星兜底,这在工程上是成熟稳妥的架构。

2. 北斗短报文与4G的能力边界:各补各的短板

2.1 北斗短报文的硬约束

先说北斗短报文。很多人以为短报文跟短信差不多,实际上它是一条容量很小、频度受限的窄带链路。民用短报文的单次报文长度按卡型不同,从几十字节到百来字都有,常见频度是30秒或1分钟一条。这意味着用它传一张照片是不现实的,但传渗压计的测值、温度、电池电压、状态位这些几字节的数据,完全绰绰有余。

它的延迟也不是固定值。一条短报文发出去,通常要几秒到几十秒才能通过卫星链路入站,具体时间跟卫星位置、链路质量都有关系。模块一般会给一个"已上星/已入站"的回执,但这里有个坑——回执只能说明卫星链路把消息收进去了,不等于你的服务器已经收到了。所以协议层必须设计数据序号和确认机制,否则容易出现"终端以为自己发出去了,平台端却缺数"的情况。

另外,北斗短报文模块的发射功耗不可小觑,瞬间电流可以到2A以上。深山测站基本都靠太阳能供电,设计时不能按平均电流算,必须把发射峰值电流留足。

2.2 4G通路的实力与隐患

4G这部分大家都知道,带宽大、成本低、平台接入方便。渗压计采集的数据量很小,其实做4G模块选型时根本不需要上高性能Cat.4,用Cat.1模组就够了。Cat.1下行速率10Mbps、上行5Mbps,对一个月上传几百KB测值的场景绰绰有余,而且功耗比Cat.4低一截,协议栈成熟,价格也便宜。

但4G致命的弱点是覆盖不稳定。深山里的4G信号往往是"网格边缘",手机屏幕显示两格信号,实际上TCP连接根本建立不起来,或者一连上就被运营商NAT踢掉。我在一个半山腰的测站试过,SIM卡能搜到网、也能注册成功,但MQTT连接总是超时,重试几次后模块干脆掉线。这种"假信号"比没信号更难判断,所以双模切换不能只看信号格数,还得看应用层连不连得通。

2.3 通道切换前先想清楚的几个问题

做双模设计的时候,有几个问题建议在写代码之前就想明白,否则后面全是在还债:

  • 北斗是"兜底",不是"主力",它的容量和频度决定了只能传最核心的测值,别指望把所有平台指令都走卫星。
  • 判断"4G是否可用"必须有层次:先看是否注册入网,再看信号强度,最后看TCP/MQTT能否建立连接,三级都过了才认定可用。
  • 两条链路传同一批数据时,平台侧要做去重和补数。同一个时间戳的测值,可能先通过4G到了,后来又通过北斗补传了一遍,平台要能识别和合并。
  • 切换不能太频繁。如果4G信号一会儿有一会儿无,终端频繁切来切去,功耗上去了,数据还可能丢。我的做法是"进入4G算成功才停,切走要有持续失败判定,切换状态至少保持10分钟"。

3. 双模终端的硬件架构与选型:把两个模块装成一个站

3.1 终端整体链路:从振弦频率到云端数值

先看一条完整的数据链路。振弦式渗压计埋设在地下或测压管里,通过电缆把频率信号传给采集单元;压阻式渗压计则输出4-20mA电流或RS485数字信号。采集单元(通常是一片振弦采集芯片或一个RS485转接板)把这些信号转成数字量,交给主控MCU做滤波、换算、存储。主控再接北斗短报文模块和4G模块,由通信程序根据链路状态选择通道发到云端平台。

这里要提醒一点:渗压计的厂家协议五花八门,尤其是RS485 Modbus RTU那一类,寄存器地址、字节序、校准系数都不同。我的习惯是在主控程序里写一个"传感器适配层",把不同传感器的协议全部统一成内部标准帧,这样上层通信逻辑永远不用改动。这个抽象层看着不起眼,实际部署多个厂家设备时会省掉大量重复劳动。

3.2 核心器件选型:主控、北斗模组、4G模组

主控我推荐直接用带多路串口、低功耗模式的ARM Cortex-M级别MCU,比如常见的STM32系列,或者直接用国产工业级RTU主板。关键是多串口——一路接采集模块,一路接北斗模块,一路接4G模块,最好再留一路调试口。低功耗模式要支持进入深度睡眠后定时唤醒,因为深山测站最看重的就是待机功耗。

北斗短报文模块选择时,最要紧的是看支持的频点、卡型、报文长度和频度。市面上工业级模块基本都有成熟的串口通信协议,发送时把自己封装好的数据帧丢给模块,模块会上报回执。选型时注意买带屏蔽罩、宽电压输入、接口带ESD保护的工业级产品,不要图便宜买消费级板卡,野外雷击浪涌环境会教你做人。

4G模组选Cat.1工业级,理由前面说了。我踩过的坑是:第一版为了省空间用了贴片式模组,天线接口是邮票孔,手工焊接后射频性能很差,信号普遍弱10dBm以上。后来换成带IPEX座子的标准模组,天线用屏蔽罩封装好,信号问题基本消失。另外一个教训是SIM卡座,野外环境震动大、温差大,普通掀盖式卡座容易接触不良,必须选带锁扣、带弹簧压紧的工业级卡座,有条件直接在卡座上灌一层电子硅胶,一劳永逸。

3.3 供电与功耗预算:夜里没太阳也得不掉链子

深山测站没有市电,供电清一色是太阳能板加蓄电池。渗压计采集本身功率很低,主要耗电大户是通信模块,尤其北斗发射时瞬间电流能到2A以上。所以供电设计不能按"平均电流"拍脑袋,要分状态算。

我简单估算过一个典型测站:整机休眠电流做到20mA左右(12V系统),每15分钟唤醒一次完成采集和发送,每次唤醒高负荷工作40秒,高负荷电流约500mA。那么一天的耗电约为:20mA×24h + 500mA×1.07h ≈ 1Ah。这还没算北斗发射脉冲峰值对电源的冲击,所以电源设计上要给通信模块单独加储能电容或超级电容,防止发报瞬间电压跌落导致MCU复位。

太阳能板和蓄电池的配比,我建议按"连续阴雨天5~7天不断电"来算。以上述日耗1Ah为例,选12V40Ah磷酸铁锂电池,保守按20天待机算足够;太阳能板配50W左右,晴天一天就能把电补回来。控制器必须用正规的MPPT或PWM太阳能控制器,别用那种几块钱的二极管防反接板子——那种板子在深山里经常烧得一塌糊涂,连带着电池和模块一起报废。

3.4 天线、馈线与射频接地的部署原则

北斗天线的部署是整个方案里最容易被忽视的环节。北斗短报文是卫星通信,天线必须能看见天空,不能被山体、金属围挡、机箱本身遮挡。我在一个隧道洞口的测站吃过亏,把北斗天线装在机箱侧面贴近岩壁,结果发报成功率不到30%。后来把天线用一米五的抱杆挑到洞外空旷处,仰角拉开,成功率直接上到95%以上。

4G天线相对不那么挑朝向,但也不能贴地安装。两根天线之间要保持足够的隔离度,避免发射时互相干扰。馈线尽量短,普通RG174线在900MHz以上频段损耗很大,超过3米就得换低损耗馈线。所有天线进机箱前都要加防雷器,防雷器接地端子必须可靠接地,否则雷雨天第一个报废的就是射频前端。

4. 通道切换逻辑与数据帧设计:让两条链路无缝衔接

4.1 主备判定:先问"4G还活着吗"

双模通信的核心逻辑说穿了就一句话:4G活着用4G,4G死了换北斗。但"活着"的判断要做得足够严谨。

我在终端里写了一个三级判定流程。第一步,4G模组开机后主动查询网络注册状态,AT指令里一般用AT+CREG?看注册状态,返回值0,0代表未注册,0,1代表注册成功,0,2代表正在注册,0,5代表注册但漫游。注册不成功直接切北斗。第二步,用AT+CSQ查询信号强度,RSSI值低于10(大概对应-105dBm以下)也判为不可用,因为弱信号下硬要建TCP连接只会白白耗电。第三步,即使注册和信号都达标,还要尝试连接平台,用MQTT的CONNACK或者TCP握手结果做最终裁决。只有三级全过,才把链路切换到4G。

这个"三级判定"的思路是可以类推的,就像配置网络摄像机时,不少人纠结GB28181的心跳周期和注册有效期:心跳发得太勤费电,太长又被平台踢掉。4G透传模块的心跳道理相同,运营商NAT一般会回收长时间空闲的连接,应用层心跳周期通常建议60到120秒,兼顾保活和功耗。

4.2 北斗通道的紧凑数据帧:在有限报文里塞下足够信息

4G通道传数据,随便你用JSON字符串都没问题。北斗通道不行,必须精打细算。我设计了一个固定长度的紧凑二进制帧,大致结构是这样:

字段长度说明
帧头2字节固定0xAA55
帧类型1字节0x01数据、0x02心跳、0x03补传
站点编号2字节测站ID,1~65535
通道号1字节渗压计通道编号
时间戳4字节Unix时间戳,秒级
测值4字节水压力值,扩大100倍后取整
温度2字节传感器温度,扩大10倍
电池电压1字节电池电压,扩大10倍
信号质量1字节当前链路状态汇总
CRC162字节前面所有字节的校验

这样一帧总共20字节,按ASCII转成十六进制也就40个字符,对北斗短报文的容量来说完全没有压力,一条报文还能多塞几个通道的数据。如果测站通道多,可以在数据段循环追加"通道号+测值+温度"三元组,最多塞几条取决于你的卡单次允许长度。我习惯把关键告警放在第一条报文里,其余普通数据排到后面,这样即使频度受限,最重要的信息也能最先发出去。

还要注意编码问题。北斗模块对中文报文按汉字计长,底层编码容易踩坑,我建议一律发纯ASCII十六进制串,别发汉字。平台解析时转回二进制,稳定可靠。

4.3 心跳周期、本地缓存与掉线补传

不管走哪条链路,终端都要有本地数据缓存能力,这是双模方案的"最后防线"。我的做法是:所有采集数据先写入板载Flash,通信模块发出去之后收到平台确认,才标记"已送达"。没有确认的数据一直保存在缓存里,下一次任意通道可用时按时间戳顺序补传。补传带上补传标志,平台据此做去重合并。

4G心跳我前面提了,60到120秒比较稳妥,夜间为了省电可以自动拉长到300秒,平台接受短时离线即可。北斗通道一般不设心跳,因为频度宝贵,只在数据帧里带一个"链路状态"字段,平台接收自然知道终端活着。

4.4 通道切换的完整状态流程与联调要点

整个通道切换可以抽象成几个状态:上电初始化、4G模式下工作、判定失败切北斗、北斗模式下工作、定期回探4G、恢复后切回4G。这里有几个实操要点:

  • 北斗模式不是死守到底的,要每隔一段时间尝试回探一次4G。比如每30分钟尝试一次4G注册,成功且连上平台就切回,切回后保持至少10分钟再允许下一次切换。
  • 频繁切换会放大故障。我见过一套系统,4G信号在临界点晃动,终端每5分钟切一次,数据反而比固定走一条链路丢得还多。所以切换一定要加滞回(hysteresis):判定失败连续3次再切走,切回也要连续成功1次才对。
  • 联调阶段先在办公室模拟无网状态,怎么模拟?把4G天线拔掉或者直接把SIM卡拔了,强制终端走北斗;再用网络工具阻断4G服务器端口,验证TCP连不上时能否紧急切星。这个"fault injection"跑顺了,上站才敢放心。

5. 现场部署、防雷与运维:深山测站先要"活下来"

5.1 一套可复用的测站部署清单

深山测站部署一次成本不低,尽量一次到位。我的标准清单大概是这样的:

  • 立杆或抱杆:2.5米以上,确保北斗天线有足够仰角视野,立杆底部与地网连接。
  • 机箱:户外防水机箱,防护等级IP65以上,内部装主控板、双模模块、电源控制器、防雷器。
  • 太阳能板:根据功耗预算选型,装在朝南、无遮挡位置,支架要能抗风。
  • 蓄电池:装机箱底部或埋地电池坑,注意防水和保温,低温地区选磷酸铁锂。
  • 天线:北斗天线和4G天线分别引到抱杆高处,远离机箱金属壁,进机箱前各接防雷器。
  • 传感器线缆:渗压计电缆进入机箱时要留滴水弯,做好热缩套和防水胶,防止雨水沿电缆流进机箱。

安装顺序也有讲究,我的习惯是先装机械件、再布天线馈线、再接电源,最后接传感器和通信模块。每接一根线就在图纸上打一个勾,曾经因为线没标记,第二天排查信号问题浪费了一整天。

5.2 雷击与浪涌:北斗天线的引雷效应必须正视

很多野外测站建在山脊或制高点上,立杆顶上还架着金属天线,这本身就是一根隐性避雷针。雷击防护做不好,什么双模单模都白搭。

我的经验是三层防护。第一层,直击雷防护:如果测站处于易落雷区,立杆顶部可以装小型避雷针,让雷电流沿专用引下线进地,天线稍微错开避雷针的保护角。第二层,感应雷防护:所有从室外进机箱的线缆——电源线、天线馈线、传感器线——都要串接防雷器,机箱内做等电位连接,防雷器地线汇总到接地母线。第三层,接地系统:独立测站打一根1.5米以上的接地极,接地电阻按规范做到10Ω以下,有条件做到4Ω以下更好。接地极周围撒降阻剂,雨季前检查一次接地电阻。

经常有人问"4G物联网模块容易坏吗",我的回答是:工业级模块本身很皮实,坏掉的绝大多数是死在外因上——雷击浪涌、电源电压拉弧、天线接口开路导致射频功放烧毁、SIM卡虚接导致反复重启。说到底,把供电弄干净、天线接牢、接地做好,模块的寿命远比想象中长。

5.3 卡务、资费与平台接入的隐蔽坑

北斗短报文不是随便买张卡就能用的。民用短报文卡有按使用频度计费的模式,要提前在卡务平台开通短信报文的频度权限,明确单次报文长度限制。我遇到过现场设备装好了,但卡没有开通对应频度,发报全部失败,售后来回沟通了好几天。所以采购清单里一定要写清"配短报文卡并开通入站出站权限",不要只买模块。

4G方面,建议优先选当地信号口碑好的运营商实体卡,不要图便宜买那种无实名纯流量卡。深山里的纯流量卡经常被运营商限速、停机、定向封卡,平台端一断断一片。如果平台服务器有固定IP或域名,4G卡尽量设置APN参数,避免默认APN在弱网环境下反复重连。平台侧把服务器IP加入白名单,防止SIM卡号码被扫描盗用。

5.4 常见故障速查与排查思路

最后整理一张我在现场用得最多的故障排查表,按"先查供电、再查链路、最后查数据"的顺序执行,大多数问题十分钟内能定位。

故障现象可能原因排查方法
北斗发报无回执北斗卡未开通频度、天线遮挡、模块设置错误查回执代码,用厂家串口工具看入站状态,调整天线位置
4G注网成功但连不上平台假信号、APN错误、服务器IP白名单用AT+CSQ看信号,用上位机测试TCP连接,检查防火墙
数据有到达但时间戳乱跳4G和北斗两条链路补传顺序错乱平台按时间戳去重,终端补传帧加时间标签
电池电压持续偏低太阳能板被遮挡、控制器异常、阴雨天超预期检查板面清洁、支架角度,用万用表测充电电流
模块频繁重启电源波纹大、SIM卡虚接、天线开路测供电电压波纹,重插SIM卡,检查天线驻波

还有一个小坑,机箱内部的温度。深山夏天暴晒时,户外汇控箱内部温度能到60℃以上,消费级设备当场罢工。我的机箱里装了带风道的温控风扇和呼吸阀,模块贴导热硅胶垫到机箱外壳散热,再没出现过高温死机。

最后说个实在话。这套双模方案跑下来,我最大的体会是:北斗短报文别把它当主力通道用,它更像个"保底的老实人"——平时不说话,关键时候能顶上去传递最关键的信息。设计时把"数据不丢"放在第一位,其次才是省电和降成本,毕竟监测系统的价值就在于关键时刻那一两条测值。如果再做新项目,我会把北斗通道的"已入站回执"和平台端的"数据确认机制"再打磨一下,让它能承担更多告警和远程配置的下行指令。这套路子的经验和坑,基本都写在上面了,希望后来者少走几步弯路。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进