深入: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)在上行链路传输结束时网络服务器上的秒数和小数秒数。阅读的完整规范DeviceTimeReq和DeviceTimeAns第5.9节“终端设备时间命令(DeviceTimeReq, DeviceTimeAns)”(第41页LoRaWAN链路层规范v1.0.4
终端设备现在可以使用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.
参考第13.5节,“信标精确定时”(第70页)LoRaWAN链路层规范v1.0.4查找用于计算何时开始侦听信标的完整算法集。
请注意
终端设备将使用每个信标中提供的定时来保持与网络服务器时钟的同步,这将在下一节中介绍处理和使用信标.然后,它在适当的时间继续侦听信标,始终考虑TBeaconDelay和TAccuracy用之前的信标通信前的字段。
信标的数据速率和频率¶
侦听信标的频率和数据速率取决于终端设备将在其中运行的区域。
动态信道计划区域使用单个默认信道和数据速率广播所有信标。动态通道计划区域包括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类上行链路返回到网络服务器。
有关BeaconFreqReq和BeaconFreqAnsMAC命令可以在第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类下行链接¶
现在,网络服务器将在发送信标后的特定时间发送任何排队的B类下行消息。本节解释终端设备如何在广播下行消息时计算打开额外接收窗口的确切时间,以及确定要侦听的适当数据速率和频率。
Ping槽位窗口定时¶
信标每128秒广播一次。在第一次检测到信标时,会有2.120秒的时间,在此期间不会接收到下行链路,从而有时间对信标进行解调。这个时期被称为BEACON_RESERVED在规范中。
在接收下一个信标之前,有3秒的时间不会发送下行链路,以便在广播下一个信标之前有时间完成任何B类下行链路的传输。这一时期被称为BEACON_GUARD在规范中。
有一个信标窗口(BEACON_WINDOW)的122.880秒,在此期间B类下行链路可以在BEACON_RESERVED接收到前一个信标后的一段时间BEACON_GUARD接收下一个信标前的时间间隔。
信标窗口周期分为4096个窗口,每个窗口30ms,在规范中称为ping槽。然后由网络服务器选择一个或多个ping槽来广播任何排队的下行链路,如图5所示。
用于发送下行链路的ping槽在每个信标周期和每个终端设备上都是随机的,这减少了网关必须同时传输多个下行链路的机会。网络服务器运行一种算法来识别它将在每个信标周期内使用的ping插槽;终端设备运行相同的算法,以便在网络服务器传输的同时开始侦听。
使用第11.2节“插槽随机化”(第60页)中的算法LoRaWAN链路层规范v1.0.4计算必须打开下行窗口的次数。该算法需要以下输入:
结束设备地址(DevAddr)
在监听单播消息时,使用DevAddr这是在终端设备激活过程中设置的,如本文所述深入:LoRaWAN终端设备激活.
在侦听组播消息时,使用组播网络地址作为DevAddr;这是在LoRaWAN核心规范之外配置的。看到同时向多个终端设备发送消息有关广播的更多详情。
周期性
在收听单播消息时,周期性是一个可配置的设置,终端设备和网络服务器使用它来计算在每个信标窗口期间将用于传输的ping槽数。用于转换的算法周期性值转换为每个信标窗口将使用的ping槽数(PingNb的第11.2节“插槽随机化”(第60页)LoRaWAN链路层规范v1.0.4.
结束设备应该使用默认值开始周期性值,定义为7的第2.3节“默认设置”RP002-1.0.3 LoRaWAN区域参数规范.的周期性价值7表示每个信标周期使用一个ping槽,如图5中的示例所示,这意味着终端设备只需要在122.880秒信标窗口的单个30ms周期内侦听。
终端设备可以修改周期以增加在每个信标窗口期间使用的ping插槽的数量,如中所述增加每个信标窗口使用的Ping槽数.
在侦听多播消息时,的值周期性是在LoRaWAN规范之外由应用层定义的。TS005-2.0.0 LoRAWAN远程组播设置规范包含使用组播时管理周期性的推荐方法。
信标时间
在信标窗口开始处接收到的信标有效载荷中找到信标时间值时间字段。终端设备应该已经保存了这个值,如存储时间字段,现在可以取回它。
该算法将输出将要使用的ping插槽,并计算打开每个插槽的时间。
如果终端设备同时期待单播和多播消息,如图6所示,则算法应该运行两次,首先是单播消息DevAddr和周期性,然后是第二次多播DevAddr和周期性.然后终端设备可以监听将在信标窗口期间使用的单播和多播槽。
请注意
如果一个B类插槽需要与a类接收窗口同时打开,则a类接收窗口具有优先级。收听A类频率和数据速率打开A类接收窗口,而不是B类频率和数据速率。
增加每个信标窗口使用的Ping槽数¶
终端设备可以增加每个信标窗口的单播ping槽数周期性田野PingSlotParam八位元PingSlotInfoReqMAC命令。
请注意
改变了周期性只改变单播下行链路的ping槽;方法不能修改组播下行链路的周期PingSlotInfoReq命令。的LoRaWAN远程组播设置规范v1.0.0提出了一种组播下行链路周期管理方法。
发送MAC命令前,请关闭终端设备的B类操作,停止侦听信标和ping槽位的窗口。
发送PingSlotInfoReqMAC命令作为a类上行链路,B类使能位(ClassB)设置为0。
的规格PingSlotInfoReqMAC命令见第12.1节“PingSlotInfoReq”(第62页)LoRaWAN链路层规范v1.0.4.的周期性取值范围为0 ~ 7,用无符号3位整数表示。
发送PingSlotInfoReq,则终端设备必须侦听aPingSlotInfoAns在一个A类接收窗口中携带空有效载荷。
如果没有PingSlotInfoAns是收到的,那么终端设备一定不能更新其周期性值,应该尝试重试MAC命令。如果使用自适应数据速率(ADR),设备可以启动我们在论文中解释的回退过程实现自适应数据速率(ADR)尝试重新获得与网络服务器的连接。
如果一个PingSlotInfoAns,则终端设备必须更新其周期性值转换为传输值。然后,终端设备可以通过再次侦听信标重新开始B类操作,当接收到信标时,在a类上行链路中发送B类位,并恢复侦听下行链路。
警告
避免修改周期性除非你有足够的理由这么做。一个周期性为0意味着在信标窗口期间每秒打开一个ping插槽,虽然这会增加接收下行链路的机会,但也会增加功耗。任何低于7的值都会增加信标窗口内的ping槽数,因此请使用中描述的算法仔细选择该值周期性.
接收下行链路的数据速率¶
单播或组播ping槽的默认数据速率与用于接收信标的数据速率相同,如标准的2.3节“默认设置”所述RP002-1.0.3 LoRaWAN区域参数规范在设置下PING_SLOT_DATARATE.
默认数据速率取决于终端设备将运行的区域。
如果您的终端设备将运行的区域使用动态信道计划,请在第2章的“B类信标和默认下行信道”小节中找到该区域的默认信标数据速率RP002-1.0.3 LoRaWAN区域参数规范.
对于所有其他区域,信标数据速率在该区域部分的“B类信标”小节中找到。
接收下行链路的频率¶
单播或多播ping槽的默认频率取决于您的终端设备将运行的区域。
如果您的终端设备将运行的区域使用动态信道计划,则要使用的频率在第2章的区域部分的“B类信标和默认下行信道”小节中描述为“B类默认下行信道频率”RP002-1.0.3 LoRaWAN区域参数规范.
CN470区域,参考CN470-510 B类信标(60页)章节RP002-1.0.3 LoRaWAN区域参数规范描述如何计算将使用哪个频率。
对于US915和AU915区域,终端设备应使用按照第14.2节“跳频信标传输”(第73页)中定义的算法定义的信道RP002-1.0.3 LoRaWAN区域参数规范这就解释了如何使用时间前一个信标和DevAddr计算用于给定ping槽的信道。
打开接收窗口监听B类下行链路¶
终端设备现在知道何时开始侦听,以及侦听的数据速率和频率。ping槽窗口应该保持打开足够长的时间,以检测序言。如果未检测到序言,则设备应停止侦听。如果检测到前导,则该窗口应保持打开状态,直到消息被解调。中描述的方法处理消息处理B类下行链路.
处理更新下行频率和数据速率的请求¶
网络服务器可以请求终端设备改变将通过发送所述的单播下行链路接收的频率和数据速率PingSlotChannelReqMAC命令。当PingSlotChannelReq当收到MAC命令时,终端必须验证其无线电是否允许新的频率和数据速率。然后,终端设备通过发送消息来通知网络服务器是否可以使用新的频率和数据速率PingSlotChannelAnsMAC命令,尽快使用a类上行链路。
有关PingSlotChannelReq和PingSlotChannelAnsMAC命令可以在第12.3节“PingSlotChannelReq”(第64页)中找到RP002-1.0.3 LoRaWAN区域参数规范.
当终端设备发送一个PingSlotChannelAns确认它可以使用新的频率和数据速率,网络服务器将更新它用于发送B类单播下行链路的频率和数据速率,并且终端设备现在必须在新的频率和数据速率上侦听此类下行链路。新的单频取代了目前使用的任何跳频算法。
网络服务器可以通过发送a请求终端设备返回到其默认频率设置PingSlotChannelReqMAC命令,频率字段设置为0.在终端设备响应确认这是可能的之后,它应该返回到使用默认频率,包括之前使用的任何跳频算法。
处理B类下行链路¶
B类下行链路使用相同的格式,可以用与A类下行链路相同的方式进行解释,但有以下例外:
的FPendingB类下行链路中的bit与FPending在A类下行链路中发送时。的9.2节“下行链路帧”(第54页)LoRaWAN链路层规范v1.0.4要了解FPending在发生ping槽冲突时,B类下行链路中的bit用于对ping槽序列进行优先排序。
B类下行链路不能包含MAC命令。包含MAC命令的下行链路应忽略。
如果B类下行链路是组播,除了上述考虑之外,终端设备还应该验证消位设置为0和FType字段设置为011(未经确认的数据下行链路),否则应丢弃整个帧。
读了处理下行报文我们论文的一部分深度:用LoRaWAN发送和接收消息学习如何解读A、B和C类下行链路。
响应已确认的B类下行链路¶
如果终端设备接收到确认的下行链路FType字段设置为101),则端设备必须发送a类上行链路消位设置为1(响应)在时间范围内描述响应已确认的下行链路.
继续进入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.
C类:持续收听下行链接¶
C类模式下的终端设备侦听下行链路,除非它们正在广播A类上行链路或打开A类接收窗口,如打开下行窗口我们论文的一部分深度:用LoRaWAN发送和接收消息.
通过在网络服务器上注册终端设备时,将终端设备识别为支持C类的设备,从而启用C类模式。然后,网络服务器将使用单个网关立即发送它接收到的任何下行链路。
听一下C类下行链接¶
要在C类模式下工作,终端设备应该使用频率和数据速率参数的组合来收听,称为RXC.如图7和图8所示,终端设备应该只在RXC当它发送a类上行链路时,或者当它在a类接收窗口期间侦听a类下行链路时,频率和数据速率。
C类下行链路可以是单播的,发送到单端设备;或多播,同时发送到一组终端设备。我们在同时向多个终端设备发送消息.
当侦听单播C类下行链路时,终端设备应在第二个A类接收窗口RX2使用的相同频率和数据速率上侦听。在“接收窗口”部分找到RX2数据速率和频率,用于您的终端设备在区域内操作RP002-1.0.3 LoRaWAN区域参数规范.
侦听组播下行链路时,终端设备应按照配置组播操作时定义的频率和数据速率进行侦听。的LoRaWAN远程组播设置规范TS005-2.0.0提供关于设置多播的指导。如果应用程序需要同时侦听单播和组播下行链路,则必须配置网络服务器和应用程序为组播下行链路使用RX2频率和数据速率。
警告
如果终端设备正在解调C类下行链路,此时需要打开RX1或RX2窗口,则应终止解调,终端设备必须打开RX1或RX2窗口。
处理更新单播数据速率和频率的请求¶
网络服务器可以请求终端设备更新RX2使用的频率和数据速率,因此单播下行链路将通过发送RXParamSetupReqMAC命令。当RXParamSetupReq当收到MAC命令时,终端必须验证其无线电是否允许新的频率和数据速率。然后,终端设备通过发送消息来通知网络服务器是否可以使用新的频率和数据速率RXParamSetupAnsMAC命令,尽快使用a类上行链路。
有关RXParamSetupReq和RXParamSetupAnsMAC命令可以在5.4节“接收Windows参数(RXParamSetupReq, RXParamSetupAns)”(第33页)中找到LoRaWAN链路层规范v1.0.4.
当终端设备发送一个RXParamSetupAns确认它可以使用新的频率和数据速率,网络服务器将更新用于发送C类单播下行链路的频率和数据速率,并且终端设备现在必须在新的频率和数据速率上侦听此类下行链路。
警告
当网络服务器发送RXParamSetupReq命令,它将不再发送任何C类下行链路,直到它收到RXParamSetupAns终端设备的响应。因此,重要的是终端设备响应RXParamSetupAns在a类上行链路中,在收到RXParamSetupReq命令。
处理C类下行链路¶
C类下行链路使用相同的格式,可以用与A类下行链路相同的方式解释,但有以下例外:
C类下行链路可能不包含MAC命令。包含MAC命令的下行链路应忽略。
如果C类下行链路是组播,除了上述例外情况外,还适用以下情况:
终端设备应验证消位设置为0和FType字段设置为011(未经确认的数据下行链路),否则应丢弃整个帧。
的FPendingB类下行链路中的bit与FPending在A类下行链路中发送时。的9.2节“下行链路帧”(第54页)LoRaWAN链路层规范v1.0.4要了解FPending在发生ping槽冲突时,B类下行链路中的bit用于对ping槽序列进行优先排序。
读了处理下行报文我们论文的一部分深度:用LoRaWAN发送和接收消息学习如何解读A、B和C类下行链路。
响应已确认的C类下行链路¶
如果终端设备接收到确认的下行链路FType字段设置为101),则端设备应发送a类上行链路消位设置为1(响应)在时间范围内描述响应已确认的下行链路.
响应已确认的下行链路¶
如果终端设备接收到确认的下行链路FType字段设置为101)时,端设备应发送a类上行链路消位设置为1(答复)在下列时间范围内提交。
在定义的时间之前,终端设备不能发送响应RETRANSMIT_TIMEOUT加上上行帧的最大播出时间。的价值RETRANSMIT_TIMEOUT的2.3节中定义为1到3秒之间的随机延迟RP002-1.0.3 LoRaWAN区域参数规范.
如果终端设备没有使用ADR,也没有设置美国存托凭证在上行链路中,A类上行响应必须在结束前发送CLASS_B_RESP_TIMEOUT为B类模式,或CLASS_C_RESP_TIMEOUT为C类模式,两者的定义均为8秒RP002-1.0.3 LoRaWAN区域参数规范.
如果终端设备正在使用ADR,并且正在设置美国存托凭证在上行链路中,A类上行响应必须在使用规范中声明的算法导出的时间量结束之前发送。
B类算法,见第9.3.1节“单播下行链路ping帧格式”(第55页)LoRaWAN链路层规范v1.0.4是:
CLASS_B_RESP_TIMEOUT*NbTrans+RECEIVE_DELAY2* (NbTrans1)
C类算法,第15节“连续侦听终端设备(C类)”(第75页)LoRaWAN链路层规范v1.0.4是:
CLASS_C_RESP_TIMEOUT*NbTrans+RECEIVE_DELAY2* (NbTrans1)
这些算法中使用的变量定义如下:
B类响应超时(CLASS_B_RESP_TIMEOUT) / C类响应超时(CLASS_C_RESP_TIMEOUT)
的2.3节中都定义为8秒RP002-1.0.3 LoRaWAN区域参数规范.
重传次数(NbTrans)
的默认值。NBTrans应该设置为1如规范章节5.2 Link ADR Commands(第29页)所定义TS001-1.0.4 LoRaWAN L2 1.0.4规范.
的价值NBTrans由网络使用NBTrans字段中冗余八进制LinkADRReqMAC命令。如果终端设备收到NBTransa中的值LinkADRReqMAC命令,并返回一个LinkADRAns,那么它应该使用更新后的值为NBTrans.阅读更多链路自适应数据速率(ADR)命令部分我们的论文深入了解LoRaWAN MAC命令.
在ADR撤销程序,NBTrans值被重置为1.
RECEIVE_DELAY2
这是终端设备在打开第二接收窗口之前在A类上行链路传输结束后等待的时间量。RECEIVE_DELAY2应该设置为RECEIVE_DELAY1的默认设置章节2.3中定义的加1秒RP002-1.0.3 LoRaWAN区域参数规范.RECEIVE_DELAY1指终端设备在A类上行链路传输结束后打开第一接收窗口前等待的时间量。
设备复位后,RECEIVE_DELAY1应设置为1秒,如?的2.3默认设置章节所定义RP002-1.0.3 LoRaWAN区域参数规范.
如果终端设备已经使用OTAA加入网络,则RECEIVE_DELAY1应该更新为?中所传达的值RXDelay字段中,如处理下行链路配置设置(DLSettings和RXDelay)我们论文的一部分深入:LoRaWAN终端设备激活.
网络服务器也可能尝试更新RECEIVE_DELAY1的值▽字段RXTimingSetupReq章节5.7设置TX和RX之间的延迟(第39页)中描述LoRaWAN链路层规范v1.0.4.如果终端设备收到RXTimingSetupReq他的回答是RXTimingSetupAns那么它应该用这个▽值为RECEIVE_DELAY1.
为了确保响应到达网络服务器,建议传输响应NbTrans最大允许延迟结束前的次数。最佳做法是在允许的时间段内随机播放响应的每个副本。
在第9.3.1节,单播下行链路ping帧格式(第55页)中了解更多关于响应已确认的上行链路的信息LoRaWAN链路层规范v1.0.4.
B类和C类最佳实践¶
更新网络下行路由¶
网络服务器通过分析接收A类上行链路的网关来计算使用哪个网关将下行链路传输到终端设备。随着时间的推移,环境因素可能会引起干扰,或者终端设备可能会移动,这意味着最有可能到达终端设备的网关可能会发生变化。为了保证网络的更新,终端设备必须定期广播A类上行链路。这必须在LoRaWAN网络层之外处理,因此在设计应用程序时必须考虑到这一点。关于发送常规上行链路的频率的决定应该考虑您的用例,B类下行链路对设备操作的重要性,以及确保合理的电池寿命。
如果您知道您的终端设备将定期移动,您可以对设备进行编程,使其在发生重大移动后发送额外的上行链路。此上行链路将通过新位置中最近的网关发送,网络将选择其中一个发送后续下行链路。
如果您的终端设备上有GPS或加速度计,这可以用来检测设备已经移动并触发上行链路。或者,终端设备可以使用网关特定的(GwSpecific信标的八位字节,它标识从哪个网关接收信标。的GwSpecific每个信标的八字节可以与最近的信标记录进行比较,以确定何时看到了新的网关。如果看到一个新的网关,终端设备可以假设它可能已经移动,并发出a类上行链路来更新网络。因为不是每个网关都包含网关特定字段,如果可用,GPS或加速度计是更可靠的选择。了解更多有关GwSpecific第13.3节“Beacon GwSpecific field Format”(第68页)中的字段LoRaWAN链路层规范v1.0.4.
结论¶
在本文中,您学习了如何实现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参考实现。