文档

深入:LoRaWAN®1.0.4 B类和C类终端设备

本文深入探讨了如何在实现LoRaWAN®1.0.4的终端设备中使用B类和C类。B类模式使终端设备定期接收下行链路;C类模式允许设备随时接收下行链路。本文针对的是终端设备软件开发人员和使用LoRa®构建设备的团队管理人员LoRaWAN链路层规范v1.0.4.我们将教您如何配置您的终端设备以使用信标和ping槽接收B类下行链路,遵循最佳实践以增加接收下行链路的机会,同时保持合理的电池寿命,以及如何接收C类下行链路。

理想情况下,您将使用软件来处理LoRaWAN的网络层,例如LoRaMAC-Node™LoRa Basics™调制解调器.本文为您提供所需的背景知识,帮助您充分了解软件的功能,并做出明智的决定,决定使用什么、何时使用、选择哪些设置,以及如何确保遵循最佳实践。我们还介绍了必须在应用层中实现的元素。此外,本文还将为您提供一些背景知识,使您能够自信地根据需要修改LoRaMAC-Node,甚至将LoRaMAC-Node或LoRa Basics Modem移植到其他语言和平台。

B类和C类模式简介

实现A类的设备在发送上行链路后,只能在一个或两个时间段内直接从网络服务器接收消息。我们的论文深度:用LoRaWAN发送和接收消息详细描述这一点。

A类设备可以切换到B类模式,详见启用并运行B类模式,它允许设备打开额外的接收窗口,在此期间可以从网络服务器接收消息。默认情况下,这些窗口大约每128秒打开一次;您可以按中所述增加此频率增加每个信标窗口使用的Ping槽数.打开B类操作所需的额外窗口比A类模式消耗更多的功率,但也支持更广泛的用例,前提是在接收消息之前可以接受短暂的延迟。例如,B级装置可用于在早期地震预警时关闭阀门。

对于那些需要立即采取行动的用例,例如在检测到泄漏时关闭水,终端设备必须在C类模式下运行。C类模式,如下所述C类:持续收听下行链接,允许设备在任何时候接收消息,除非它正在发送A类上行链路或侦听A类下行链路。C类模式功耗高于A类和B类模式,除非电池可以频繁更换,否则设备需要持续连接市电。

一个设备可以在一天或一个月的不同时间在A、B和C模式之间切换。或者,切换可以通过使用自定义应用程序下行链路来触发,终端设备可以使用该下行链路来确定何时更改类。在适当的时候切换类别比将设备永久保持在C类或B类模式会导致更低的电池使用量。

B类和C类模式也可用于通过空中(FUOTA)向一个或多个设备发送固件更新。你可以阅读更多关于FUOTA的信息TR002 v1.0.0 FUOTA流程摘要技术建议

同时向多个终端设备发送消息

B类和C类下行链路可以是单播的,发送到单端设备;或多播,同时发送到一组终端设备。当您需要同时向一组设备发送消息时,多播是有用的,例如关闭一个地区的所有路灯或在早期地震预警中关闭许多不同的阀门。在空中进行固件升级时,多播也很有用,因为您需要更新许多设备,并且单独更新它们将非常耗时。

接收多播消息的终端设备必须首先放置到一个多播组中,组中的每个设备共享相同的多播网络地址、多播会话密钥和多播帧计数器。

LoRaWAN链路层规范v1.0.4没有定义将终端设备加入多播组的标准方法,但指定该过程应该使用应用程序层建立,而不是核心LoRaWAN功能。在实践中,这意味着由您来定义作为应用程序下行链路(而不是MAC命令)传输的消息的格式和内容,并对您的终端设备进行编程以接收这些消息并对其进行操作。的LoRaWAN远程组播设置规范TS005-2.0.0提出了构建这些消息的标准安全方法,以及终端设备在接收每条消息时应采取的一组预定义操作。如果您打算实现多播,则应该实现并遵循此标准,这也允许您利用其他人可能生成的代码库和sdk。

发送B类和C类消息

B类和C类下行链路是从网络服务器发送到设备的。每个网络服务器将支持提供下行链路的各种选项,包括使用支持第三方集成的api,以及提供支持手动提交消息的用户界面。然后,网络服务器使用单个网关将下行链路发送到设备。如果设备运行在C类模式,网络服务器会立即广播该消息。如果终端设备已通知网络服务器其工作在B类模式,则网络服务器将等待一个时隙再发送该消息。了解更多关于如何确定这些时间段的信息Ping槽位窗口定时在下面。

