基于LoRa组网的多优先级时隙分配算法

2020-04-24 03:07姚引娣
计算机工程与设计 2020年3期
关键词:时隙网关时钟

姚引娣,王 磊

(西安邮电大学 通信与信息工程学院,陕西 西安 710121)

0 引 言

随着无线通信技术的发展和移动通信设备的普及,小型无线自组网的需求越来越大,LoRa以其通信距离长、抗干扰能力强、低功耗等优点,在无线自组网中得到了广泛的应用。

目前在LoRa组网中,TDMA[1,2](time division multiple access)是最常用的一种接入方法,在该方法中最常用的两种算法是竞争时隙分配算法和固定时隙分配算法。文献[3]提出了一种具有动态重传和差异服务机制的固定时隙分配算法,重新设计了时帧结构,提高了LoRa组网通信的可靠性。文献[4]提出了一种改进的动态TDMA时隙分配算法,该算法根据节点数目的变化,按照各个节点的等级动态调整时隙分配策略,提高传输效率。但是随着当前无线传输性能要求的提升,固定时隙分配算法不能根据当前节点数目的变化动态调整时隙分配方案[5],会产生空时隙,造成时隙的浪费;竞争时隙分配算法在一定程度上提高了时隙的利用率,但是当节点较多时,数据碰撞概率会逐渐增大,造成网络吞吐量减小时延增大。

因此本文在总结上述两种时隙分配算法优点的基础上,提出了一种应用于LoRa组网[6,7]的多优先级时隙分配算法,同时在通信过程中采用特定设计的数据帧[8],相比于单一的时隙分配算法提高了整个网络的吞吐量,降低了数据传输的时延,提升了LoRa自组网技术[9]在物联网应用[10]方面的性能。

1 多优先级时隙分配算法设计

1.1 固定时隙分配算法

基于TDMA的固定时隙分配算法是将数据传输的时间分成固定周期的时帧,每个时帧分成若干个时隙,通过指定的规则为每个节点分配固定的时隙,使该节点只能在固定时隙上传输数据,其工作原理如图1所示。

图1 时隙分配原理

在固定时隙分配算法中,各个节点在每一时帧中都占用一个时隙,如果节点在已分配的时隙上没有数据传输,就会产生空时隙,造成资源的浪费,当节点网络规模较大时,会产生数据冲突,并且该算法在使用中要求有精确的时钟定时以保证系统中用户(或设备)间时隙划分的准确性,一般通过高精度时钟或卫星授时解决,但实现成本较高。

1.2 竞争时隙分配算法

在竞争时隙分配算法中,网络中所有节点通过争抢时隙来发送数据,随机调配时隙大小,灵活性比较强,但是当节点离接收点的距离比较近时,该节点获得时隙的概率会增加,存在不公平现象,并且当网络中节点数目较多时,数据发送的成功率也会快速下降。

在LoRa组网中,通常采用具有信道侦听的CSMA/CA算法[11,12],其原理是:节点在发送数据前,先检测当前信道是否空闲,等到信道空闲后,再发送数据,否则,随机延时一段时间,再进行信道检测,此算法在一定程度上降低了节点数据碰撞的概率,提高了系统的吞吐量。

1.3 多优先级时隙分配算法

根据固定时隙分配算法和竞争时隙分配算法的不足,本文提出了一种多优先级时隙分配算法[13,14],多优先级时隙分配算法的设计原理为:将一个完整的时帧划分为固定时隙和竞争时隙两部分,各个节点按优先级进行划分,优先级高的核心节点采用固定时隙分配策略,将一部分稳定的时隙分配给核心节点,以保障高优先级数据的传输,再将另一部分竞争时隙用于其它优先级较低的普通节点进行竞争数据传输。

根据不同的网络情况,动态调整时隙分配的策略,对于竞争时隙通过判断竞争算法中碰撞延时的大小来动态调整固定时隙和竞争时隙的个数,优化网络的吞吐量和传输时延;在实际网络中,占有固定时隙的核心节点只需要周期性的和网关进行通信,并不是每个时帧内都发送数据,在一定程度上会造成时隙浪费,因此对于固定时隙,需要通过节点的上报周期来调整固定时隙的个数,当核心节点在固定时隙不发送消息时,就释放该时隙,提高时隙利用率,具体算法流程如图2所示。

图2 主要流程

