NB模组状态转换及PSM模式
PSM:Power Saving Mode,省电模式
TAU:Tracking Area Update,跟踪区更新
模块进入PSM 的过程如下:模块在与网络端建立连接或跟踪区更新(TAU)时,会在请求消息中申请
进入PSM,网络端在应答消息中配置T3324 定时器数值返给模块,并启动可达定时器。当T3324 定时器
超时后,模块进入PSM。模块在针对紧急业务进行连网或初始化PDN(公共数据网络)时,不能申请进入
PSM。
当模块处于PSM 模式时,将关闭连网活动,包括搜寻小区消息、小区重选等。但是T3412 定时器(与
周期性TAU 更新相关)仍然继续工作。
如下任意一种方式可使模块从PSM 退出:
T3412 定时器超时后,模块将自动退出PSM;
也可以通过PWRKEY 或者PSM_EINT*将模块从PSM 唤醒。
模块上电开机,发送AT指令,查询一下模块的工作模式,
发送 AT+CPSMS?
应答 +CPSMS: 1,,,"00100011","00001011"
通过应答,可以看到,模块出厂,默认允许使用PSM模式。
"00100011" - <Requested_Periodic-TAU>,T3412定时器(与周期性TAU更新相关)的值为 3 hours。
"00001011" - <Requested_Active-Time>,T3324定时器的值为 22 seconds。
那么这两个定时器,最大可以设置为多少呢?看AT指令集可以得到答案,
没理解错,TAU(T3412)的最大极限可以是 320*31 小时?
思考一个问题,模块为什么要设计出 PSM 功能?这还用问,省电,超级省电。既然想省电,我操作模块上传数据之后索性切断电源就好了啊,这样岂不是更省电。其实这样做没啥问题,但是 PSM 的巧妙在于,它使模组与核心网侧巧妙配合,当模组在 Requested Active Time value(T3324)这段时间内,模组是可以接收寻呼消息的,如果是切断电源,这个寻呼消息就没法保证能够接收下来。
启动 PSM 模式情况下,查询 EPS Network Registration Status,
发送 AT+CEREG?
应答 +CEREG: 5,1,"4A50","093E1555",9,"00",0,0,"00001011","11100000"
--------------------------------------------------------------------------------------------------------------
- 模组的三种状态状态(CONNECT、Idle、PSM)
●CONNECT 到 Idle:不活动定时器超时,不活动定时器可配置 1-3600s,默认 20s(参考)。
●Idle 到 PSM:active timer 超时,active timer 可配置 0-11160 s,由客户在运营商那里开的NB卡决定。
●PSM 到 CONNECT:UE 有上行数据或者 TAU 定时器超时,TAU 定时器 0-310h,默认 12h(参考)。
二、PSM模式配置
指令设置格式 AT+CPSMS=[<mode>,,,<Requested_Periodic-TAU>[,<Requested_Active-Time>]]
Defined values :
<mode>: UE 使能或失能 PSM 状态
0 失能 PSM 状态
1 使能 PSM 状态
2 失能 PSM 并丢弃 PSM 的所有参数,如果可用,重置为制造商特定的默认值。
<Requested_Periodic-TAU>:一字节8位数据格式。在E-UTRAN中UE请求的TAU扩展周期值。 数据高3位为单位值,低5位为对应单位扩展倍数(例:“01000111”中“010”为“10h”单位,“00111”为对应档位扩展7倍,即请求的TAU周期扩展值为“70h”)。PSM状态请求的TAU周期参数表。
注:TAU 周期值核心网与 UE 协商决定,目前测试均由核心网决定 UE 端更改配置无效。TAU 周期:IDLE时间+PSM时间
<Requested_Active-Time>:一字节 8 位数据格式,UE 请求的活动时间值。数据高 3 位为单位值,低 5 位为对应单位扩展倍数(例:“00100100”中高 3 位“001”为“1 min”单位,低 5 位为对应单位扩展倍数,即请求的活动时间值为 4 min)。详细参数配置 PSM 状态请求的活动时间参数表。
注:UE 请求的活动时间值由核心网与 UE 协商决定,目前测试均由核心网决定 UE 端更改配置无效。活动时间:IDLE时间
例:AT+CPSMS=1,,,01000011,01000011 //设定 PSM 参数
OK
AT+CPSMS? //读取参数当前设定值
+CPSMS:1,,,01000011,01000011
OK
AT+CPSMS=? //列出参数可设定值范围
+CPSMS: (0,1,2),,,( 00000000-11111111),(00000000-11111111)
OK
AT+CPSMS=1 //使能PSM
ok
AT+CPSMS=0 //关闭PSM
ok