LoRaWAN 规范 1.0 (章节5)

最近在做LoRa, LoRaWAN协议略微复杂,边读边翻译,现在把部分关键的翻译分享给各位做物联网的同行。
当然里面掺杂了一些我的个人笔记,希望对大家有所帮助。
如果哪里有问题,欢迎应各位留言或者邮件指正。

翻译很辛苦,转载请注明出处和源链接

  • 英文原文链接: 《LoRaWAN Specification 1R0》
  • LoRaWAN版本历史及协议格式说明
  • 翻译原文链接:
    • LoRaWAN 规范 1.0 (章节2~4)
    • LoRaWAN 规范 1.0 (章节5)
    • LoRaWAN 规范 1.0 (章节6)
    • LoRaWAN 规范 1.0 (章节7)
    • LoRaWAN 规范 1.0 (章节10~13)

PS:前面MAC命令只把大概列出来,没有翻译,现在给出第五章完整翻译

5 MAC Commands

网络管理时会在网络服务器和终端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 × 用于终端验证网络连接
0x02 LinkCheckAns × 回应验证请求, 同时包含终端接收质量相关的估算的信号功率
0x03 LinkADRReq × 请求终端改变数据率、传输功率、接收率或者信道
0x03 LinkADRAns × LinkRateReq的应答
0x04 DutyCycleReq × 设置设备的最大总发射占空比
0x04 DutyCycleAns × DutyCycleReq的应答
0x05 RXParamSetupReq × 设置接收时隙相关参数
0x05 RXParamSetupAns × RXSetupReq的应答
0x06 DevStatusReq × 请求终端状态
0x06 DevStatusAns × 返回终端装填,即电量和解调情况
0x07 NewChannelReq × 创建或修改无线电信道
0x07 NewChannelAns × NewChannelReq的应答
0x08 RXTimingSetupReq × 设置接收时隙的时间
0x08 RXTimingSetupAns × RXTimingSetupReq的应答
0x80 ~ 0xFF Proprietary × × 保留命令

注:MAC 命令长度没有明确给出来,这就需要MAC执行端通过某种方式隐性 获得。因为无法忽略不明的MAC命令,而且一旦遇到不明的MAC命令,就会导致处理MAC命令队列的进程终止。因此,建议参考使用LoRaWAN规范中的MAC命令。这样的话,所有当前版本LoRaWAN规范中实现的MAC命令都可以被更高版本的规范兼容处理。

5.1 链路检查 LinkCheckReqLinkCheckAns

终端使用LinkCheckReq命令对链路进行有效性检查,该命令不含payload。网络服务器收到网关(一个或多个)转发过来的LinkCheckReq数据后回复一条 LinkCheckAns 命令。

大小(字节) 1 1
LinkCheckAns Payload Margin GwCnt

Margin(解调幅度)是最近一条被成功收到的 LinkCheckReq 命令的链路预算(单位dB),是一个8位(bits)无符号整型,范围 [0,254]。值为 0 表示在解调(信号强度)的下限上收到了数据,值20表示网关在比解调下限高出 20 dB 的信号强度上收到了数据。255是保留值

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

link margin参考:Link margin

5.2 速率自适应 LinkADRReqLinkADRAns

服务器通过发送 LinkADRReq 命令让终端设备进行速率自适应。

大小(字节) 1 2 1
LinkADRReq Payload DataRate_TXPower ChMask Redundancy
大小(位 bits) [7:4] [3:0]
DataRate_TXPower DataRate TXPower

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

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

表5:信道状态表

第几位 可用信道
0 Channel 1
1 Channel 2
.. ..
15 Channel 16

ChMask中某位是1,表示该位对应的上行信道可用;如果是0,则表示对应的上行信道不可用。终端设备当前使用的信道要设为1(不知道是我不会断句,还是官方文档这里说的不明白)。

第几位 7 [6:4] [3:0]
Redundancy bits 保留 ChMaskCntl NbRep

冗余(Redundancy)位中,NbRep表示每条上行消息被重复收到的次数,仅用于 unconfirmed 类型的上行消息。默认值为 1 ,有效范围 [1:15]。如果终端设备收到NbRep == 0,则使用默认值。服务器使用该字段控制节点上行数据冗余,以得到给定的服务质量。终端在重传时的调频照常执行,每次重发以后等待接收数据,直到接收窗口过期。

信道掩码控制(ChMaskCntl)字段控制上面ChMask的位掩码的解释。当网络上信道的实现超过16个,该字段必须是一个非0值。用它来控制ChMask使用哪16个信道,还可以用它来全局性的打开或关闭所欲使用指定调制方式的信道。该字段的具体使用和地域相关,具体见第7章。

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

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

大小(字节) 1
LinkADRAns Payload Status
大小(位) [7:3] 2 1 0
Status bits RFU Power ACK Data rate ACK Channel mask ACK

LinkADRAns Status释义如下:

表6:LinkADRAns状态位定义

字段 (字段值=)0 (字段值=)1
* Channel mask ACK * 要使用的信道未定义。忽略该命令,终端状态不改变 设置成功
* Data rate ACK * 终端未定义或者不支持该速率(可用信道不支持该速率)。命令被忽略,终端状态不改变 设置成功
* Power ACK * 终端未定义该功率等级。命令被忽略,终端状态不改变 设置成功

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

