【LoRaWAN 时钟同步】

news2024/9/21 20:51:03

本文主要介绍了 LoRaWAN 自组网协议、设备工作模式、设备间的时间同步问题

LoRaWAN 时钟同步

  • 1. 前言
  • 2. 设备数据收发
    • 2.1 数据帧格式
    • 2.2 数据发送
    • 2.3 数据接收
  • 3. A类设备
  • 4. C类设备
  • 5. B类设备
    • 5.1 GPS
    • 5.3 网关时间同步
    • 5.4 节点时间同步
      • 5.4.1 首次时间同步
      • 5.4.2 节点接收Beacon
      • 5.5 节点上报PingSlotPeriod && 切换ClassB
      • 5.6 服务器主动下行
      • 5.7 时序
  • 6. 多播
    • 6.1 单播、广播与多播的区别
    • 6.2 密钥同步
    • 6.3 C类多播
    • 6.4 B类多播

1. 前言

最初,A类设备出现了,专家们觉得是好的,于是在A类上行接收窗口外,常开了接收窗口2,于是出现了C类设备。

A类设备实时性低,功耗也低,C类设备实时性高,功耗也高,于是专家们设计了精密的时钟同步系统,网关定期广播时间,节点定期打开接收窗口,兼顾功耗与实时性,于是出现了B类设备。

最后专家们觉得还不够复杂,于是设计了基于B、C类的多播协议,然后是基于多播协议的分段数据块传输协议,再然后是基于分段数据块传输协议的OTA固件升级协议。

在深入LoRaWAN的过程中,我发现时钟同步的概念贯穿到每一个环节,节点何时发送、何时接收、又如何兼顾实时性与低功耗?梳理清楚这个问题,就能逐步搭建复杂的应用层协议。

PS:下面的内容基于LoRaWAN 1.0.3版本,由于博主是服务端开发人员,对物理层与嵌入式设备的理解还不够深入,因此在专业名词翻译上可能存在一些不准确的表述,原始文档请参考

  • LoRaWAN 1.0.3 Specification
  • LoRaWAN Multicast Setup
  • Fragmented Data Block Transport Specification
  • LoRaWAN Backend Interfaces

2. 设备数据收发

2.1 数据帧格式

上行数据帧格式

PreamblePHDRPHDR_CRCPHYPayloadCRC

下行数据帧格式

PreamblePHDRPHDR_CRCPHYPayload

2.2 数据发送

节点发送数据

  • 随机跳频:从可用的上行信道中选取一个,若无法使用,则再随机抽取一个
  • LBT机制:选取信道后,发射数据前,首先侦听该信道是否被占用,若无占用则开始发送数据
  • 休眠与接收:标准A类设备发射结束后进入休眠,并在随后的1秒和2秒的时间节点附近进行接收,B、C类设备会有额外的接收窗口

网关发送数据

  • 从网关下行队列中直接取数据按给定信道、速率发射,无跳频与LBT

2.3 数据接收

节点接收数据

  • 接收窗口频率与速率:A类设备在每次上行结束后,都会开启两个短暂的接收窗口,其中RX1按区域参数定义,随节点上行频点和速率变化,RX2在RX1接收失败时打开,RX2的频点、速率与C类单播/多播一致,按区域参数定义固定频点和速率
  • 接收窗口持续时间:不同区域具有不同的前导码设计,接收窗口持续时间必须足够让节点探测到下行信号
  • 校验:节点在接收数据的过程中,可根据区域参数定义的数据格式检查数据帧、执行CRC校验、DevAddr比对等,若出现异常,可随时中断接收

网关接收数据

  • 接收窗口频率与速率:网关最多可同时侦听8个信道,N个速率,N在区域参数中定义,例如CN470速率为DR0~DR5,网关最多可同时侦听8x6=48个频点+速率的组合
  • 接收窗口持续时间:半双工网关在同一时刻只能接收或发送数据,只要不发送数据,就一直处于接收状态;全双工网关可同时接收和发送数据,相当于一直处于接收状态
  • 校验:类似节点,由于网关只做透传,仅执行CRC校验,不核查DevAddr

3. A类设备

  • 节点发射数据的速率慢,最长可能长达数秒
  • 数据传输速度接近光速,可认为发射(Transmit)结束的那一刻,节点和网关的时间是对齐的
  • 节点发射结束后进入休眠,并分别在接下来的1s和2s的时间点附近打开接收窗口,短时间内可认为节点内部晶振稳定,不会令时间大幅度偏移
  • 网关接收数据完成的后,为数据打上当前时间戳(SX1301芯片内部时间),发送到服务器
  • 服务器处理数据,若有回包,则在上行数据包时间戳(SX1301芯片内部时间)的基础上加1s或2s,并下发给网关
  • 网关接收到服务器回包,根据当前SX1301内部时间,在网关下行队列中插入数据,并在节点打开接收窗口RX1或RX2时,通过射频发送
  • 上述的整个流程只需要使用SX1301的内部时间,且只取相对时间

