LoRaWAN1.0.2中文版

LoRaWAN協議中文版

版本管理 版本 變更日期 變更內容 修訂人員 備註 V1.0

2017-7-31

發布初始版本 Meng V1.1 2018-9-29 修改文檔布局 Meng

目錄

第4章 MAC幀格式... 1 前言... 1 4.1 MAC層(PHYPayload) 2 4.2 MHDR幀頭... 2 4.2.1 消息類型(MType位欄位) 2 4.2.2 數據消息的主版本(Major位欄位) 3 4.3 MAC載荷(MACPayload) 4 4.3.1 幀頭(FHDR) 4 4.3.2 埠欄位(FPort) 8 4.3.3 MAC幀載荷加密(FRMPayload) 9 4.4 消息校驗碼(MIC) 10 第5章 MAC命令... 11 5.1 連接檢查命令(LinkCheckReq, LinkCheckAns) 13 5.2 連接ADR命令 (LinkADRReq, LinkADRAns) 13 5.3 終端發射占空比 (DutyCycleReq, DutyCycleAns) 16 5.4 接收窗口參數 (RXParamSetupReq, RXParamSetupAns ) 16 5.5 終端設備狀態 (DevStatusReq, DevStatusAns) 18 5.6 創建/修改信道 (NewChannelReq, NewChannelAns, DlChannelReq, DlChannelAns) 19 5.7 設置收發時延 (RXTimingSetupReq, RXTimingSetupAns) 22 5.8 終端傳輸參數(TxParamSetupReq, TxParamSetupAns) 23

第4章 MAC幀格式

前言

LoRa所有上下行鏈路消息都會攜帶PHY載荷,PHY載荷以1位元組MAC幀頭(MHDR)開始,緊接著MAC載荷(MACPayload),最後是4位元組的MAC校驗碼(MIC)。

射頻PHY層:

Preamble

PHDR

PHDR_CRC

PHYPayload

CRC

圖5.射頻PHY結構(注意 CRC只有上行鏈路消息中存在)

PHY載荷:

MHDR

MACPayload

MIC

或者

MHDR

Join-Request

MIC

或者

MHDR

Join-Response

MIC

圖6.PHY載荷結構

MAC載荷:

FHDR(Frame Header)

FPort

FRMPayload

FHDR(見4.3.1章節):

DevAddr

FCtrl

FCnt

FOpts

圖8.幀頭結構

4.1 MAC層(PHYPayload)

Size (bytes)

1

1..M

4

PHYPayload

MHDR

MACPayload

MIC

MACPayload欄位的最大長度M,在第6章有詳細說明。

4.2 MHDR幀頭

Bit#

7..5

4..2

1..0

MHDR bits

MType

RFU

Major

MAC頭中指定了消息類型(MType)和幀編碼所遵循的LoRaWAN規範的主版本號(Major)。

4.2.1 消息類型(MType位欄位)

LoRaWAN定義了六個不同的MAC消息類型:join request, join accept, unconfirmed data up/down, 以及 confirmed data up/down 。

MType

描述

000

Join Request

001

Join Accept

010

Unconfirmed Data Up

011

Unconfirmed Data Down

100

Confirmed Data Up

101

Confirmed Data Down

110

RFU

111

Proprietary

表1.MAC消息類型

4.2.1.1 Join-request and join-accept 消息

join-request和join-accept都是用在空中激活流程中,具體見章節6.2

4.2.1.2 Data messages

Data messages 用來傳輸MAC命令和應用數據,這兩種命令也可以放在單個消息中發送。

Confirmed-data message 接收者需要應答。 Unconfirmed-data message 接收者則不需要應答。 Proprietary messages 用來處理非標準的消息格式,不能和標準消息互通,只能用來和具有相同拓展格式的消息進行通信。

不同消息類型用不同的方法保證消息一致性,下面會介紹每種消息類型的具體情況。

4.2.2 數據消息的主版本(Major位欄位)

Major位欄位

描述

00

LoRaWAN R1

01..11

RFU

注意:Major定義了激活過程中(join procedure)使用的消息格式(見章節6.2)和MAC Payload的前4位元組(見第4章)。終端要根據不同的主版本號實現不同最小版本的消息格式。終端使用的最小版本應當提前通知網路伺服器。