请注意

网络服务器根据它最近从哪个网关接收到A类上行链路,通过确定哪个网关最有可能确保设备接收到消息来选择它将使用的网关。

由于网络服务器使用最近收到的A类上行链路的统计数据来选择网关,因此终端设备向网络服务器发送常规的A类上行链路非常重要。我们在下面讨论这个问题更新网络下行路由

启用并运行B类模式

下面的过程解释了终端设备应该如何通知网络服务器它已经准备好开始B类操作,以及与网络服务器同步时钟的步骤,以便它可以在消耗尽可能少的功率的同时接收大量的下行链路。

请求网络服务器时间

终端设备首先发送一条a类上行链路DeviceTimeReqMAC命令。没有与DeviceTimeReq MAC命令相关联的有效载荷;它作为单个octet命令标识符(CID)发送,设置为0 x0d的第5节,MAC命令(第27页)中描述LoRaWAN链路层规范v1.0.4.的指导方针发送消息(上行链路)并打开接收窗口本处深入:终端设备消息LoRaWAN 1.0.4关于发送包含MAC命令的上行链路的建议。

传输时包含上行链路DeviceTimeReq结束时,结束装置应注意其内部时间,此处简称为END_OF_DEVICETIMEREQ_TRANSMISSION_TIME

请注意

DeviceTimeReqMAC命令可以在录像字段,利用加密,除非同时有应用程序数据要发送。

