友情提示,博主第一篇正式文章,在文字排版上可能有些不足之处,目前优化了电脑观看体验,手机端等我熟悉了Markdown语法会再次优化!!!
缓存
本文主要介绍灵龙芯NB-IOT通信模组的低功耗能力,下文中涉及到的知识除AT指令外,基本通用于任何NB模组。
服务器
介绍
NB-IoT 支持三种省电模式:PSM (Power Saving Mode,省电模式)、DRX(Discontinuous Reception,不连续接收模式),eDRX(Extended DRX,扩展不连续接收模式)。
NB 中采用了 PSM(power saving mode)和 eDRX(extended Discontinuous Reception)来节省功耗。在 PSM 模式下,终端无需接收 paging 以检测是否有下行服务,而 eDRX 模式相对于 DRX,具备更长的寻呼检测周期,所以可能致使更长的时间延时,对于数据的实时性有影响。
PSM 和 eDRX 是否使用取决于终端和网络的能力及配置,在能力方面,终端不支持的能力网络必不会配置,而终端支持的能力在网络不一样状况下,配置亦能够不一样。
网络
关于PSM
PSM技术在3GPP R12中引入的一种独立的状态,支持PSM的UE终端在空闲态持续一段时间后,会进入到PSM状态;此时UE终端的PA(射频部分)中止工做,终端AS(接入层)中止部分相关功能,以减小射频、信令处理等部分功耗消耗,从而达到低功耗的目的。
因为UE终端射频部分中止工做,接收不到任何寻呼及调度,对于网络侧来讲,UE终端此时处于不可达的状态,数据、短信均没法到达终端。但此时,终端在网络中仍是标记为注册状态(Registered);所以,从PSM唤醒后,无需从新创建PDN链接,能够直接发送数据。
测试

上图的绿色部分即为UE的PSM状态,能够看到UE在IDLE态持续一段时间后,若是没有再次进入Active态,就会直接进入PSM状态,这段等待时间即为T3324定时器时长。
经过上图还能够看出,一个完整的TAU周期为IDLE+PSM时间之和,一个TAU周期的时长定义为T3412定时器时长。
T3412为TAU(Tracking Area Update)时间,而T3324为在IDLE模式下进入PSM的定时器。
在某些特定APN下,UE能够经过3GPP协议规定的标准指令AT+CPSMS对T3412及T3324定时器进行修改。
优化
关于eDRX
eDRX即加强型非连续接收,是3GPP R13中引入的一种状态,在此以前已经有DRX技术存在。经过字面意思便可知道,eDRX是对DRX技术的一种扩展。
eDRX是DRX的加强,支持更长的寻呼周期,减小接收单元没必要要的启动,以达到节省功耗的目的。PTW(Paging Time Window)窗口期是eDRX的一个状态,在PTW窗口内能够接收寻呼,一旦PTW窗口过去,设备就进入eDRX,而且直到下一个周期性的PTW窗口才能接收寻呼。
spa

