一种基于准时制双缓冲队列算法的嵌入式LoRaWAN网关的制作方法

文档序号:33162686发布日期:2023-02-04 00:57阅读:25来源:国知局
一种基于准时制双缓冲队列算法的嵌入式LoRaWAN网关的制作方法
一种基于准时制双缓冲队列算法的嵌入式lorawan网关
技术领域
1.本发明属于lora无线通信技术领域,具体涉及一种基于准时制双缓冲队列算法的嵌入式lorawan网关。


背景技术:

2.lora是一种基于扩频的超长距离物联网无线通信技术,而lorawan是基于lora的低功耗广域网标准。lorawan标准主要定义了物联网的网络框架、数据传输机制、mac层报文格式以及根据区域不同在实际部署时的物理层参数,包括频段和信道的划分、数据传输速率、最大发送功率等等。lorawan网络使用星型或对星形拓扑组网,典型网络由终端节点、网关和服务器三个层次构成。网关作为节点和服务器之间的桥梁,主要任务是在节点和服务器之间转送数据,网关通过lora调制技术与节点进行无线通信,通过标准ip链路与广域网中的网络服务器连接,是部署网络的关键设备。lorawan网络终端节点数量庞大,作为直接决定网络容量的关键设备,网关需要具有数据运算速度快、设备兼容性强、软件并发性强、通信灵敏度高、维护成本低等特性。
3.lorawan规范中class a类型的数据包带有服务器设置的unix时间戳,网关需要在时间戳指定的时间将数据包发出,如果早于时间戳时间发送则此时终端设备可能尚未打开接收窗口,即使数据包成功从网关发出,终端也无法收到数据;而如果网关未能在时间戳时间完成发送,则此时接收窗口可能已经关闭,终端同样无法收到数据。为了保证数据包能在其时间戳时间被发出网关必须提前对数据包进行调度;为避免信号叠加干扰,在数据包从网关发出后的空中传输时间内不能发送其他数据包。因此,网关转发一个数据包不是瞬时完成的而是需要一定时间,如果两个或多个数据包的时间戳时间在时间轴上相距太近,以至于网关无法及时完成所有数据包的转发调度,由此导致的数据丢包称为数据包之间的“碰撞”。正是由于数据包碰撞问题的存在,网关的实际数据吞吐量较其理论值相去甚远。


技术实现要素:

4.有鉴于此,本发明提供了一种基于准时制双缓冲队列算法的嵌入式lorawan网关,网关针对网关下行数据转发机制进行改进,提升网关的数据吞吐量的同时增强了对于不同类型数据的调度能力。
5.一种基于准时制双缓冲队列算法的嵌入式lorawan网关,包括主机子系统、集中器子系统和供电子系统;
6.所述主机子系统为网关主程序提供运行环境并连接广域网中的网络服务器,网关主程序通过下行数据转发机制实现和网络服务器的数据交互;
7.所述集中器子系统连接至lora射频网络,实现和终端节点的数据交互;
8.所述供电子系统对外接电源进行转换,为主机子系统和集中器子系统提供所需的电平。
9.进一步地,所述下行数据转发机制实现和网络服务器的数据交互的过程包括以下
步骤:
10.步骤1:网关上电,主机子系统及集中器子系统初始化,网关主程序开始运行,集中器子系统通过lora射频通信接入终端节点网络,主机子系统通过以太网通信连接广域网中的网络服务器;
11.步骤2:网关主程序的下行处理线程中通过套接字接收网络服务器的下行数据包,将经过筛选后的数据包插入环形队列尾部中;
12.步骤3:网关主程序的准时制调度线程从环形队列头部取出满足要求的数据包插入顺序队列尾部,然后根据准时制调度算法对顺序队列中的数据包重新排序,优先级最高的数据包位于顺序队列头部;
13.步骤4:网关主程序的准时制调度线程从顺序队列头部取出优先级最高的待转发数据包发送到集中器子系统,集中器子系统将数据包转换为lorawan规范报文,然后通过lora射频通信发送至目标节点。
14.进一步地,所述网关主程序中下行数据链路涉及两条线程,分别是下行处理线程和准时制调度线程;
15.所述下行处理线程使用网络套接字接收来自服务器的下行数据包,经过筛选后的数据包插入环形队列尾部;
16.所述准时制调度线程从环形队列头部取出数据包将数据包取出并插入顺序队列尾部,然后根据准时制调度算法从顺序队列中选择优先级最高的待发送数据包发送至集中器子系统。
17.进一步地,所述环形队列用以在下行处理线程和准时制调度线程间高效传递数据包,该队列允许被下行处理线程和准时制调度线程操作。
18.进一步地,所述顺序队列是实施准时制调度算法的直接对象,作为下行数据的二级缓存,顺序队列只允许被准时制调度线程操作。
19.进一步地,所述准时制调度算法核心原则是优先调度时间戳时间和当前时刻较为接近但又不晚于当前时刻的数据包,数据包的时间戳时间越接近当前时刻则调度优先级越高,意味着该数据包越需要被尽快向终端节点转发,即不管网关按什么时间顺序从服务器接收数据包,都尽可能地选择当前时刻最需要被转发的数据包进行处理。
20.有益效果:
21.1、本发明的嵌入式lorawan网关包括主机子系统、集中器子系统和供电子系统,主机子系统为网关主程序提供运行环境并连接广域网中的网络服务器,网关主程序通过下行数据转发机制实现和网络服务器的数据交互;通过在网关内部下行数据链路中引入环形队列构成双缓冲队列,并辅以优化的准时制调度算法,不仅使网关的数据吞吐量得到极大程度的提升而且增强了对于不同类型数据的调度能力。
22.2、本发明针对网关内部下行数据链路提出一种准时制双缓冲队列算法,使用环形队列在线程间传输数据,避免了锁一类阻塞结构的使用,使用大容量的环形队列作为主要的数据缓存,使得作为准时制调度直接数据源的顺序队列长度得以控制,在不牺牲数据缓存容量的前提下以保证了准时制算法的实施效率,有效缓解了因数据包碰撞导致的丢包问题,显著提高了网关的数据吞吐量;通过优化软件效率提高网关的数据转发性能,能够节约计算资源花销、降低硬件性能依赖,有利于节约网关的硬件成本。
23.3、本发明网关主程序中准时制调度线程从环形队列头部取出数据包将数据包取出并插入顺序队列尾部,环形队列用以在下行处理线程和准时制调度线程间高效传递数据包,该队列允许被下行处理线程和准时制调度线程操作,从而避免线程锁等阻塞式线程同步手段的使用。
附图说明
24.图1为本发明嵌入式lorawan网关的硬件组成示意图;
25.图2为本发明网关硬件间的连接关系示意图;
26.图3为本发明网关主程序下行数据链路示意图;
27.图4为本发明网关主程序中下行处理线程的程序框图;
28.图5为本发明网关主程序中准时制调度线程的程序框图。
29.其中,1-i.mx6ull微处理器,2-lan8720a芯片,3-rj45网口,4-sx1301芯片,5、6-sx1255芯片,7-sma射频天线,8-供电子系统。
具体实施方式
30.下面结合附图并举实施例,对本发明进行详细描述。
31.本发明提供了一种基于准时制双缓冲队列算法的嵌入式lorawan网关,如图1所示,主要包括i.mx6ull微处理器1、lan8720a芯片2、rj45网口3、sx1301芯片4、sx1255芯片5、sx1255芯片6、sma射频天线7和供电子系统8。sma射频天线频率范围为460mhz~490mhz,符合lorawan规范。图2给出了网关不同部件间的连接关系。当使用该网关时,i.mx6ull微处理器、lan8720a以太网phy芯片、rj45网口以及相应的外围电路(外围电路主要包括电容、电阻、电感等辅助芯片正常工作的电子元器)构成主机子系统,sx1301基带芯片4、2个sx1255射频前端芯片、sma射频天线7以及相应的外围的电路构成集中器子系统,i.mx6ull微处理器直接连接sx1301基带芯片和lan8720a以太网phy芯片,通过sx1301控制2个sx1255射频前端芯片和射频天线实现lora射频通信,通过自身集成的mac控制器和lan8720a以及rj45网口实现以太网通信。供电模块分别连接主机子系统和集中器子系统,输入电压为直流12v,输出电压为直流5v和直流3.3v。
32.本发明网关主程序运行于主机子系统的i.mx6ull微处理器中,网关主程序的基本功能包括终端管理、协议转换和数据转发,本发明通过引入准时制双缓冲队列算法提高网关的数据转发性能,具体方式是优化主程序中下行数据链路。
33.图3是本发明网关主程序中下行数据链路示意图,网关通过以太网通信从网络服务器获取下行报文,在下行处理线程将下行报文解析后转换为数据包,并将数据包插入环形队列中;准时制调度线程从环形队列中取出数据包并将其插入顺序队列中,再根据当前时刻和数据包的时间戳从顺序队列中选择满足准时制调度规则的数据包发送至集中器子系统,集中器子系统通过lora射频通信将数据包向终端节点转发。
34.图4是下行处理线程的程序框图,包括如下步骤:
35.步骤1、初始化环形队列;
36.步骤2、为下行数据链路创建专用网络套接字;
37.步骤3、判断线程是否退出标志位置位,如果否进入下一步,如果是直接结束;
38.步骤4、判断套接字是否接收到下行数据包,如果是进入下一步,如果否返回步骤3;
39.步骤5、判断数据包格式是否符合规范,如果是进入下一步,如果否返回步骤3;
40.步骤6、判断数据包的发送功率和频率符合要求,如果是进入下一步,如果否返回步骤3;
41.步骤7、将数据包插入环形队列尾部,更新统计数据。
42.图5是准时制调度线程的程序框图,包括如下步骤:
43.步骤1、初始化顺序队列;
44.步骤2、判断线程是否退出标志位置位,如果否进入下一步,如果是直接结束;
45.步骤3、从环形队列头部取出一个数据包;
46.步骤4、判断数据包时间戳是否过小或入队时刻过晚,如果是,从环形队列中剔除该数据包并返回步骤2,如果否,进入下一步;
47.步骤5、判断数据包时间戳是否过大或入队时刻过早,如果是,返回步骤2,如果否,进入下一步;
48.步骤6、计算数据包的发送前裕度和发送后裕度并记录;
49.步骤7、数据包是否会与队列中已有的数据包碰撞,如果是,返回步骤2,如果否,进入下一步;
50.步骤8、将数据包从环形队列头部取出,然后插入顺序队列尾部;
51.步骤9、遍历顺序队列,剔除顺序队列中时间戳时间早于当前时刻的数据包;
52.步骤10、按时间按戳大小升序对顺序中的数据包重新排序,顺序队列头部是时间戳最小的数据包;
53.步骤11、判断头部数据包的时间戳减去其发送前裕度是否晚于当前时刻?如果否,返回步骤2,如果是,进入下一步;
54.步骤12、判断集中器子系统是否正常且正处于空闲状态,如果否,返回步骤2,如果是,进入下一步;
55.步骤13:从队列头部将该数据包取出后发送至集中器子系统,更新统计数据。
56.本发明网关实现lorawan物联网中下行数据转发主要包括以下步骤:
57.步骤1、当网关供电子系统连接外部电源后,主机子系统和集中器子系统自动上电并进行初始化设置,网关主程序开始运行,读取固化在存储中的配置文件进行相应的配置。在初始化完成后网关进入对终端节点和网络服务器的监听状态。
58.步骤2、通过套接字接收网络服务器的下行数据包,将格式符合lorawan规范且发送功率和频率满足规定的数据包插入环形队列尾部。
59.步骤3、尝试从环形队列头部取出一个数据包,若数据包时间戳时间已经早于当前时刻,则将该数据包从环形队列中剔除;若数据包时间戳时间离当前时刻还有较长一段时间或者会与顺序队列中已有的数据包发生碰撞,则放弃此次操作;若数据包时间戳在合理范围内且不会与队列中已有数据包碰撞,则将该数据包从环形队列头部取出并插入顺序队列尾部。
60.步骤4、遍历顺序队列,剔除顺序队列中时间戳时间早于当前时刻的数据包。然后按时间按戳大小升序对顺序中的数据包重新排序,顺序队列头部是时间戳最小的数据包,
该数据包的调度优先级最高。
61.步骤5、对顺序队列头部数据包的时间戳进行判断,若该数据包的时间戳时间减去发送前裕度晚于当前时刻且集中器处于空闲状态,则从顺序队列中取出该数据包发送到集中器子系统,在集中器子系统中将数据包转换为lorawan规范的报文后通过lora射频通信发送至目标节点。
62.综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1