4.3 MAC載荷(MACPayload)

MAC載荷,也就是所謂的「數據幀」,包含:幀頭(FHDR)、埠(FPort)以及幀載荷(FRMPayload),其中埠和幀載荷是可選的。

4.3.1 幀頭(FHDR)

FHDR是由終端短地址(DevAddr)、1byte幀控制位元組(FCtrl)、2byte幀計數器(FCnt)和用來傳輸MAC命令的幀選項(FOpts,最多15個byte)組成。

Size(bytes)

4

1

2

0..15

FHDR

DevAddr

FCtrl

FCnt

FOpts

FCtrl在上下行消息中有所不同,

下行消息如下:

Bit#

7

6

5

4

[3..0]

FCtrl bits

ADR

RFU

ACK

FPending

FOptsLen

上行消息如下:

Bit#

7

6

5

4

[3..0]

FCtrl bits

ADR

ADRACKReq

ACK

RFU

FOptsLen

4.3.1.1 幀頭中 自適應數據速率 的控制(ADR, ADRACKReq in FCtrl)

LoRa網路允許終端採用任何可能的數據速率。LoRaWAN協議利用該特性來優化固定終端的數據速率[J1] 。這就是自適應數據速率(Adaptive Data Rate (ADR))。當這個使能時,網路會優化使得儘可能使用最快的數據速率。

移動的終端由於射頻環境的快速變化,數據速率管理就不再適用了,應當使用固定的數據速率。

如果ADR的位欄位有置位,網路就會通過相應的MAC命令來控制終端設備的數據速率。如果ADR位沒有設置,網路則無視終端的接收信號強度,不再控制終端設備的數據速率。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,因為無法幫助提高鏈路距離。

注意:不要ADRACKReq立刻回復,這樣給網路預留一些餘量,讓它做出最好的下行調度處理。

注意:上行傳輸時,如果 ADR_ACK_CNT >= ADR_ACK_LIMIT 並且當前數據速率比設備的最小數據速率高,就要設置 ADRACKReq,其它情況下不需要。

4.3.1.2 消息應答位及應答流程(ACK in FCtrl)

收到confirmed類型的消息時,接收端要回復一條應答消息(應答位ACK要進行置位)。如果發送者是終端,網路就利用終端發送操作後打開的兩個接收窗口之一進行回復。如果發送者是網關,終端就自行決定是否發送應答。

應答消息只會在收到消息後回複發送,並且不重發。

注意:為了讓終端儘可能簡單,儘可能減少該狀態,即在收到confirmation類型需要確認的數據幀,需要立即發送一個嚴格的應答數據幀。或者終端會延遲發送應答,在它下一個數據幀中再攜帶。

4.3.1.3 重傳流程

當需要應答卻沒收到應答時就會進行重發,重發的個數由終端自己定,可能每個終端都不一樣,這個參數也可以由網路伺服器來設置調整。

注意:一些應答機制的示例時序圖在第18章中有提供。

注意:如果終端設備重發次數到達了最大值,它可以降低數據速率來重連。至於後面是否再重發還是說丟棄不管,都取決於終端自己。

注意:如果網路伺服器重發次數到達了最大值,它就認為該終端掉線了,直到它再收到終端的消息。一旦和終端設備的連接出現問題時,要不要重發都取決於網路伺服器自己。

注意:在重傳期間的數據速率回退的建議策略在章節18.4中有描述。

4.3.1.4 幀掛起位(FPending in FCtrl 只在下行有效)

幀掛起位(FPending)只在下行交互中使用,表示網關還有掛起數據等待下發,需要終端儘快發送上行消息,然後終端再打開一個接收窗口。

FPending的詳細用法在章節18.3。

4.3.1.5 幀計數器(FCnt)

每個終端有兩個計數器跟蹤數據幀的個數,一個是上行鏈路計數器(FCntUp),由終端在每次上行數據給網路伺服器時累加;另一個是下行鏈路計數器(FCntDown),由伺服器在每次下行數據給終端時累計。 網路伺服器為每個終端跟蹤上行幀計數及產生下行幀計數。 終端入網成功後,終端和服務端的上下行幀計數同時置0。 每次發送消息後,發送端與之對應的 FCntUp 或 FCntDown 就會加1。 接收方會同步保存接收數據的幀計數,對比收到的計數值和當前保存的值,如果兩者相差小於 MAX_FCNT_GAP (要考慮計數器滾動),接收方就按接收的幀計數更新對應值。如果兩者相差大於 MAX_FCNY_GAP 就說明中間丟失了很多數據,這條以及後面的數據就被丟掉。