中所描述的打开A类RX窗口接收讯息(下行)然后等待DeviceTimeAnsMAC命令在响应。如图1所示,DeviceTimeAns包含自GPS历元(1980年1月6日00:00:00 UTC)在上行链路传输结束时网络服务器上的秒数和小数秒数。阅读的完整规范DeviceTimeReqDeviceTimeAns第5.9节“终端设备时间命令(DeviceTimeReq, DeviceTimeAns)”(第41页LoRaWAN链路层规范v1.0.4

DeviceTimeAns包含的字段

图1:DeviceTimeAns中包含的字段

终端设备现在可以使用DeviceTimeAns随着传输结束时记录的内部时间(END_OF_DEVICETIMEREQ_TRANSMISSION_TIME),并相应地调整其内部时钟,使其与网络服务器的时钟相匹配。

警告

GPS历元不考虑闰秒,也不被认为是UTC时间。如果您的终端设备使用UTC时间,请相应地调整。

聆听信标

每个支持B类操作的网关都会广播一条消息,称为a灯塔,每128秒一次。信标允许终端设备继续将其内部时钟与网络服务器保持一致,并且,如果网关支持添加网关信息,还可以允许终端设备检测接收信标的网关是否已更改。

警告

并非所有网关都支持B类模式。网关必须有GPS来支持B类,因为GPS定时用于精确广播信标。选择具有GPS并在其数据表中列出B类支持的网关来使用B类。

信标授时

终端设备需要计算第一个信标将被广播的精确时刻,以便它可以侦听信标。终端设备应该已经将其内部时钟与前一步中描述的网络服务器的内部时钟对齐请求网络服务器时间

网络广播信标自从它计算GPS纪元的开始(1980年1月6日,00:00:00 UTC)每128秒一次。终端设备使用其本地时间,该时间已按照上一步所述同步到网络服务器请求网络服务器时间来计算何时开始监听第一个信标。如图2所示,终端设备还必须考虑以下需要进行的调整:

  • 1.5毫秒的延迟(TBeaconDelay),以便有时间让网关开始广播

  • 细微的差别(TAccuracy),其中网关广播消息的时间比预期的时间稍早或稍晚。此定时精度应由网关制造商提供。接收到第一个信标后前的字段可用于确定后续信标的最大时序差,如第13.5节“信标精确时序”(第70页)所述LoRaWAN链路层规范v1.0.4

信标计时,显示TBeaconDelay和TAccuracy

图2:信标计时

参考第13.5节,“信标精确定时”(第70页)LoRaWAN链路层规范v1.0.4查找用于计算何时开始侦听信标的完整算法集。

请注意

终端设备将使用每个信标中提供的定时来保持与网络服务器时钟的同步,这将在下一节中介绍处理和使用信标.然后,它在适当的时间继续侦听信标,始终考虑TBeaconDelayTAccuracy用之前的信标通信前的字段。

信标的数据速率和频率

侦听信标的频率和数据速率取决于终端设备将在其中运行的区域。

动态信道计划区域使用单个默认信道和数据速率广播所有信标。动态通道计划区域包括EU868,列在第21页RP002-1.0.3 LoRaWAN区域参数规范.要使用的默认信道和数据速率在“B类信标和默认下行信道”小节中指定RP002-1.0.3 LoRaWAN区域参数规范

所有其他区域,包括US915、AU915和CN470,采用跳频,即网关按顺序在每个信道上广播信标,在每个广播的信道之间交替。这些区域都使用单个默认数据速率。找到每个区域的数据速率和算法来计算该区域的“B类信标”部分中的信道跳频序列RP002-1.0.3 LoRaWAN区域参数规范

处理更新频率的请求

网络服务器可以请求终端设备更新其用于接收信标的频率,方法是使用BeaconFreqReqMAC命令。当BeaconFreqReq当收到MAC命令时,终端必须验证其无线电是否允许新的频率。然后,终端设备通过发送消息来通知网络服务器是否可以使用新频率BeaconFreqAnsMAC命令通过a类上行链路返回到网络服务器。

有关BeaconFreqReqBeaconFreqAnsMAC命令可以在第12.2节“BeaconFreqReq”(第63页)中找到RP002-1.0.3 LoRaWAN区域参数规范

当终端设备发送BeaconFreqAns确认可以使用新频率后,网络服务器将更新用于发送信标的频率,终端设备现在必须侦听新频率上的信标。新的单频取代了目前使用的任何跳频算法。

网络服务器可以通过发送a请求终端设备返回到其默认频率设置BeaconFreqReqMAC命令,使用频率字段设置为0.在终端设备响应确认这是可能的之后,它应该返回到使用动态信道计划区域的默认频率,或所有其他区域的跳频算法。

处理和使用信标

信标接收窗口应该保持打开足够长的时间以检测到序言。如果没有检测到前导,终端设备必须停止侦听,直到下一个预期的信标广播。查阅处理缺少信标节,以获取在未检测到信标时终端设备应如何运行的建议。

如果检测到序文,它开始被接收的精确时间必须由终端设备存储,这里称为BEACON_PREAMBLE_RECEIVE_TIME

然后,终端设备应该解调并处理信标。信标帧的长度和内容的位置取决于数据速率定义的扩展因子,该因子在不同区域之间是不同的。在您的终端设备将运行的区域中,通过查阅“B类信标”或“B类信标和默认下行链路信道”小节,找到要使用的扩频因子RP002-1.0.3 LoRaWAN区域参数规范.将扩展系数与表74(第67页)进行交叉参考LoRaWAN链路层规范v1.0.4以确定您所在区域的帧格式。

信标包含3个字段,将在接下来的步骤中使用:时间参数,GwSpecific

将时钟同步到时间参考

这四个时间信标中的八位字节表示从信标发送的那一刻起GPS历元所经过的秒数,按照标准的第13.2节“信标帧格式”(第68页)中的解释进行编码LoRaWAN链路层规范v1.0.4

终端设备应将其内部计时基准与文件中包含的时间对齐时间字段,使用第一次检测到信标的时刻,前面称为BEACON_PREAMBLE_RECEIVE_TIME

存储时间字段

终端设备必须存储时间字段暂时用于中描述的ping时隙定时算法Ping槽位窗口定时

使用Prec位更新TAccuracy

参数八位字节包含前的通信信标定时精度的位,在前面讨论过信标授时部分。的内容前的位应该用来更新TAccuracy的值,首先转换前的根据第13.2节“信标帧格式”(第68页)中的算法LoRaWAN链路层规范v1.0.4

使用GwSpecific(可选)

GwSpecific并不是所有的网关都发送字节,所以这个可能不存在。

如果GwSpecific八位元组是存在的,它们要么用于通信的GPS坐标的天线广播信标,或网络的NetID与网关标识符一起。中的数据理解规则GwSpecific第13.3节“Beacon GwSpecific Field Format”(第68页)LoRaWAN链路层规范v1.0.4

学习如何使用信息GwSpecific以提高B类设备在最佳实践部分的移动性能更新网络下行路由

通知网络服务器终端设备已进入B类模式

既然信标已经被检测和处理,终端设备可以通过发送B类位设置为1的a类上行链路来通知网络它将开始侦听B类下行链路。看到我们的深度:用LoRaWAN发送和接收消息有关如何发送上行链路和的详细文件B类钻头放在哪里.此消息可以为空;它不需要包含应用程序数据或MAC命令,如图3所示。

通信B类位的空消息格式

图3:传输B类位的空消息格式

继续进入B类模式

在第一个信标周期128秒后,终端设备应继续打开后续信标接收窗口,如聆听信标

如果在接收窗口期间检测到信标,则终端设备应继续使用时间的值,如处理和使用信标,以避免时钟漂移。如果终端设备正在监控网关,以确定何时发送上行链路,请参见使用GwSpecific(可选),则该数据应与每个接收到的信标一起更新。终端设备还必须继续打开ping插槽窗口,如收听B类下行链接

如果没有接收到信标,终端设备应按照引导在预期的时间继续打开ping槽窗口收听B类下行链接,并应通过中所述的措施处理缺少信标

终端设备不需要执行中的操作通知网络服务器端设备为B类模式直到B类模式被禁用。在接收到a类上行链路之前,网络服务器将记住在该设备上启用了B类模式ClassB位设置为0

警告

确保所有A类上行链路都有ClassB位设置为1在B类操作期间,否则会导致网络不小心停止发送B类下行链路。

接收到的所有后续下行链路应按照中所述进行处理处理B类下行链路

如果终端设备需要关闭B类模式,则应在该点进行编程,以发送上行链路ClassB位设置为0

请注意

如果您希望能够远程更改模式,请在收到自定义应用程序下行链路时将终端设备编程为关闭B类模式。您可以使用其他未使用的帧端口(FPort)值在1到223之间,帧负载为空(FRMPayload),以最少的数据实现这一目标。学习如何在我们的报纸上发送信息深度:用LoRaWAN发送和接收消息

B类最佳实务

处理缺少信标

如果终端设备在预期的时间内没有检测到信标,则使用终端设备的内部时钟继续侦听信标和B类下行链路,持续两小时。由于一系列原因(包括网关暂时禁用或过度干扰),可能在短时间内无法接收信标。在这两个小时的时间内,终端设备的内部时钟可能会偏离网络服务器的内部时钟,从而导致丢失信标和下行链路。为了补偿这种漂移,终端设备开始和结束侦听信标和B类下行链路的时间应该逐步扩大,随着每个信标周期的通过,侦听时间略早,时间略长。

在这两个小时的窗口中,如果检测到信标,则必须更新内部时钟,并且终端设备侦听信标和ping槽的持续时间应该重置为原始大小。然后必须重新设置两个小时的计时器,以便从这一刻起,终端设备将在没有信标的情况下继续侦听信标和B类下行链路两个小时。

在第10节“B类信标获取和跟踪”(第57页)中了解更多信息LoRaWAN链路层规范v1.0.4

B类和C类最佳实践

结论

在本文中,您学习了如何实现B类和C类模式LoRaWAN链路层规范v1.0.4同时实施最佳实践,以确保您的终端设备以尽可能低的延迟接收消息,同时消耗最小的电池寿命。你也开始学习广播了。

阅读本系列的其他文章:深入:LoRaWAN终端设备激活实现自适应数据速率,深入了解LoRaWAN MAC命令

完成本系列,您将能够放心地使用LoRaMAC-Node或LoRa Basics Modem,并根据需要修改设置和调试。考虑到所需的编程技能,您还应该能够在您喜欢的平台上为LoRaWAN网络层库编写代码或贡献开源代码。

进一步的阅读

请阅读以下技术规范,以全面了解LoRaWAN 1.0.4以及与B类和C类相关的概念:

请阅读我们关于其他LoRaWAN 1.0.4概念的论文:

要查看LoRaWAN在C版本的LoRaWAN链路层规范1.0.4的LoRa MAC层实现中如何实现的示例,请下载LoRaMAC-Node终端设备栈实现。阅读我们的LoRaMAC-Node动手实验学习如何使用LoRaMAC-Node参考实现。

Baidu
map