久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9540|回復(fù): 6
收起左側(cè)

LoRaWAN協(xié)議格式與中文手冊(cè)下載

  [復(fù)制鏈接]
ID:386785 發(fā)表于 2018-8-16 10:09 | 顯示全部樓層 |閱讀模式
1、LoRaWAN 介紹
    LoRaWAN是由LoRa聯(lián)盟推出的一個(gè)低功耗廣域網(wǎng)規(guī)范,這一技術(shù)可以為電池供電的無線設(shè)備提供區(qū)域、國家或全球的網(wǎng)絡(luò)。LoRaWAN瞄準(zhǔn)了物聯(lián)網(wǎng)中的一些核心需求,如安全地雙向通訊、移動(dòng)化和本地服務(wù)。該技術(shù)無需本地復(fù)雜配置,即可以讓智能設(shè)備實(shí)現(xiàn)無縫互操作性,給物聯(lián)網(wǎng)領(lǐng)域的用戶、開發(fā)者和企業(yè)自由操作權(quán)限。
    LoRaWAN網(wǎng)絡(luò)架構(gòu)是一個(gè)典型的星形拓?fù)浣Y(jié)構(gòu),由終端、網(wǎng)關(guān)和服務(wù)器組成。在這個(gè)網(wǎng)絡(luò)架構(gòu)中,LoRa網(wǎng)關(guān)是一個(gè)透明的中繼,連接前端終端設(shè)備和后端中央服務(wù)器。網(wǎng)關(guān)與服務(wù)器通過標(biāo)準(zhǔn)IP連接,而終端設(shè)備采用單跳與一個(gè)或多個(gè)網(wǎng)關(guān)通信,所有的節(jié)點(diǎn)均是雙向通信。
    終端與網(wǎng)關(guān)之間的通信是在不同頻率和數(shù)據(jù)傳輸速率基礎(chǔ)上完成的,數(shù)據(jù)速率選擇需要在傳輸距離和消息時(shí)延之間權(quán)衡。由于采用了擴(kuò)頻技術(shù),不同數(shù)據(jù)傳輸速率通信不會(huì)互相干擾,且會(huì)創(chuàng)建一組“虛擬化”的頻段來增加網(wǎng)關(guān)容量。LoRaWAN網(wǎng)絡(luò)數(shù)據(jù)傳輸速率范圍為0.3 kbps至50 kbps,為了最大化終端設(shè)備電池壽命和整個(gè)網(wǎng)絡(luò)容量,LoRaWAN網(wǎng)絡(luò)服務(wù)器通過一種速率自適應(yīng)(ADR)方案來控制數(shù)據(jù)傳輸速率和每一終端設(shè)備的射頻輸出。
    適用于物聯(lián)網(wǎng)的覆蓋全國的網(wǎng)絡(luò)需要解決諸如關(guān)鍵性基礎(chǔ)設(shè)施、機(jī)密的個(gè)人數(shù)據(jù)或社會(huì)公共服務(wù)等安全通信的問題,這方面一般采用多層加密的方式來解決:
· 唯一網(wǎng)絡(luò)密鑰(EU164)并保證網(wǎng)絡(luò)層安全
· 唯一應(yīng)用密鑰(EU164)并保證應(yīng)用層端到端的安全
· 設(shè)備特別密鑰(EUI128)
LoRaWAN網(wǎng)絡(luò)各節(jié)點(diǎn)具有多層級(jí)安全方案,保證各類應(yīng)用的不同需求:
· 雙向通信終端設(shè)備(A等級(jí)):處于A等級(jí)的終端設(shè)備允許雙向通信,每一終端設(shè)備上行傳輸會(huì)伴隨著兩個(gè)下行接收窗口。終端設(shè)備的傳輸槽是基于其自身通信需求,其微調(diào)是基于一個(gè)隨機(jī)的時(shí)間基準(zhǔn)(ALOHA協(xié)議)。A等級(jí)的終端設(shè)備應(yīng)用中功耗最低,在終端發(fā)送一個(gè)上行傳輸信號(hào)后才能與服務(wù)器進(jìn)行下行通信,與服務(wù)器任何時(shí)候的下行通信都只能是在上行通信之后。
· 具有預(yù)設(shè)接收槽的雙向通信終端設(shè)備(B等級(jí)):B等級(jí)的終端設(shè)備會(huì)在預(yù)設(shè)時(shí)間中開放多余的接收窗口,為了達(dá)到這一目的,終端設(shè)備會(huì)同步從網(wǎng)關(guān)接收到一個(gè)Beacon,這一方式會(huì)讓服務(wù)器了解終端設(shè)備正在“傾聽”。
· 具有最大接收槽的雙向通信終端設(shè)備(C等級(jí)):C等級(jí)的終端設(shè)備幾乎持續(xù)為接收窗口開放,只在傳輸時(shí)關(guān)閉。
2、CLASS A
       在上一節(jié)中提到LoRaWAN有A、B、C三種類型的終端,它們都具有CLASS A設(shè)備的特性。處于A等級(jí)的終端設(shè)備允許雙向通信,每一終端設(shè)備上行傳輸會(huì)伴隨著兩個(gè)下行接收窗口。終端設(shè)備的傳輸槽是基于其自身通信需求,其微調(diào)是基于一個(gè)隨機(jī)的時(shí)間基準(zhǔn)(ALOHA協(xié)議)。A等級(jí)的終端設(shè)備應(yīng)用中功耗最低,在終端發(fā)送一個(gè)上行傳輸信號(hào)后才能與服務(wù)器進(jìn)行下行通信,與服務(wù)器任何時(shí)候的下行通信都只能是在上行通信之后。
3.1上行消息

      LoRaWAN中將消息分成上行和下行兩種類型。上行消息指的是終端節(jié)點(diǎn)通過一個(gè)或多個(gè)網(wǎng)關(guān)轉(zhuǎn)發(fā)給服務(wù)器的消息。消息格式如下:

   上行消息物理層上采用的是lora radio的顯示格式,其中Preamble、PHDR、PHDR_CRC和CRC部分都是由lora radio硬件填充,PHYPayload是用戶數(shù)據(jù)段。消息的完整性有CRC保證。

3.2下行消息

   下行消息是指服務(wù)器通過唯一一個(gè)網(wǎng)關(guān)轉(zhuǎn)發(fā)給終端的消息,消息格式如下:

  下行消息物理層上采用的是lora radio的顯示格式,其中Preamble、PHDR、PHDR_CRC由lora radio硬件填充,PHYPayload是用戶數(shù)據(jù)段。為了使消息盡量短小提高帶寬利用率,下行消息物理層中沒有使用CRC。

3.3 接收窗口

終端在每次上行報(bào)文最后一個(gè)字節(jié)傳輸完成之后都會(huì)打開兩個(gè)短暫的接收窗口。如下圖所示,在上行消息傳輸完成之后,等待了RECEIVE_DELAY1時(shí)間后打開第一個(gè)接收窗口RX1,在等待RECEIVE_DELAY2之后打開第二個(gè)接收窗口RX2。第一個(gè)接收窗口RX1中使用的是和剛才傳輸?shù)纳闲袌?bào)文相同的頻點(diǎn)和速率,第二個(gè)窗口RX2采用的是之前設(shè)置好的頻點(diǎn)和速率,窗口的頻點(diǎn)和速率可以通關(guān)mac命令來設(shè)置。

