LORAWAN中文文档格式.docx

上传人:b****3 文档编号:6445380 上传时间:2023-05-06 格式:DOCX 页数:60 大小:480.39KB
下载 相关 举报
LORAWAN中文文档格式.docx_第1页
第1页 / 共60页
LORAWAN中文文档格式.docx_第2页
第2页 / 共60页
LORAWAN中文文档格式.docx_第3页
第3页 / 共60页
LORAWAN中文文档格式.docx_第4页
第4页 / 共60页
LORAWAN中文文档格式.docx_第5页
第5页 / 共60页
LORAWAN中文文档格式.docx_第6页
第6页 / 共60页
LORAWAN中文文档格式.docx_第7页
第7页 / 共60页
LORAWAN中文文档格式.docx_第8页
第8页 / 共60页
LORAWAN中文文档格式.docx_第9页
第9页 / 共60页
LORAWAN中文文档格式.docx_第10页
第10页 / 共60页
LORAWAN中文文档格式.docx_第11页
第11页 / 共60页
LORAWAN中文文档格式.docx_第12页
第12页 / 共60页
LORAWAN中文文档格式.docx_第13页
第13页 / 共60页
LORAWAN中文文档格式.docx_第14页
第14页 / 共60页
LORAWAN中文文档格式.docx_第15页
第15页 / 共60页
LORAWAN中文文档格式.docx_第16页
第16页 / 共60页
LORAWAN中文文档格式.docx_第17页
第17页 / 共60页
LORAWAN中文文档格式.docx_第18页
第18页 / 共60页
LORAWAN中文文档格式.docx_第19页
第19页 / 共60页
LORAWAN中文文档格式.docx_第20页
第20页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

LORAWAN中文文档格式.docx

《LORAWAN中文文档格式.docx》由会员分享,可在线阅读,更多相关《LORAWAN中文文档格式.docx(60页珍藏版)》请在冰点文库上搜索。

LORAWAN中文文档格式.docx

4.2MACHeader(MHDRfield)

MAC头中包含消息类型(MType)和帧编码所遵循的LoRaWAN规范的主版本号(Major)。

RFU是保留位。

4.2.1Messagetype(MTypebitfield)

LoRaWAN自定义了六个独特的MAC消息类型:

joinrequest,joinaccept,unconfirmeddataup/down,以及confirmeddataup/down

MType

Description

备注

000

JoinRequest

无线激活过程使用,具体见章节6.2

001

JoinAccept

010

UnconfirmedDataUp

接受者不必回应

011

UnconfirmedDataDown

100

ConfirmedDataUp

接受者必须回应

101

ConfirmedDataDown

110

RFU

保留

111

Proprietary

用来实现自定义格式的消息,交互的设备之间必须有相同的处理逻辑,不能和标准消息互通

4.2.1.1Join-requestandjoin-acceptmessages

已经添加上表的到备注

4.2.1.2Datamessages

消息数据既能传输MAC命令又能传输应用数据,甚至可以一起发送。

不同消息类型用不同的方法保证一致性,下面会介绍这一点。

4.2.2Majorversionofdatamessage(Majorbitfield)

Majorbits

00

LoRaWANR1

01..11

RFU(保留)

主版本号指明激活过程中(inthejoinprocedure)使用的消息格式(章节6.2)和MACPayload前4字节(第4章)。

终端要为每个不同的主版本号实现不同子版本的消息格式。

终端使用的主版本号应当提前发送给网络服务器,可以作为其它消息的一部分捎带发送,如,设备个性化信息。

4.3MACPayloadofDataMessages(MACPayload)

MAC荷载,也就是所谓的“数据帧”,包含:

帧头(FHDR)、可配置的端口字段(FPort)以及可配置的帧负载字段(FRMPayload)

4.3.1Frameheader(FHDR)

FHDR由:

终端短址(DevAddr)、一个帧控制字节(FCtrl)、2字节的帧计数器(即帧大小,FCnt)和最多15个字节的配置(FOpts,用来传输MAC命令)组成。

