一种多通道LoRaWAN网关下行调度方法[发明专利]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010361431.6
(22)申请日 2020.04.30
(71)申请人 成都慧简联信息科技有限公司
地址 610000 四川省成都市天府新区湖畔
路北段366号1栋3楼1号
(72)发明人 杨鲲 梁萧 刘强 梅海波 
(74)专利代理机构 北京天奇智新知识产权代理
有限公司 11340
代理人 许驰
(51)Int.Cl.
H04W 72/12(2009.01)
H04L 12/851(2013.01)
H04L 12/863(2013.01)
(54)发明名称
一种多通道LoRaWAN网关下行调度方法
(57)摘要
本发明公开了一种多通道LoRaWAN网关下行
调度方法,针对LoRaWAN网络中下行通信数量较
多时,网关发送下行数据易发生冲突、Class C类
型下行数据发送延时较长等问题,根据时间戳判
断下行数据的类型,选择合适的下行队列,判断
数据是否可以插入队列,使用不同的射频通道进
行发送;对Class A和Class B类型的下行数据,
根据时间戳判断能否插入队列;对Class C类型
的下行数据,在待插入下行队列寻找合适的位置
插入数据;对入队失败的下行数据,随机选择其
他的下行队列,再次尝试插入队列,直到找到可
插入的下行队列或丢弃数据。

权利要求书2页 说明书6页 附图4页CN 111711994 A 2020.09.25
C N 111711994
A
1.一种多通道LoRaWAN网关下行调度方法,其特征在于,根据时间戳判断下行数据的类型,选择待插入的下行队列,判断数据是否可以插入队列,使用不同的射频通道进行发送;对Class A和Class B类型的下行数据,根据时间戳插入队列;对Class C类型的下行数据,在待插入下行队列寻找位置插入数据;对入队失败的下行数据,随机选择其他的下行队列,再次尝试插入队列,直到找到可插入的下行队列或丢弃数据。

2.根据权利要求1所述的一种多通道LoRaWAN网关下行调度方法,其特征在于,网关根据下行数据的时间戳信息,判断下行数据的类型,并选择一个待插入下行队列;对Class A 和Class B类型的下行数据,根据时间戳插入队列;在下行队列中为Class C类型的下行数据寻找插入位置,计算时间戳的值,具体包括以下步骤:
A1、根据下行数据时间戳的值,判断下行数据的类型,若下行数据的时间戳不为0,则为Class A或Class B类型的下行数据,否则为Class C类型的下行数据;
A2、对Class A或Class B类型的下行数据,根据下行数据携带的port字段,选择port编号对应的下行队列作为待插入的队列;对Class C类型的下行数据,随机选择一个下行队列,作为待插入队列,执行步骤A3;
A3、在待插入的下行队列中,为Clsss C类型的下行数据寻找合适的插入位置,并设置临时时间戳;
A4、将当前Class C类型下行数据的时间戳的值设置为临时时间戳的值。

3.根据权利要求2所述的一种多通道LoRaWAN网关下行调度方法,其特征在于,步骤A3具体为:
A31、若队列为空,则将当前数据的时间戳临时设置为当前系统时间加1s,执行步骤A4;否则执行步骤A32;
A32、根据网关系统时间设置当前数据的临时时间戳;判断当前数据的临时时间戳与队首数据的时间戳是否发生冲突,尝试将数据插入队首;若发生冲突,则执行步骤A33;否则执行步骤A4;
A33、遍历下行队列,根据遍历到的数据的时间戳设置当前数据的临时时间戳;判断当前数据的临时时间戳是否与队列中下一个数据的时间戳发生冲突,尝试将当前数据插入遍历到的数据之后;若发生冲突,则继续遍历队列,直到遍历到队尾,否则执行步骤A4。

4.根据权利要求3所述的一种多通道LoRaWAN网关下行调度方法,其特征在于,根据下行数据时间戳的值,判断当前数据是否可以插入选择的下行队列中;若不能插入队列,则根据报错类型对下行数据进行不同的操作,具体包括以下步骤:
B1、根据下行数据的时间戳判断当前数据入队时间是否过早,若是,则转到步骤B5;否则执行步骤B2;
B2、根据下行数据的时间戳判断当前数据入队时间是否过晚,若是,则丢弃当前数据,结束下行流程;否则执行步骤B3;
B3、遍历下行队列,判断当前数据的时间戳与下行队列中已有数据的时间戳是否发生冲突,尝试将数据插入队列,若遍历完队列,未发生冲突,则将当前数据插入下行队列;否则执行步骤B4;
B4、选择一个其他下行队列,尝试将当前数据插入队列。