接收窗口時(shí)間長度至少滿足讓終端lora radio能夠檢測(cè)到下行消息的有效前導(dǎo)碼。如果服務(wù)器端有下行報(bào)文要發(fā)送給終端,服務(wù)器會(huì)在終端兩個(gè)窗口開始時(shí)發(fā)送。如果終端在兩個(gè)接收窗口期間檢測(cè)到前導(dǎo)碼,接收狀態(tài)會(huì)一直保持到收完整個(gè)下行消息為止。同時(shí),如果終端在第一個(gè)窗口內(nèi)收到給自己的報(bào)文,同時(shí)MIC(消息完成碼)驗(yàn)證正確,那么終端將不會(huì)打開第二個(gè)接收窗口。

注意:所有的終端設(shè)備在上一次發(fā)送上行消息后在兩個(gè)窗口內(nèi)沒有收到服務(wù)器下行消息之前或者第二個(gè)接收窗口失效之前,不能發(fā)起下一次上行消息。

3、LoRaWAN幀格式

本章節(jié)主要介紹LoRaWAN中的幀格式。如下圖所示LoRaWAN中的消息分成3層,從外到內(nèi)一次是物理層、MAC層、和數(shù)據(jù)層。

3.1 MAC 層(PHYPayload)

LoRaWAN中所有上下行消息都有PHYPayload,包括了一個(gè)字節(jié)的MHDR(mac幀頭)、MACPayload(mac消息)以及4字節(jié)的MIC(校驗(yàn))信息。


13.1.1 MHDR

Mac幀頭長度為1字節(jié),低兩位表示LoRaWAN的版本號(hào),中間3位保留做后續(xù)使用,最高3位是消息類型。

LoRaWAN中一共有一下8種MAC消息類型。

    其中Join Request和Join Accept消息在端點(diǎn)空中激活時(shí)使用。

Unconfirmed Data Up、Unconfirmed Data Down、Confirmed Data Up、Confirmed Data Down這四種類型用作數(shù)據(jù)消息傳輸使用,其中Confirmed 類型消息需要對(duì)端回復(fù)ACK。數(shù)據(jù)消息中可以同時(shí)包括mac命令和應(yīng)用數(shù)據(jù)。Proprietary消息為用戶自定義類型消息,此類消息不能被標(biāo)準(zhǔn)協(xié)議棧解析。


3.1.2 MAC Payload

   數(shù)據(jù)消息的MAC Payload段又叫做“data frame”,包括了FHDR幀頭、端口號(hào)FPort和幀的數(shù)據(jù)段。

3.1.2.1 FHDR

   幀頭由4字節(jié)的終端設(shè)備短地址Devaddr,1字節(jié)的幀控制域字段FCtrl,2字節(jié)長度的幀計(jì)數(shù)器以及最多15個(gè)字節(jié)長度的幀選項(xiàng)字段(用作傳輸MAC命令)組成。

    下行數(shù)據(jù)幀頭中FCtrl域內(nèi)容如下:

    上行數(shù)據(jù)幀頭中FCtrl域內(nèi)容如下:

ADRLoRaWAN中網(wǎng)關(guān)上lora radio可以監(jiān)聽多種速率,這使得終端設(shè)備的組網(wǎng)靈活性大大加強(qiáng),終端設(shè)備可以自適應(yīng)調(diào)整自身速率ADR來連接網(wǎng)關(guān),當(dāng)終端設(shè)備啟用ADR后會(huì)自動(dòng)選擇最高的傳輸速率來和網(wǎng)關(guān)通信。

移動(dòng)的終端設(shè)備最好使用一種固定的速率和網(wǎng)關(guān)通信,因?yàn)樵谝苿?dòng)的環(huán)境下終端設(shè)備的無線電磁環(huán)境不穩(wěn)定,這會(huì)使得ADR很難管理。

當(dāng)幀頭中ADR位置1的時(shí)候,服務(wù)器會(huì)根據(jù)當(dāng)前收到的節(jié)點(diǎn)信號(hào)質(zhì)量通過下行消息中的MAC命令來控制終端的速率。ADR功能可以通過終端或者服務(wù)器來配置,為了增加終端的電池供電時(shí)間和擴(kuò)大網(wǎng)絡(luò)的容量,ADR最好使能。

如果服務(wù)器給終端設(shè)備優(yōu)化的傳輸速率高于了終端默認(rèn)的傳輸速率,那么終端就必須定期確認(rèn)服務(wù)器還能收到上行報(bào)文。每次上行報(bào)文傳輸后,終端都會(huì)增加ADR_ACK_CNT計(jì)數(shù)器,當(dāng)該計(jì)數(shù)器達(dá)到ADR_ACK_LIMIT而沒有收到服務(wù)器的下行消息時(shí),終端就會(huì)在幀頭將ADRACKReq置1來先服務(wù)器請(qǐng)求。服務(wù)器收到該請(qǐng)求后就會(huì)在ADR_ACK_DELAY時(shí)間內(nèi)發(fā)送一個(gè)下行消息給終端設(shè)備,同時(shí)終端設(shè)備收到該下行消息后就會(huì)將ADR_ACK_CNT計(jì)數(shù)器清零。在該下行消息中ACK位不必置1,因?yàn)榻K端設(shè)備在上行消息后的接收窗口內(nèi)能收到下行消息同時(shí)也表網(wǎng)關(guān)依然能收到終端設(shè)備的消息。另外一種情況就是如果終端發(fā)送了帶ADRACKReq的上行消息后再ADR_ACK_DELAY時(shí)間內(nèi)仍然沒有收到網(wǎng)關(guān)的下行消息就說明網(wǎng)關(guān)和終端設(shè)備間的連接已經(jīng)斷開了,這種情況下終端設(shè)備就要嘗試用一種更低的速率(傳輸速率和傳輸距離成反比)來嘗試與網(wǎng)關(guān)建立連接。如果上行報(bào)文次數(shù)達(dá)到了ADR_ACK_LIMIT后還是沒能連接成功,那么繼續(xù)使用更低的速率。


ACK當(dāng)收到一個(gè)confirmed消息時(shí),接收端應(yīng)該在幀頭中間ACK置1。如果消息是有終端發(fā)出來的,那么服務(wù)器就要在終端設(shè)備的兩個(gè)接收窗口期間發(fā)生ACK消息給終端設(shè)備。如果消息是由服務(wù)器發(fā)送的,終端設(shè)備可以自行選擇什么時(shí)候回復(fù)ACK消息給服務(wù)器。ACK消息只是給上一條接收消息,而且不會(huì)重發(fā)。


消息重傳過程:當(dāng)一個(gè)confirmed消息發(fā)出后在一定時(shí)間內(nèi)沒有收到ACK確認(rèn),那么就要對(duì)消息重傳,重傳次數(shù)可以本地設(shè)置或者通過服務(wù)器來配置。如果終端設(shè)備重傳次數(shù)達(dá)到了最大次數(shù)都還沒收到ACK確認(rèn),那么終端設(shè)備就需要降低速度來重新和服務(wù)器連接。


FPending該位只會(huì)出現(xiàn)在下行消息中,表示網(wǎng)關(guān)中有很多條消息要發(fā)送給終端,終端設(shè)備在要馬上進(jìn)行下一次上行消息的傳輸來接收網(wǎng)關(guān)消息。


FCnt每個(gè)終端設(shè)備中都有兩個(gè)16位或者32位計(jì)數(shù)器,F(xiàn)CntUP用來計(jì)數(shù)發(fā)送給服務(wù)器的上行消息個(gè)數(shù),F(xiàn)CntDown用來計(jì)數(shù)收到的下行消息。同時(shí)在服務(wù)器上對(duì)應(yīng)給每個(gè)終端設(shè)備也有上下行計(jì)數(shù)器。當(dāng)終端設(shè)備完成加入網(wǎng)絡(luò)之后終端和服務(wù)器上的計(jì)數(shù)器就會(huì)先清零。發(fā)送報(bào)文中Fcnt是發(fā)送報(bào)文計(jì)數(shù)。