LoRaWAN的幀計數器可以用16位和32位兩種,節點上具體執行哪種計數,需要在帶外通知網路側,告知計數器的位數。

如果採用16位幀計數,FCnt欄位的值可以使用幀計數器的值,此時有需要的話通過在前面填充0(值為0)位元組來補足;如果採用32位幀計數, FCnt就對應計數器32位的16個低有效位(上行數據使用上行FCnt,下行數據使用下行FCnt)。

終端在相同應用和網路密鑰下,不能重複用相同的FCntUp數值,除非是重傳。

4.3.1.6 幀可選項(FOptsLen in FCtrl, FOpts)

FCtrl 位元組中的FOptsLen位欄位描述了整個幀可選項(FOpts)的欄位長度。

FOpts欄位存放MAC命令,最長15位元組,詳細的MAC命令見章節4.4。

如果FOptsLen為0,則FOpts為空。在FOptsLen非0時,則不為空。如果MAC命令在FOpts欄位中體現,port0不能用(FPort要麼不體現,要麼非0)。

MAC命令不能同時出現在FRMPayload和FOpts中,如果出現了,設備丟掉該組數據。

4.3.2 埠欄位(FPort)

如果幀載荷欄位不為空,埠欄位必須體現出來。埠欄位有體現時,若FPort的值為0表示FRMPayload只包含了MAC命令;具體見章節4.4中的MAC命令。 FPort的數值從1到223(0x01..0xDF)都是由應用層使用。 FPort的值從224到255(0xE0..0xFF)是保留用做未來的標準應用拓展。

Size(bytes)

7..23

0..1

0..N

MACPayload

FHDR

FPort

FRMPayload

N是應用程序載荷的位元組個數。N的有效範圍具體在第7章有定義。

N應該小於等於:

N <= M - 1 - (FHDR長度) M是MAC載荷的最大長度。

4.3.3 MAC幀載荷加密(FRMPayload)

如果數據幀攜帶了載荷,FRMPayload必須要在MIC計算前進行加密。

加密機制是採用IEEE802.15.4/2006的AES128演算法。

默認的,加密和加密由LoRaWAN層來給所有的FPort來執行。如果加密/解密由應用層來做更方便的話,也可以在LoRaWAN層之上給特定FPorts來執行,除了埠0。具體哪個節點的哪個FPort在LoRaWAN層之外要做加解密,必須要和伺服器通過out-of-band信道來交互(見第19章)。

4.3.3.1 LoRaWAN加密

密鑰K根據不同的FPort來使用:

FPort

K

0

NwkSKey

1..255

AppSKey

具體加密是這樣:

pld = FRMPayload 對於每個數據幀,演算法定義了一個塊序列Ai,i從1到k,k = ceil(len(pld) / 16):

Size(bytes)

1

4

1

4

4

1

1

Ai

0x01

4x 0x00

Dir

DevAddr

FCntUp or FCntDown

0x00

i

方向欄位(Dir)在上行幀時為0,在下行幀時為1.

塊Ai通過加密,得到一個由塊Si組成的序列S。

Si = aes128_encrypt(K, Ai) for i = 1..k

S = S1 | S2 | .. | Sk

通過異或計算對payload進行加解密:

4.3.3.2 LoRaWAN層之上的加密

如果LoRaWAN之上的層級在已選的埠上(但不能是埠0,這是給MAC命令保留的)提供了預加密的FRMPayload給LoRaWAN,LoRaWAN則不再對FRMPayload進行修改,直接將FRMPayload從MACPayload傳到應用層,以及從應用層傳到MACPayload。

4.4 消息校驗碼(MIC)

消息檢驗碼要計算消息中所有欄位。

msg = MHDR | FHDR | FPort | FRMPayload

MIC是按照[RFC4493]來計算:

cmac = aes128_cmac(NwkSKey, B0 | msg)

MIC = cmac[0..3]

