4. LoRaWAN设备分类:Class A、Class B、Class C特性对比
聊LoRaWAN,绕不开设备分类这个话题。
我刚开始接触LoRaWAN时,觉得这三个Class不就是功耗不同嘛。后来做项目踩了坑才发现,选错Class,轻则电池撑不住,重则数据收不到。今天咱们把Class A、B、C掰开揉碎讲清楚。
4.1 为什么要有三种Class?
说白了,LoRaWAN的设计哲学就是「省电优先」。
你想啊,物联网设备大多靠电池供电,一个水表装上去得跑5年。如果让设备一直开着接收窗口,功耗根本扛不住。
但有些场景又需要低延迟——比如工业阀门控制,你发个指令下去,总不能等半小时才响应吧?
所以LoRaWAN联盟定义了三种Class,本质是在「功耗」和「延迟」之间做取舍。
核心原则:
- Class A:最省电,但下行延迟不可控
- Class B:省电+定时接收,延迟可控
- Class C:随时接收,延迟最低,但最费电
4.2 Class A:最基础的「发完就睡」模式
Class A是所有LoRaWAN设备必须支持的基础模式。我习惯叫它「发完就睡」模式。
工作流程:
- 设备主动发送上行数据
- 发送结束后,打开RX1窗口(1秒后)
- RX1窗口关闭后,再打开RX2窗口(2秒后)
- 两个窗口都关闭,设备进入休眠
你想想看,服务器想给设备发数据,只能等设备主动上报后才能下发。如果设备一天只发一次数据,那服务器就得等24小时才能把指令送下去。
我的经验:
我在做智能水表项目时,设备每天上报一次读数。客户想远程关阀,结果指令发下去,水表要等24小时才能收到。后来我们改成了「上报后立即检查是否有待执行指令」的逻辑,才解决了这个问题。
Class A的优缺点:
| 维度 | 说明 |
|---|---|
| 功耗 | 极低,电池寿命可达5-10年 |
| 下行延迟 | 不可控,取决于设备上报频率 |
| 适用场景 | 传感器数据采集(温度、湿度、水表、气表) |
4.3 Class B:定时「醒来」听指令
Class B在Class A的基础上,增加了定时接收窗口。
设备会定期打开一个额外的接收窗口(ping slot),服务器可以在这些固定时间点下发数据。这样延迟就变得可控了。
怎么实现的?
网关会广播一个信标(Beacon),设备同步信标时间,然后在约定的时间点打开接收窗口。
注意:
Class B需要网关支持信标广播。我遇到过一些私有LoRaWAN网络,网关压根没开信标功能,Class B设备根本没法用。部署前一定要确认网络侧的支持情况。
Class B的优缺点:
| 维度 | 说明 |
|---|---|
| 功耗 | 中等,比Class A高,但比Class C低 |
| 下行延迟 | 可控,取决于ping slot周期(通常几秒到几十秒) |
| 适用场景 | 需要定时下行的场景(如路灯控制、定时灌溉) |
4.4 Class C:随时待命的「监听」模式
Class C设备几乎一直开着接收窗口,只有在发送数据时才短暂关闭。
说白了,服务器随时可以下发指令,延迟最低。但代价就是功耗很高。
工作流程:
- 设备空闲时,RX2窗口一直打开
- 发送数据时,关闭接收窗口
- 发送完成后,立即重新打开接收窗口
我曾经踩过的坑:
有个项目用Class C做工业阀门控制,设备接了220V电源,功耗不是问题。但客户反映指令下发后阀门没反应。排查发现,设备发送状态上报时正好关闭了接收窗口,服务器指令刚好撞上这个时间点。后来我们在应用层加了重试机制才解决。
Class C的优缺点:
| 维度 | 说明 |
|---|---|
| 功耗 | 高,需要持续供电 |
| 下行延迟 | 极低,几乎实时 |
| 适用场景 | 需要实时控制的场景(阀门控制、报警器、执行器) |
4.5 三种Class的对比总结
我整理了一张对比表,方便你快速查阅:
| 特性 | Class A | Class B | Class C |
|---|---|---|---|
| 接收窗口 | 仅上行后打开 | 定时打开 | 持续打开 |
| 功耗 | 极低 | 中等 | 高 |
| 下行延迟 | 不可控 | 可控(秒级) | 极低(毫秒级) |
| 电池寿命 | 5-10年 | 1-3年 | 需持续供电 |
| 网络要求 | 无特殊要求 | 需信标同步 | 无特殊要求 |
| 典型场景 | 传感器、水表、气表 | 路灯、定时控制 | 阀门、执行器、报警器 |
4.6 如何选择?我的建议
选Class其实没那么复杂,我一般按这个思路来:
- 先看供电方式:电池供电?直接选Class A。市电供电?可以考虑Class C。
- 再看下行需求:不需要下行?Class A。需要定时下行?Class B。需要实时下行?Class C。
- 最后看网络条件:网关不支持信标?Class B就别想了。
一个小技巧:
很多LoRaWAN模组支持动态切换Class。我有个项目平时用Class A省电,当检测到报警事件时,临时切换到Class C,等事件处理完再切回Class A。这样既省电又保证了紧急情况下的实时性。
4.7 三种Class的工作时序图
下面这张图展示了三种Class的接收窗口时序,我画出来方便你理解:
4.8 实际项目中的选择策略
我做了几个项目后,总结了一套选择策略:
- 传感器类(温湿度、水表、气表):Class A,没得商量。电池要用5年,下行需求极少。
- 路灯控制:Class B。市电供电,功耗不是问题,但需要定时开关灯,延迟可控就行。
- 工业阀门、报警器:Class C。必须实时响应,延迟超过1秒就可能出事故。
- 混合场景:动态切换。平时Class A,紧急事件切Class C。
避坑提醒:
我曾经在一个项目中,为了省电把所有设备都设成Class A。结果客户想远程升级固件,发现根本没法下发。后来我们不得不增加一个「心跳上报」机制,让设备每隔10分钟上报一次,才勉强解决了固件升级的问题。但代价是电池寿命从5年降到了2年。
所以,选Class时一定要考虑未来的运维需求,比如固件升级、参数配置等。
好了,三种Class的核心区别就这些。记住一句话:没有最好的Class,只有最合适的Class。根据你的供电、延迟需求和网络条件,选对Class,项目就成功了一半。
公众号:蓝海资料掘金营,微信deep3321