第二章 模组工作模式详解:Active、Idle、PSM、eDRX
做蜂窝模组功耗优化,第一件事是什么?
不是拿万用表去测电流,而是先搞清楚模组到底在「干什么」。我见过太多工程师,一上来就盯着峰值电流不放,结果折腾半天发现——问题出在模组根本没进休眠。
这一章,咱们把四种核心工作模式掰开揉碎讲清楚。Active、Idle、PSM、eDRX,每个模式下的电流长什么样,怎么切进去,又怎么退出来。搞懂这些,你手里的功耗问题至少能解决一半。
核心观点:模组功耗优化的本质,就是让模组尽可能长时间地待在低功耗模式里。你不需要消灭高电流,你需要管理「高电流的持续时间」和「进入低功耗的时机」。
2.1 Active 模式:模组的「全功率」状态
Active 模式,说白了就是模组在干活的时候。发射数据、接收数据、网络注册、附着、TAU 更新……只要射频收发机在工作,模组就处于 Active 模式。
电流特性:
- 发射峰值电流: 2G 网络下可达 2A 以上,4G Cat.1 通常在 500mA~800mA,NB-IoT 相对低一些,200mA~400mA。
- 接收电流: 比发射低,但也在 50mA~150mA 量级。
- 持续时间: 取决于数据量。发一个几百字节的报文,可能几十毫秒就结束了;但如果做 FOTA 升级,Active 状态能持续几分钟甚至更久。
我的经验: 有一次客户说模组待机功耗偏高,我抓了电流波形一看,发现模组每隔 30 秒就主动发一个心跳包,每次 Active 持续 2 秒。2 秒看起来不长,但一天下来就是 96 秒的 Active 时间,功耗占比超过 30%。后来把心跳间隔拉到 5 分钟,问题直接解决。
切换条件:
- 从 Idle 进入 Active:有上行数据需要发送,或收到网络侧寻呼需要响应。
- 从 Active 回到 Idle:数据发送完毕,且没有后续数据需要处理。
- 从 PSM/eDRX 进入 Active:TAU 定时器到期,或应用层主动唤醒发数据。
2.2 Idle 模式:监听但不干活
Idle 模式是模组最「日常」的状态。射频收发机没有持续工作,但会周期性地醒来监听寻呼信道——看看网络有没有叫自己。
你想想看,手机待机时大部分时间就在 Idle 模式。模组也一样。
电流特性:
- 典型电流: 1mA~3mA(取决于寻呼周期)。
- 寻呼监听瞬间: 每次醒来监听寻呼时,电流会短暂跳到 20mA~50mA,持续几毫秒。
- 平均电流: 如果寻呼周期是 1.28 秒,平均电流大约 1.5mA 左右。
切换条件:
- 从 Active 进入 Idle:RRC 连接释放(网络侧或模组侧均可触发)。
- 从 Idle 进入 Active:有上行数据或收到寻呼。
- 从 Idle 进入 PSM/eDRX:网络侧通过 TAU Accept 消息配置 PSM 或 eDRX 参数。
注意: Idle 模式下模组仍然保持网络注册状态,可以随时被寻呼到。如果你需要模组「随时在线」,Idle 是必须的。但如果你能接受延迟,PSM 或 eDRX 会更省电。
2.3 PSM 模式:深度休眠,几乎不耗电
PSM(Power Saving Mode)是 NB-IoT 和 LTE-M 模组的「王牌省电模式」。进入 PSM 后,模组几乎关闭所有射频功能,只保留一个 RTC 定时器在跑。
电流特性:
- 典型电流: 3μA~15μA(取决于模组型号和外围电路设计)。
- 极限情况: 有些优化好的模组能做到 2μA 以下。
- 唤醒瞬间: 从 PSM 醒来做 TAU 更新时,电流会短暂回到 Active 级别。
切换条件:
- 进入 PSM:模组在 Idle 模式下,网络侧通过 TAU Accept 消息中的 T3324 定时器(Active Time)和 T3412 定时器(TAU 周期)协商进入 PSM。
- 退出 PSM:TAU 定时器到期,模组自动唤醒做周期性 TAU 更新;或应用层通过外部中断/定时器唤醒模组发数据。
关键参数:
- T3324(Active Time): 模组进入 Idle 后,保持可被寻呼的时间。超时后进入 PSM。
- T3412(TAU 周期): 模组在 PSM 中休眠的最长时间。到期必须醒来做 TAU。
这两个参数由网络侧决定,但模组可以在 Attach Request 或 TAU Request 中主动请求。我建议你在产品设计阶段就跟运营商确认好这两个值。
2.4 eDRX 模式:折中方案
eDRX(Extended Discontinuous Reception)是 Idle 模式的「增强版」。它把寻呼监听周期拉长到几十秒甚至几分钟,从而降低平均电流。
说白了,eDRX 就是让模组「睡久一点,醒少一点」。
电流特性:
- 典型电流: 取决于 eDRX 周期。周期越长,平均电流越低。
- 举例: eDRX 周期 10.24 秒时,平均电流约 0.5mA~1mA;周期 40.96 秒时,可降到 0.2mA~0.5mA。
- 寻呼监听瞬间: 每次监听时电流仍然会跳到 20mA~50mA,但次数大幅减少。
切换条件:
- 进入 eDRX:网络侧在 Attach Accept 或 TAU Accept 中配置 eDRX 参数,包括 eDRX 周期和寻呼时间窗口(PTW)。
- 退出 eDRX:有上行数据需要发送,或收到网络侧寻呼。
- 从 eDRX 进入 PSM:如果同时配置了 PSM,eDRX 结束后模组可能直接进入 PSM。
我曾经踩过的坑: 有个项目用了 eDRX 周期 40.96 秒,结果发现模组经常收不到下行数据。后来排查发现,网络侧实际支持的 eDRX 周期只有 20.48 秒,模组请求的 40.96 秒被网络侧悄悄拒绝了。所以,一定要在实际网络环境下验证 eDRX 参数是否生效。
2.5 四种模式对比总结
| 模式 | 典型电流 | 可被寻呼 | 适用场景 | 主要限制 |
|---|---|---|---|---|
| Active | 200mA~2A | 是 | 数据传输、FOTA、网络注册 | 功耗极高,持续时间应尽量短 |
| Idle | 1mA~3mA | 是 | 需要低延迟响应的场景 | 平均电流仍偏高 |
| eDRX | 0.2mA~1mA | 是(延迟增大) | 允许秒级延迟的周期性数据上报 | 依赖网络侧支持 |
| PSM | 3μA~15μA | 否 | 电池供电、低频次上报 | 下行不可达,需等待 TAU 周期 |
2.6 实战建议:如何选择工作模式
搞清楚了四种模式,接下来就是怎么选的问题。我个人习惯按以下思路来:
- 先看业务需求: 数据上报频率是多少?允许的最大延迟是多少?
- 再看网络环境: 运营商是否支持 PSM 和 eDRX?支持的参数范围是多少?
- 最后算功耗预算: 用电池容量除以平均电流,看看能不能满足产品生命周期要求。
一个简单的决策树:
- 需要实时响应(延迟 < 1 秒)→ Idle 模式
- 允许秒级延迟 → eDRX 模式
- 允许分钟级甚至小时级延迟 → PSM 模式
- 需要频繁收发大量数据 → Active 模式(但要想办法优化数据量)