节点在竞争时隙时采用CSMA/CA算法,因此在动态调整优先级大小时,可以通过CSMA/CA算法中发生数据碰撞时节点的退避时延来判断网络的拥塞程度,根据退避算法中节点的退避时间设置阈值,当随机延时超过或者低于设置的阈值时,通过调整节点的优先级动态调整固定时隙与竞争时隙的个数,提升网络的性能。

在LoRa同频组网中要避免通信冲突一般采用时分复用的方式,要求在同一时间内子网中只有一个节点向网关上报数据,因此将系统中的各个节点根据功能的不同划分优先级,高优先级为核心节点,低优先级为普通节点,按照优先级为每个节点分配对应的时间槽,进行入网和数据的上报,在整个系统中,数据来源主要来自于低优先级节点的上行数据,而网关的下行数据相对较少,因此在组网中用网关来控制网络中时隙的分配和时钟同步。在应用中将整个算法流程分为3部分:节点入网、数据传输和时钟同步[15]。

(1)节点入网

节点(Node)在入网时优先级高的核心节点采用固定时隙进行入网,优先级低的普通节点采用竞争时隙的方式进行入网,普通节点在竞争入网之前,先侦听信道是否空闲,如果信道空闲则立即发送入网请求,当侦听到信道忙碌时,随机延时一段时间后再次申请入网,具体可分为以下3种情况:

情况一:Node发送入网请求后,先接收到“噪声数据帧”后收到“回应数据帧”。原因是:其它节点也在发送请求帧,解决方法:在整个等待期间忽略其它信息,只接收自己的应答数据帧。

情况二:Node在整个等待周期都没有收到任何信息,原因是:网关丢失了请求帧,或者冲突毁坏通信链路,解决方法:采用随机延时退避算法。

情况三:Node在整个等待周期接收到噪声但没有接收到回应数据帧,原因是:有其它节点发送请求帧并且破坏了网关回应的数据帧。解决方法:采用随机延时退避算法。

将上述情况进行总结可得LoRa节点申请入网的算法逻辑如图3所示。

图3 入网流程

(2)数据传输

在数据传输过程中,除固定时隙外,其它通过竞争共享时隙来发送数据节点的主要工作是计算它下一次进行数据上报的时间,计算下一次上报时刻算法的流程如图4所示。它基于两个参数网络参数和内部参数,系统输入当前本地RTC(real-time clock)的数值,输出下次上报时刻,其中网络参数为网关下发的同步时间和数据的传输时间,内部参数为数据处理所耗费的时间。

图4 数据传输算法流程

根据算法流程可以计算出节点下一次的上报时间f(t)

f(t)=RTC+slove_time+slot_length+ trans_time+delay_time

(1)

其中,内部参数有本地RTC(本地实时时钟)slove_time(节点的信息处理时间),网络参数有slot_length(网关分配的时隙长度),空中传输的时间(trans_time),delay_time(发送与接收数据帧延时补偿);在计算过程中需要加上发送与接收数据帧的延时补偿,以提高同步精度减少误差。

(3)时钟同步

多优先级时隙分配算法是基于时分复用的方式,所以需要进行时钟同步,在进行时钟同步时,结合数据帧与时隙的关系,通过特殊格式的数据帧对节点周期性的进行时钟同步,优化单时隙算法的时钟精度,具体流程为:网关发送包含本地RTC和时隙分配的数据帧,节点接收数据帧解析后校准自身时钟,相比于常用的高精度时钟或卫星授时降低了成本。

在时钟同步过程中,网关需要3个步骤来完成发送包含有本地RTC和时隙分配的数据帧:取本网关的RTC值、分配时隙、生成数据帧并发送,这3个步骤不能被打断,否则该RTC就不再实时,因此需要在执行之前开启和关闭中断以保证原子性。

当节点发现自己与网络失步时,节点将根据入网流程重新申请入网,根据接收到的数据帧校准自身时钟,进行时钟同步。

2 仿真实验

2.1 仿真参数设置

为了测试本文提出的多优先级时隙分配算法的合理性和优越性,在MATLAB2016a环境下对多优先级时隙分配算法进行了仿真验证。本次仿真在理想信道下进行忽略信道中的误码率,各个节点的发包速率相等,每成功传输一帧或丢弃一帧立刻产生新的数据帧,保证节点一直都有数据等待发送。实验中分别设定了 2-10个星型分布的节点,并与竞争时隙算法进行了对比分析。具体仿真参数见表1。

表1 仿真环境参数设置

2.2 仿真结果分析

在理想环境下通过MATLAB仿真,对不同网络容量下两种算法的吞吐率和传输时延进行对比,结果如图5,图6所示。

