前言

这是《LoRaWAN102》的译文,即LoRaWAN协议规范 V1.0.2 版本(2016年7月定稿)。

我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解析,可点此查看帖子LoRa学习笔记_汇总。

本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/


翻译开始

第5章 MAC命令

对网络管理者而言,有一套专门的MAC命令用来在服务器和终端MAC层之间交互。这套MAC命令对应用程序(不管是服务器端还是终端设备的应用程序)是不可见的。

单个数据帧中可以携带MAC命令,要么在FOpts字段中捎带,要么在独立帧中将FPort设成0后放在FRMPayload里。如果采用FOpts捎带的方式,MAC命令是不加密并且不长度超过15字节。如果采用独立帧放在FRMPayload的方式,那就必须采用加密方式,并且不超过FRMPayload的最大长度。

注意:如果MAC命令不想被窃听,那就必须以独立帧形式放在FRMPayload中。

每个MAC命令是由 1字节CID 跟着一段可能为空的字节序列 组成的。

CID Command 由谁发送 描述
终端 网关
0x02 LinkCheckReq x 终端利用这个命令来判断网络连接质量
0x02 LinkCheckAns x LinkCheckReq的回复。包含接收信号强度,告知终端接收质量
0x03 LinkADRReq x 向终端请求改变数据速率,发射功率,重传率以及信道
0x03 LinkADRAns x LinkADRReq的回复。
0x04 DutyCycleReq x 向终端设置发送的最大占空比。
0x04 DutyCycleAns x DutyCycleReq的回复。
0x05 RXParamSetupReq x 向终端设置接收时隙参数。
0x05 RXParamSetupAns x RXParamSetupReq的回复。
0x06 DevStatusReq x 向终端查询其状态。
0x06 DevStatusAns x 返回终端设备的状态,即电池余量和链路解调预算。
0x07 NewChannelReq x 创建或修改 1个射频信道 定义。
0x07 NewChannelAns x NewChannelReq的回复。
0x08 RXTimingSetupReq x 设置接收时隙的时间。
0x08 RXTimingSetupAns x RXTimingSetupReq的回复。
0x80~0xFF 私有 x x 给私有网络命令拓展做预留。

表4:MAC命令表

注意:MAC命令的长度虽然没有明确给出,但是MAC执行层必须要知道。因此未知的MAC命令无法被忽略,且前面未知的MAC命令会终止MAC命令的处理队列。所以建议按照LoRaWAN协议介绍的MAC命令来处理MAC命令。这样所有基于LoRaWAN协议的MAC命令都可以被处理,即使是更高版本的命令。


5.2 Link ADR 命令(LinkADRReq, LinkADRAns)

通过 LinkADRReq 命令,NS(网络服务器)可以调整终端的速率。

Size (bytes) 1 2 1
LinkADRReq Payload DataRate_TXPower ChMask Redundancy
Bits [7:4] [3:0]
DataRate_TXPower DataRate TXPower

所请求的数据速率(DataRate)和发射功率(TXPower)是根据区域规定,体现在LoRaWAN协议中文版_配套文件 地区参数(物理层) 中。命令中的发射功率字段指的是设备可操作的最大发射功率。如果命令中的发射功率高于终端实际发射功率的最大值,终端也要应答成功,这种情况下,将终端的发射功率尽可能提高到最大值。 ChMask 字段指示了上行的可用信道,从最低位bit0表示开始。

Bit# Usable channels
0 Channel 1
1 Channel 2
.. ..
15 Channel 16

表5:信道状态表

ChMask 字段的对应位如果设置为1,则表示对应的信道可以进行上行传输,只要该信道允许终端使用该数据速率。如果对应位设置为0,则表示相应信道不可用。

Bits 7 [6:4] [3:0]
Redundancy bits RFU ChMaskCntl NbTrans

Redundancy 字段中的 NbTrans 位域,指的是每个上行消息的发送个数,这仅对 “unconfirmed” 消息有作用。对于单帧发送情况相应的默认值为1,有效范围是[1:15]。如果收到 NbTrans == 0,终端需要用默认值。这个位域可以被NS(网络服务器)用来控制节点上行的 Redundancy 从而获得QOS(服务质量)。在重传帧时节点通常会调频,每次重传不用等到接收窗口超时。只要在RX1期间收到下行消息,该上行消息则不再进行任何重传。对于 Class A 设备,RX2时隙的接收也是一样处理。

ChMaskCntl 位域和之前定义的 ChMask 字段有关,它控制了ChMask所指定的16个信道块。也可以对所用信道进行全局的打开或关闭。这个位域的使用是根据区域规定,体现在LoRaWAN协议中文版_配套文件 地区参数(物理层) 中。

NS(网络服务器)可能会在单个下行帧中包含多个 LinkAdrReq 命令。终端为了配置 channel mask ,将会按照下行消息中的命令块的顺序,逐一地处理所有的 LinkAdrReq 消息。 终端可能会接收或者拒绝命令块中所有 channel mask 的控制,在逐个 LinkAdrAns 命令块中体现连续的 Channel Mask ACK 状态,来指示相应的 channel mask 接受与否。 终端在连续命令块时只处理最后一个消息中的 DataRate, TXPower 和 NbTrans 字段。终端需要在每一个 LinkAdrAns 命令中体现 ACK 状态,来指示对这些最终设置的接受与否。

信道频点信息是按地区规定,在第6章中有定义。终端使用 LinkADRAns 命令来应答 LinkADRReq 命令。终端为了配置