5.根据权利要求4所述的一种多通道LoRaWAN网关下行调度方法,其特征在于,步骤B4
具体为:
B41、随机选择一个未尝试过入队的下行队列作为待插入队列;若尝试插入所有队列失败,则丢弃当前数据,结束下行流程,否则执行步骤B42;
B42、对Class A或Class B类型的下行数据,将数据时间戳转换为待插入队列的时间戳,返回步骤B1;对Class C类型的数据,将数据时间戳重置为0,返回步骤A3。

6.根据权利要求5所述的一种多通道LoRaWAN网关下行调度方法,其特征在于,将满足要求的下行数据插入队列,并对下行队列进行排序,等待发送数据,具体包括以下步骤:C1、将当前数据插入下行队列的队尾,若插入数据为Beacon,则将Beacon计数器的值加1;
C2、根据时间戳大小对下行队列中的数据进行排序。

一种多通道LoRaWAN网关下行调度方法
技术领域
[0001]本发明属于低功耗广域网通信技术领域,特别涉及一种多射频通道的 LoRaWAN网关下行通信调度技术。

背景技术
[0002]LoRaWAN作为一种长距离、低功耗、低成本的物联网技术,广泛应用于各种海量设备接入的物联网场景。

对于海量设备的物联网场景,重要的两个参数是通信可靠性和网络容量。

[0003]对于通信可靠性,海量设备的影响主要体现在数据传输时的冲突。

在现有LoRaWAN 网络的研究中,提出了多种方案来降低上行通信的冲突概率,如优化信道分配方法、改进ADR策略,以及改进冲突避免方式等。

但对下行通信冲突概率的优化,也多是通过对上行通信的合理规划实现,目前还没有方案直接对下行通信冲突进行优化。

[0004]对于网络容量,单个LoRaWAN网关可以支持数万个终端节点的上行通信,但是在同时考虑下行通信的情况下,网关的容量会大幅度降低,且目前没有有效的措施增加网关的设备容量。

[0005]因此,LoRaWAN网络的下行通信成为了限制网络通信可靠性和网络容量的主要原因。

为提高LoRaWAN网关的数据转发能力,可以将网关扩展为多通道射频结构。

在保持LoRaWAN网关硬件系统基本结构不变的前提下,为LoRaWAN网关增加多个射频设备。

LoRaWAN 网关最多可以支持4路射频设备,每路射频设备具有相同的结构和性能,且互相独立,通过SPI接口与控制部分连接。

[0006]多通道LoRaWAN网关中,上行线程扩展为多个线程,每个线程维护了一个接收缓冲区,缓存该射频通道接收的上行数据。

网关同时维护了多个发送队列,每个队列缓存一个射频通道需要发送的下行数据,并使用一个独立的jit线程进行维护。

同时每个下行数据都携带了一个port字段,标识默认的下行待插入队列编号,用于队列选择和时间同步。

[0007]通过多通道LoRaWAN网关下行调度方法,下行线程在将下行数据存入下行队列时,首先进行队列选择,根据队列情况和数据类型将数据放入合适的发送队列,保证下行数据被成功发送的概率最高。

发明内容
[0008]针对LoRaWAN网络中下行通信数量较多时,网关发送下行数据易发生冲突、Class C类型下行数据发送延时较长等问题,本发明提出一种适用于多通道 LoRaWAN网关的下行调度方法,使网关可以合理调度下行通信所使用的物理信道,提升下行数据的发送成功率,特别是保证Class C类型数据的发送成功率和发送延时,同时增加网络容量。

[0009]本发明采用的技术方案为:一种多通道LoRaWAN网关下行调度方法,根据时间戳判断下行数据的类型,选择待插入的下行队列,判断数据是否可以插入队列,使用不同的射频通道进行发送;对Class A和Class B类型的下行数据,根据时间戳插入队列;对Class C类
型的下行数据,在待插入下行队列寻找位置插入数据;对入队失败的下行数据,随机选择其他的下行队列,再次尝试插入队列,直到找到可插入的下行队列或丢弃数据。