FOptsLen表示數(shù)據(jù)幀中FOpts段的長度。FOpts用來傳輸MAC命令。如果該長度為0,一味著消息中不帶FOpts,如果FOpts中帶有mac命令,那么FPort不能端口0。

   mac命令不能同時(shí)出現(xiàn)在FOpts和paylaoda中。

3.1.2.2 FPort

如果數(shù)據(jù)幀中payload部分不為空,那么Fport必須存在。如果FPort的值為0表明了FRMPaload中只能包含有mac命令。FPort為1-223為應(yīng)用使用,224-255保留后續(xù)使用。

上圖中N表示payload最大字節(jié)數(shù),N <= M - 1 - (FHDR長度),其中M標(biāo)志最大MAC payload長度。

3.1.2.3 FRMPayload與加密

如果消息中包括了FRMPayload,那么FRMPayload必須在計(jì)算MIC之前進(jìn)行加密。加密使用128bit密匙的標(biāo)準(zhǔn)AES算法。

默認(rèn)情況下對(duì)應(yīng)所有的FPort的FRMPayload的加密解密過程都是由軟件中LoRaWAN層來完成的,F(xiàn)Port為0時(shí)傳輸?shù)氖荕AC命令,加密時(shí)用NwkSkey,F(xiàn)Port為其他值時(shí)用AppSkey加密。

加密時(shí),首先將pld = FRMPayload按照每16字節(jié)分成一段進(jìn)行加密,假如分成了k段。

然后會(huì)生成k個(gè)Ai段,Ai表示如下,Dir表示方向上行為0,下行為1.FCntUp和FCntDown表示上下行消息計(jì)數(shù),i表示對(duì)應(yīng)的k段序列號(hào)。

    接著將Ai進(jìn)行加密,加密后得到16字節(jié)長度的Si,組成S。加密公式如下,其中的K表示加密密匙。

最后在將FRMPayload的每個(gè)字節(jié)與S的每個(gè)字節(jié)進(jìn)行異或操作來加密。對(duì)應(yīng)的解密過程也是一樣的對(duì)已經(jīng)加密的FRMPayload再進(jìn)行一次加密就相當(dāng)于對(duì)起進(jìn)行解密。


除了0之外的所有FPort也可以選擇通過應(yīng)用層用戶自己給數(shù)據(jù)加密解密。具體加密算法見協(xié)議4.4章節(jié)。

3.1.3 MIC

    Mic是消息完整碼,用來對(duì)傳輸數(shù)據(jù)做校驗(yàn),通過AES加密,MIC的計(jì)算公式如下:

其中,

B0定義如下,Dir表示方向上行為0,下行為1.FCntUp和FCntDown表示上下行消息計(jì)數(shù)。Len為msg的字節(jié)數(shù)。

4、MAC Command

     MAC命令用于服務(wù)器和節(jié)點(diǎn)MAC層之間的通信管理。單個(gè)數(shù)據(jù)幀中可以包括多個(gè)MAC命令,命令既可以放在數(shù)據(jù)幀的FOpts部分也可以單獨(dú)作為一幀數(shù)據(jù)進(jìn)行傳輸。放在FOpts中時(shí)MAC命令不會(huì)被加密而且不能超過15個(gè)字節(jié),數(shù)據(jù)幀單獨(dú)傳輸MAC命令時(shí)將命令放在FRMPayload中,數(shù)據(jù)幀的Fport端口號(hào)為0,最大長度不能超過規(guī)定的數(shù)據(jù)長度,由于FRMPayload部分會(huì)被加密,因此傳輸?shù)腗AC命令也是加密的。為了防止MAC命令被竊取最好采用單獨(dú)的數(shù)據(jù)幀傳輸。


MAC命令包含了1個(gè)字節(jié)命令標(biāo)識(shí)CID,同時(shí)不同的命令后面還有不同長度的后續(xù)字段。MAC命令列表如下:

上表中只給出了MAC命令的類型和介紹并沒有給出命令后數(shù)據(jù)的具體長度,下面將詳細(xì)介紹每條命令的用途。

4.1 連接狀態(tài)檢測(cè)命令

    當(dāng)終端想要驗(yàn)證與網(wǎng)絡(luò)的連接情況時(shí),終端會(huì)發(fā)送LinkCheckReq命令給服務(wù)器,該命令無后續(xù)數(shù)據(jù)。

服務(wù)器收到由一個(gè)或者多個(gè)網(wǎng)關(guān)轉(zhuǎn)發(fā)過來的LinkCheckReq后,返回一個(gè)LinkCheckAns命令給終端并帶有兩個(gè)字節(jié)長度的數(shù)據(jù)。

margin是8位無符號(hào)整數(shù),取值0-254代表服務(wù)器收到最近的LinkCheckReq的無線信號(hào)強(qiáng)度。GwCnt表示有多少個(gè)網(wǎng)關(guān)成功收到了終端發(fā)出的LinkCheckReq命令。


4.2 ADR命令

  服務(wù)器通過LinkADRReq 命令來實(shí)現(xiàn)終端的速率自適應(yīng)ADR功能。

針對(duì)不同頻段的無線信號(hào),DataTate和TXPower都有相應(yīng)的規(guī)范,例如下表對(duì)應(yīng)的是433M帶寬對(duì)應(yīng)的幾種速率和發(fā)射功率。詳情見協(xié)議文檔第7章節(jié)。

     

ChMask長度為16位,每一位代表一個(gè)頻段對(duì)應(yīng)的可用通道(比如,433M頻段可以用的有433.175、433.375、433.575三個(gè)無線頻段的通道),對(duì)應(yīng)為0的一位代表通道不可用,為1代表可用。

Redundancy中4位長度的NbRep表示上行消息的重復(fù)發(fā)送次數(shù),該設(shè)置只對(duì)unconfirmed上行消息有效,有效范圍是1-15,默認(rèn)值為1,如果該值為0,那么使用默認(rèn)值。NbRep用于當(dāng)服務(wù)器想獲取節(jié)點(diǎn)的信號(hào)Qos使用,終端每重復(fù)一次上行發(fā)送就會(huì)進(jìn)行調(diào)頻到下一個(gè)可用頻段。ChMaskCntl用于對(duì)Chmask的控制,當(dāng)可用頻段超過16個(gè)時(shí)該值不為0.

當(dāng)終端收到LinkADRReq后回復(fù)LinkADRReq命令給服務(wù)器。對(duì)應(yīng)位設(shè)置成功是為1,失敗為0,失敗后終端按照原來的配置運(yùn)行。

4.3 終端上報(bào)周期設(shè)置命令

服務(wù)器用DutyCycleReq 命令來設(shè)置終端節(jié)點(diǎn)的上報(bào)周期,設(shè)定的周期對(duì)于所有的通道都一致。

終端最大的上報(bào)周期為:

MaxDutyCycle取值范圍為0-15,如果該值為255表示終端保持無線電靜默模式,相當(dāng)于關(guān)閉該終端。如果該值為0代表使用默認(rèn)的上報(bào)周期。

終端收到DutyCycleReq 命令后回復(fù)DutyCycleAns命令給服務(wù)器,該命令不帶數(shù)據(jù)。

4.4 接收窗口設(shè)置命令

