LoRaWAN协议中文版 第5章 MAC命令
前言
这是《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命令相关推荐
- LoRaWAN协议中文版 第10章 Class B 模式的上行帧
前言 这是<LoRaWAN102>的译文,即LoRaWAN协议规范 V1.0.2 版本( 2016 年 7 月定稿). 我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外 ...
- 干货 | LoRaWAN 协议中文版,你要的pdf来了
项目介绍 这是<LoRaWAN-Specification>的中文译本. <LoRaWAN-Specification>是 LoRa 联盟规范的核心协议,由于国内LoRa从业者 ...
- LoRaWAN协议-MAC帧格式详解
目录 1 前言 2 帧格式整体框图 3 MAC帧格式组成 3.1 分类 3.2 组成 4 MHDR(MAC Header) 4.1 帧类型FType 4.2 协议号Major 5 MIC消息校验码 5 ...
- LoRaWan协议1.1 ClassB部分学习笔记
LoRaWan协议1.1 ClassB部分学习笔记 目录 8.对Class B的介绍 9.同步网络发起下行的原理(class b独有) 10.Class B上行帧 11. 下行ping包格式(clas ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)
Hyperledger Fabric 2.0 官方文档中文版第6章 教程上 总目录 6.教程(上) 将智能合约部署到通道 启动网络 Logspout设置 打包智能合约 安装链码包 批准链码定义 将链码 ...
- LoRaWAN协议入网方式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.LoRaWAN协议入网方式是什么? 二.使用步骤 1.引入库 总结 前言 提示:这里可以添加本文要记录的大概内容: ...
- LoraWan协议剖析,快速掌握协议要点
1.整体结构 双向传输终端(Class A): Class A 的终端在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输.传输时隙是由终端在有传输需要时安排,附加一定的随机延时(即ALOHA ...
- LoRaWAN协议-Class A类设备分析
目录 1 前言 2 接收窗口 2.1 Receive_Delay1/Receive_Delay2 2.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY2 2.3 RX1DR ...
最新文章
- DDoS攻击的大量增加给企业带来了新的威胁——Vecloud
- python 数组赋值_LeetCode基础算法题第182篇:一维数组的运行总和
- 确保您的物联网部署具备5G功能
- Unsupported Hardware Detected
- Django学习(第四天:ORMModel)
- 第14章:傅里叶变换
- 计算机休眠能降低硬件损耗,Win7居然会出现“失眠”——Win7无法休眠问题解析...
- Spring Mvc 数据回显、异常处理、文件上传、json交互、ResTful、拦截器的使用(高级三)
- PCM音频文件的制作
- 基于JAVA+Spring+MYSQL的房屋出售系统
- 鸢尾花分类_基于鸢尾花(iris)数据集的逻辑回归分类实践
- 手动读取MNIST数据集
- 类编程的WAF(下)
- Eterm系统出-航空公司大系统-PID放大软件-IBE查询接口 QQ 799670351 15075679773
- 计算机电子表格题教程,计算机电子表格题教程.doc
- 台式计算机有线无线网卡设置,台式电脑怎么设置无线网络,详细教您台式电脑怎么设置无线网络...
- 【mininet 0x02】如何使用mn工具来操作mininet
- 快手 (kuaishou.net) 2.6 发布
- 1 1 2 3 5 8 13 21 代码实现 java(斐波那契数列)
- 风投Placeholder的区块链价值观,了解一下