具体包括以下实现过程:
[0010]首先,网关根据下行数据的时间戳信息,判断下行数据的类型,并选择一个待插入下行队列;对Class A和Class B类型的下行数据,根据时间戳插入队列;在下行队列中为Class C类型的下行数据寻找插入位置,计算时间戳的值,具体包括以下步骤:
[0011]A1、根据下行数据时间戳的值,判断下行数据的类型,若下行数据的时间戳不为0,则为Class A或Class B类型的下行数据,否则为Class C类型的下行数据;
[0012]A2、对Class A或Class B类型的下行数据,根据下行数据携带的port字段,选择port编号对应的下行队列作为待插入的队列;对Class C类型的下行数据,随机选择一个下行队列,作为待插入队列,执行步骤A3;
[0013]A3、在待插入的下行队列中,为Clsss C类型的下行数据寻找合适的插入位置,并设置临时时间戳;步骤A3具体为:
[0014]A31、若队列为空,则将当前数据的时间戳临时设置为当前系统时间加1s,执行步骤A4;否则执行步骤A32;
[0015]A32、根据网关系统时间设置当前数据的临时时间戳;判断当前数据的临时时间戳与队首数据的时间戳是否发生冲突,尝试将数据插入队首;若发生冲突,则执行步骤A33;否则执行步骤A4;
[0016]A33、遍历下行队列,根据遍历到的数据的时间戳设置当前数据的临时时间戳;判断当前数据的临时时间戳是否与队列中下一个数据的时间戳发生冲突,尝试将当前数据插入遍历到的数据之后;若发生冲突,则继续遍历队列,直到遍历到队尾;否则执行步骤A4。

[0017]A4、将当前Class C类型下行数据的时间戳的值设置为临时时间戳的值。

[0018]其次,根据下行数据时间戳的值,判断当前数据是否可以插入选择的下行队列中;若不能插入队列,则根据报错类型对下行数据进行不同的操作,具体包括以下步骤:[0019]B1、根据下行数据的时间戳判断当前数据入队时间是否过早,若是,则转到步骤B4;否则执行步骤B2;
[0020]B2、根据下行数据的时间戳判断当前数据入队时间是否过晚,若是,则丢弃当前数据,结束下行流程;否则执行步骤B3;
[0021]B3、遍历下行队列,判断当前数据的时间戳与下行队列中已有数据的时间戳是否发生冲突,尝试将数据插入队列,若遍历完队列,未发生冲突,则将当前数据插入下行队列;否则执行步骤B4;
[0022]B4、选择一个其他下行队列,尝试将当前数据插入队列;步骤B4具体为:
[0023]B41、随机选择一个未尝试过入队的下行队列作为待插入队列;若尝试插入所有队列失败,则丢弃当前数据,结束下行流程;否则执行步骤B42;
[0024]B42、对Class A或Class B类型的下行数据,将数据时间戳转换为待插入队列的时间戳,返回步骤B1;对Class C类型的数据,将数据时间戳重置为0,返回步骤A3。

[0025]最后,将满足要求的下行数据插入队列,并对下行队列进行排序,等待发送数据,具体包括以下步骤:
[0026]C1、将当前数据插入下行队列的队尾。

若插入数据为Beacon,则将Beacon 计数器
的值加1。

[0027]C2、根据时间戳大小对下行队列中的数据进行排序。

[0028]本发明的有益效果:本发明的一种多通道LoRaWAN网关下行调度方法,可以提升LoRaWAN网络中下行数据的发送成功率,增加网络的设备容量;同时可以明显降低Class C 类型下行数据的平均发送延时。

本发明的方法具备以下优点:
[0029]1、为每个射频通道维护一个下行队列,使队列可容纳的下行数据总数量更多,多个通道可以并行发送下行数据,增加了LoRaWAN网关的数据转发能力和网络容量;[0030]2、对Class A和Class B类型的下行数据,根据时间戳判断数据是否可以加入下行队列,保证进入下行队列的数据可以成功发送,显著提升了下行数据的发送成功率;[0031]3、对Class C类型的下行数据,不设置固定的时间戳,而是在下行队列中寻找合适的位置插入数据,大幅度提升了Class C类型下行数据的发送成功率,同时明显降低了数据的发送延时。

附图说明
[0032]附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。

在附图中:
[0033]图1为本发明实施例提供的硬件结构框图;
[0034]图2为本发明实施例提供的原理框图;
[0035]图3为本发明实施例提供的Class A和Class B类型下行数据入队流程框图;[0036]图4为本发明实施例提供的Class C类型下行数据入队流程框图。

具体实施方式
[0037]为便于本领域技术人员理解本发明的技术内容,下面结合附图对本发明内容进一步阐释。

[0038]如图1所示,多通道LoRaWAN网关最多支持四路射频通道,每路射频设备结构相同,其中的基带芯片SX1301通过SPI与控制部分的ARM核心板相连接。

