2.3GPP R12 eDRX 机制详解

各位好,我是老周。今天咱们聊聊 eDRX,也就是增强型非连续接收。这个特性是 3GPP R12 引入的,说白了就是为了让 LTE 模组在待机时更省电。我最早接触 eDRX 是在做一款智能水表项目的时候,客户要求电池撑 5 年,光靠传统 DRX 根本做不到。嗯,那会儿我就知道,eDRX 这东西必须得啃透。

2.1 eDRX 的引入背景

传统 DRX 的寻呼周期最长也就 2.56 秒。你想想看,模组每 2.56 秒就得醒来一次听网络有没有找它。对于手机来说这没问题,但对于一年才上报一次数据的抄表终端,这简直是灾难。

我算过一笔账:一个 NB-IoT 模组在空闲态电流约 3mA,如果按 2.56 秒周期醒来,平均电流大概在 15μA 左右。一年下来,电池消耗接近 130mAh。对于 2000mAh 的电池,撑不过 15 年。但客户要的是 10 年?不,他们要 15 年。

所以 3GPP 在 R12 里做了两件事:

  • 把寻呼周期从秒级拉长到分钟级,甚至小时级
  • 引入 PTW(寻呼时间窗口),让模组在窗口内按传统 DRX 工作,窗口外彻底休眠

说白了,eDRX 就是让模组「睡得更沉,醒得更少」。我在项目中见过不少工程师把 eDRX 和 PSM 搞混,其实区别很明显:PSM 是彻底关机,连寻呼都不听;eDRX 是还保留寻呼能力,只是间隔拉长了。

核心要点:eDRX 不是让模组一直睡,而是让它在大部分时间深度睡眠,只在预设的时间窗口内醒来监听寻呼。这个窗口就是 PTW。

2.2 寻呼周期与 eDRX 周期的关系

这里有个容易绕晕的地方。eDRX 周期和传统 DRX 周期是嵌套关系,不是替代关系。我画了张图,你看一眼就明白了。

eDRX 周期与寻呼周期嵌套关系 eDRX 周期(T_eDRX) PTW 窗口 DRX DRX DRX 说明 • 一个 eDRX 周期内只有一个 PTW 窗口 • PTW 窗口内按传统 DRX 周期监听寻呼 • PTW 窗口外模组深度睡眠,不监听任何寻呼 t0 T_eDRX 2×T_eDRX

从图上你能看到:

  • eDRX 周期(T_eDRX):模组两次醒来监听寻呼的间隔,单位是秒到分钟
  • PTW 窗口:模组真正醒来监听寻呼的时间段,长度固定
  • 传统 DRX 周期:在 PTW 窗口内,模组按传统 DRX 周期(如 1.28 秒)监听寻呼

我习惯把 eDRX 比作「闹钟模式」:你设了个 1 小时的闹钟(T_eDRX),闹钟响后你有 5 分钟时间(PTW)检查有没有人找你,这 5 分钟内你每 10 秒看一次手机(传统 DRX)。5 分钟一过,继续睡。

个人经验:我在调试时发现,很多工程师把 T_eDRX 设得特别大,比如 40 分钟,但 PTW 设得很短,比如 1 秒。结果模组经常收不到寻呼。为什么?因为网络侧发送寻呼的时间窗口和模组的 PTW 没对齐。我建议 PTW 至少包含 4 个传统 DRX 周期,留足余量。

2.3 eDRX 参数配置

eDRX 的核心参数就两个:T_eDRX 和 PTW。但这两个参数背后牵扯的东西不少。我整理了一张表,方便你对照。

参数 3GPP 定义 取值范围 典型值
T_eDRX eDRX 周期,模组两次 PTW 窗口的间隔 5.12s ~ 2621.44s(约 43 分钟) 20.48s / 40.96s / 81.92s
PTW 寻呼时间窗口,模组在窗口内监听寻呼 1.28s ~ 40.96s 2.56s / 5.12s / 10.24s
传统 DRX 周期 PTW 窗口内的寻呼监听间隔 0.32s / 0.64s / 1.28s / 2.56s 1.28s

2.3.1 T_eDRX 配置