4. C类设备

在这里插入图片描述

  • 包含A类设备的所有特性
  • 持续侦听,除节点上行数据、节点侦听RX1、节点接收数据外,都按RX2设定的频点和速率进行侦听,随时接收数据
  • 服务器主动下行时,数据包不含SX1301内部时间,而是将imme标志位置为true,提示网关尽快下发

5. B类设备

5.1 GPS

GPS全称是全球定位系统,卫星搭载高精度时钟,最初的设计功能主要是提供全球定位功能,同时会广播一个时钟数据,因此也具备授时功能,精度相比NTP高很多,例如1981年的氢原子钟精度达到10^-14秒,使得定位误差可以降低到1米。

GPS的计时器每1024周会溢出反转,2012年及之前的iPhone和iPad系统都直接使用GPS进行对时,苹果当时也提前发布了警告通知,提醒用户升级系统,否则系统时间可能出现回退:https://support.apple.com/en-us/HT210239

GPS时间是绝对时间,是以原子振荡周期确定的原子时;世界时(太阳时间)是基于地球自转的天文测量而得出的;UTC时间(世界协调时)则是在原子时秒长基础上,在时刻上尽量接近世界时的时间计量系统。

GPS时间与UTC时间的互转可以通过查表(leap second table)的方式进行,给定一个UTC时间减去自GPS起始时间开始以来的所有闰秒,可以换算出GPS时间,反之可以从GPS时间得到UTC时间。

5.3 网关时间同步

  • 网关配备GPS模块和GPS天线接收GPS信号
  • GPS模块上电启动后,会持续同步位置信息与时间信息
  • GPS位置信息同步过程与GPS时间同步过程是独立的
  • GPS时间与SX1301时间在网关内部通过定时对齐完成同步,以便下发带GPS时间戳的数据
  • 网关按照区域参数定义的格式,以固定速率、频率,每128秒广播一次GPS时间(Beacon)
  • 多网关的场景下,通过高精度时钟确保不同网关能够在同一个相位内完成时间广播

5.4 节点时间同步

5.4.1 首次时间同步

  • 首次时间同步以A类模式进行
  • 节点上行DeviceTimeReq,配备GPS的网关接收到数据时,会同时打上GPS时间戳及SX1301时间戳
  • 服务器接收到数据后,将GPS时间戳编码进DeviceTimeAns,通过RX1或RX2下发给节点
  • 节点接收到DeviceTimeAns后,结合上次发射结束的时间换算出当前的GPS时间,完成同步

5.4.2 节点接收Beacon

  • LoRaWAN协议定义支持ClassB的网关每128秒广播一次Beacon,供节点同步时间
  • 节点首次同步时间后,可以快速换算出下一个Beacon的发射时间,既加快时间同步过程,也避免持续接收影响功耗
  • 节点接收到第一个Beacon后,完成第二次时间同步,后续会每128秒打开一次接收窗口,持续从网关同步时间,确保时间不会漂移

5.5 节点上报PingSlotPeriod && 切换ClassB

  • B类设备的接收窗口,按PingSlotPeriod大小N划分为2^N个接收窗口,称为PingSlot
  • 128秒的周期由2^N个PingSlot和Beacon接收窗口组成
  • N取值范围是07,即节点可根据配置,在128秒的周期内开放1128个B类接收窗口
  • 节点在这一步做确认上行,上报的PingSlotInfoReq必须得到服务器的PingSlotInfoAns,确保双方完成同步
  • 获取PingSlotInfoAns成功后,节点立刻上报一帧ClassB标志位置为1的数据帧,提示服务器节点已经进入ClassB模式

5.6 服务器主动下行

  • 服务器可根据存储的节点devAddr、PingSlotPeriod、UTC时间、区域参数定义等,计算出节点下一个PingSlot打开的时间和频率、速率
  • 服务器下发数据前打上计算出GPS时间,网关根据GPS时间换算SX1301时间,并在节点打开接收窗口时下发

5.7 时序

在这里插入图片描述

  • B类设备包含所有A类设备的特性
  • B类设备除定时接收Beacon外,还会定期打开PingSlot接收服务器的主动下行
  • 每个节点会根据自身的devAddr生成的初始PingSlot窗口时间,即接收Beacon结束后打开的第一个PingSlot,实现时分复用
  • 按区域参数定义,部分频率计划固定B类主动下行频率和速率,部分预设信道的频率计划会根据PingSlot自动调频选择下行频率,实现频分复用

