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设备必须支持的基础模式。我习惯叫它「发完就睡」模式。

工作流程:

  1. 设备主动发送上行数据
  2. 发送结束后,打开RX1窗口(1秒后)
  3. RX1窗口关闭后,再打开RX2窗口(2秒后)
  4. 两个窗口都关闭,设备进入休眠

你想想看,服务器想给设备发数据,只能等设备主动上报后才能下发。如果设备一天只发一次数据,那服务器就得等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其实没那么复杂,我一般按这个思路来:

  1. 先看供电方式:电池供电?直接选Class A。市电供电?可以考虑Class C。
  2. 再看下行需求:不需要下行?Class A。需要定时下行?Class B。需要实时下行?Class C。
  3. 最后看网络条件:网关不支持信标?Class B就别想了。

一个小技巧:

很多LoRaWAN模组支持动态切换Class。我有个项目平时用Class A省电,当检测到报警事件时,临时切换到Class C,等事件处理完再切回Class A。这样既省电又保证了紧急情况下的实时性。

4.7 三种Class的工作时序图

下面这张图展示了三种Class的接收窗口时序,我画出来方便你理解:

LoRaWAN三种Class工作时序对比 Class A 上行 RX1 RX2 休眠(等待下次上行) T0 T0+1s T0+2s Class B B 上行 RX1 RX2 P P P 信标 定时Ping Slot Class C 持续接收(RX2常开) 上行 恢复持续接收 图例 上行数据 接收窗口 休眠 Ping Slot 信标/关闭

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