本发明属于物联网通信技术领域,涉及一种基于lorawan网络协议的数据传输速率自适应方法。
背景技术:
lorawan是一种基于直接序列扩频调制技术的远距离网络通信协议,在ieee802.11协议中,物理层使用了不同的编码方式和调制技术,提供了多种可供选择的数据发送速率,可协议并没有说明不同速率之间怎么实现自适应的速率调整。现有的以rbar为代表的的基于接收端的速率自适应算法,通过发送rts/cts控制帧对信道质量进行评估并选择合适的数据传输速率,降低了发送端之间在数据传输时发生碰撞的可能,但该算法在数据发送过程中需要频繁进行发送确认并等待回复,在一定程度上降低了数据的传输效率。因此,需要在信道状况不断变化的情况下,综合考虑数据传输的可靠性和有效性,根据实时信道状选择最优的数据传输速率,从而使通信系统吞吐量最大化。此外,rbar算法在发送端与接收端之间传递最佳数据传输速率时改变了rts/cts控制帧格式,导致该算法与现有通信协议不兼容。
技术实现要素:
本发明的目的在于提出一种基于lorawan网络协议的数据传输速率自适应方法:根据数据传输信道的实时状态,获取信噪比值并选择对应的扩频因子,同时在统计周期内计算丢包率以及信道负荷值,以便确认是否需要发送rts/cts控制帧,从而针对不同的信道状况实时更新数据传输速率,最终提高整个系统的网络数据传输性能。
本发明的目的可以通过以下技术方案实现:
1、一种基于lorawan网络协议的数据传输速率自适应方法,其特征在于,包括以下步骤:
步骤一,首先数据发送端向接收端发送rts帧,确认信道是否空闲;
步骤二,接收端收到rts帧后将前3次连续接收到的有效信噪比snr做均值化处理,得到
步骤三,接收端将数据传输速率dr添加至cts帧的fcs字段中,反馈至发送端,同时暂停发送rts/cts控制帧;
步骤四,发送端按照对应的传输速率dr向接收端发送数据包后,接收端反馈ack帧,表明一次数据传输成功;
步骤五,在数据传输过程中,发送端根据帧序列号的连续性统计丢包率per,若一定周期内,发送端判断per达到设定的丢包阈值,则重新启动rts/cts机制进行信道估计,根据步骤2更新数据传输速率,若per尚未达到丢包阈值,则转入步骤6;
步骤六,将统计周期内n次数据包的传输时间进行记录与存储,得到该扩频因子子信道负荷erl,当负荷值小于或等于发送端期望速率对应的信道负荷阈值时,接收端将自动提高一个数据传输速率,若负荷值大于发送端期望速率对应的信道负荷阈值时,则降低一个数据传输速率。
步骤七,发送端接收并完成接收端下发的速率调节命令,继续完成数据传输。
2、优选地,所述步骤一中的rts帧为ieee802.11网络支持可选的请求发送帧;
3、优选地,所述步骤二中的信噪比值snr计算公式如下:
snr=10*log10(ps/pn)(db)(1)
式(1)中,ps、pn分别为接收端接收到的信号功率、噪声功率;
4、优选地,所述步骤二中按照如下规则选择扩频因子sf:
5、优选地,所述步骤三中的dr计算公式如下:
式中,bw为信道带宽,可以提高有效数据速率以缩短传输时间;cr为编码率进行前向错误检测与纠错。根据lora调制解调计算器评估权衡后,选择bw为250khz,cr设置为1。
6、优选地,所述步骤三中的cts为ieee802.11网络支持可选的允许发送帧;
7、优选地,所述步骤三中的fcs为rts/cts帧的帧校验序列,用于携带信道信息与速率信息;
8、优选地,所述步骤四中的ack为接收端成功接收数据包后向发送端反馈的确认帧;
9、优选地,所述步骤五中所述的丢包率per是在网络传输过程中链路变差和网络拥塞碰撞造成的,指在单位时间内丢失的数据包与发送数据包的比率;
10、优选地,所述步骤五中所述的丢包阈值根据实际应用场景进行设置;
11、优选地,所述步骤六中所述的信道负荷erl为计算每帧数据对相应sf子信道的占用时间,并在统计周期ttotal[i]内累计总的占用时间tall_data[i],从而得到sf子信道的负荷erl[i],计算公式如下:
erl[i]=tall_data[i]/ttatal[i](3)
lora每传输一次数据的时间tdata[i]等于前导码时间tpreamble[i]和数据包传输时间tpayload[i]之和。前导码的传输时间tpreamble[i]可通过公式(4)~(5)计算得出:
tpreamble[i]=(npreamble 4.25)ts[i](4)
式中,npreamble表示已设定的前导码长度,通过读取寄存器regpreamblemsb和regpreamblelsb得到,ts[i]为单个lora符号数据包的周期;
数据包传输时间tpayload[i]计算公式如下:
tpayload[i]=payloadsymnb[i]*ts[i](6)
式中,payloadsymnb[i]为有效负载时间,通过公式(7)计算得到:
式中,pl表示有效负载的字节数,h表示是否使用报头,另h=1,de为此时速率最优,该位置1。统计周期内发送端单次和n次数据传输时间可由公式(8)~(9)得出:
tbusy[i]=tpreamble[i] tpayload[i](8)
tall_data[i]=n*tdata[i](9)
12、优选地,对rts/cts帧格式的传输方式进行了修改,lora网关将速率信息放置于cts帧的fcs字段中返回至采集终端,采集终端按照该速率进行数据传输。
本发明提出一种基于lorawan网络协议的数据传输速率自适应方法,与现有技术相比,具有以下优点:
(1)此方法避免使用固定速率传输数据,根据不同信道环境的不断变化,获取信噪比、丢包率以及信道负荷值,并结合rts/cts握手机制,实时调整适合该时段的数据传输速率,降低了各个发送端在相同信道进行数据传输时发生碰撞的可能性,最终确保可靠的数据包传送,减小丢包率。
(2)无需改变mac层的帧格式,仅通过rts/cts帧位于物理层的帧校验序列携带信道信息与速率信息,既可完成实时信道估计,达到速率自适应的目的,改进后与大部分通信产品兼容。
附图说明:
图1:数据传输速率自适应方法流程图;
图2:改进后的cts控制帧格式图;
图3:各采集终端的信噪比均值与丢包率对比图;
具体实施方式:
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明作进一步的描述。
本发明将所提出的算法应用于lora无线广域网技术的畜舍环境信息远程监控系统之中,该系统由数据采集终端、lora网关以及阿里云服务器组成,可以实现对多传感器节点信息(温度、相对湿度、氨气、二氧化碳、粉尘以及光照等环境因子)的实时采集、无线传输和数据存储。
本发明所述的发送端在该监控系统为数据采集终端,接收端为lora网关。数据传输速率自适应方法流程如图1所示,步骤如下:
1、首先,所述的采集终端向lora网关发送rts帧,确认信道是否空闲;
2、其次,lora网关接收到rts后,将前3次接收到的有效信噪比snr做均值化处理得到
snr=10*log10(ps/pn)(db)(1)
式(1)中,ps、pn分别为lora网关接收信号功率以及噪声功率。在lora收发芯片中根信噪比均值
3、由公式(2)计算数据传输速率:
式中,bw为信道带宽,可以提高有效数据速率以缩短传输时间;cr为编码率进行前向错误检测与纠错。根据lora调制解调计算器评估权衡后,选择bw为250khz,cr设置为1。lora网关将计算所得的传输速率添加至cts帧的fcs字段中,反馈至采集终端,并持续以该速率传输数据,同时暂停发送rts/cts控制帧。
4、采集终端发送数据包后,lora网关反馈ack确认帧,表明一次数据传输成功。此时采集终端根据帧序列号的连续性统计丢包率,若一定周期内,采集终端判断丢包率达到设定的丢包阈值,则重新启动rts/cts机制进行信道估计,根据步骤2更新数据传输速率。若丢包率尚未达到丢包阈值,则转入步骤5,计算扩频因子sf子信道的信道负荷。
信道负荷为计算每帧数据在sf子信道中的占用时间,并在统计周期ttotal[i]内累计总的占用时间tall_data[i],从而得到sf子信道的负荷erl[i],计算公式如下:
erl[i]=tall_data[i]/ttatal[i](3)
lora每传输一次数据的时间tdata[i]等于前导码时间tpreamble[i]和数据包传输时间tpayload[i]之和。前导码的传输时间tpreamble[i]可通过公式(4)~(5)计算得出:
tpreamble[i]=(npreamble 4.25)ts[i](4)
式中,npreamble表示已设定的前导码长度,通过读取寄存器regpreamblemsb和regpreamblelsb得到,ts[i]为单个lora符号数据包的周期;
数据包传输时间tpayload[i]计算公式如下:
tpayload[i]=payloadsymnb[i]*ts[i](6)
式中,payloadsymnb[i]为有效负载时间,通过公式(7)计算得到:
式中,pl表示有效负载的字节数,h表示是否使用报头,另h=1,de为此时速率最优,该位置1。统计周期内发送端单次和n次数据传输时间可由公式(8)~(9)得出:
tbusy[i]=tpreamble[i] tpayload[i](8)
5、tall_data[i]=n*tdata[i](9)
6、将统计周期内n次数据包的传输时间进行记录与存储,得到该扩频因子子信道负荷。当负荷值小于或等于采集终端期望速率对应的信道负荷阈值时,lora网关将自动提高一个数据传输速率;若负荷值大于采集终端期望速率对应的信道负荷阈值时,则降低一个速率;
7、采集终端接收lora网关下发的正常速率调节命令,继续完成数据传输;
所述步骤1中的rts帧为ieee802.11网络支持可选的请求发送帧;
所述步骤3中的cts为ieee802.11网络支持可选的允许发送帧;
所述步骤3中的fcs为rts/cts帧的帧校验序列,用于携带信道信息与速率信息;
所述步骤4中的ack为接收端成功接收数据包后向发送端反馈的确认帧;
所述步骤5中的丢包率per是在网络传输过程中链路变差和网络拥塞碰撞造成的,指在单位时间内丢失的数据包与发送数据包的比率;
所属步骤5中,对rts/cts帧格式的传输方式进行了修改,lora网关将速率信息放置于cts帧的fcs字段中返回至采集终端,采集终端按照该速率进行数据传输。
改进后速率自适应算法中的cts控制帧格式如图2所示,该方法无需改变mac层的帧格式,仅通过rts/cts帧位于物理层的扰码序列携带信道信息与速率信息,既可完成实时信道估计,达到速率自适应的目的,改进后可与大部分通信产品兼容。
本发明于2019/12/20日至2020/3/15日,在东北农业大学阿城荷斯坦奶牛实验基地,选取4个牛舍(泌乳舍1、泌乳舍2、犊牛舍1、犊牛舍2),分别在牛舍中央各放置一个采集终端设备,即c1~c4,lora网关g1放置在泌乳舍1的前门处,所有设备均距地面垂直约2米,四个牛舍均长122m,跨度30m,檐高5.6m。经测量,各采集终端与lora网关的直线距离约为63m、128m、562m、604m;
如图3所示:本发明设置每20分钟上传一次数据,实验期间共采集的6140组(87天)数据,实验过程中采集终端所得到的信噪比均值分别为-5.3db、-7.6db、-11.2db、-13.5db,丢包率分别为0.26%、0.41%、0.77%、0.89%;
可见由于电磁波在传输过程中不断衰减,采集终端与网关距离越远、障碍物越多,信号就越差,丢包率越高,但丢包率均小于1.0%,成功率在99%以上,可以满足实际农场数据采集需求。
本发明所采用的速率自适应算法可以为不同的信道环境配置最优的传输速率,测量结果显示:在通信范围为604m内的复杂环境内,距离lora网关越近的采集终端信噪比越大,数据传输速率越高、丢包率越小。该方法可提高网络吞吐量,使系统性能达到最佳。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上的实例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
1.一种基于lorawan网络协议的数据传输速率自适应方法,其特征在于,包括以下步骤:
步骤一,首先数据发送端向接收端发送rts帧,确认信道是否空闲;
步骤二,接收端收到rts帧后将前3次连续接收到的有效信噪比snr做均值化处理,得到
步骤三,接收端将数据传输速率dr添加至cts帧的fcs字段中,反馈至发送端,同时暂停发送rts/cts控制帧;
步骤四,发送端按照对应的传输速率dr向接收端发送数据包后,接收端反馈ack帧,表明一次数据传输成功;
步骤五,在数据传输过程中,发送端根据帧序列号的连续性统计丢包率per,若一定周期内,发送端判断per达到设定的丢包阈值,则重新启动rts/cts机制进行信道估计,根据步骤二更新数据传输速率,若per尚未达到丢包阈值,则转入步骤六;
步骤六,将统计周期内n次数据包的传输时间进行记录与存储,得到该扩频因子子信道负荷erl,当负荷值小于或等于发送端期望速率对应的信道负荷阈值时,接收端将自动提高一个数据传输速率,若负荷值大于发送端期望速率对应的信道负荷阈值时,则降低一个数据传输速率。
步骤七,发送端接收并完成接收端下发的速率调节命令,继续完成数据传输。
2.根据权利要求1所述的方法,其特征在于,所述步骤一中的rts帧为ieee802.11网络支持可选的请求发送帧;所述的信噪比值snr计算公式如下:
snr=10*log10(ps/pn)(db)(1)
式(1)中,ps、pn分别为接收端接收到的信号功率、噪声功率。
3.根据权利要求1所述的方法,其特征在于,所述步骤二中按照如下规则选择扩频因子sf:
4.根据权利要求1所述的方法,其特征在于,所述步骤三中的dr的计算公式如下:
式中,bw为信道带宽,可以提高有效数据速率以缩短传输时间;cr为编码率进行前向错误检测与纠错。根据lora调制解调计算器评估权衡后,选择bw为250khz,cr设置为1。
5.根据权利要求1所述的方法,其特征在于,所述步骤三中的cts为ieee802.11网络支持可选的允许发送帧;所述的fcs为rts/cts帧的帧校验序列,用于携带信道信息与速率信息。
6.根据权利要求1所述的方法,其特征在于,所述步骤四中的ack为接收端成功接收数据包后向发送端反馈的确认帧。
7.根据权利要求1所述的方法,其特征在于,所述步骤五中的丢包率per是在网络传输过程中链路变差和网络拥塞碰撞造成的,指在单位时间内丢失的数据包与发送数据包的比率。
8.根据权利要求1所述的方法,其特征在于,所述步骤五中所述的丢包阈值根据实际应用场景进行设置。
9.根据权利要求1所述的方法,其特征在于,所述步骤六中所述的信道负荷erl为计算每帧数据对相应sf子信道的占用时间,并在统计周期ttotal[i]内累计总的占用时间tall_data[i],从而得到sf子信道的负荷erl[i],计算公式如下:
erl[i]=tall_data[i]/ttatal[i](3)
lora每传输一次数据的时间tdata[i]等于前导码时间tpreamble[i]和数据包传输时间tpayload[i]之和。前导码的传输时间tpreamble[i]可通过公式(4)~(5)计算得出:
tpreamble[i]=(npreamble 4.25)ts[i](4)
式中,npreamble表示已设定的前导码长度,通过读取寄存器regpreamblemsb和regpreamblelsb得到,ts[i]为单个lora符号数据包的周期;
数据包传输时间tpayload[i]计算公式如下:
tpayload[i]=payloadsymnb[i]*ts[i](6)
式中,payloadsymnb[i]为有效负载时间,通过公式(7)计算得到:
式中,pl表示有效负载的字节数,h表示是否使用报头,另h=1,de为此时速率最优,该位置1。统计周期内发送端单次和n次数据传输时间可由公式(8)~(9)得出:
tbusy[i]=tpreamble[i] tpayload[i](8)
tall_data[i]=n*tdata[i](9)。
技术总结