4.3.1.1帧头中的自适应数据速率控制(ADR,ADRACKReqinFCtrl)

LoRa网络对终端的数据速率没有任何限制。

LoRaWAN协议通过该特性调整优化静态终端(相对移动终端来讲)的数据速率,即自适应数据速率(AdaptiveDataRate(ADR))。

ADR可用时,网络会为其优化来使用尽可能快的数据速率。

 

移动终端在移动过程中会快速切换无线广播环境,该过程中进行数据速率管理没什么实际意义,此时移动终端应使用已经修正过的默认数据速率。

设置ADR之后,网络通过MAC命令控制终端的数据速率。

如果没有设置ADR,网络会无视收到的信号的质量,不对终端的数据速率做任何调整。

终端或网络用不用ADR要根据需求决定。

不过,只要条件允许就应该开启ADR,这样可以延长终端的电池寿命并充分利用网络带宽。

注意:

哪怕移动终端在大多数时间下都是不移动的。

因此终端可以根据它自己移动状态请求网络通过ADR进行数据速率优化。

如果终端的数据速率经过服务器优化比默认值大,那节点就要定期检查保证服务器能够收到上传的数据。

终端上行的帧号每增加一次(重复发送不增加帧号)的同时,ADR_ACK_CNT+1。

ADR_ACK_DELAY(这么长)时间之内收到下行消息:

ADR_ACK_CNT=0(重置)。

否则ADR_ACK_CNT继续根据前面规则处理。

ADR_ACK_CNT>

=ADR_ACK_LIMIT(一共用时:

ADR_ACK_LIMIT+ADR_ACK_DELAY)就切换到更低的数据速率上(无线广播范围的距离更长)重复上述过程,每次终端设备达到ADR_ACK_LIMIT就会再次降低自己的数据速率。

如果设备使用默认的数据速率就不需要设置ADRACKReq,这种情况下任何操作都不会改善连接范围(增加连接距离)。

在此期间的下行数据不需设置ACK位,因为终端在等待接收期间收到任何应答都表示网关还能接收来自该设备的上行数据。

为了让网络对下行链路给出最佳的调度方案,不要要求对ADR请求立刻做出应答,要给网络留足时间。

上行传输时,如果ADR_ACK_CNT>

=ADR_ACK_LIMIT并且当前数据速率比设备的最小数据速率高,就要设置ADRACKReq,其它情况下不需要。

4.3.1.2消息确认位和确认流程 

(ACKinFCtrl)

收到confirmed类型的消息时,接收者要回复一条确认消息(ACK,通过设置确认位实现)。

如果发送者是终端,网络就把消息发送到该终端打开的接收窗口。

如果发送者是网关,终端就自行决定发送确认消息的传输方式。

确认消息只会在收到消息以后作为响应发送,并且不重发。

为了尽量简化终端处理、减少状态,一旦收到需要确认的消息要立刻发送确认消息,确认消息要简单直接(最好发空消息)。

4.3.1.3重传机制(Retransmissionprocedure)

∙如果终端设备发送一条需要确认的消息后没有收到响应,终端就会重新发送这条消息。

不同设备间的消息重传的次数和每次的时间可能不同,当然这些也可以通过网络服务器调节。

18章给出了一些确认机制的时间

如果设备重传次数到限制后还没收到确认消息,就会降低自身的数据传输速率来增加连接距离再次尝试连接。

这种条消息的重传或者放弃是由终端决定的。

如果网络服务器重传次数达到限制后还没有收到确消息,在没有收到设备的消息之前会认为无法与终端建立连接(终端不可达)。

这种消息的重传或者放弃是由服务器决定的。

上面提到的重传期间的数据速率回归机制在18.4有详细介绍

4.3.1.4帧挂起位(FPendinginFCtrl,downlinkonly)

∙帧挂起位(FPending)只在下行交互中使用,表示网关还有数据挂起等待发送。

此时需要终端尽快发送上行消息来再打开一个接收窗口。