RXParamSetupReq命令用來設(shè)置上行消息后的第二個(gè)窗口,命令的格式如下:

RX1DRoffset定義的是第一個(gè)接收窗口上下行速率之差,默認(rèn)值為0;RX2DataRate定義的是第二個(gè)接收窗口的下行數(shù)據(jù)速率。Frenquency定義第二個(gè)接收窗口的無線通道頻段。

終端設(shè)備收到RXParamSetupReq后回復(fù)RXParamSetupAns給服務(wù)器。如果回復(fù)的3個(gè)ack有一個(gè)為0,那么設(shè)置不成功,終端設(shè)備參數(shù)保持不變。

4.5 終端狀態(tài)查詢命令

服務(wù)器使用DevStatusReq命令來查詢終端節(jié)點(diǎn)的狀態(tài)。該命令沒有帶數(shù)據(jù),如果終端收到該命令,那么終端回復(fù)DevStatusAns給服務(wù)器,命令格式如下:

其中Battery代表終端的電池電量,0表示采用非電池供電,1-244表示電池的電量1為最小255最大,255表示電池電量測(cè)量失敗。Margin的低6位表示接受到DevStatusReq的無線信號(hào)強(qiáng)度,范圍-32-31.

4.6 增加或者修改無線通道命令

NewChannelReq可以用于添加新的無線通道或者修改目前存在的無線通道。

其中ChIndex 表示新增或修改通道的序列號(hào),對(duì)于協(xié)議中已經(jīng)制定好的通道修改是無效的,可以對(duì)規(guī)定好的通道外的通道進(jìn)行設(shè)置,最多不超過16個(gè)通道。Freq對(duì)應(yīng)的是設(shè)置的通道中心頻率,F(xiàn)req X 100為真實(shí)頻率,當(dāng)Freq為0時(shí)相當(dāng)于禁用該通道。DrRange的低4位和高4位分別表示該通道上最小和最大速率。

終端收到NewChannelReq命令后回復(fù)NewChannelAns給服務(wù)器,如果status中低2兩位任意1位為0代表添加通道不成功。

4.7 TX與RX時(shí)間間隔設(shè)置命令

RXTimingSetupReq命令用來設(shè)置終端上行數(shù)據(jù)發(fā)送完成后打開第一個(gè)接收窗口的時(shí)延,第二個(gè)窗口在第一個(gè)接收窗口打開后1s開始。

   

     其中Del為4位整數(shù),取值范圍為0-15,單位為s,其中0和1都表示時(shí)延1s,最大為15s。終端收到RXTimingSetupReq后回復(fù)RXTimingSetupAns給服務(wù)器,不帶數(shù)據(jù)。


5、終端設(shè)備激活

終端設(shè)備需要經(jīng)過激活才能加入到LoRaWAN網(wǎng)絡(luò)中,終端設(shè)備在部署或者重啟后有兩種激活方式,一種是無線激活OTAA以及本地激活A(yù)BP。

5.1 終端參數(shù)

     在終端設(shè)備出場(chǎng)時(shí)設(shè)備內(nèi)保存了終端設(shè)備標(biāo)識(shí)DevEUI、應(yīng)用標(biāo)識(shí)AppEUI以及AES-128密匙AppKey。在終端設(shè)備激活后,會(huì)保存設(shè)備地址DevAddr、網(wǎng)絡(luò)會(huì)話密匙NwkSKey、應(yīng)用會(huì)話密匙AppSKey。

5.1.1 DevEUI

    DevEUI是終端設(shè)備的全球唯一標(biāo)識(shí),相當(dāng)于mac地址。

5.1.2 AppKey

    AppKey是終端設(shè)備的應(yīng)用提供商提供的密匙,用來生成AppSKey和NwkSKey。

5.1.3 DevAddr

DevAddr是32位的終端設(shè)備網(wǎng)絡(luò)地址,在網(wǎng)絡(luò)中每個(gè)設(shè)備的網(wǎng)絡(luò)地址是唯一的。高7位是網(wǎng)絡(luò)號(hào)NwkId標(biāo)識(shí)不同的網(wǎng)絡(luò),低25位是分配給終端的網(wǎng)絡(luò)地址。

5.1.4 AppEUI

    AppEUI全球唯一地標(biāo)識(shí)了終端設(shè)備的應(yīng)用提供商,長度為64位,在終端設(shè)備激活之前就已經(jīng)保存在終端中。


5.1.5 NwkSKey

    網(wǎng)絡(luò)會(huì)話密匙NwkSKey在服務(wù)器與終端設(shè)備的消息中用來計(jì)算消息完整碼MIC,來驗(yàn)證消息的正確性,同時(shí)在只傳輸MAC命令的消息中用來加密和解密數(shù)據(jù)段。

5.1.6 AppSKey

   應(yīng)用會(huì)話密匙AppSKey在服務(wù)器與終端設(shè)備的消息中用來計(jì)算消息完整碼MIC,來驗(yàn)證消息的正確性,同時(shí)在傳輸應(yīng)用數(shù)據(jù)的消息中用來加密和解密數(shù)據(jù)段。

5.2 無線激活

終端設(shè)備在部署或者與服務(wù)器之間連接斷開后都要通過無線激活步驟來與服務(wù)器建立連接。從終端的角度來看加入網(wǎng)絡(luò)的過程包括兩個(gè)MAC消息與服務(wù)器的交換,分別是join request和join accept。

5.2.1 Join-request