图5 节点数目与吞吐率

图6 节点数目与传输延时

由图5,图6可以得出,在其它环境相同下,随着节点数目的增加,多优先级时隙分配算法的吞吐量比竞争时隙算法高,传输时延比竞争时隙算法低。在同一网络下,多优先级时隙分配算法能够根据当前的网络状况动态改变节点的优先级,平衡竞争时隙的节点数目和固定时隙的节点数目,相比与单纯的竞争时隙算法在数据传输中的吞吐量更大,数据时延更小,网络的稳定性更强。

3 硬件实验

3.1 硬件参数设置

为了测试本算法的实际效果,设计了用于测试的硬件模块,本文的硬件测试模块主要由主控电路、射频电路和外围电路组成,主控芯片采用ST公司的低功耗芯片STM8L151;无线部分的射频芯片使用的是SX1278LoRa芯片;外围电路主要由电源、传感器、显示模块等组成,硬件框架如图7所示。各个节点和网关组成星型网络,周期性的将传感器采集的数据和本地时钟上报至网关,并通过串口将传输的数据保存到文件中。

图7 硬件框架

节点与网关之间传输数据帧的固定大小为12个字节,数据包含采集节点的上报信息和控制节点的指令信息,采用CRC16方式进行校验,数据包格式如图8所示。

图8 数据包格式

表2 LoRa参数设置

3.2 测试结果分析

实际测试是通过实测多节点和网关的数据通信来确认网络的上报时延和丢包率情况。具体测试环境为室外空地,测试距离为800 m,数据包个数为1000个,20次后取平均结果,测试方法为:通过串口窗口接收到的数据包个数和文件中节点与网关的时钟差来分析网络的传输时延和丢包率。在同一环境下实测的两种算法在同一网络中的节点数量和网络的延时情况如图9所示。由图9可以看出随着网络中节点个数的增加,本文采用的多优先级时隙分配算法的传输时延比竞争时隙分配算法的传输时延低,该算法会根据当前网络中各个节点的优先级大小调整固定时隙和竞争时隙的数目,通过降低节点争抢时隙的概率降低网络延时。

图9 网络延时

图10为实测的系统在同一条件下分别采用竞争时隙分配算法和多优先级时隙分配算法在网络中的丢包情况,从图中可以看出随着网络节点的增加,竞争时隙分配算法的数据碰撞概率会增加,导致有些节点因竞争不到时隙产生丢包,而多优先级时隙分配算法将优先级高的核心节点数据用固定时隙进行传输,根据当前网络的拥塞程度动态调整节点的优先级,周期性的释放固定时隙资源,保证高优先级数据传输的稳定性,相比与竞争时隙分配算法降低了节点在传输中的丢包率,提升了整体传输的稳定性。

图10 丢包率对比

4 对比分析

本文的应用场景是基于LoRa的小型自组织网络,在自组网中网络容量、数据丢包率,和网络时延都是评估网络性能的重要指标,通过对比竞争时隙算法的MATLAB仿真和实际测试,得出在相同环境下,本算法与常用的固定时隙分配算法和竞争时隙分配算法相比在数据传输时延和数据吞吐量方面效果更优,更适合LoRa组网的应用。

5 结束语

本文提出了一种基于LoRa同频组网的多优先级时隙分配算法,首先每个节点进行开机入网,入网成功后网关根据各个节点的优先级分配固定时隙和竞争时隙,根据当前网络状况动态调整核心节点和普通节点的个数,周期性释放空闲的固定时隙;各个节点通过读取网关发送的带有控制信息和时隙分配信息的数据帧,完成时隙的校准并同步本地时钟。通过对提出算法的仿真和实测分析,验证了该算法相比于同频组网中常用的竞争时隙分配算法具有较高的传输效率和较好的网络稳定性,优化了单时隙分配算法在网络传输过程中的延迟和数据丢包。本算法设计简单,实现方便,能够提升多种组网通信中数据传输的效率和稳定性,在嵌入式物联网领域有着良好的应用前景。

猜你喜欢
时隙网关时钟
别样的“时钟”
古代的时钟
基于时分多址的网络时隙资源分配研究
信号系统网关设备的优化
基于市场机制的多机场时隙交换放行策略
复用段单节点失效造成业务时隙错连处理
有趣的时钟
一种高速通信系统动态时隙分配设计
时钟会开“花”
LTE Small Cell网关及虚拟网关技术研究