FPending的详细用法在18.3。

4.3.1.5计数器(FCnt)

∙每个终端有两个计数器:

上行链路计数器(FCntUp),由终端产生并维护,记录发往服务器的帧数量;

下行链路计数器(FCntDown),由服务器产生并维护,记录服务器发往终端的帧数量(此处与我们当前的设备服务器与设备的交互中的messageid作用相同,都是为了保证消息收发一致)。

终端加入服务器成功以后,终端和服务端的帧号同时置0。

之后每次其中一方发送消息后,与之对应的FCntUp或FCntDown就会加1。

接收方会同步保存接收数据的的帧号,对比收到的增加过的值和当前保存的值,如果两者之差小于MAX_FCNT_GAP(要考虑号码归零,即号码达到最大值后重新从0开始),接收方就与收到的数据保持同步(更新成收到的值)。

如果两者之差大于MAX_FCNY_GAP就说明中间丢失了很多数据然后就会丢掉这条数据。

PS4翻译更正如下:

∙LoRaWAN的帧计数器有16位和32位两种长度,两者有所不同:

16bits时,其值可以直接作为FCnt使用(反之亦然),此时有需要的话通过在前面填充0(值为0)字节(来补足);

32bits时,FCnt对应计数器的16个最低有效位(2个低字节)。

上行数据使用上行FCnt,下行数据使用下行FCnt。

一个节点在上行FCnt的一次循环内,如果不是消息重传,上行传输数据使用的FCnt不能重复。

∙PS:

注释掉原文的直译,原文说法有问题。

∙FCnt的一次循环指的是:

从1到达最大值,0x1~0xFFFF(因为LoRaWAN中的FCnt字段是2个字节)。

∙原文档中所谓的“相同的的应用会话密钥和网络会话密钥”就是没有重新入网,重新入网FCnt重新计算,是FCnt循环计数的一种特殊情况。

当计数器使用32位时,FCnt字段只发送32bits中的16个最低有效位。

此时服务器需要通过观察传输的数据来自己维护16个最高有效位。

4.3.1.6帧配置(FOptsLeninFCtrl,FOpts)

∙帧配置长度(FOptsLen)位于帧的FCtrl部分,表示FOpts的总长度。

FOpts搭载到数据帧中发送的MAC命令最长15字节,详细的MAC命令见4.4。

如果帧配置长度FOptsLen=0,FOpts为空;

如果FOpts不为空(里面是MACommand) 

,端口号要么省略,要么是一个非零值(具体看下面)。

∙MAC命令不能同时出现在payload(负载)和帧配置项中。

4.3.2端口字段Portfield(FPort)

∙负载(payload)不为空的时候端口号(port)也不能是空。

此时port=0表示FRMPayload中只有MAC命令(详情见章节4.4)。

FPort值的可用范围是:

1~223(0x01~0xDF),224~255(0xE0~0xFF)为保留值,方便以后扩展。

∙N是应用负载的字节数,N的取值范围见第7节

N≤M-1-(FHDR的字节长度)

∙其中M是MAC的最大有效荷载长度。

4.3.3MAC帧负载据加密(FRMPayload)

∙如果帧数据中包含payload,要先对FRMPayload进行加密,再计算消息的一致码(MIC)。

∙加密方案使用基于IEEE802.15.4/2006AnnexB[IEEE802154]的AES加密,秘钥长度128位。

默认情况下,所有FPort的加/解密都在LoRaWAN层完成;

如果FPorts不为0,加/解密可以在LoRaWAN层之上完成。

4.3.3.1LoRaWAN加密

∙加密秘钥K取决于消息的FPort:

FPort

K

NwkSKey

网络密钥

1..255

AppSKey

应用密钥

表3,FPort列表

∙加密字段:

pld=FRMPayload

∙采用分组加密,算法位每条消息数据定义一个块的序列,序列分为k块,k=ceil(len(pld)/16) 

(向上取整),每组用Ai表示,i=1…k,每块结构如下:

字节数

4

Ai

0x01