終端發(fā)送Join-request消息給服務(wù)器(hex

00 01 02 03 04 05 06 07 08 39 7d 39 84 30 34 51 04 7f a2 c0 fd 1d e5

MHDR

MAC Payload

MIC

00

01 02 03 04 05 06 07 08   

39 7d 39 84 30 34 51 04

7f a2

c0 fd 1d e5

Join-request

AppEUI

DevEUI

DevNoce

    MIC

MHDR類型:

MIC的計(jì)算公式如下:

其中AppKey定義為128位:

#define LoRaWAN_APPLICATION_KEY { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00 }

組網(wǎng)請(qǐng)求后第一個(gè)接收窗口時(shí)延5s

#define JOIN_ACCEPT_DELAY1                          5000000

第二個(gè)接收窗口6s

#define JOIN_ACCEPT_DELAY2                          6000000


終端設(shè)備發(fā)送join request消息來向服務(wù)器發(fā)起入網(wǎng)請(qǐng)求,請(qǐng)求消息中包含了AppEUI、DevEUI以及2字節(jié)長度的DevNone。

DevNone是一個(gè)隨機(jī)值,服務(wù)器保存了每個(gè)終端設(shè)備過去使用過的DevNone值,如果查詢到該值已經(jīng)出現(xiàn)過,那么服務(wù)器就忽虐該入網(wǎng)請(qǐng)求。

該入網(wǎng)請(qǐng)求是沒有加密的,消息的完整碼MIC的計(jì)算公式如下:

5.2.2 Join-accept

服務(wù)器發(fā)送Join-accept消息給終端(hex):

01 13 4f bc 00 00 01 01 00 00 01 06 01 ff ff ff ff

MHDR

MAC Payload

MIC

20

13 4f bc   

00 00 01

01 00 00 01

06

01

ff ff ff ff

Join-accept

AppNonce

NetId

DevAddr

DlSetting

RxDelay

    MIC

    消息中DlSetting為6,表示接收窗口速率為6,RxDelay為1,表示上行消息發(fā)送完成后1s后打開第一個(gè)接收窗口。

    在服務(wù)器收到入網(wǎng)請(qǐng)求后,如果當(dāng)前終端被允許加入到網(wǎng)絡(luò)中服務(wù)器會(huì)返回Join-accept給終端設(shè)備。如果終端不允許加入到網(wǎng)絡(luò)中,服務(wù)器是不會(huì)發(fā)送任何消息的。Join-accept消息發(fā)送時(shí)就和普通的下行消息一樣,但是時(shí)延用的是JOIN_ACCEPT_DELAY1或者JOIN_ACCEPT_DELAY2而不是RECIEVE_DELAY1或者RECIEVE_DELAY2,同時(shí)發(fā)送通道的速率和頻點(diǎn)和終端上行消息的兩個(gè)窗口RX1和RX2一樣。

Join-accept消息由3字節(jié)的AppNonce、3字節(jié)的網(wǎng)絡(luò)號(hào)NetID、和4字節(jié)的終端網(wǎng)絡(luò)地址DevAddr、1字節(jié)的接收窗口設(shè)置、1字節(jié)的窗口時(shí)延以及可選的最長為16字節(jié)的通道頻率設(shè)置組成。

AppNonce是由服務(wù)器生成的實(shí)際值,終端設(shè)備用其來生成NwkSkey和AppSKey,算法如下:

Join-accept消息的MIC計(jì)算如下:

   Join-accept消息通過AppKey來加密,加密方法如下:

NetID總共長度為24位,其中低7位和DevAddr中的高7位一樣表示網(wǎng)絡(luò)ID,剩余的高17位由網(wǎng)絡(luò)操作者使用。在這里網(wǎng)絡(luò)ID唯一的標(biāo)識(shí)一個(gè)網(wǎng)絡(luò),相鄰或者重疊的網(wǎng)絡(luò)各自的網(wǎng)絡(luò)ID不一樣。

DLsetting是對(duì)下行消息進(jìn)行控制,格式如下,內(nèi)容見4.4節(jié)中給出的詳細(xì)描述。

5.3 本地激活

在有些情況下,終端設(shè)備可以直接本地激活,本地激活直接將終端設(shè)備綁定在特定的網(wǎng)絡(luò)上而不經(jīng)過無線激活的兩個(gè)步驟。

本地激活意味著終端的網(wǎng)絡(luò)地址DevAddr以及兩個(gè)會(huì)話密匙NwkAskey、AppSKey都保存在終端設(shè)備中。且終端設(shè)備在啟動(dòng)前就要保存有網(wǎng)絡(luò)相關(guān)的參數(shù)。同時(shí)還要保證NwkAskey、AppSKey兩個(gè)值是唯一的,這樣才能保證網(wǎng)絡(luò)的安全。

6、CLASS B

在LoRaWAN的CLASS A類設(shè)備中,必須首先由終端設(shè)備發(fā)起上行消息后,服務(wù)器才能發(fā)送下行消息給終端設(shè)備。這種就不使用與服務(wù)器上應(yīng)用程序需要主動(dòng)發(fā)送數(shù)據(jù)給終端的應(yīng)用場(chǎng)景。CLASS B類設(shè)備中,終端節(jié)點(diǎn)可以在設(shè)定的時(shí)間打開接收窗口,而同時(shí)也具有A類設(shè)備的特性。

B類設(shè)備這種特性是通過網(wǎng)關(guān)有規(guī)律地發(fā)送BEACON,讓終端設(shè)備和網(wǎng)關(guān)之間保持時(shí)間同步,這樣網(wǎng)關(guān)就可以控制終端在預(yù)定的時(shí)間打開額外的接收窗口(稱之為ping slot)。

終端由A類設(shè)備轉(zhuǎn)換為B類設(shè)備是由終端設(shè)備上的應(yīng)用層來決定的。如果服務(wù)器的應(yīng)用層要讓終端設(shè)備從A類轉(zhuǎn)換為B類設(shè)備,就要在終端設(shè)備發(fā)送了上行消息后將命令發(fā)送給終端,同時(shí)終端設(shè)備需要在應(yīng)用層去解析這個(gè)命令,在LoRaWAN層是不能處理的。

6.1 網(wǎng)關(guān)與終端同步機(jī)制

為了讓網(wǎng)絡(luò)能支持B類設(shè)備,所有的網(wǎng)關(guān)必須同步地發(fā)送帶有時(shí)間基準(zhǔn)的beacon消息給終端。只有基于相同的時(shí)間基準(zhǔn),終端設(shè)備才能周期的打開接收窗口(ping slot)。服務(wù)器通過最近一次從網(wǎng)關(guān)獲得的終端設(shè)備上行消息信號(hào)質(zhì)量來決定由哪個(gè)網(wǎng)關(guān)來發(fā)起beacon。因此,如果終端設(shè)備是移動(dòng)的同時(shí)檢測(cè)到beacon發(fā)送者身份發(fā)生了變化,終端設(shè)備就必須發(fā)送上行消息給服務(wù)器來更新下行的路由數(shù)據(jù)庫(通過那個(gè)網(wǎng)關(guān)發(fā)送給終端設(shè)備)。

終端設(shè)備在啟動(dòng)后首先以A類設(shè)備來加入到網(wǎng)絡(luò)中,如果終端的應(yīng)用層要將設(shè)備轉(zhuǎn)換為B類,整個(gè)過程如下:

  • 終端設(shè)備將LoRaWAN層調(diào)整到B類,LoRaWAN層會(huì)開始搜索beacon,如果搜索到beacon就返回BEACON_LOCK服務(wù)原語給應(yīng)用層,沒有搜索到就發(fā)回BEACON_NOT_FOUND給應(yīng)用層。為了加快搜尋beacon的過程LoRaWAN層會(huì)主動(dòng)發(fā)送BeaconTimingReq消息給服務(wù)器。
  • 根據(jù)接收到的beacon信號(hào)強(qiáng)度和終端電池使用情況,終端設(shè)備應(yīng)用層會(huì)選擇ping slot的速度的周期,這些都是要給設(shè)備的LoRaWAN層使用的。
  • 當(dāng)設(shè)備變成B類后,在每個(gè)上行消息的mac層都要將FCTRLClass B位置為1.這樣服務(wù)器就能知道設(shè)備變成了B類。Mac層會(huì)自動(dòng)打開接收窗口來接收beaconpingslot。當(dāng)終端設(shè)備成功接收到beacon后會(huì)將beacon內(nèi)容和信號(hào)強(qiáng)度發(fā)送給應(yīng)用層。在pingslot中收到下行消息時(shí)就如同A類設(shè)備接收下行消息一樣。
  • 移動(dòng)終端要周期發(fā)送包含當(dāng)前位置信息的上行消息給服務(wù)器來更新路由。另外終端設(shè)備的應(yīng)用層也可以通過判斷收到的beacon內(nèi)容來判斷終端是否在移動(dòng)。
  • 如果終端設(shè)備在一段時(shí)間內(nèi)沒有收到beacon,表明了與網(wǎng)絡(luò)間的同步已經(jīng)斷了。mac層就必須通知應(yīng)用層已經(jīng)變?yōu)榱?/font>A類設(shè)備,上行消息將不再將FCTRLClass B置位,這樣服務(wù)器就知道終端不再是B類設(shè)備。應(yīng)用程序后面也可以繼續(xù)周期地搜索beacon來重新變?yōu)?/font>B類設(shè)備。