Size (bytes) 1
LinkADRAns Payload Status
Bits [7:3] 2 1 0
Status bits RFU Power ACK Data rate ACK Channel mask ACK

LinkADRAns 的 Status 位域按照如下定义:

/b> Bit = 0 Bit = 1
Channel mask ACK 所发的 channel mask 使能了未定义的信道或者禁用了所有信道。命令被丢弃,终端状态不变。 所发的 channel mask 已成功解析,已按照 mask 设置了当前的信道状态。
Data rate ACK 所请求的数据速率,终端无法识别,或者无法应用在当前信道中。命令被丢弃,终端状态不变。 数据速率成功设置。
Power ACK 所请求的发射功率不能在终端上执行。命令被丢弃,终端状态不变。 功率等级成功设置。

如果这三个位中有任何一位等于0,则命令没有成功,节点保持之前的状态。

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

5.5 终端状态(DevStatusReq, DevStatusAns)

通过 DevStatusReq 命令,NS(网络服务器)可以获取终端的状态信息。该命令无载荷。一旦终端收到 DevStatusReq 命令,则会回复 DevStatusAns 命令。

Size (bytes) 1
LinkADRAns Payload Status
Bits [7:3] 2 1 0
Status bits RFU Power ACK Data rate ACK Channel mask ACK

5.6 信道的创建和修改(NewChannelReq, NewChannelAns, DlChannelReq, DlChannelAns)


未完待续。

翻译完


LoRaWAN协议中文版 第5章 MAC命令相关推荐

  1. LoRaWAN协议中文版 第10章 Class B 模式的上行帧

    前言 这是<LoRaWAN102>的译文,即LoRaWAN协议规范 V1.0.2 版本( 2016 年 7 月定稿). 我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外 ...

  2. 干货 | LoRaWAN 协议中文版,你要的pdf来了

    项目介绍 这是<LoRaWAN-Specification>的中文译本. <LoRaWAN-Specification>是 LoRa 联盟规范的核心协议,由于国内LoRa从业者 ...

  3. LoRaWAN协议-MAC帧格式详解

    目录 1 前言 2 帧格式整体框图 3 MAC帧格式组成 3.1 分类 3.2 组成 4 MHDR(MAC Header) 4.1 帧类型FType 4.2 协议号Major 5 MIC消息校验码 5 ...

  4. LoRaWan协议1.1 ClassB部分学习笔记

    LoRaWan协议1.1 ClassB部分学习笔记 目录 8.对Class B的介绍 9.同步网络发起下行的原理(class b独有) 10.Class B上行帧 11. 下行ping包格式(clas ...

  5. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  6. Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)

    Hyperledger Fabric 2.0 官方文档中文版第6章 教程上 总目录 6.教程(上) 将智能合约部署到通道 启动网络 Logspout设置 打包智能合约 安装链码包 批准链码定义 将链码 ...

  7. LoRaWAN协议入网方式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.LoRaWAN协议入网方式是什么? 二.使用步骤 1.引入库 总结 前言 提示:这里可以添加本文要记录的大概内容: ...

  8. LoraWan协议剖析,快速掌握协议要点

    1.整体结构 双向传输终端(Class A): Class A 的终端在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输.传输时隙是由终端在有传输需要时安排,附加一定的随机延时(即ALOHA ...

  9. LoRaWAN协议-Class A类设备分析

    目录 1 前言 2 接收窗口 2.1 Receive_Delay1/Receive_Delay2 2.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY2 2.3 RX1DR ...

最新文章

  1. spring--(14)利用注解建立bean与bean之间的关系
  2. 【Paper】2019_Distributed Cooperative Control of a High-speed Train
  3. MathType可以编辑省略号吗
  4. goudp文件传输服务器,golang udp服务端客户端例子
  5. nginx php访问日志配置,nginx php-fpm 输出php错误日志的配置方法
  6. 基于云的平台利用新技术来改变商店式购物营销
  7. hive --metastore三种模式
  8. linux中dir命令,详解Linux系统中ls和dir命令的组合使用
  9. ISO14001认证用处有哪些?
  10. c语言井号花括号怎么打,大括号怎么打,手把手教你word大括号怎么输入
  11. 汤唯:在街头卖艺的那些日子
  12. 养猫日记之如何获得一只喵
  13. JS事件之事件绑定与事件监听
  14. 行内元素设置margin:0 auto无效的问题
  15. 爬虫技术——一篇全搞定!
  16. 外连接 及 无用的外连接
  17. 织梦主动提交_织梦CMS网站如何自动提交百度快速收录(详细教程)
  18. 基于c语言256色转16色,在16色模式下显示256色及全彩色
  19. Android应用解析包错误原因的总结(不定时更新)
  20. [STM8L]EEPROM操作读与写

热门文章

  1. 了解公司各印章的作用并加强印章保护工作
  2. 鲨鱼听书 — Android和iOS免费有声小说畅听
  3. betapert分布 matlab,[转载]贝塔(β,beta)分布
  4. 红米android os耗电,体验真正流畅带来的快感,120Hz高刷新率的红米/Redmi K30测评报告...
  5. 【python】 pypinyin 拼音库
  6. Android游戏历程,快忘掉“吃鸡” 2019最佳Android游戏Top20出炉
  7. 尚硅谷Netty学习笔记
  8. lcd屏和oled屏哪个更护眼 lcd屏和oled屏哪个耐摔
  9. 三星 android截屏快捷键,三星C5怎么截图/截屏 三星C5截图快捷键与手掌截屏方法...
  10. Visual Studio 2015专业版安装激活图文教程,有注册码