0x00

Dir

DevAddr

FCntUp或FCntDown

0x00

i

∙Dir字段:

上行帧为0,下行帧为1。

对Ai加密,得到Si:

∙通过分割对payload进行加解密:

4.3.3.2EncryptionabovetheLoRaWANlayer

∙对于选定的端口(FPort不能是0,因为0表示MAC命令),如果LoRaWAN前面的一些层给LoRaWAN的FRMPayload是加密过的,LoRaWAN就把FRMPayload从MACPayload转发给应用,并且转发过程中不做任何改动。

4.4MessageIntegrityCode(MIC)

对整个消息进行MIC计算(AES签名算法CMAC),需要加密的消息包括以下字段:

msg=MHDR|FHDR|FPort|FRMPayload

len(msg)表示消息的字节长度。

MIC算法参考RFC4493:

∙B0定义如下:

B0

0x49

FCntUp或FCntDown

len(mgs)

Dir字段:

上行帧为0,下行帧为1

5MACCommands

网络管理时会在网络服务器和终端MAC层之间传输一系列MAC命令。

一帧数据中可以包含任何MAC命令,MAC命令既可以放在FOpts中,也可以放在FRMPayload中,但不能同时在两个字段携带MAC命令。

MAC命令放在FRMPayload时,FPort=0。

放在FOpts的命令不加密(原因:

加密Payload,对整个数据签名),也不能超过15个字节(2^4-1)。

放在FRMPayload的MAC命令长度不能超过FRMPayload的最大值。

不想被别人截获的命令要放到FRMPayload,并单独发送该数据帧

∙一条mac命令由一个命令ID(CID,一个字节),和特定的命令序列组成,命令序列可以是空。

命令ID

命令

终端发送

网关发送

简介

0x02

LinkCheckReq

×

用于终端验证网络连接

LinkCheckAns

回应验证请求,同时包含终端接收质量相关的估算的信号功率

0x03

LinkADRReq

请求终端改变数据率、传输功率、接收率或者信道

LinkADRAns

LinkRateReq的应答

0x04

DutyCycleReq

设置设备的最大总发射占空比

DutyCycleAns

DutyCycleReq的应答

0x05

RXParamSetupReq

设置接收时隙相关参数

RXParamSetupAns

RXSetupReq的应答

0x06

DevStatusReq

请求终端状态

DevStatusAns

返回终端装填,即电量和解调情况

0x07

NewChannelReq

创建或修改无线电信道

NewChannelAns

NewChannelReq的应答

0x08

RXTimingSetupReq

设置接收时隙的时间

RXTimingSetupAns

RXTimingSetupReq的应答

0x80

0xFF

保留命令

∙注:

MAC命令长度没有明确给出来,这就需要MAC执行端通过某种方式隐性获得。

因为无法忽略不明的MAC命令,而且一旦遇到不明的MAC命令,就会导致处理MAC命令队列的进程终止。

因此,建议参考使用LoRaWAN规范中的MAC命令。

这样的话,所有当前版本LoRaWAN规范中实现的MAC命令都可以被更高版本的规范兼容处理。

5.1链路检查LinkCheckReq和LinkCheckAns

终端使用LinkCheckReq命令对链路进行有效性检查,该命令不含payload。

网络服务器收到网关(一个或多个)转发过来的LinkCheckReq数据后回复一条 

LinkCheckAns命令。

大小(字节)

LinkCheckAnsPayload

Margin

GwCnt

Margin(解调幅度)是最近一条被成功收到的 

LinkCheckReq 

命令的链路预算(单位dB),是一个8位(bits)无符号整型,范围[0,254]。

值为 

表示在解调(信号强度)的下限上收到了数据,值20表示网关在比解调下限高出 

20dB 

的信号强度上收到了数据。

255是保留值。

GwCnt是最近一次成功收到LinkCheckReq的网关的数量。

linkmargin参考:

Linkmargin

5.2速率自适应LinkADRReq和LinkADRAns

服务器通过发送 

LinkADRReq 