T_eDRX 决定了模组的休眠深度。值越大,省电效果越好,但寻呼延迟也越大。我举个例子:

  • T_eDRX = 20.48s:平均电流约 8μA,寻呼延迟约 10 秒
  • T_eDRX = 81.92s:平均电流约 3μA,寻呼延迟约 40 秒
  • T_eDRX = 2621.44s:平均电流约 0.5μA,寻呼延迟约 20 分钟

注意,T_eDRX 不是随便设的。3GPP 规定它必须是 1.28 秒的整数倍,而且不能小于传统 DRX 周期。我在项目中遇到过有人把 T_eDRX 设成 5 秒,结果模组根本不进入 eDRX 模式——因为网络侧不支持这么短的周期。

避坑指南:我曾经在一个项目中,把 T_eDRX 设成 2621.44 秒(约 43 分钟),结果模组经常掉线。排查后发现,网络侧的寻呼超时时间只有 30 分钟。模组 43 分钟才醒来一次,网络早就认为它失联了。所以 T_eDRX 不能超过网络侧的寻呼超时时间,这个值通常由运营商配置。

2.3.2 PTW 配置

PTW 是模组真正干活的时间窗口。窗口越长,模组收到寻呼的概率越高,但功耗也越大。PTW 的配置有个经验公式:

PTW 长度 = 传统 DRX 周期 × (PTW 系数 + 1)

其中 PTW 系数取值范围:0 ~ 15
例如:传统 DRX 周期 = 1.28s,PTW 系数 = 3
则 PTW 长度 = 1.28 × (3 + 1) = 5.12s

我建议 PTW 至少包含 2~4 个传统 DRX 周期。为什么?因为网络侧发送寻呼的时间点不一定和模组的 PTW 起始点对齐。多留几个周期,能提高寻呼成功率。

另外,PTW 不能超过 T_eDRX 的一半。你想想看,如果 PTW 占了 T_eDRX 的大半,那 eDRX 还有什么意义?

2.4 参数配置实战建议

说了这么多理论,咱们来点实际的。我根据项目经验,总结了三种典型场景的参数配置:

应用场景 T_eDRX PTW 传统 DRX 周期 平均电流
智能水表(每日上报) 40.96s 2.56s 1.28s ~5μA
资产追踪(每小时上报) 163.84s 5.12s 1.28s ~2μA
环境监测(每日上报) 655.36s 10.24s 2.56s ~0.8μA

注意,这些值是理论估算。实际功耗还受射频环境、信号强度、网络负载等因素影响。我习惯在实验室先跑 24 小时,用电流分析仪抓实际曲线,再微调参数。

调试技巧:我建议先用 AT 指令查询模组当前的 eDRX 状态。以 Quectel 模组为例:

AT+CEDRXRDP
返回示例:
+CEDRXRDP: 1,1,"0101","0100"
其中:
第一个参数:eDRX 使能状态(1=使能)
第二个参数:请求类型
第三个参数:T_eDRX 值(编码后)
第四个参数:PTW 值(编码后)

拿到返回值后,对照 3GPP 36.331 的编码表解码,就能确认模组是否按预期配置工作。

2.5 常见问题与排查思路

最后,我列几个我在项目中踩过的坑,你遇到了可以直接对照排查:

  1. 模组不进入 eDRX 模式:检查网络侧是否支持 eDRX。有些运营商只在特定频段或特定 PLMN 下开放 eDRX 功能。
  2. 寻呼丢失率高:PTW 太短,或者 T_eDRX 和网络侧的寻呼窗口没对齐。我建议 PTW 至少 5.12s。
  3. 功耗比预期高:检查是否有周期性 TAU(跟踪区更新)打断了 eDRX 睡眠。TAU 周期必须大于 T_eDRX,否则模组会频繁醒来做 TAU。
  4. 模组频繁掉线:T_eDRX 超过了网络侧的隐式去附着定时器。这个定时器通常由运营商配置,范围在 30 分钟到 2 小时之间。

嗯,关于 eDRX 的核心机制,今天就聊到这儿。参数配置这块,我建议你拿到模组后先做一组对比测试,用电流分析仪抓出实际曲线,再根据业务需求微调。毕竟,理论算得再漂亮,不如实测数据来得实在。