在上面這個(gè)B類設(shè)備例子中,Beacon的周期是128s,同時(shí)終端設(shè)備每30ms打開一個(gè)ping slot接收上行數(shù)據(jù)。大部分的ping slot里服務(wù)器都沒有數(shù)據(jù)發(fā)送下來,因此終端設(shè)置在ping slot開始后只要沒檢測(cè)到有radio的前導(dǎo)碼就馬上關(guān)閉接收信道。如果檢測(cè)到前導(dǎo)碼就會(huì)將無線數(shù)據(jù)接收下來,然后mac層開始檢測(cè)目的地址是否正確,然后校驗(yàn)完整碼是否正確,最后將正確的數(shù)據(jù)交給應(yīng)用層處理。

6.2 上行消息格式

B類設(shè)備的上行消息格式和A類設(shè)備基本一致,在A類設(shè)備中Fctrl的RFU在B類設(shè)備中變成了Class B,表示該終端是B類設(shè)備。而下行消息A\B類設(shè)備是一樣的。

6.3 下行ping消息格式6.3.1 物理層格式

    在B類設(shè)備中下行的ping格式和A類設(shè)備下行格式一樣,但是使用的通道頻率可能不同。

6.3.2 單播和組播

在B類設(shè)備中下行消息分為單播和組播,單播消息只發(fā)送給當(dāng)個(gè)終端,組播消息可以同時(shí)發(fā)送給多個(gè)終端。組播內(nèi)的終端設(shè)備必須要具備相同的組播地址和相關(guān)的加密密匙。在LoRaWAN的協(xié)議規(guī)定中沒有制定遠(yuǎn)程組建組播組的方法,組播只能通過出場(chǎng)或者終端應(yīng)用層來配置。

6.3.2.1 單播消息格式

    B類設(shè)備ping中下行消息格式和處理方法和A類設(shè)備一樣。每收到一個(gè)下行消息都要計(jì)數(shù)。

6.3.2.2 組播消息格式

組播消息格式和單播消息基本一致除了有以下一些不同之處:

  • 組播消息不允許包含MAC命令,無論是在FOpt中還是端口號(hào)為0的消息中。因?yàn)榻M播消息沒有單播消息類似的認(rèn)證。
  • 幀頭中ACKADRACKReq必須為0.消息類型MType必須為無需回復(fù)的下行消息Unconfirmed Data Down
  • 下行消息中FPending位為1表示還有組播消息沒發(fā)送,在下一個(gè)組播接收時(shí)隙繼續(xù)接收,如果為0,表示下一個(gè)組播接收時(shí)隙不一定會(huì)有數(shù)據(jù)。終端設(shè)備可以根據(jù)該位來評(píng)估接收時(shí)隙的沖突優(yōu)先級(jí)。
6.4 Beacon獲取和追蹤

終端設(shè)備在由A類轉(zhuǎn)換到B類之前,必須要先獲取網(wǎng)絡(luò)Beacon的時(shí)間來同步終端內(nèi)部時(shí)間。

終端設(shè)備一旦轉(zhuǎn)換為B類就要周期的搜尋網(wǎng)絡(luò)Beacon來同步自己的內(nèi)部時(shí)間。如果有時(shí)候沒有收到beacon,那么設(shè)備就要逐漸的延長beacon和ping slot的接收窗口時(shí)間來消除時(shí)鐘漂移。

6.4.1 最小Beacon-less運(yùn)行時(shí)間

在終端設(shè)備沒收到Beacon后,要求設(shè)備至少能保持B類狀態(tài)運(yùn)行120分鐘(從上一次接收到Beacon開始計(jì)算)。這種沒有Beacon的臨時(shí)B類運(yùn)行狀態(tài)叫做Beacon-less狀態(tài),改狀態(tài)下就要靠設(shè)備內(nèi)部時(shí)鐘來工作。

在Beacon-less狀態(tài)下所有的單播、組播和Beacon接收時(shí)隙都要逐漸的延長來消除終端設(shè)備內(nèi)部的時(shí)間漂移與網(wǎng)絡(luò)產(chǎn)生的時(shí)間差。

6.4.2 Beacon-less下接收窗口調(diào)整

在這120分鐘內(nèi)如果終端設(shè)備收到了beacon消息,那么Beacon-less狀態(tài)就要繼續(xù)持續(xù)120分鐘來讓終端設(shè)備消除時(shí)間漂移和重置接收時(shí)隙長度。

6.4.3 減少時(shí)間漂移

   終端設(shè)備可以通過接收Beacon來同步校準(zhǔn)設(shè)備內(nèi)部的時(shí)間。同時(shí)終端內(nèi)部的晶振偏移是與溫度直接相關(guān)的,因此終端內(nèi)部還可以通過采集溫度來校準(zhǔn)時(shí)間漂移。

6.5 下行時(shí)隙 6.5.1 定義

B類終端設(shè)備在運(yùn)行時(shí)必須精確的打開接收時(shí)隙來接收beacon,這一節(jié)就主要講接收的時(shí)間要求。

兩次Beacon開始之間的時(shí)間間隔叫做Beacon period,Beacon的傳輸是從BEACON_RESERVED開始的時(shí)候。在每個(gè)Beacon開始傳輸之前都有一段保護(hù)時(shí)間,防止其他時(shí)隙沖突。保護(hù)時(shí)間的長度至少為信道內(nèi)最長的幀傳輸?shù)臅r(shí)間。因此ping slot可用的時(shí)間是BEACON_RESERVED結(jié)束到下一個(gè)beacon前的保護(hù)時(shí)間開始。

Beacon實(shí)際的傳輸時(shí)間比BEACON_RESERVED要短的多,這段時(shí)間還可以以后留給網(wǎng)絡(luò)管理傳輸報(bào)文使用。上圖中的BEACON_WINDOW這段時(shí)間又被分成0-4095共4096個(gè)ping slots,每個(gè)ping slot時(shí)間為30ms。

在終端設(shè)備中通過時(shí)隙號(hào)N來計(jì)算在Beacon開始后Ton秒來打開接收窗口。最后一個(gè)ping slot開始的時(shí)間為beacon開始后的beacon_reserved + 4095*30ms = 129470ms.

6.5.1 時(shí)隙隨機(jī)化

   為了減少系統(tǒng)性的碰撞和防止竊聽,終端設(shè)備獲取的時(shí)隙編號(hào)是隨機(jī)的,而且每個(gè)beacon_period都會(huì)改變。用于計(jì)算隨機(jī)時(shí)隙值得參數(shù)如下:

   在每個(gè) beacon_period開始時(shí)終端設(shè)備和服務(wù)器都要計(jì)算新的隨機(jī)值來確定接收時(shí)隙,計(jì)算時(shí)采用key值為0的AES加密算法:

終端打開接收時(shí)隙的時(shí)間為:

如果終端既有單播也有組播,那么上面的計(jì)算公式就要算兩次,一次使用單播地址,一次使用組播地址。如果單播和組播的接收時(shí)隙碰撞了,優(yōu)先接收組播。在服務(wù)器上如果單播和組播時(shí)隙重疊了,那么在上個(gè)多播報(bào)文上標(biāo)記上FPending可以避免。

時(shí)隙的隨機(jī)分配可以防止單播和組播報(bào)文在系統(tǒng)時(shí)隙碰撞,如果在當(dāng)前beacon_period出現(xiàn)了碰撞,那么下個(gè)beacon_period就應(yīng)該可以避免。

6.6 CLASS B MAC命令

在A類設(shè)備中所有的MAC命令對(duì)于B類設(shè)備同樣適用,除此之外還有一下B類設(shè)備特有的MAC命令。

6.6.1 PingSlotInfoReq命令

終端設(shè)備使用PingSlotInfoReq命令來告知服務(wù)器自己的pingslot周期和速率,該命令只適用于單播,組播的pingslot周期和速率上報(bào)由應(yīng)用層自己定義。命令格式如下:

