轉自:http://blog.csdn.net/wang2425559/article/details/74929743
1、整體結構
雙向傳輸終端(Class A): Class A 的終端在每次上行後都會緊跟兩個短暫的下行接收視窗,以此實作雙向傳輸。傳輸時隙是由終端在有傳輸需要時安排,附加一定的随機延時(即ALOHA協定)。這種Class A 操作是最省電的,要求應用在終端上行傳輸後的很短時間内進行伺服器的下行傳輸。伺服器在其他任何時間進行的下行傳輸都得等終端的下一次上行。
劃定接收時隙的雙向傳輸終端(Class B): Class B 的終端會有更多的接收時隙。除了Class A 的随機接收視窗,Class B 裝置還會在指定時間打開别的接收視窗。為了讓終端可以在指定時間打開接收視窗,終端需要從網關接收時間同步的信标 Beacon。這使得伺服器可以知道終端正在監聽。
最大化接收時隙的雙向傳輸終端(Class C): Class C 的終端基本是一直打開着接收視窗,隻在發送時短暫關閉。Class C 的終端會比 Class A 和 Class B
更加耗電,但同時從伺服器下發給終端的時延也是最短的。
2、接收視窗
說明:
(1) 第一接收視窗的信道,資料速率和啟動。
第一接收視窗 RX1 使用的頻率和上行頻率有關,使用的速率和上行速率有關。RX1 是在上行調制結束後的 RECEIVE_DELAY1 秒打開。上行和 RX1 時隙下行速率的關系是按區域規定,較長的描述在[LoRaWAN地區參數]檔案中。預設第一視窗的速率是和最後一次上行的速率相同。
(2)第二接收視窗的信道,資料速率和啟動
第二接收視窗 RX2 使用一個固定可配置的頻率和資料速率,在上行調制結束後的 RECEIVE_DELAY2 秒打開。頻率和資料速率可以通過 MAC 指令設定。預設的頻率和速率是按區域規定,較長的描述在[LoRaWAN地區參數]檔案中。
(3)接收視窗的持續時間
接收視窗的長度至少要讓終端射頻收發器有足夠的時間來檢測到下行的前導碼。
(4)接收方在接收視窗期間的處理
如果在任何一個接收視窗中檢測到前導碼,射頻收發器需要繼續激活,直到整個下行幀都解調完畢。如果在第一接收視窗檢測到資料幀,且這個資料幀的位址和MIC校驗通過确認是給這個終端,那終端就不必開啟第二個接收視窗。
(5) 網絡發送消息給終端
如果網絡想要發一個下行消息給終端,它會精确地在兩個接收視窗的起始點發起傳輸。
(6)接收視窗的重要事項
終端在第一或第二接收視窗收到下行消息後,或者在第二接收視窗階段,不能再發起另一個上行消息。
3、資料幀格式
MHDR中有MType字段
4、終端入網
為了加入LoRaWAN網絡,每個終端需要初始化及激活。
終端的激活有兩種方式,一種是空中激活 Over-The-Air Activation (OTAA),當裝置部署和重置時使用; 另一種是獨立激活 Activation By Personalization (ABP),此時初始化和激活這兩步就在一個步驟内完成。
OTAA方式激活:
(1)應用ID(AppEUI)
AppEUI是一個類似IEEE EUI64的全球唯一ID,辨別終端的應用提供者。
APPEUI在激活流程開始前就存儲在終端中。
(2)終端 ID (DevEUI)
DevEUI 是一個類似IEEE EUI64的全球唯一ID,辨別唯一的終端裝置。
(3)應用密鑰(AppKey)
AppKey 是由應用程式擁有者配置設定給終端,很可能是由應用程式指定的根密鑰來衍生的,并且受提供者控制。當終端通過空中激活方式加入網絡,AppKey用來産生會話密鑰NwkSKey和AppSKey,會話密鑰分别用來加密和校驗網絡層和應用層資料。DevNonce 2位元組的随機數,用于生成随機的AppSKey和NwkSKey
激活後,終端會存儲如下資訊:裝置位址(DevAddr),應用ID(AppEUI),網絡會話密鑰(NwkSKey),應用會話密鑰(AppSKey)。
NwkSKey被終端和網絡伺服器用來計算和校驗所有消息的MIC,以保證資料完整性。也用來對單獨MAC的資料消息載荷進行加解密。
AppSKey被終端和網絡伺服器用來對應用層消息進行加解密。當應用層消息載荷有MIC時,也可以用來計算和校驗該應用層MIC。
5、收發資料幀
· 幀頭中 自适應資料速率 的控制(ADR, ADRACKReq in FCtrl)
LoRa網絡允許終端采用任何可能的資料速率。LoRaWAN協定利用該特性來優化固定終端的資料速率。這就是自适應資料速率(Adaptive Data Rate (ADR))。當這個使能時,網絡會優化使得盡可能使用最快的資料速率。
如果ADR的位字段有置位,網絡就會通過相應的MAC指令來控制終端裝置的資料速率。如果ADR位沒設定,網絡則無視終端的接收信号強度,不再控制終端裝置的資料速率。ADR位可以根據需要通過終端及網絡來設定或取消。不管怎樣,ADR機制都應該盡可能使能,幫助終端延長電池壽命和擴大網絡容量。
如果終端被網絡優化過的資料速率高于自己預設的資料速率,它需要定期檢查下網絡仍能收到上行的資料。每次上行幀計數都會累加(是針對于每個新的上行包,重傳包就不再增加計數),終端增加 ADR_ACK_CNT 計數。如果直到ADR_ACK_LIMIT次上行(ADR_ACK_CNT >= ADR_ACK_LIMIT)都沒有收到下行回複,它就得置高ADR應答請求位(ADRACKReq)。 網絡必須在規定時間内回複一個下行幀,這個時間是通過ADR_ACK_DELAY來設定,上行之後收到任何下行幀就要把ADR_ACK_CNT的計數重置。當終端在接收時隙中的任何回複下行幀的ACK位字段不需要設定,表示網關仍在接收這個裝置的上行幀。如果在下一個ADR_ACK_DELAY上行時間内都沒收到回複(例如,在總時間ADR_ACK_LIMIT+ADR_ACK_DELAY之後),終端必須切換到下一個更低速率,使得能夠獲得更遠傳輸距離來重連網絡。終端如果在每次ADR_ACK_LIMIT到了之後依舊連接配接不上,就需要每次逐漸降低資料速率。如果終端用它的預設資料速率,那就不需要置位ADRACKReq,因為無法幫助提高鍊路距離。
· 消息應答位及應答流程(ACK in FCtrl)
收到confirmed類型的消息時,接收端要回複一條應答消息(應答位ACK要進行置位)。如果發送者是終端,網絡就利用終端發送操作後打開的兩個接收視窗之一進行回複。如果發送者是網關,終端就自行決定是否發送應答。
應答消息隻會在收到消息後回複發送,并且不重發。
· 幀挂起位(FPending in FCtrl 隻在下行有效)
幀挂起位(FPending)隻在下行互動中使用,表示網關還有挂起資料等待下發,需要終端盡快發送上行消息來再打開一個接收視窗。
每個終端有兩個計數器跟蹤資料幀的個數,一個是上行鍊路計數器(FCntUp),由終端在每次上行資料給網絡伺服器時累加;另一個是下行鍊路計數器(FCntDown),由伺服器在每次下行資料給終端時累計。 網絡伺服器為每個終端跟蹤上行幀計數及産生下行幀計數。 終端入網成功後,終端和服務端的上下行幀計數同時置0。 每次發送消息後,發送端與之對應的 FCntUp 或 FCntDown 就會加1。 接收方會同步儲存接收資料的幀計數,對比收到的計數值和目前儲存的值,如果兩者相差小于 MAX_FCNT_GAP (要考慮計數器滾動),接收方就按接收的幀計數更新對應值。如果兩者相差大于 MAX_FCNY_GAP 就說明中間丢失了很多資料,這條以及後面的資料就被丢掉。
· 幀可選項(FOptsLen in FCtrl, FOpts)
FCtrl 位元組中的FOptsLen位字段描述了整個幀可選項(FOpts)的字段長度。
FOpts字段存放MAC指令,最長15位元組,。
如果FOptsLen為0,則FOpts為空。在FOptsLen非0時,則反之。如果MAC指令在FOpts字段中展現,port0不能用(FPort要麼不展現,要麼非0)。
MAC指令不能同時出現在FRMPayload和FOpts中,如果出現了,裝置丢掉該組資料。
端口字段(FPort)
如果幀載荷字段不為空,端口字段必須展現出來。端口字段有展現時,若FPort的值為0表示FRMPayload隻包含了MAC指令; FPort的數值從1到223(0x01..0xDF)都是由應用層使用。 FPort的值從224到255(0xE0..0xFF)是保留用做未來的标準應用拓展。
6、MAC指令
中國 470-510MHz 預設設定
中國 470-510MHz 頻段對以下參數提供了一些推薦值。
7、程式異常重傳
(1)Uplink Timing Diagram for Confirmed Data Messages
(2)Downlink Timing for Frame-Pending Messages
(3)Data-Rate Adaptation during Message Retransmissions
When an end-device attempts the transmission of a “confirmed’ frame toward the network it expects to receive an acknowledgement in one of the subsequent reception slot. In the absence of the acknowledgement it will try to re-transmit the same data again. This re transmission happens on a new frequency channel, but can also happen at a different datarate (preferable lower) than the previous one. It is strongly recommended to adopt the following re-transmission strategy.
The first transmission of the “confirmed” frame happens with a data rate DR
終端對掉網的判斷:由于網絡沒有廣播信道,是以終端對掉網的判斷條件就是多次
發包不成功。
a) 當采用确認幀發送時,多次發送資料失敗,認為網絡掉網,需要重新發起網絡
注冊流程;目前認為掉網的條件是通過 SF12 在各信道發包一次均不成功;
b) 如果發送失敗,功率如果是非最大功率,需要先将功率調到最大功率;
c) 如果發送失敗,且功率也是最大功率,則每失敗 2 次則調低 1 級速率;
d) 如果速率已經調到最低,且在各信道發包 1 次均失敗,則認為掉網;
e) 當采用非确認幀發送時,需要通過 ADRACKReq 機制來判斷是否掉網
8、CLAA修改
(1)CLAA模式
CLAAModeA :CLAA定義的基站工作模式 ,上 下行 同 頻 , 482 ~500M
CLAAModeB :CLAA定義的基站工作模式 ,上 下行 同 頻 , 470 ~490M
CLAAModeC :CLAA定義的基站工作模式 ,上 下行 同 頻 , 490 ~510M
CLAAModeD :CLAA定義的基站工作模式,上下行異頻,上行480~490M,
下行500~506M
CLAAModeE :CLAA定義的基站工作模式,上下行異頻,上行470~480M,
下行490~496M
當終端具有多種工作信道模式時,各模式預設優先級如下: CLAAModeD >
CLAAModeB > CLAAModeE > CLAAModeC > CLAAModeA;終端按照優先
級依次找網;
當網絡注冊成功後,目前工作信道模式提升為最高優先級,後續掉網後優先采
用該工作信道模式來找網,如果找網失敗,再繼續降級工作信道模式,重新找。
(2)CLAA信道設定
中國 470-510MHz 信道頻率
在中國,無線電管理局SRRC規定了這個頻段用于民用表計應用。
470頻段需要按照如下信道規劃進行部署:
上行 – 從0到95共96個信道,帶寬為125KHz,速率從DR0到DR5,使用編碼率4/5,從470.3MHz按200KHz遞增到489.3KHz
下行 – 從0到47共48個信道,帶寬為125KHz,速率從DR0到DR5,使用編碼率4/5,從500.3MHz按200KHz遞增到509.7KHz。
CLAAModeD 采用收發異頻方式,收發信道均采用 125KHz 帶寬。
480M~490M 定義為上行頻段,共定義了 48 個 125KHz 信道,中心頻點分别為480.3M~489.7M;信道編碼為 0~47;
500M~506M 定義為下行頻段,共定義了 30 個 125KHz 信道,中心頻點分别為500.1M~505.9M;信道編碼為 0~29;其中 0~23 個信道作為 ClassA 模式的下行資料發送信道, 24~29 信道作為 ClassB/C 模式的資料發送信道;
這 48 個信道分為 5 組,每組 2M,前 4 組有 10 個信道,最後 1 組有 8 個信道,每組中有 1 個為預設信道
對于 RX2 的預設信道,選擇 12 信道, 502.5MHz。
對于 RX1 的下行信道确定,采用上行信道取餘數方法:
下行信道号 = 上行信道号 Mode 24
JoinAccept 消息結構:為了讓 EndNode 能快速擷取網絡信道資訊,這裡修改下
JoinAccept 的消息結構,删除 CFList 參數,增加信道資訊參數
CHMap 參數訓示目前各信道的激活情況,其中 CHMap 從前向後共 6 個 Byte,每個Bit 對應 1 個信道,0 表示未激活, 1 表示激活:
CHMap[0]:訓示信道 0~7
…
CHMap[5]:訓示信道 40~47
(3)CLAA新增的MAC指令
1、CN470M~ 510M 新增 UpdateChInfo MAC 指令定義
當網絡遇到幹擾,會進行頻率遷移,由于 LoRaGW 有多個信道,按照目前技術實
現,可以進行 4 個信道一起遷移,其他信道依然正常,這時可以通過非遷移信道通知終端,更新網絡信道資訊
UpdateChInfo 指令由網絡發起請求,終端回應答:
這樣帶來一個問題就是對于應用來說,不同 SF 下發包不好控制,是以準備統一下應用
資料幀長。
按照上面能力,将應用層幀長統一為 220;
這樣對于 SF7/8 來說,無需分包;對于 SF9 來說,最大為 2 包;對于 SF10/11/12 來
說,最大為 5 包。
是以對于 SF9/10/11/12 下需要實作 SAR 的功能。
考慮到要同時相容不支援 SAR 的 Lora 終端,是以不能修改 PayLoad 内容,準備在
Option 中增加幀類型資訊: SAR。
當 FHDR 的 Option 頭出現 SAR 資訊後,表示這是一個 SAR 幀,如果沒有出現,表示是一個通常的LoRa 完整幀。
4、CN470M~ 510M 對 CSMA-CA 算法的實作規範
LoRaWAN 标準中,終端的信道接入方法是純 ALOHA 機制,終端不進行信道檢測,直接發送,這樣随着終端數量增多或發送包數量增多時,多個終端的包在信道上發生碰撞的機率就大大增加。
為了解決信道争搶問題,目前 WLAN 已經實作了 CSMA-CA 技術, CLAA 借鑒這種機制,要求 CLAA 終端也實作類似的 CSMA-CA 技術,降低信道沖突機率,提高網絡信道使用率。
CSMA-CA 算法分兩步,第 1 步是對信道進行檢測,檢測信道忙閑,當信道空閑時進行發送;第 2 步是在信道忙時進行延時退避,延時到後再檢測,如果檢測還忙,則退避時間加倍。
是以 CSMA-CA 算法主要有兩點,一是信道占用檢測算法,目前 LoRa 支援 CAD 檢測,檢測速度較快,可以在 2 Symbol 周期内檢測出信道是否占用,檢出成功機率大概在 95%以上。二是時間退避算法,計算需要退避的時間周期。
目前業界對 CSMA-CA 研究了多種算法:非堅持,堅持, P-堅持,時延分優先級等;
差異主要是在遇到沖突和空閑的動作上, CLAA 為了簡化,先采用非堅持 CSMA-CA 算法。
CSMA-CA 退避延時算法調整指令: CSMABPDelayAdjust MAC 指令