塊B0的定義如下:

Size(bytes)

1

4

1

4

4

1

1

B0

0x49

4x 0x00

Dir

DevAddr

FCntUp or FCntDown

0x00

len(msg)

方向欄位(Dir)在上行幀時為0,在下行幀時為1。

第5章 MAC命令

對網路管理者而言,需要有一套專用的MAC命令用在伺服器和終端MAC層之間交互。這套MAC命令對應用程序(不管是伺服器端還是終端設備的應用程序)是不可見的。

單個數據幀中可以攜帶MAC命令,要麼在FOpts欄位中捎帶,要麼在獨立幀中將FPort設成0後放在FRMPayload里。如果採用FOpts攜帶的方式,MAC命令是不加密並且不長度超過15位元組。如果採用獨立幀放在FRMPayload的方式,那就必須採用加密方式,並且不超過FRMPayload的最大長度。

注意:如果MAC命令不想被竊聽,那就必須以獨立幀形式放在FRMPayload中。

每個MAC命令是由 1位元組CID 跟著一段可能為空的位元組序列組成的。

CID

Command

發送端

描述

終端

網關

0x02

LinkCheckReq

終端利用這個命令來判斷網路連接質量

0x02

LinkCheckAns

LinkCheckReq的回復。包含接收信號強度,告知終端接收質量[J2]

0x03

LinkADRReq

向終端請求改變數據速率,發射功率,重傳率以及信道[J3]

0x03

LinkADRAns

LinkADRReq的回復。

0x04

DutyCycleReq

向終端設置發送的最大占空比。[J4]

0x04

DutyCycleAns

DutyCycleReq的回復。

0x05

RXParamSetupReq

向終端設置接收時的參數。[J5]

0x05

RXParamSetupAns

RXParamSetupReq的回復。

0x06

DevStatusReq

向終端查詢其狀態。

0x06

DevStatusAns

返回終端設備的狀態,即電池餘量和鏈路解調預算。[J6]

0x07

NewChannelReq

創建或修改 1個射頻信道 定義。[J7]

0x07

NewChannelAns

NewChannelReq的回復。

0x08

RXTimingSetupReq

設置接收時隙的時間。[J8]

0x08

RXTimingSetupAns

RXTimingSetupReq的回復。

0x09

TxParamSetupReq

通過NS設置終端節點的最大停留(dwell time)時間和EIRP最大有效發射功率(基於地區規則)[J9]

0x09

TxParamSetupAns

TxParamSetupReq的回復

0x0A

DlChannelReq

通過上行與下行的頻偏量修改定義的下行RX1的信道[J10]

0x0A

DlChannelAns

DlChannelReq的回復

0x80~0xFF

私有

給私有網路命令拓展做預留。

表4:MAC命令表

注意:MAC命令的長度雖然沒有明確給出,但是MAC執行層必須要知道。因此未知的MAC命令無法被忽略,且前面未知的MAC命令會終止MAC命令的處理隊列。所以建議按照LoRaWAN協議介紹的MAC命令來處理MAC命令。這樣所有基於LoRaWAN協議的MAC命令都可以被處理,即使是更高版本的命令。

注意:通過NS調整任何值(如,RX2,創建或調整信道的設置)保持有效,直到終端節點重新Join。因此在每一個節點成功入網後,節點使用默認預設參數,並且根據需要,由NS(網路伺服器)重新調整參數。

5.1 連接檢查命令(LinkCheckReq, LinkCheckAns)

使用LinkCheckReq命令,可以檢查一個終端的網路連接情況,這個命令沒有負載位元組。

當通過一個或多個網關傳達LinkCheckReq命令時,需要有LinkCheckAns命令回復。

Size (bytes)

1

1

LinkCheckAns Payload

Margin

GwCnt

射頻調製邊界(Margin)是一個8位無符號整數,範圍是0~254,Margin值的含義是指最後一次接收到LinkCheckReq命令時的dB值。「0」代表通信架構的調製層級(0 dB或沒有邊界),當值為「20」時,代表網關層級到達20 dB以上。「255」是默認預設設置。

網關數量(GwCnt)是指成功接收LinkCheckReq命令的網關數量。

5.2 連接ADR命令 (LinkADRReq, LinkADRAns)[J11]