命令數(shù)據(jù)長度為1字節(jié),其中周期Periodicity長度為3位,周期計(jì)算公式如下,當(dāng)Periodicity為0時(shí),表示設(shè)備每1S打開一個(gè)接收pingslot,當(dāng)Periodicity為7時(shí),表示每128打開一個(gè)pingslot,這也是LoRaWAN B類支持的最大周期。

Data rate代表了終端每個(gè)pingslot的接收速率,Data rate的值和A類設(shè)備中LinkAdrReq命令中定義的值一樣。

服務(wù)器在發(fā)送B類設(shè)備的下行消息前必須先知道終端的pingslot速率和周期,所以設(shè)備在從A類轉(zhuǎn)換為B類之前必須先發(fā)送PingSlotInfoReq命令來告知服務(wù)器,然后服務(wù)器發(fā)送PingSlotInfoAns命令給設(shè)備。如果終端設(shè)備要改變ping'slot的設(shè)備,那么設(shè)備先必須先變A類設(shè)備,然后再發(fā)送PingSlotInfoReq給服務(wù)器,在收到服務(wù)器響應(yīng)后在使用新參數(shù)工作為B類設(shè)備。

6.6.2 BeaconFreqReq 命令

  服務(wù)器發(fā)送BeaconFreqReq 命令給終端設(shè)備來修改beacon接收的信道中心頻點(diǎn)。

頻率Frequency是24位長度的無符號(hào)整形,表示方式和A類設(shè)備中NewChannelReq表示方式一樣。范圍是100HZ-1.67GHZ,終端設(shè)備收到命令后檢查無線硬件是否支持該頻段,如果不支持返回錯(cuò)誤給服務(wù)器。

如果Frequency值為0,終端設(shè)備使用默認(rèn)的beacon頻段進(jìn)行接收,同時(shí)還保留跳頻搜尋beacon的機(jī)制。一個(gè)非0Frequency使終端設(shè)備使用該固定的頻段進(jìn)行beacon接收。

6.6.3 PingSlotChannelReq命令

   服務(wù)器發(fā)送PingSlotChannelReq命令給終端設(shè)備來設(shè)置pingslot的信道。


頻率Frequency是24位長度的無符號(hào)整形,表示方式和A類設(shè)備中NewChannelReq表示方式一樣。范圍是100HZ-1.67GHZ,終端設(shè)備收到命令后檢查無線硬件是否支持該頻段,如果不支持返回錯(cuò)誤給服務(wù)器。如果Frequency值為0,終端設(shè)備使用默認(rèn)的beacon頻段進(jìn)行接收。

DrRange的低4位和高4位分別表示該通道上最小和最大速率。

終端設(shè)備收到PingSlotChannelReq命令后回復(fù)PingSlotChannelAns給服務(wù)器,消息合適如下,對(duì)應(yīng)位為1表示這種成功,否則失敗。

6.6.4 BeaconTimingReq命令

    終端發(fā)送該命令給服務(wù)器來獲取下一次beacon時(shí)間和通道,該命令后面沒有數(shù)據(jù)。

BeaconTimingReq & BeaconTimingAns 機(jī)制用來加速終端設(shè)備的beacon搜尋過程。如果服務(wù)器在一段時(shí)間內(nèi)收到多個(gè)BeaconTimingReq 請(qǐng)求,他可能只會(huì)回復(fù)其中一部分請(qǐng)求。因此終端設(shè)備不一定在發(fā)送請(qǐng)求后馬上就能收到響應(yīng)。終端設(shè)備最好一個(gè)小時(shí)內(nèi)不要發(fā)送超過一次的BeaconTimingReq請(qǐng)求。

6.6.5 BeaconTimingAns命令

服務(wù)器發(fā)送該命令來相應(yīng)BeaconTimingReq,格式如下:

   Delay是16位無符號(hào)整數(shù),從該下行命令結(jié)束到下一次beacon開始的時(shí)間RTime:

   在多個(gè)beacon發(fā)送通道的網(wǎng)絡(luò)中,channel代表下一次beacon發(fā)送的通道。對(duì)于beacon通道固定的網(wǎng)絡(luò),該值為0.

7、BEACON7.1 BEACON 物理層結(jié)構(gòu)

網(wǎng)關(guān)設(shè)備除了轉(zhuǎn)發(fā)終端設(shè)備與服務(wù)器間的數(shù)據(jù)外,還要周期性的(BEACON_INTERVAL)發(fā)送Beacon來給終端設(shè)備和網(wǎng)關(guān)提供終端同步機(jī)制。所有的Beacon在無線芯片的物理層都是采用的隱式模式,發(fā)送出去的報(bào)文不包括頭和CRC只有前導(dǎo)碼和數(shù)據(jù)段。格式如下:

前導(dǎo)碼長度為10,beacon的長度與無線芯片的物理層有關(guān),采用不同頻段對(duì)應(yīng)的beacon長度可能會(huì)有所不同。

7.2 Beacon格式

     Beacon的BCNPayload部分由網(wǎng)絡(luò)部分和網(wǎng)關(guān)相關(guān)部分組成,如下表所示:

    網(wǎng)絡(luò)相關(guān)部分由NetID、Time和CRC組成,其中NetID唯一的標(biāo)識(shí)了發(fā)送Beacon的網(wǎng)絡(luò),時(shí)間戳Time是以秒為單位的標(biāo)準(zhǔn)格林威治時(shí)間(1970-1-1 00:00:00開始),8位或者16位的CRC校驗(yàn)取決于物理層的設(shè)置。CRC-16計(jì)算NETID和Time的校驗(yàn),CRC-8取CRC-16的低8位。

終端可能會(huì)收到多個(gè)網(wǎng)關(guān)發(fā)出的Beacon,網(wǎng)關(guān)相關(guān)部分就是為了讓終端來區(qū)分不同的網(wǎng)關(guān)。當(dāng)包括RFU時(shí)應(yīng)該填0,同樣網(wǎng)關(guān)相關(guān)部分GwSpecific和RFU還有CRC-16來保護(hù)。

如下是一個(gè)US900的beacon:

    空中傳播的順序如下:

移動(dòng)的B類終端還要解析Beacon中網(wǎng)關(guān)相關(guān)部分,當(dāng)檢測(cè)到不同網(wǎng)關(guān)的Beacon時(shí)還要通知服務(wù)器自己位置移動(dòng)了。

當(dāng)網(wǎng)絡(luò)中有多個(gè)網(wǎng)關(guān)時(shí),多個(gè)網(wǎng)關(guān)都會(huì)同時(shí)發(fā)送beacon,如果終端設(shè)備在多個(gè)網(wǎng)關(guān)的覆蓋重疊區(qū)內(nèi),終端節(jié)點(diǎn)會(huì)收到多個(gè)beacon,而信號(hào)最強(qiáng)的網(wǎng)關(guān)發(fā)出的Beacon更容易被接受到。

7.3 GwSpecific格式

     GwSpecific的格式如下:

其中InfoDesc表示了Info數(shù)據(jù)段應(yīng)該怎么解讀。

對(duì)于只有一個(gè)全向GPS天線的網(wǎng)關(guān),InfoDesc的值為0廣播的是該GPS坐標(biāo)。對(duì)于有3向天線的網(wǎng)關(guān),InfoDesc等于0、1、2分別代表三個(gè)天線的GPS坐標(biāo)值。Info定義如下:

Info長度為6字節(jié),分別表示網(wǎng)關(guān)地理位置的GPS經(jīng)度和緯度。南北緯度Lat由24位的有符號(hào)數(shù)表示,-223 代表南緯90度,223 代表北緯90度,赤道對(duì)應(yīng)的值為0。東西經(jīng)度Lng由24位的有符號(hào)數(shù)表示,-223 代表西經(jīng)180度,223 代表東經(jīng)180度,格林威治對(duì)應(yīng)的值為0。

7.4 Beacon時(shí)間

Beacon每128s發(fā)送一次,每一次發(fā)送的時(shí)間為BT = k * 128 +NWKID + TBeaconDelay,BT為世界標(biāo)準(zhǔn)時(shí)間UTC 1970-1-1起經(jīng)過的秒數(shù)。這里加上NWKID也為了讓不同網(wǎng)絡(luò)的Beacon不會(huì)再時(shí)間上沖突。

這里的TBeaconDelay是網(wǎng)絡(luò)中協(xié)定好的時(shí)延,范圍在0-50ms,在網(wǎng)絡(luò)中所有的網(wǎng)關(guān)都要按照TBeaconDelay時(shí)延后再發(fā)送beacon。所有的終端設(shè)備ping slot用的參考時(shí)間都是beacon的發(fā)送時(shí)間,因此服務(wù)器的下行報(bào)文時(shí)間也要把TBeaconDelay算進(jìn)去。

7.5 服務(wù)器下行路由更新

當(dāng)服務(wù)器要通過CLASS B的下行slot給終端設(shè)備發(fā)送消息時(shí),首先發(fā)給離終端設(shè)備最近的路由器(通過終端設(shè)備最近一次的上行消息確認(rèn)),再由路由器轉(zhuǎn)發(fā)給終端設(shè)備。因此服務(wù)器上必須保存有終端設(shè)備的大致位置。

當(dāng)B類設(shè)備位置發(fā)生了變化,就需要定期發(fā)送上行消息給服務(wù)器來讓服務(wù)器更新新的路由。這個(gè)消息可以是confirmed或者unconfirmed消息,消息中app數(shù)據(jù)段可以為空。終端設(shè)備有一下兩種更新路由方案。

  • 周期發(fā)送上行消息,這是最簡單地方法,終端設(shè)備不用解析Beacon中網(wǎng)關(guān)相關(guān)部分。適用于低速移動(dòng)或者靜止的終端設(shè)備,對(duì)上行報(bào)文的周期也沒有特殊要求。
  • 當(dāng)檢測(cè)到Beacon中網(wǎng)關(guān)發(fā)送改變時(shí)發(fā)送上行報(bào)文。當(dāng)檢測(cè)到網(wǎng)關(guān)發(fā)生變化時(shí)隨機(jī)時(shí)延一個(gè)時(shí)間(0-120)發(fā)送上行消息給服務(wù)器。

如果服務(wù)器沒有及時(shí)收到終端設(shè)備的路由更新,會(huì)造成服務(wù)器的下行slot終端設(shè)備收不到下行消息。這種情況就只有等終端設(shè)備下一次發(fā)送上行消息才能重新更新路由。

8、CLASS C

當(dāng)終端設(shè)備有充足的電源提供,不用擔(dān)心耗電問題時(shí),設(shè)備可以不用減少接收時(shí)間來省電。這時(shí)設(shè)備就可以工作在C類。

C類設(shè)備不具備B類設(shè)備的特性,更類似于A類設(shè)備。C類設(shè)備中會(huì)盡可能地打開RX2接收窗口,當(dāng)終端設(shè)備沒有在發(fā)送或者打開RX1窗口接收時(shí)就一直打開RX2接收。并沒有特殊的消息告訴服務(wù)器終端設(shè)備為C類,在節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)服務(wù)器的appserver中就要知道該終端設(shè)備為C類。(通過appeui確定或者deveui確定)

8.1  C類設(shè)備的第二個(gè)接收窗口

在C類設(shè)備中與A類設(shè)備一樣在發(fā)送上行消息后都會(huì)有兩個(gè)接收窗口,但是在c類設(shè)備中在有需要發(fā)送上行消息之前都不會(huì)關(guān)閉第二個(gè)接收窗口,同時(shí)在發(fā)送完成后,第一個(gè)接收窗口打開前也會(huì)打開RX2,這樣在任何時(shí)間都有可能在RX2上接收到下行消息。

8.2 C類設(shè)備的組播下行消息

與B類設(shè)備類似,C類設(shè)備也有可能會(huì)接收到組播下行消息。組播地址和APPSKEY和NWKSKEY都由應(yīng)用層來實(shí)現(xiàn)。同樣還有一下對(duì)組播消息的限制。

  • 不允許攜帶MAC命令,不論是在Fopt中或者在端口號(hào)為0的數(shù)據(jù)報(bào)文中。
  • ACKADRACKReq位必須為0MType必須為Unconfirmed Data Down
  • Fpending位為1表示還有組播消息要發(fā)送,由于C類設(shè)備中接收是一直打開的,因此FPending不會(huì)產(chǎn)生其他影響。


以上圖文的Word pdf格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便保存):
LoRaWAN協(xié)議格式.docx (1.49 MB, 下載次數(shù): 55)
LoRaWAN協(xié)議格式.pdf (2.51 MB, 下載次數(shù): 87)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:412378 發(fā)表于 2018-10-23 16:07 | 顯示全部樓層
這個(gè)整理很直觀了,可惜黑幣不足,明天賺到了再來。。
回復(fù)

使用道具 舉報(bào)

ID:441483 發(fā)表于 2018-12-7 11:14 | 顯示全部樓層
很想看看中文資料的全部,講的非常詳細(xì)
回復(fù)

使用道具 舉報(bào)

ID:195968 發(fā)表于 2018-12-18 12:34 | 顯示全部樓層
很想看看中文資料的全部
回復(fù)

使用道具 舉報(bào)

ID:142664 發(fā)表于 2019-7-2 15:34 | 顯示全部樓層
LoRaWAN1.0.1協(xié)議中文版
回復(fù)

使用道具 舉報(bào)

ID:683409 發(fā)表于 2020-1-8 10:24 | 顯示全部樓層
是1.1版本的么?
回復(fù)

使用道具 舉報(bào)

ID:462629 發(fā)表于 2024-3-14 10:34 | 顯示全部樓層
不知道是哪個(gè)版本號(hào)的啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产一区二区三区不卡 | 免费v片在线观看 | 国产高清在线 | 一区二区三区在线 | 欧 | 亚洲色图图片 | 成人性生交大片免费看中文带字幕 | 成人精品毛片国产亚洲av十九禁 | 99只有精品 | 看片91 | 北条麻妃视频在线观看 | www.色.com| 精品国产乱码久久久久久影片 | 亚洲精品视频在线观看视频 | 美女人人操 | 日韩一区二区三区在线播放 | 亚洲精品久久久久久久不卡四虎 | 亚洲精品电影在线 | 亚洲 成人 av | www.久久精品视频 | 国产日韩精品视频 | 操人视频在线观看 | 久久久精品久 | 福利一区二区在线 | 免费国产一区二区视频 | 羞羞视频在线观免费观看 | 久久r免费视频 | 日本成人三级电影 | 99re在线观看| www.中文字幕.com | 久久国产精品免费视频 | 亚洲天堂中文字幕 | 色综合99 | 毛片.com| 91.com视频 | 丁香一区二区 | 精品国产不卡一区二区三区 | 亚洲一区二区三区免费观看 | 毛片一区二区 | 亚洲国产福利视频 | 国产精品一区二区免费 | xx视频在线观看 |