命令让终端设备进行速率自适应。

2

LinkADRReqPayload

DataRate_TXPower

ChMask

Redundancy

大小(位bits)

[7:

4]

[3:

0]

DataRate

TXPower

数据速率(DataRate)和TX输出功率(TXPower),两者和地理区域相关,编码参考第7章。

信道掩码(ChMask)通过对相应的最低有效位填0来对上行信道进行编码,信道列表如下:

表5:

信道状态表

第几位

可用信道

Channel1

Channel2

..

15

Channel16

ChMask中某位是1,表示该位对应的上行信道可用;

如果是0,则表示对应的上行信道不可用。

终端设备当前使用的信道要设为1(不知道是我不会断句,还是官方文档这里说的不明白)。

7

[6:

Redundancybits

ChMaskCntl

NbRep

冗余(Redundancy)位中,NbRep表示每条上行消息被重复收到的次数,仅用于 

unconfirmed 

类型的上行消息。

默认值为 

,有效范围[1:

15]。

如果终端设备收到NbRep==0,则使用默认值。

服务器使用该字段控制节点上行数据冗余,以得到给定的服务质量。

终端在重传时的调频照常执行,每次重发以后等待接收数据,直到接收窗口过期。

信道掩码控制(ChMaskCntl)字段控制上面ChMask的位掩码的解释。

当网络上信道的实现超过16个,该字段必须是一个非0值。

用它来控制ChMask使用哪16个信道,还可以用它来全局性的打开或关闭所欲使用指定调制方式的信道。

该字段的具体使用和地域相关,具体见第7章。

信道频率也和地域有关,具体定义见第6章。

终端收到LinkADRReq后回复LinkADRAns命令。

LinkADRAnsPayload

Status

大小(位)

3]

Statusbits

PowerACK

DatarateACK

ChannelmaskACK

LinkADRAnsStatus释义如下:

表6:

LinkADRAns状态位定义

字段

(字段值=)0

(字段值=)1

*ChannelmaskACK*

要使用的信道未定义。

忽略该命令,终端状态不改变

设置成功

*DatarateACK*

终端未定义或者不支持该速率(可用信道不支持该速率)。

命令被忽略,终端状态不改变

*PowerACK*

终端未定义该功率等级。

以上三个字段任意一个是0,命令就会执行失败,而节点也保持之前的状态不变。

5.3终端的发射占空比(DutyCycleReq 

和 

DutyCycleAns)

DutyCycleReq,网络协调员使用该命令来限制终端设备的总发射占空比的最大值。

总发射占空比指所有子频带的发射占空比。

DutyCycleReqPayload

MaxDCycle

终端允许的发射占空比的最大值:

总发射占空比=12MaxDCycle

MaxDutyCycle有效范围[0:

在没有区域调节设置占空比限制的情况下,使用0表示“占空比没有限制”。

值为255时要求终端设备立刻转为静默状态,等价于远程关闭终端。

终端收到DutyCycleReq后回复DutyCycleAns, 

DutyCycleAns不包含任何payload。

5.4接收窗口相关参数(RXParamSetupReq,RXParamSetupAns)

对于每一次的上发,通过下发RXParamSetupReq命令,可以修改第二个接收窗口(RX2)使用的频率和数据率。

还可以使下行RX1数据率相对上行数据率偏移。

3

RX2SetupReqPayload

DLsettings

Frequency

6:

3:

RX1DRoffset

RX2DataRate

RX1DRoffset用来设置终端设备上行和下行第一个接收窗口(RX1)数据速率之间的偏移,默认值是0。

设置偏移是因为基站所在区域的功率密度可能会有上限,还可以用来平衡上行和下行的无线链路预算。

RX2DataRate定义第二个接收窗口使用的数据速率,用法和 

LinkADRReq一样(例如,0表示DR0/125kHz)。

Frequency是第二个接收窗口使用的信道频率,其频率编码规则的定义见NewChannelReq命令。

终端设备回复RXParamSetupAns,其pay

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2