使用LinkADRReq命令,NS請求一個終端節點執行自適應速率模式。

Size (bytes)

1

2

1

LinkADRReq Payload

DataRate_TXPower

ChMask

Redundancy

DataRate_TXPower位元組含義如下:

Bits

[7:4]

[3:0]

DataRate_TXPower

DataRate

TXPower

請求的數據速率(DataRate)和發射功率(TXPower)是根據區域差異和指定的LoRaWAN地區參數文檔制定。發射功率是指設備傳輸數據時最大的功率。當一個終端節點收到一條命令讓發射功率超過它自身的能力範圍時,終端按自身能力最大範圍設定。信道掩碼(ChMask)為上行通道編譯成可用的信道,同將bit 0連接至LSB(最低有效位):

Bit#

Usable channels

0

Channel 1

1

Channel 2

..

..

15

Channel 16

一個數據位在ChMask區域里被置位為1,意味著如果這個信道允許數據速率使用在終端,則通信信道可以被用作上行通信。一個數據位複位為0,意味著應該迴避該通信信道。

Bits

7

[6:4]

[3:0]

Redundancy bits

RFU(預留)

ChMaskCntl

NbTrans

在冗餘位中,NbTrans的值是指每一次上行報文的重複次數(即單條上行報文發送時,重複發送的次數),這種方式適用於「unconfirmed」的上行結構,且有效範圍為[1:15]。NbTrans為0代表接收的終端應使用默認預設值。這個區域可通過網路管理員去控制節點上行的冗餘,用來獲得更優質網路服務。[J12] 終端可以在重複的網路傳輸時進行跳頻,它會等待每次重複,直至接收窗口時間關閉。不論何時,一次下行報文都可以在RX1的時間窗口接收,同時它會停止相同時間內的上行報文。對於class A的終端設備,RX2同樣可以接收。

信道掩碼控制(ChMaskCntl)區域是之前已定義ChMask 的控制。[J13] 它可以控制16個通道的ChMask應用,也可以通過特定調製方法全局的打開或關閉全部的通道。這些使用需要遵守當地規則,查看當地的LoRaWAN地區參數文檔[PARAMS]。

網路伺服器在單一的下行報文時,可能包括多個LinkAdrReq命令。為了配置終端的信道掩碼,終端將會處理所有連續的LinkAdrReq報文,在現有的下行報文序列中,作為單獨的命令發出。終端節點可以接受或拒絕所有的信道掩碼控制,並且在每一次LinkAdrAns報文中,可以為每一條命令提供一樣的信道掩碼ACK狀態標識。終端設備將最後一條報文中,處理數據速率(DataRate),發送功率(TXPower)和重複次數(NbTrans),同時此次設置將管理終端的全局狀態。不論接受或拒絕最終的設置,在每次LinkAdrAns報文中,終端設備將反饋統一的ACK。

信道頻率每個地區都有差異,詳情請見第6章。一個終端將通過LinkADRReq去應答LinkADRReq命令。

Size (bytes)

1

LinkADRAns Payload

Status

Status位元組含義如下:

Bits

[7:3]

2

1

0

Status bits

RFU

Power ACK

Data rate ACK

Channel mask ACK

LinkADRAns bits有如下含義:

Bit = 0

Bit = 1

Channel mask ACK

發送的信道掩碼未定義或失效;

命令被丟棄,節點狀態不會改變

信道掩碼成功設置

Data rate ACK

數據速率是未知的,或設備信道不支持;命令被丟棄,節點狀態不會改變

數據速率成功設置

Power ACK

命令被丟棄,節點狀態不會改變

功率等級成功設置

如果這3個bits中,任意一個為0,則命令失效,節點保持原有狀態。

5.3 終端發射占空比 (DutyCycleReq, DutyCycleAns)

DutyCycleReq 命令是終端網路通信中,一個周期中,允許發射的最大傳輸時間。

Size (bytes)

1

DutyCycleReq Payload

DutyCyclePL

DutyCyclePL bits有如下含義:

Bits

7:4

3:0

DutyCyclePL

RFU

MaxDCycle

終端最大的工作周期為:

MaxDutyCycle有效範圍是[0 : 15]。如果值為0,則代表沒有占空比的限制。