[0039]如图2所示,本发明涉及的一种多通道LoRaWAN网关下行调度方法,根据时间戳判断下行数据的类型,选择待插入的下行队列,判断数据是否可以插入队列,使用不同的射频通道进行发送;对Class A和Class B类型的下行数据,根据下行数据字段插入队列;对Class C类型的下行数据,在待插入下行队列寻找位置插入数据;对入队失败的下行数据,随机选择其他的下行队列,再次尝试插入队列,直到找到可插入的下行队列或丢弃数据。

[0040]可选地,网关根据下行数据的时间戳信息,判断下行数据的类型,并选择一个待插入下行队列;对Class A和Class B类型的下行数据,根据下行数据字段插入队列;在下行队列中为Class C类型的下行数据寻找插入位置,计算时间戳的值,具体包括以下步骤:[0041]A1、根据下行数据时间戳的值,判断下行数据的类型,若下行数据的时间戳不为0,则为Class A或Class B类型的下行数据,否则为Class C类型的下行数据;
[0042]A2、对Class A或Class B类型的下行数据,根据下行数据携带的port字段,选择port编号对应的下行队列作为待插入的队列;对Class C类型的下行数据,随机选择一个下行队列,作为待插入队列,执行步骤A3;
设置临时时间戳;
[0044]A4、将当前Class C类型下行数据的时间戳的值设置为临时时间戳的值。

[0045]可选地,步骤A3具体为:
[0046]A31、若队列为空,则将当前数据的时间戳临时设置为当前系统时间加1s,执行步骤A4;否则执行步骤A32;
[0047]A32、根据网关系统时间设置当前数据的临时时间戳;判断当前数据的临时时间戳与队首数据的时间戳是否发生冲突,尝试将数据插入队首;若发生冲突,则执行步骤A33;否则执行步骤A4;
[0048]A33、遍历下行队列,根据遍历到的数据的时间戳设置当前数据的临时时间戳;判断当前数据的临时时间戳是否与队列中下一个数据的时间戳发生冲突,尝试将当前数据插入遍历到的数据之后;若发生冲突,则继续遍历队列,直到遍历到队尾;否则执行步骤A4。

[0049]可选地,根据下行数据时间戳的值,判断当前数据是否可以插入选择的下行队列中;若不能插入队列,则根据报错类型对下行数据进行不同的操作,具体包括以下步骤:[0050]B1、根据下行数据的时间戳判断当前数据入队时间是否过早,若是,则转到步骤B4;否则执行步骤B2;
[0051]B2、根据下行数据的时间戳判断当前数据入队时间是否过晚,若是,则丢弃当前数据,结束下行流程;否则执行步骤B3;
[0052]B3、遍历下行队列,判断当前数据的时间戳与下行队列中已有数据的时间戳是否发生冲突,尝试将数据插入队列,若遍历完队列,未发生冲突,则将当前数据插入下行队列;否则执行步骤B4;
[0053]B4、选择一个其他下行队列,尝试将当前数据插入队列。

[0054]可选地,步骤B4具体为:
[0055]B41、随机选择一个未尝试过入队的下行队列作为待插入队列;若尝试插入所有队列失败,则丢弃当前数据,结束下行流程;否则执行步骤B42;
[0056]B42、对Class A或Class B类型的下行数据,将数据时间戳转换为待插入队列的时间戳,返回步骤B1;对Class C类型的数据,将数据时间戳重置为0,返回步骤A3。

[0057]可选地,将满足要求的下行数据插入队列,并对下行队列进行排序,等待发送数据,具体包括以下步骤:
[0058]C1、将当前数据插入下行队列的队尾。

若插入数据为Beacon,则将Beacon 计数器的值加1。

[0059]C2、根据时间戳大小对下行队列中的数据进行排序。

[0060]如图3和图4所示,本发明的具体实现流程为:
[0061]1、网关根据下行数据时间戳的值,判断下行数据的类型。

若下行数据的时间戳不为0,则当前数据为Class A或Class B类型的下行数据;否则当前数据为 Class C类型的下行数据。

[0062]2、对Class A或Class B类型的下行数据,根据下行数据携带的port字段,选择port编号对应的下行队列作为待插入的队列,转到步骤7;对Class C类型的下行数据,随机选择一个下行队列,作为待插入队列,执行步骤3。

空,则将下行数据的临时时间戳设置为当前系统时间加1s,转到步骤6;否则执行步骤4。

[0064]4、根据当前系统时间设置下行数据的临时时间戳,尝试将数据插入队首。