上图粉红色部分即为IDLE时间窗,灰色柱状即为寻呼时间窗,在寻呼时间窗内,终端会监听网络侧下发的寻呼消息,并做出响应。
为了进一步下降监听寻呼带来的功耗,NB-IoT引入了eDRX技术,在一次PTW后,进入沉默状态,等待eDRX周期完毕后再次进入PTW监听寻呼。
经过这种技术,终端在IDLE下间歇性监听寻呼,下降了功耗;能够看到当寻呼落在PTW时间窗以外时,终端依旧不能响应寻呼,须要等待网络侧缓存的寻呼再次下发落到PTW时间窗内,便可成功响应。
pwa
三种模式区别
DRX:可以随时随地找到设备。
eDRX:须要花几分钟甚至一两个小时才能找到设备。
PSM:可能要一两天才能找到设备。
3d
PSM
PSM唤醒
PSM唤醒条件
- T3412定时器超时
- WakeUp引脚拉低
blog
PSM相关指令
AT指令 | 功能描述 |
---|---|
AT+CPSMS | PSM参数设置 |
AT+ECPMUCFG | PMU单元使能(必要) |
AT+ECPCFG=“sleepWaitTime”, time | 唤醒UE后,模组保活时间,单位ms(time) |
AT+ECPSMR | PSM状态URC |
部分发送数据的AT指令 | 大部分发送数据的AT指令都携带RAI Flag,在发送数据时,可携带此flag,用以释放RRC以快速进入PSM |
*在Socket、OneNET_LWM2M、CTWing_LWM2M等协议与平台数据交互的指令中均带有RAI Flag标志
*若需使用PSM,则必须设置AT+ECPMUCFG使能PMU与模组唤醒后的保活时间。
教程
这里再也不对AT指令详细说明,有意者可联系做者索取(肝不动了画表格)。。。
(主要是对上述几个AT指令的详细说明)。
PSM特性
AT+CPSMS指令能够用来设置PSM的相关参数,其中Requested_Periodic-RAU和Requested_GPRS-READY-timer无需设置,Requested_Periodic-TAU表明3412定时器,Requested_Active-Time表明3324定时器。都是以8位二进制数来表示,其中高三位为Unit,低五位为value,换算方法以下:Requested_Periodic-RAU
Unit | 基数 | 可表示的最小值 | 可表示的最大值 |
---|---|---|---|
0 | 10min | 2400 | 18600 |
1 | 1h | 21600 | 11160 |
2 | 10h | 14400 | 1116000 |
3 | 2sec | 2 | 62 |
4 | 30sec | 90 | 930 |
5 | 1min | 690 | 1860 |
6 | 320h | 1150000 | 35712000 |
*例:00111000计算方法以下
Unit=1(001), value=24(11000),时间即为24h(1*24)。
Unit | 基数 | 可表示的最小值 | 可表示的最大值 |
---|---|---|---|
0 | 2sec | 2 | 62 |
1 | 1min | 120 | 1860 |
2 | 6min | 2160 | 11160 |
说明
1. 当模组退出PSM模式后,若是没有其余指令操做,模组会在计时AT+ECPCFG=“slpWaitTime”,time设置的time时间后再次进入PSM。此过程能够被AT能够被AT指令打断,每次敲击AT会重新计时time时间,计时结束后,若无其余不可进入PSM的状态,则模组从新进入PSM模式。
2. 目前T3324和T3412实际值为运营商下发的值,使用AT+CPSMS命令手动配置的T3324和T3412参数可能没法在实际状况中生效。
3. 只经过AT+CPSMS指令开启PSM可依进入PSM模式,但可能没法真正下降功耗,必须经过AT+ECPMUCFG指定PMU等级,根据不一样的PMU等级其进入PSM的功耗也不一样。
4. 开启PSM后,建议经过AT+ECPCFG=“slpWaitTime”,time来设置模组唤醒后的保活时间,不然可能会发生唤醒模组后来不及发送数据再次进入PSM的状况。
5. 在设置PMU等级时,高于SLEEP1(含)的睡眠深度仅支持Pad Wakeup,若将模组Pad Wakeup与串口相连,则须要发送两次AT指令,第一次为唤醒模组,第二次为真正可发出的数据(也可不断的发送AT,等待模组返回OK,继而发送业务数据)。
eDRX
eDRX简介
eDRX模式
eDRX模式做为Rel-13中新增的功能,主要目的是支持更长周期的寻呼监听,从而达到省电的目的。传统的2.56s寻呼时间间隔对UE的电量消耗过大,而下行数据发送频率较小时,经过核心网和用户的协商配合,用户终端跳过大部分的寻呼监听,从而达到省电的目击。
eDRX模式的节电效果比PSM模式要差一点,可是相对于PSM模式,大幅提高了下行通讯链路的可达性。
eDRX周期如上图所示,用户可经过查阅相关AT指令(AT+CEDRXS)进行eDRX周期设置。
PTW
在每一个eDRX周期内,都有一个寻呼时间窗口(Paging Time Window,PTW),UE只能在PTW内按照DRX周期监听寻呼信道,以便接收下行业务,PTW外的时间处于睡眠状态,不监听寻呼信道,不能接收下行业务。
eDRX配置相关指令
以下命令能够设置不一样的 eDRX 参数,以实现不一样应用场景下的多样应用需求。AT指令 | 功能描述 |
---|---|
AT+CEDRXS | eDRX参数设置 |
AT+CEDRXRDP | 读取动态eDRX参数 |
AT+ECPTWEDRXS | PTW和eDRX参数设置 |
AT+ECPMUCFG | PMU单元使能(必要) |
AT+ECPCFG=“sleepWaitTime”, time | 唤醒UE后,模组保活时间,单位ms(time) |
这里再也不对AT指令详细说明,有意者可联系做者索取(肝不动了画表格)。。。
(主要是对上述几个AT指令的详细说明)。
应用示例
PSM模式
开启/关闭PSM模式
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+ECPSMR=1 | OK | 开启PSM事件上报 |
AT+ECPMUCFG=1,4 | OK | 使能PMU为Hibernate等级 |
AT+ECPCFG=“sleepWaitTime”,5000 | OK | 设置UE唤醒保活时间为5s |
AT+CEREG=4 | OK | |
AT+CEREG? | +CEREG: 4,1,“4644”,“046AC853”,9,“00000001”, “00111000” OK |
|
AT+CPSMS=1,“00111000”, “00100001” |
OK +CEREG: 4,1,“3a59”,“0a14ff60”,9,“00011110”,“00111000” +ECPSMR: 1 |
开启PSM模式,并设置T3412_ext和T3324定时器 |
AT+CEREG=0 | OK | |
AT+ECPMUCFG=0 | OK | 失能PMU |
AT+CPSMS=0 | OK +ECPSMR: 0 |
关闭PSM |
PSM和UDP测试示例
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+ECPSMR=1 | OK | 开启PSM事件上报 |
AT+ECPMUCFG=1,4 | OK | 使能PMU为Hibernate等级 |
AT+ECPCFG=“sleepWaitTime”,5000 | OK | 设置UE唤醒保活时间为5s |
AT+CPSMS=1,“00111000”, “00100001” |
OK | 开启PSM模式,并设置T3412_ext和T3324定时器 |
AT+SKTCREATE=1,2,17 | +SKTCREATE: 1 OK |
建立Socket |
AT+SKTCONNECT=1,“ip”,port | OK | 绑定UDP服务器 |
AT+SKTSEND=1,6,303132333435 | OK | 发送数据到UDP服务器 |
+SKTRECV: 1,3 “313233” | 从UDP服务器接收数据 | |
+ECPSMR: 1 | 若是数据传输完毕,UE将自动进行PSM模式 |
PSM和UDP测试示例(RAI Flag)
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+ECPSMR=1 | OK | 开启PSM事件上报 |
AT+ECPMUCFG=1,4 | OK | 使能PMU为Hibernate等级 |
AT+ECPCFG=“sleepWaitTime”,5000 | OK | 设置UE唤醒保活时间为5s |
AT+CPSMS=1,“00111000”, “00100001” |
OK | 开启PSM模式,并设置T3412_ext和T3324定时器 |
AT+SKTCREATE=1,2,17 | +SKTCREATE: 1 OK |
建立Socket |
AT+SKTCONNECT=1,“ip”,port | OK | 绑定UDP服务器 |
(17:31:19.532) AT+SKTSEND=1,6,303132333435,1 |
OK (17:31:23.816) +ECPSMR: 1 |
发送数据到UDP服务器 若是数据传输完毕,UE将自动进入PSM模式 能够看出,携带RAI Flag后UE能够很是快速 的进入PSM模式 |
eDRX模式
使能eDRX模式时,需打开PMU电源管理单元及sleepwaitTime,下面再也不叙述。
开启eDRX模式
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+COPS? | +COPS: 0,2,“46000”,9 OK |
查询网络信息,运营商及网络制式 |
AT+CEDRXS=? | +CEDRX: (0,1,2,3),(5),(“0010”-“1111”) OK |
查询eDRX参数范围 |
AT+CEDRXS=1,5 | OK | 开启eDRX模式,配置自动保存 |
AT+CEDRXRDP | +CEDRXRDP: 5,“0010”,“0010”,“0011” OK |
若是eDRX支持: 第一个0010为UE请求的eDRX周期 第二个0010为网络下发的eDRX周期 第三个0011为网络下发的PTW周期 |
AT+CEDRXRDP | +CEDRXRDP:0 OK |
若是不支持eDRX模式,返回0 |
设置eDRX周期为指定值
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+CEDRXS=1,5,“0011” | OK | 开启eDRX模式,eDRX周期为40.96s |
AT+CEDRXRDP | +CEDRXRDP: 5,“0011”,“0011”,“0011” OK |
若是eDRX支持: 第一个0010为UE请求的eDRX周期 第二个0010为网络下发的eDRX周期 第三个0011为网络下发的PTW周期 |
设置eDRX周期为20.48s,PTW为10.24s
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+ECPTWEDRXS=1,5,0011,0010 | OK | |
AT+CEDRXRDP | +CEDRXRDP: 5,“0010”,“0010”,“0011” OK |
若是eDRX支持: 第一个0010为UE请求的eDRX周期 第二个0010为网络下发的eDRX周期 第三个0011为网络下发的PTW周期 |
关闭eDRX模式
AT指令 | 指令响应 | 事件描述 |
---|---|---|
AT+CEDRXS=0 | OK | 关闭eDRX模式 |
AT+CEDRXRDP | CEDRXRDP: 0 OK |
关闭eDRX模式 |
结语
首次更新的内容很少,算是练手吧!后面会逐步更新出模组与云平台通讯方面的教程,顺带也会加入平台侧操做。对NB-IOT有兴趣的小伙伴可在下方留言或私聊博主,共同进步!!!