終端設備使用DutyCycleAns回復DutyCycleReq命令。DutyCycleReq MAC不包含數據負載。

5.4 接收窗口參數 (RXParamSetupReq, RXParamSetupAns )

RXParamSetupReq 命令可以為第二個接收窗口(RX2)後的每一個上行數據改變頻率和數據速率的設置。同時RXParamSetupReq也可以設置上行和RX1窗口下行數據速率的偏差量。

Size (bytes)

1

3

RXParamSetupReq Payload

DLsettings

Frequency

DLsettings bits有如下含義:[J14]

Bits

7

6:4

3:0

DLsettings

RFU

RX1DRoffset

RX2DataRate

RX1DRoffset區域設置的是終端第一個接收窗口(RX1)上行數據速率和下行數據速率的偏差量。[J15] 默認預設設置為0。這個偏差通常可以為某一區域平衡上下行連接邊界的最大功率負載。

RX2DataRate區域設置的是終端第二個接收窗口(RX2)下行的數據速率,DR的值與約定LinkADRReq命令一致(0代表DR1/125kHZ)。Frequency的區域用來設置第二個接收窗口信道的頻率,憑藉這個頻率可以定義NewChannelReq命令。

RXParamSetupAns命令通常使用在終端對RXParamSetupReq命令的ACK(acknowledge)應答。應該在終端的所有上行包的FOpt區域添加RXParamSetupAns命令,直至遇到Class A的下行包。[J16] 這樣可以保證即使在上行丟包的情況下,網路也會知道下行參數是否應用到終端。

數據負載僅包含一個狀態位元組。

Size (bytes)

1

RXParamSetupAns Payload

Status

這個狀態字(Status)包含如下說明。

Bits

7:3

2

1

0

Status bits

RFU

RX1DRoffset ACK

RX2 Data rate ACK

Channel ACK

Bit = 0

Bit = 1

Channel ACK

請求的信道頻率沒有被使用

信道頻率已成功設置在RX2

RX2 Data rate ACK

數據速率設置對終端是未知請求

數據速率已成功設置在RX2

RX1DRoffset ACK

上/下行的偏移量超出RX1的允許範圍

RX1數據速率偏移量已成功設置

如果這3個bits中,任意一個為0,則命令失效,節點保持原有狀態。

5.5 終端設備狀態 (DevStatusReq, DevStatusAns)

網路伺服器可使用DevStatusReq命令請求一個終端的狀態信息。DevStatusReq命令沒有數據負載。如果一個終端接收到DevStatusReq命令,終端應使用DevStatusAns回復。

Size (bytes)

1

1

DevStatusAns Payload

Battery

Margin

電池電量(Battery)包含以下信息:

Battery

Description

0

終端連接著外接電源

1..254

電源電量,1(Min)-254(Max)

255

未讀出電量數據

邊界(Margin)是指最近一次成功接收到DevStatusReq命令的信噪比。它是有符號整數,佔用6個bit,範圍是-32到31。

5.6 創建/修改信道 (NewChannelReq, NewChannelAns, DlChannelReq, DlChannelAns)

NewChannelReq命令可以修改已存在或新創建信道的參數。NewChannelReq命令可以設置新信道的中心頻點,也可以設置這個信道上行數據速率的範圍:

Size (bytes)

1

3

1

NewChannelReq Payload

ChIndex

Freq

DrRange

信道序號(ChIndex)是創建或修改信道的序號。依照地區和頻帶使用波段,LoRaWAN協議強制使用規定信道,則全部設備必須與其一致,不可通過NewChannelReq命令修改(參見第6章)。若默認信道數目為N,信道Index從0到N-1,則可接受範圍ChIndex是N到15。[J17] 一個設備必須能夠處理至少16個不同的信道。在其他地區內,設備可能還將必須設置定義超過16個信道。

頻率(Freq)區域是一個24位無符號整數。實際信的頻率(Hz)的值是Freq的100倍,且100 MHz以下作為將來擴展的預留。同時可每隔100 Hz設置100MHz到1.67GHz的信道頻率。Freq為0則無法設置。同時也必須檢查終端設備的硬體是否支持這一頻率,否則將返回錯誤值。

數據速率(DrRange)區域是指該信道允許的上行數據速率(DR)。這段區域有2個4-bits的索引:

Bits

7:4

3:0

DrRange

MaxDR

MinDR

根據協議5.2章節規定的最小數據速率 (MinDR)部分,指定了信道允許的最低上行數據速率。如,0代表DR0 / 125 kHz。同樣,最大數據速率(MaxDR)也定義了最高上行數據速率。例如,DrRange = 0x77代表這個信道只有50 kbps GFSK[J18] 可用[J19] ,DrRange = 0x50代表信道支持DR0 / 125 kHz到DR5 / 125 kHz。

新定義或修改過的信道可以立即使用進行通信。RX1下行頻率與上行頻率相同。

終端設備可用NewChannelAns命令回復NewChannelReq命令。NewChannelAns負載報文包括如下內容:

Size (bytes)

1

NewChannelAns Payload

Status

狀態位(Status)代表如下含義:

Bits

7:2

1

0

Status

RFU

Data rate range ok

(數據速率狀態位 )

Channel frequency ok

(信道頻率狀態位)

Bit = 0

Bit = 1

Data rate range ok

設置的數據速率範圍超過當前設備可設置範圍

數據速率範圍與終端設備兼容

Channel frequency ok

設置頻率不可用

頻率已設置

如果這2個bits中,任意一個為0,則命令失效,且不會創建新的信道。

DlChannelReq命令可以連接不同的RX1下行頻率。該命令應用在支持NewChannelReq命令的地區(如歐盟和中國,而美國、澳洲則不適用)。

該命令設置RX1下行的中心頻點,如下:

Size (bytes)

1

3

DlChannelReq Payload

ChIndex

Freq

信道索引(ChIndex)修改下行頻率的信道序號。

頻率(Freq)區域是一個24 bits的無符號整數。頻率(Freq)區域是一個24位無符號整數。實際信的頻率(Hz)的值是Freq的100倍,且100 MHz以下作為將來擴展的預留。終端設備必須檢查硬體是否支持該頻率,否則將返回錯誤值。

終端設備使用DlChannelAns命令來回復DlChannelReq命令。應該在終端的所有上行包的FOpt區域添加DlChannelReq命令,直至遇到Class A的下行包。這樣可以保證即使在上行丟包的情況下,網路也會知道下行參數是否應用到終端。

數據負載包含如下信息:

Size (bytes)

1

DlChannelAns Payload

Status

狀態位(Status)代表如下含義:

Bits

7:2

1

0

Status

RFU

Uplink frequency exists

(上行頻率狀態)

Channel frequency ok

(信道頻率狀態)

Bit = 0

Bit = 1

Channel frequency ok

該頻率設備不可用

該頻率可用

Uplink frequency exists

該信道未定義該上行頻率,下行頻率僅可設置一個有效上行頻率[J20]

上行頻率有效

5.7 設置收發時延 (RXTimingSetupReq, RXTimingSetupAns)

RXTimingSetupReq命令允許配置接收和發送間的時間間隔,該值決定終端在發送(TX)上行數據後,與第一個接收窗口打開的延時。第二個接收窗口會在第一個接收窗口關閉1秒後打開。

Size (bytes)

1

RXTimingSetupReq Payload

Settings

延時(Delay)區域是指間隔時間。該區域包含2個4-bit索引:

Bits

7:4

3:0

Settings

RFU

Del

該延時以秒為單位。Del 0映射1秒。

Del

Delay [s]

0

1

1

1

2

2

3

3

..

..

15

15

終端設備可用RXTimingSetupAns命令回復RXTimingSetupReq命令,且沒有數據負載。

應該在終端的所有上行包的FOpt區域添加DlChannelReq命令,直至遇到Class A的下行包。這樣可以保證即使在上行丟包的情況下,網路也會知道下行參數是否應用到終端。

5.8 終端傳輸參數(TxParamSetupReq, TxParamSetupAns)

該MAC命令僅適用部分可用地區。請參考LoRaWAN區域參數[PARAMS]文檔。

TxParamSetupReq命令被用在告知終端最大的停留時間(dwell time)[J21] 。例如,一個數據包在空中的最大連續傳輸時間,以及終端允許的最大有效同性輻射功率(Effective Isotropic Radiated Power ,EIRP)。

Size (bytes)

1

TxParamSetup payload