6. 多播

6.1 单播、广播与多播的区别

  • 节点和网关发射数据时,在无线环境下始终是广播的形式
  • 多播下行数据帧与单播下行数据帧格式一致
  • 单播:对于同一帧服务器下行数据,可能存在N个节点接收,但只有目标节点完成接收处理,获得原始数据,从最终结果看,是点对点通信
  • 广播:对于B类场景,当网关定时广播时间数据时,所有频率计划相同的B类节点都可以接收处理数据,相当于一对所有通信
  • 多播:也称为组播,若一批节点同时配置了一组相同的devAddr、nwkSKey、appSKey,那么对于一帧服务器多播下行数据,这一批节点都可以完成接收处理,获得原始数据,而组外节点则不会响应,从最终结果看,相当于一对一组通信

6.2 密钥同步

  • 节点单播时使用单播地址和单播密钥,配置为多播节点时,额外增加一套多播地址和多播密钥
  • 同一个分组内的节点具有相同的多播参数,包括密钥、频率、速率等
  • 密钥可通过手动配置,也可通过多播组创建协议自动从服务器配置

6.3 C类多播

  • C类节点的RX2与C类单播、C类多播一致,无额外的时序
  • C类节点进入主动接收的状态下后,在RX2的频率、速率下侦听信号,可接收A类下行、C类主动下发及C类多播下行
  • 节点根据接收到的数据帧devAddr取对应的密钥解析数据

6.4 B类多播

  • 在B类单播的章节中,我们知道
    • 每个B类节点根据devAddr计算出各自的初始PingSlot起始时间
    • 128的周期由2^N个PingSlot和Beacon接收窗口组成
  • B类多播设备至少拥有一个devAddr和一个mcAddr,因此将在单播的基础上,再次插入一组PingSlot,并按区域参数定义侦听指定的频点和速率
  • 不同于C类节点,B类多播节点将轮流侦听单播和多播模式下指定的频点,以接收服务器的主动下发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生成系列论文:文本控制的3d点云生成 TextCraft(一):论文概览

TextCraft: Zero-Shot Generation of High-Fidelity and Diverse Shapes from Text 论文原文: https://arxiv.org/abs/2211.01427 论文的研究动机 DALL2已经在文本控制的图像生成上取得很好的效果,但是基于文本控制的3d点云生成的研究还不太成熟&#…

软件架构知识2-系统复杂度

架构设计的真正目的:是为了解决软件系统复杂度带来的问题,一个解决方案。 系统复杂度,如何入手: 1、通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。 2、架构设计并不是要…

毕业3年不到选择跳槽,居然拿到20K的薪资,简直了···

本人本科就读于某普通院校,毕业后通过同学的原因加入软件测试这个行业,角色也从测试小白到了目前的资深工程师,从功能测试转变为测试开发,并顺利拿下了某二线城市互联网企业Offer,年薪 30W 选择和努力哪个重要&#xf…

Java Email 发HTML邮件工具 采用 freemarker模板引擎渲染

Java Email 发HTML邮件工具 采用 freemarker模板引擎 1.常用方式对比 Java发送邮件有很多的实现方式 第一种&#xff1a;Java 原生发邮件mail.jar和activation.jar <!-- https://mvnrepository.com/artifact/javax.mail/mail --> <dependency><groupId>jav…

使用VUE自定义组件封装部门选择功能

背景 照惯例&#xff0c;先交待下背景&#xff0c;从真实需求出发&#xff0c;讲述实现效果、设计思路和实现方式。 软件系统中&#xff0c;会有一些常见常用的选择功能&#xff0c;如部门选择、人员选择等&#xff0c;用于填报表单&#xff0c;使用频率很高。直接使用一方面会…

浅谈应用安全测试工具

正确的应用程序安全测试工具可以改善企业安全态势和开发工作流程。如今&#xff0c;应用程序安全从一开始就内置在整个软件生命周期中&#xff0c;即使是具有成熟开发实践的组织也需要自动化工具来在复杂、快速变化的环境中成功地保护他们的软件。以下比较了三个广泛使用的应用…

MAVEN打包这一篇就够了

Maven打包说明IDEA目录结构Java代码从编码到最后运行到两个核心步骤为"编译"和"执行"。"编译"会根据"源代码"产出对应的".class"文件&#xff0c;而"执行"就是让程序运行起来&#xff0c;运行的对象就是这些"…

