LoRaWAN协议-Class A类设备分析
目录
1 前言
2 接收窗口
2.1 Receive_Delay1/Receive_Delay2
2.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY2
2.3 RX1DR/RX2DR
2.4 RXParamSetupReq/RXParamSetupAns
1)RXParamSetupReq
2)RXParamSetupAns
3 功耗情况
4 未确认和已确认消息
5 下行链路
1 前言
LoRaWAN 协议依赖于 Aloha 型网络。在这种类型的网络中,终端设备可以任意进行传输。
A 类设备的关键特性是,通信仅由终端设备发起。来自网络服务器的下行链路消息需要排队,直到下次从终端设备接收到上行链路消息,并打开接收窗口 (Rx)。此设计专门针对需要先响应上行链路才能进行下行链路通信的应用,或者在延迟要求相当宽松的情况下提前安排下行链路。
2 接收窗口
在上行链路之后,A 类终端设备会打开一个短接收窗口 (Rx1),如果在此期间未接收到下行链路,则会打开第二个接收窗口 (Rx2)。上行传输结束后的一段固定时间之后,Rx1 开始打开。通常,此延迟为1秒,但是这段时间是可调整的。通常上行传输结束后两秒,Rx2 开始打开,当然这段时间也是可调整的。
- 未收到任何消息
- Rx1窗口收到消息
- Rx2窗口收到消息
PS:设备不会尝试发送另一条上行链路消息,除非:
- 它在 Rx1 期间已收到下行链路消息,或者
- 上一次传输之后的第二个接收窗口已完成
2.1 Receive_Delay1/Receive_Delay2
- Rx1 的默认延迟 (RECEIVE_DELAY1) 是一种网络参数,默认延迟可能因地区而异,可由服务端通过 MAC 命令 RxTimingSetupReq 或者入网时命令Join-Accept进行更改。默认为1秒。
- 终端设备在 Rx1 关闭后等待一秒再打开 Rx2。这意味着 RECEIVE_DELAY2 = RECEIVE_DELAY1 + 1 秒
2.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY2
LoRaWAN协议中,所有设备都是以A类设备启动并入网,因业务需要再切换到B类或者C类设备。因此OTAA空中激活过程中,都是按A类设备方式打开接收窗口。
唯一的区别就是打开接收窗口的延迟时间:JOIN_ACCEPT_DELAY1和JOIN_ACCEPT_DELAY2.协议默认JOIN_ACCEPT_DELAY1为5s,JOIN_ACCEPT_DELAY2为6s
2.3 RX1DR/RX2DR
- 即接收窗口RX1和RX2的速率配置
- 在《LoRaWAN协议-设备入网流程详解(OTAA和ABP)》一文中,就提到了RX1DR和RX2DR参数是由网关在OTAA入网过程中通过Join-Accept命令下达给节点
- 另外网关还可以通过MAC命令RXParamSetupReq来重新配置RX1DR和RX2DR
2.4 RXParamSetupReq/RXParamSetupAns
在实际工作中,应用服务器可以通过命令RXParamSetupReq来对节点的接收窗口参数进行修改配置,该消息属于确认消息,节点收到该命令后需回复应答即命令RXParamSetupAns。
RXParamSetupReq命令是下行链路命令,只能等待设备终端主动开启上行链路后打开接收窗口的时机。节点设备收到服务端的MAC命令RXParamSetupReq,由于该命令是已确认消息,节点需再次发起一次上行链路回复RXParamSetupAns,而不是立即睡眠。
1)RXParamSetupReq
- 只分析MAC帧中的FRMPayload部分,包含了DLSettings和Frequency字段。其中DLSettings字段用于设置RX1DROffset和RX2DR
- RX1DROffset表示RX1DR和RX2DR的差值
2)RXParamSetupAns
- Status每一bit代表的含义
3 功耗情况
- 发射状态按14dBm,工作电流一般为32mA;接收状态下工作电流是小于11mA;睡眠过程中电流最低可以到600nA;具体数值可以查节点端芯片手册
- 每个接收窗口的持续时间必须至少和终端设备的无线电接收器有效检测到下行链路前导所需的时间一样长。芯片要求是至少5个Symbol时间。依据LoRa配置可以计算出最小窗口时间,这里列几个典型值,在BW125kHz,SF7速率下,最小窗口时间为5.1毫秒。具体如何计算可以参考《Lora技术- 码片/码元/数据速率以及空中时间计算》
- 发射时间和接收解调时间依据包长和LoRa配置计算,可以参考上文链接中的空中时间计算
4 未确认和已确认消息
- 终端设备向服务器发送消息命令时,可以选择类型为未确认或者已确认,反之亦然。
- 未确认消息,即发送方发出去后无需关注接收方是否收到。
- 确认消息,即发送方发送后,需收到接受方回复的ACK
- 节点间隔发送3次心跳包,为未确认消息,无需服务端回复应答
- 节点发送确认消息(比如包含报警相关的信息,图中橙色部分),前2次一直未收到服务端的应答,因此重复发送,直至第3次发送后收到服务端的应答
- LoRaWAN网络的下行链路资源是比较稀缺的,需谨慎使用确认消息
5 下行链路
服务器必须等到设备发送上行链路消息之后才能向其发送数据。一旦接收到上行链路消息,应用服务器就会立即发送下行链路消息。如果该消息是未确认的,设备一旦接收到下行链路消息就会回到睡眠状态。但如果下行链路消息是确认消息的情况,设备会再次主动发起一次上行通信操作。
例如节点设备收到服务端的MAC命令RXParamSetupReq,由于该命令是已确认消息,节点需再次发起一次上行链路回复RXParamSetupAns,而不是立即睡眠。
LoRaWAN协议-Class A类设备分析相关推荐
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
文章目录 一.使用 Mixin 混合进行方法注入 二.Mixin 混合多个类优先级分析 一.使用 Mixin 混合进行方法注入 在上一篇博客 [Groovy]MOP 元对象协议与元编程 ( 方法注入 ...
- LoRaWAN协议-MAC帧格式详解
目录 1 前言 2 帧格式整体框图 3 MAC帧格式组成 3.1 分类 3.2 组成 4 MHDR(MAC Header) 4.1 帧类型FType 4.2 协议号Major 5 MIC消息校验码 5 ...
- LoRaWAN协议入网方式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.LoRaWAN协议入网方式是什么? 二.使用步骤 1.引入库 总结 前言 提示:这里可以添加本文要记录的大概内容: ...
- LoraWan协议剖析,快速掌握协议要点
1.整体结构 双向传输终端(Class A): Class A 的终端在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输.传输时隙是由终端在有传输需要时安排,附加一定的随机延时(即ALOHA ...
- STM32节点移植lorawan协议连接腾讯云物联网开发平台(IoT Explorer)
STM32移植lorawan协议栈连接腾讯云物联网开发平台(IoT Explorer) 前言 开发环境的准备 正文 初始化 入网 发送与接收 前言 在移植协议之前,先给大家科普一下Lora 和 lor ...
- LoRaWan协议1.1 ClassB部分学习笔记
LoRaWan协议1.1 ClassB部分学习笔记 目录 8.对Class B的介绍 9.同步网络发起下行的原理(class b独有) 10.Class B上行帧 11. 下行ping包格式(clas ...
- 01 MSC类设备-基础篇(一)
一.简介 在USB协议中,规定了一类大容量存储设备(Mass Storage Device Class)协议.常见的USB大容量设备有:U盘.USB移动硬盘.USB移动光驱.USB读卡器.USB打印机 ...
- mysql协议重传,MySQL · 源码分析 · 网络通信模块浅析
MySQL 网络通信浅析 MySQL的网络通信协议主要包含以下几个层次,从最上层的MySQL数据包协议层到最底层的socket传输: | THD | Protocol | NET | VIO | SO ...
- misc类设备与蜂鸣器驱动
以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 一.板载蜂鸣器驱动测试 1.驱动部分 (1)九鼎移植内核已经提供了蜂鸣器驱动源码,但如何查找是否已经有驱动文件? 法一 ...
最新文章
- GNN|如何做的比卷积神经网络更好?
- 对机械臂的肩关节与肘关节编码器连接与设置
- JQuery对checkbox的操作
- 人工智能历经风雨二十载 AI专用芯片成蓝海
- [Enterprise Library]Configuration类设计分析
- 使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络
- java.awt.headless 模式(Linux, java.awt.headless and the DISPLAY environment variable)
- gtest 测试部分_全部关于测试–第1部分
- coroutine - yield from
- printf 函数实现的深入剖析
- Docker学习总结(67)—— 取代 Dockerfile 的新型镜像构建技术 Buildpacks 详解
- vue结合element实现自定义上传图片、文件
- BZOJ 1911: [Apio2010]特别行动队
- 解决滑动UITableView自动显示delete按钮
- 移动端页面开发资源总结
- linux系统编译Q,Linux下安装qBittorrent,开启24小时挂机BT下载
- CORS跨域-Nginx使用方法(Access-Control-Allow-Origin错误提示)
- Android Uri的几种使用方法,分享共同学习
- 美国计算机视觉专业排名,你了解美国计算机视觉专业吗
- Altium Designer--如何将图片转成PCB logo
热门文章
- 拆机 短接 触点 线刷 斐讯 N1_美炸了!北美N1放大1000倍圣诞水晶球登场,惊艳了整个华北!...
- 【Java】window系统JDK7,JDK8环境安装详细教程
- 【ArcGIS自定义脚本工具】批量执行栅格计算器
- C#基础系列问题二一些.NET工具(初学者必备)
- 矩阵论基础知识5(病态矩阵与条件数 )
- dagum基尼系数分析全流程
- 适用于Mac的免费数据恢复软件推荐
- ASP.NET运行原理和运行机制
- BoundingBox 图片分割
- 信息安全技术实验:利用 burp suite破解 web 后台