5.3 终端的发射占空比(DutyCycleReqDutyCycleAns

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

大小(字节) 1
DutyCycleReq Payload MaxDCycle

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

=12MaxDCycle

MaxDutyCycle有效范围[0:15]。在没有区域调节设置占空比限制的情况下,使用 0 表示“占空比没有限制”。
值为 255 时要求终端设备立刻转为静默状态,等价于远程关闭终端。
终端收到DutyCycleReq后回复DutyCycleAnsDutyCycleAns不包含任何payload。

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

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

大小(字节) 1 3
RX2SetupReq Payload DLsettings Frequency
第几位 7 6:4 3:0
DLsettings RFU RX1DRoffset RX2DataRate

RX1DRoffset 用来设置终端设备上行和下行第一个接收窗口(RX1)数据速率之间的偏移,默认值是0。设置偏移是因为基站所在区域的功率密度可能会有上限,还可以用来平衡上行和下行的无线链路预算。

RX2DataRate 定义第二个接收窗口使用的数据速率,用法和 LinkADRReq 一样(例如,0 表示 DR0/125kHz)。Frequency 是第二个接收窗口使用的信道频率,其频率编码规则的定义见 NewChannelReq 命令。

终端设备回复 RXParamSetupAns,其payload只有一个字节:

大小(字节) 1
RX2SetupAns Payload Status

Status位结构如下:

第几位 7:3 2 1 0
Status bits RFU RX1DRoffset ACK RX2 Data rate ACK Channel ACK

表 7: RX2SetupAns 的 status bits 含义

字段 (值=)0 (值=)1
Channel ACK (对于终端)频率不可用 RX2信道设置成功
RX2 Data rate ACK (对于终端)未知的数据速率 RX2数据速率设置成功
RX1DRoffset ACK RX1上行/下行数据速率的偏移不在可用范围 设置成功

其中的任何一个是0,命令都会执行失败并保持之前的状态。

5.5 终端状态(DevStatusReq, DevStatusAns

服务器通过发送 DevStatusReq 获取一个终端设备的状态,该命令没有payload。终端收到 DevStatusReq 之后回复DevStatusAns

大小(字节) 1 1
DevStatusAns payload Battery Margin

电池电量(Battery)上报的数据编码如下:

表8:电池电量编码

电量 说明
0 终端在使用外接电源
1..254 电池电量,1是最小值,254是最大值
255 终端设备无法获取电池电量

余量(Margin)是最近一次接收成功 DevStatusReq 命令的解调信噪比,其值(四舍五入)取整,单位dB。余量值是一个有符号整型,长度6个比特位,最小值 -32,最大值31。

占位(bits) 7:6 5:0
Status RFU Margin

5.6 创建或修改信道(NewChannelReq, NewChannelAns

NewChannelReq命令要么用来修改已有信道的参数,要么创建一个新的信道。该命令设置新信道的中心频率以及该信道的数据速率范围。

大小(字节) 1 3 1
NewChannelReq payload ChIndex Freq DrRange

信道索引(ChIndex)是新信道或者待修改信道的索引值。LoRaWAN规范中已经为不同的地域和频宽内置了默认信道,这些信道存在所有的设备上,而且不能通过NewChannelReq(见第6章)进行修改。如果默认的信道数量是N,那默认的信道就是 0 ~ N-1,而 ChIndex 可用范围就是 N ~ 15。终端设备至少要能处理 16 个不同的信道。在某些特定的区域终端允许存储超过16个信道。

频率(Freq)是一个 24bits 无符号整型,实际信道频率是 100 × Freq Hz(笔记:按这个说法,433.1MHz 服务器发送的数据是 4331 4331000),其中100MHz以下的值留待未来使用。通过这种方法可以以 100 Hz为步长,设置使用 100MHz~1.67GHz 之间任意的信道频率。 Freq == 0表示不使用该信道。终端设备必须对频率进行检查,保证它的射频硬件支持要使用的频率,并返回一个是否错误的信息。

数据速率范围(DrRange),该字段指明此信道的数据速率范围。该字由两个4位长的索引组成:

大小(bits) 7:4 3:0
DrRange MaxDR MinDR

根据章节5.2的定义,最小数据速率(MinDR)字段指定此信道最低数据速率,例如:0 表示指定 DR0/125 kHz。与之类似,最大数据速率指定最高数据速率,例如:DrRange = 0x77表示信道只能使用 50kbps GFSK,DrRange = 0x50表示数据速率范围是DR0 / 125 kHz 到 DR5 / 125 kHz。

启用新定义的信道,并可以马上用它进行通信。

终端回复NewChannelAns命令,其payload如下:

大小(字节) 1
NewChannelAns Payload Status

状态(Status)每位的含义如下:

大小(bits) 7:2 1 0
Status RFU Data rate range ok Channel frequency ok
字段 (字段值=)0 (字段值=)1
Data rate range ok 数据速率范围超出终端当前所允许的范围 终端兼容该数据速率范围
Channel frequency ok 终端无法使用该频率 可以使用

两者之中有一个是0,就表示命令执行失败,不会创建信道。

5.7 Rx和Tx之间的延迟(RXTimingSetupReq,RXTimingSetupAns

RXTimingSetupReq用来配置上行TX结束到打开第一个接收窗口的延迟。第二个接收窗口比第一个晚1秒打开(根据当前规范这里时间差不能改动)。

大小(字节) 1
RXTimingSetupReq Payload Settings

延迟(Delay)字段指定延迟,由两个4位的索引组成:

大小(bits) 7:4 3:0
Settings RFU Del

延迟单位是秒(s),0对应1秒:

Del 延迟(秒)
0 1
1 1
2 2
3 3
15 15

终端设备回复RXTimingSetupAns,不携带payload(负载数据)。

PS

看到有些伙伴提问问题,由于本人的CSDN一般不在线。

为了方便交流,附个邮箱,有问题或者想法的朋友可以 给我写信

本文由 qingchuwudi 译制,除非另有声明,在不与原著版权冲突的前提下,本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。

你可能感兴趣的:(物联网,lora,LoRaWAN,LoRaWAN中文,LoRaWAN翻译)