友情提示,博主第一篇正式文章,在文字排版上可能有些不足之處,目前優化了電腦觀看體驗,手機端等我熟悉了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窗口才能接收尋呼。
上圖粉紅色部分即爲IDLE時間窗,灰色柱狀即爲尋呼時間窗,在尋呼時間窗內,終端會監聽網絡側下發的尋呼消息,並作出響應。
爲了進一步降低監聽尋呼帶來的功耗,NB-IoT引入了eDRX技術,在一次PTW後,進入沉默狀態,等待eDRX週期完畢後再次進入PTW監聽尋呼。
通過這種技術,終端在IDLE下間歇性監聽尋呼,降低了功耗;可以看到當尋呼落在PTW時間窗之外時,終端依舊不能響應尋呼,需要等待網絡側緩存的尋呼再次下發落到PTW時間窗內,即可成功響應。
三種模式區別
DRX:能夠隨時隨地找到設備。
eDRX:需要花幾分鐘甚至一兩個小時才能找到設備。
PSM:可能要一兩天才能找到設備。
PSM
PSM喚醒
PSM喚醒條件
- T3412定時器超時
- WakeUp引腳拉低
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有興趣的小夥伴可在下方留言或私聊博主,共同進步!!!