前言

这是《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. DDoS攻击的大量增加给企业带来了新的威胁——Vecloud
  2. python 数组赋值_LeetCode基础算法题第182篇:一维数组的运行总和
  3. 确保您的物联网部署具备5G功能
  4. Unsupported Hardware Detected
  5. Django学习(第四天:ORMModel)
  6. 第14章:傅里叶变换
  7. 计算机休眠能降低硬件损耗,Win7居然会出现“失眠”——Win7无法休眠问题解析...
  8. Spring Mvc 数据回显、异常处理、文件上传、json交互、ResTful、拦截器的使用(高级三)
  9. PCM音频文件的制作
  10. 基于JAVA+Spring+MYSQL的房屋出售系统
  11. 鸢尾花分类_基于鸢尾花(iris)数据集的逻辑回归分类实践
  12. 手动读取MNIST数据集
  13. 类编程的WAF(下)
  14. Eterm系统出-航空公司大系统-PID放大软件-IBE查询接口 QQ 799670351 15075679773
  15. 计算机电子表格题教程,计算机电子表格题教程.doc
  16. 台式计算机有线无线网卡设置,台式电脑怎么设置无线网络,详细教您台式电脑怎么设置无线网络...
  17. 【mininet 0x02】如何使用mn工具来操作mininet
  18. 快手 (kuaishou.net) 2.6 发布
  19. 1 1 2 3 5 8 13 21 代码实现 java(斐波那契数列)
  20. 风投Placeholder的区块链价值观,了解一下

热门文章

  1. 2015年互联网女皇趋势报告中文版
  2. Cesium实现动态绘制轨迹线
  3. 我的大学四年——郭天祥
  4. 使用 VMware Player 创建适合封装的虚拟机(转自IT天空Skyfree)
  5. 电阻/电抗/阻抗/电导/电纳/导纳
  6. 单片机工程师是程序员吗?真实的月薪到底有多少?
  7. 在cmd中使用命令来编译并运行java程序,导入其他jar包,使用windows批处理文件
  8. 百度地图切换罗盘后不能正北
  9. JAVA开发(史上最完整追本溯源JAVA历史、发展和学习)
  10. java8 stream collect方法