【C语言学习笔记】:动态库

一、动态库 通过之前静态库那篇文章的介绍。发现静态库更容易使用和理解&#xff0c;也达到了代码复用的目的&#xff0c;那为什么还需要动态库呢&#xff1f; 1、为什么还需要动态库&#xff1f; 为什么需要动态库&#xff0c;其实也是静态库的特点导致。 ▶ 空间浪费是静…

怎么打造WhatsApp Team?SaleSmartly(ss客服)告诉你

关键词&#xff1a;WhatsApp Team SaleSmartly&#xff08;ss客服&#xff09; 您是否正在寻找一种让您的团队能够在 WhatsApp协作消息传递的解决方案?拥有了 WhatsApp Team&#xff0c;不仅效率提升&#xff0c;还可以在智能聊天工具中比如SaleSmartly&#xff08;ss客服&…

51单片机——中断系统,小白讲解,相互学习

中断介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的&#xff0c;中断功能的存在&#xff0c;很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一&#xff0c;是我们学些单片机必须要掌握的。 为了更容易的理解中断概念&…

算法思想 - 动态规划算法

动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中&#xff0c;可能会有许多可行解。每一个解都对应于一个值&#xff0c;我们希望找到具有最优值的解。动态规划算法与分治法类似&#xff0c;其基本思想也是将待求解问题分解成若干个子问题&#xff0c;先求解子问…

哈希表题目:判断路径是否相交

文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题&#xff1a;判断路径是否相交 出处&#xff1a;1496. 判断路径是否相交 难度 3 级 题目描述 要求 给你一个字符串 path\texttt…

【软考系统架构设计师】2022下案例分析历年真题

【软考系统架构设计师】2022下案例分析历年真题 【软考系统架构设计师】2022下案例分析历年真题【软考系统架构设计师】2022下案例分析历年真题2022下案例分析历年真题第一题&#xff08;25分&#xff09;2022下案例分析历年真题第二题&#xff08;25分&#xff09;2022下案例分…

使用纹理(Textures)

当物体表面并非是纯色的时候&#xff0c;比如带波点&#xff0c;斑纹或者表面有刮痕或被裂纹等&#xff0c;这些效果该如何实现呢&#xff1f; 这里我们需要提到一个概念是贴图&#xff08;Maps&#xff09;。Maps是覆盖在游戏物体上的2D图片&#xff0c;用来设置表面的颜色、s…

大数据-学习实践-1相关Linux

大数据-学习实践-1相关Linux (大数据系列) 文章目录大数据-学习实践-1相关Linux1知识点2具体内容2.1安装、使用2.2高级命令2.2.1文件2.2.2日期2.2.3进程2.2.4三剑客 (grep、sed、awk)2.3高级配置2.3.1分配IP&#xff1a;静态IP设置2.3.2起名&#xff08;hostname&#xff09;&…

工程经验:残差连接对网络训练的巨大影响

文章目录1、没有使用残差连接的网络难以训练2、loss 不下降的原因3、使用了残差连接的网络可以高效训练1、没有使用残差连接的网络难以训练 经典的 SegNet 网络结构如下&#xff1a; 在使用上图所示的 SegNet 作为噪声预测网络训练扩散模型&#xff08;DDPM&#xff09;时&…

Elasticsearch汉字补全和智能纠错使用详解

1 使用ES实现的效果 汉字补全 拼写纠错

Python自动化测试【软件测试最全教程(附笔记、学习路线)】,看完即就业

最近看到很多粉丝在后台私信我&#xff0c;叫我做一期Python自动化测试的教程&#xff0c;其实关于这个问题&#xff0c;我也早就在着手准备了&#xff0c;我录制了一整套完整的Python自动化测试的教程&#xff0c;上传到网盘里了&#xff0c;大家有兴趣的可以去文末交流群免费…

[架构之路-107]-《软考-系统架构设计师》-0-系统分析师与系统架构设计师简介与官网介绍

官网链接&#xff1a;https://www.ruankao.org.cn/index/ind计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试简介计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;以下简称计算机软件资格考试&#xff09;是原中国计算机软件专业技术…

化学试剂Glutaric Acid-PEG-Glutaric Acid,GA-PEG-GA,戊二酸-聚乙二醇-戊二酸

一&#xff1a;产品描述 1、名称 英文&#xff1a;Glutaric Acid-PEG-Glutaric Acid&#xff0c;GA-PEG-GA 中文&#xff1a;戊二酸-聚乙二醇-戊二酸 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Carboxylic acid PEG 4、分子量&#xff1a;可定制&#xff0c; 戊…