时间戳设置为:
[0065]count P=T+T start+T jit*2+T margin
[0066]其中P为待插入队列的数据包,count p表示数据包P的时间戳;T为当前系统时间;T start,T jit,T margin为系统定义的固定值,T start表示网关射频设备启动用时 1500us;T jit为网关构造数据帧用时30000us;T margin为两个下行数据包在发送时的间隔1000us。

[0067]随后判断当前下行数据的临时时间戳与队首数据的时间戳是否发生冲突,判断方式为:
[0068]count P-count P1≥pre P+post P1+T margin
[0069]其中,P1为队首数据,count p,count P1分别表示数据包P和P1的时间戳;pre p表示数据包P的发送前置时间;post p和post P1表示数据包P和P1的发送后置时间。

对数据帧,发送前置时间pre=T start+T jit,即启动射频设备和将数据封装成帧的时间;发送后置时间为网关发送数据帧所需的时间(ToA),即post=T ToA。

对Beacon 帧,当前一个数据为PingSlot数据时,前置时间pre=T start+T jit+T guard;当前一个数据为Class A或Class C类型的数据时,pre=T start;发送后置时间post=T reserved。

其中,T guard长度为3s,T reserved长度为2.120s。

若P和P1的时间戳不满足上式,即发生冲突,执行步骤5;否则转到步骤6。

[0070]5、遍历下行队列,根据遍历到的数据的时间戳设置当前数据的临时时间戳,尝试将当前数据插入遍历到的数据之后,时间戳设置为:
[0071]count p=count P1+post P1+pre P+T jit+T margin
[0072]其中,P1为当前遍历到的数据包,P1的下一个数据包为P2。

[0073]随后判断当前数据的临时时间戳与队列中下一个数据P2的时间戳是否发生冲突,判断方式为:
[0074]count P2-count P≥pre P2+post P+T margin
[0075]其中,count p,count p2分别表示数据包P和P2的时间戳;pre p2表示数据包P2 的发送前置时间;post p表示数据包P的发送后置时间。

若P和P2的时间戳不满足上式,即发生冲突,则继续遍历当前队列,直到遍历到队尾;否则执行步骤6。

[0076]6、将当前Class C类型下行数据的时间戳的值设置为临时时间戳的值。

[0077]7、根据下行数据的时间戳判断当前数据入队时间是否过早,判断方式为:[0078]count P-T≥T start+T jit+T margin
[0079]若时间戳不满足上式,则转到步骤11,否则执行步骤8。

[0080]8、根据下行数据的时间戳判断当前数据入队时间是否过晚,判断方式为:[0081]count P-T≤(N beacon+1)*128*106
[0082]N beacon表示所有下行队列中已有的Beacon个数。

若时间戳不满足上式,则丢弃当前数据,结束下行流程;否则执行步骤9。

[0083]9、遍历下行队列,判断当前数据的时间戳与下行队列中已有数据的时间戳是否发生冲突,尝试将数据插入队列,判断方式为:
[0084]
[0085]其中,P为待插入的数据,P1为当前遍历到的数据,P2为P1的下一个数据。

若时间戳满足上式,则不发生冲突,数据P可以插入到下行队列中数据P1 和P2之间。

若遍历完队列,未发生冲突,转到步骤13;否则执行步骤11。

[0086]11、随机选择一个未尝试过入队的下行队列作为待插入队列;若已尝试插入所有队列失败,则丢弃当前数据,结束下行流程;否则执行步骤12。

[0087]12、对Class A或Class B类型的下行数据,将数据时间戳转换为待插入队列的时间戳,返回步骤7;时间戳转换方式为:
[0088]count p o r t2=count p o r t1+(offsetSec p o r t2-offsetSec p o r t1)*1000000 + (offsetUsec port2-offsetUsec port1)
[0089]其中,count为下行数据的时间戳,单位为us;port1为当前的待插入队列编号,port2为步骤11重新选择的待插入队列编号;Offset为射频设备计数器时间和网关系统时间之间的偏移,offsetSec为偏移量的秒数,offsetUsec为偏移量的微秒数。

[0090]对ClassC类型的下行数据,将数据时间戳重置为0,返回步骤3。

[0091]13、将当前数据插入下行队列的队尾。

若插入数据为Beacon,则将N beacon值加1。

[0092]14、按照时间戳由小到大的顺序对下行队列中的数据进行排序。

[0093]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。

对于本领域的技术人员来说,本发明可以有各种更改和变化。

凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

图1
图2
图3
图4。

相关文档
最新文档