EIRP_DwellTime

該結構中的EIRP_DwellTime是指:

Bits

7:6

5

4

3:0

MaxDwellTime

RFU

DownlinkDwellTime

UplinkDwellTime

MaxEIRP

TxParamSetupReq命令的第0-3位用在最大EIRP值,對應關係如下表。表中EIRP值不得大於當地區域要求的極限值。

Coded Value

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Max EIRP (dBm)

8

10

12

13

14

16

18

20

21

24

26

27

29

30

33

36

EIRP的最大值要與設備的最大發射功率一致。設備一般不要求傳輸功率,但應不超過指定的EIRP值。

Bit 4和Bit 5定義了上下行各自的最大停留時間(dwell time),如下表:

Coded Value

Dwell Time

0

No Limit

1

400 ms [J22]

終端設備可用TxParamSetupAns命令回復TxParamSetupReq命令,且TxParamSetupAns命令沒有數據負載。

當該MAC命令在當地區域禁止使用,則設備不應處理該MAC命令,且不發送ACK(acknowledgement)。


[J1]DR0 <-> SF12

DR1 <-> SF11 DR2 <-> SF10 DR3 <-> SF9 DR4 <-> SF8 DR5 <-> SF7 [J2]通過MAC命令查看當前環境的RSSI,SNR等 [J3]通過MAC命令設置DR,TXPower(發射功率) [J4]通過MAC命令設置發送的占空比 占空比是指一個周期內,設備可用於通信的時間。 例如:占空比設為0.01,是指100 s內,僅可以使用1 s。 [J5]通過MAC命令設置終端節點的接收參數 [J6]通過MAC命令查詢終端節點的剩餘電量,鏈路預算 [J7]通過MAC命令創建和修改射頻信道 [J8]通過MAC命令設置節點接收時隙參數 [J9]通過MAC命令設置停留時間和有效全向發射功率 EIRP=TXPower-Loss+Gain [J10]通過MAC命令設置或修改RX1的信道 [J11]DR0 <-> SF12 DR1 <-> SF11 DR2 <-> SF10 DR3 <-> SF9 DR4 <-> SF8 DR5 <-> SF7 [J12]即不使用NBTrans上行報文重複發送,但可以用在其他功能,如「confirmed「的上行結構,提高網路服務質量。 [J13]CHMaskCntl是每一組Channel的組號,每一組內有16個信道(頻點),而在組內進行單獨控制時,可使用Channel Mask控制。 [J14]RX1DROffset 0 1 2 3 4 5 UL: DL DL DL DL DL DL DR0 :DR0 DR0 DR0 DR0 DR0 DR0 DR1 :DR1 DR0 DR0 DR0 DR0 DR0 DR2 :DR2 DR1 DR0 DR0 DR0 DR0 DR3 :DR3 DR2 DR1 DR0 DR0 DR0 DR4 :DR4 DR3 DR2 DR1 DR0 DR0 DR5 :DR5 DR4 DR3 DR2 DR1 DR0 [J15]查看《LoRaWAN_Regional_Parameters_v1_0-20161012_1397_1.pdf》,可設置上行與下行的DR偏移量,即若使用DROffset=5時,上行使用DR5(SF7),對應下行映射為DR0(SF12) [J16]原文:The RXTimingSetupAns command should be added in the FOpt field of all uplinks until a class A downlink is received by the end-device. [J17]假設默認可用5個信道(頻點),則默認信道的Index為0-4,那麼創建新的信道(頻點)Index的範圍在5-15。所以說,後文又提到硬體設備至少要支持16個信道。 [J18]高斯頻移鍵控GFSK - Gauss frequency Shift Keying ,是在調製之前通過一個高斯低通濾波器來限制信號的頻譜寬度。 [J19]GFSK是一種射頻調製方式,50kbps是網路速度。 [J20]原文:the downlink frequency can only be set for a channel that already has a valid uplink frequency . [J21]停留時間(dwell time) [J21]是指網關或節點在發送數據時,允許的最大發送時間。因為有些地區對發送時間有限制。例如,不允許終端的發包時間超過2秒。 [J22]也就是說,dwell time是不可配的,要麼不開啟,要麼只能設置成40ms
推薦閱讀:
查看原文 >>
相关文章