一种低功耗广域网内通信数据的传输调度方法和系统与流程

文档序号:16902411发布日期:2019-02-19 18:08阅读:265来源:国知局
一种低功耗广域网内通信数据的传输调度方法和系统与流程

本发明涉及无线通信领域,并特别涉及一种低功耗广域网内通信数据的传输调度方法和系统。



背景技术:

无线传感器网络是由大量密集部署在监控区域的自治节点组成,通过无线通信方式形成的一种自组织网络应用系统,被广泛应用于军事、智能交通、环境监控、医疗卫生等多个领域,是国内外公认的具有广阔发展前景的高技术产业。

功耗、成本和部署难度是无线传感器网络所面临的三大难题,目前的无线传感器网络一般采用低成本、具有成熟协议栈的zigbee节点,其中zigbee为一种标准的低功耗局域网协议,zigbee节点以自组织方式将节点连接起来建立网络。但受限于节点信号传输距离,zigbee网络中节点需要通过其它节点中继转发以多跳的方式将数据传输至网关,节点需要侦听和转发网络中其它节点的数据包,侦听带来的能量开销较大,阻碍了无线传感器网络应用的推广。

近年来,随着通信技术的进步,以低功耗、低速率、长距离通讯为特征的低功耗广域网成为传感网与物联网的发展方向之一。低功耗广域网信号传输距离远的优点允许节点单跳将数据传输至网关,节点不需要进行侦听和转发数据,允许节点完成与网关数据传输后关闭射频模块,从而降低了节点功耗,低功耗的优点让低功耗广域网逐渐成为无线传感器网络重要发展方向。然而,针对其通讯速率较低,相同数据量占用信道时间长;传输距离远,相同节点部署密度,网关负载节点多。通信速度低和传输距离远的特点造成网络信道资源紧张,需要新型传输调度算法来有效提升无线信道的利用率,从而满足数据传输速率的要求。

无线传感器网络协议栈中的传输调度方法负责为节点分配无线通信资源,是关系到无线网络的信道利用率、延迟等关键性能指标的重要技术。其中,现有技术采用的方法包括,节点立即传输待发送数据的方式来竞争信道,若数据传输失败,随机延迟后重新发送,信道利用率上限为18.6%。改进方法将信道在时间上分段,每个节点只能在一个分段的开始处进行数据发送,信道利用率的上限增加至36.8%。低功耗广域网波特率低和信号传输距离远的特点,造成数据传输需要占用较长时间的信道和网络负载节点数目多,要求高信道利用率的传输调度方法,随机争用信道的aloha及其改进方法信道利用率低,难以应用于低功耗广域网。由此可采用检测信道状态的方式降低数据碰撞的概率,提高信道利用率,但检测信道状态要求节点侦听信道,无法应用于节点不进行持续侦听的低功耗广域网。基于调度的传输调度方法为每个节点分配通信时隙,避免节点之间的相互干扰,此方法集中于针对多跳网路,以网络吞吐量、数据延迟等指标为优化目标,如将网络建模为图模型,利用高斯域原理求解,多跳的特点增加了传输调度方法的复杂性,降低了在集中式的低功耗广域网网络性能。综上,已有传输调度方法难以应用于低功耗广域网,需要面向低功耗广域网研究新型传输调度方法。



技术实现要素:

本发明目的是针对低功耗广域网中信道资源紧张的缺点,在网络应用层提供一种面向低功耗网络的高信道利用率的传输调度方法,同时有效提高网络数据延迟、功耗和负载能力关键性能。需要注意的是,本发明也可以应用于普通广域网,但是在低功耗广域网中,信道资源紧张的特点更加突出,而普通广域网目前在信道资源方面不紧张,不太需要这种方法,同时二者的数据类型不一样,用到的信道分配方法也有区别,本发明中的数据预测与信道分配方法更加适合在低功耗广域网中使用,即本发明最佳使用环境是低功耗网,但用在正常功耗的普通广域网中也是可以的,也可以提高普通广域网的传输性能,只不过没有低功耗网提升的明显。

具体地说,本发明公开了一种低功耗广域网内通信数据的传输调度方法,其中包括:

步骤s1、构建广域网,该广域网包括通信节点和网关,该通信节点以单跳的方式接入该网关,接入时该网关为该通信节点授时并分配通信时隙;

步骤s2、该通信节点在该通信时隙内主动向该网关传输通信数据和该通信数据的生成时间;

步骤s3、该网关根据该生成时间与该通信时隙,更新该通信节点的通信时隙;

步骤s4、循环该步骤s2和该步骤s3,以实现该广域网的传输调度。

该低功耗广域网内通信数据的传输调度方法,其中该步骤s1包括:构建包括n个时隙的时间帧,该时间帧的第一个时隙为公共时隙,用于当该通信节点在被分配的通信时隙内未能与该网关成功进行数据传输时,该通信节点在下一个时间帧中该公共时隙内重新与网关进行数据传输。

该低功耗广域网内通信数据的传输调度方法,其中步骤s1中该通信节点接入网关的具体过程包括:

步骤s11、置零retry_times和reconnect_times变量,retry_times为记录通信节点通过随机退避方法加入网络的次数,reconnect_times为节点通过公共时隙与网关进行数据传输的次数;

步骤s12、检查retry_times是否超过阈值,若是则执行步骤s13,否则执行步骤s14;

步骤s13、该通信节点退出处理流程;

步骤s14、该通信节点进行随机退避延迟后,开启射频发送广播数据,增加retry_times计数;

步骤s15、该通信节点在最长等待网关回复时间阈值内收到网关回包,则通信节点加入网络成功,执行步骤s17,否则执行步骤s16;

步骤s16、关闭射频,执行步骤s12;

步骤s17、关闭射频,清零retry_times参数;

步骤s18:通过解析该网关回包,更新通信节点的本地时间,获得该通信时隙。

该低功耗广域网内通信数据的传输调度方法,其中该步骤s2具体包括:

步骤s21、该通信节点检查该通信时隙对应的时刻是否来临,若是则执行步骤s22,否则继续等待时隙开始;

步骤s22、检查该通信节点的数据队列中是否有待传输的通信数据,若有则执行步骤s23,否则继续等待数据生成并执行步骤s21;

步骤s23、该通信节点向该网关发送通信数据;

步骤s24、通信节点在预设时间阈值内收到网关回包,则通信数据传输成功,执行步骤s25,否则执行步骤s27;

步骤s25、将传输成功的通信数据从数据队列中删除;

步骤s26、通过解析网关回包,更新节点本地时间,更新节点的通信时隙;

步骤s27、检查当前通信时隙是否结束,若是则关闭射频,否则执行步骤s28;

步骤s28:检查数据队列中是否还存在待传输的通信数据,若存在则执行步骤s23,否则关闭射频。

该低功耗广域网内通信数据的传输调度方法,其中该步骤s3包括:

步骤s31、该网关始终保持无线射频开启并侦听信道;

步骤s32、该网关当收到该通信数据,且该通信数据为广播数据或该通信数据中网关编号字段与该网关自身编号相同时,执行步骤s33,否则继续等待下一通信数据,执行步骤s32;

步骤s33、依据该通信数据的格式定义解析该通信数据,提取传输该通信数据的通信节点的编号、该通信数据的生成时间;

步骤s34、根据该编号,检查该网关是否已对应通信节点的访问记录,若有则执行步骤s38,否则执行步骤s35;

步骤s35、为该编号对应的通信节点分配存储空间,使用字典结构存储通信节点信息,将通信节点的键值插入字典中,其中键为该编号,值为通信节点对应存储空间的存储位置;

步骤s36、置零通信节点存储空间中变量;

步骤s37、该网关首次接收到节点数据包,此时为节点分配的通信时隙为该公共时隙;

步骤s38、判断是否已建立节点流量模型,若是则执行步骤s310,否则执行步骤s39;

步骤s39、该网关获取该通信节点两次通信数据后,初始化该通信节点的流量模型,将该通信节点的当前状态s=(data_time-last_flow_time)/tslot插入状态空间,其中tslot为通信时隙的长度,last_flow_time为该通信节点上次通信数据生成时间,data_time为该通信节点当前通信数据生成时间;

步骤s310、根据通信节点当前通信数据占用的通信时隙,更新时隙占用概率表;

步骤s311、根据当前节点状态更新节点的流量模型并进行状态转移;

步骤s312:通过马尔科夫链预测该通信节点下次通信数据生成时间和对应的概率,根据预测得到的通信数据生成时间和对应的概率,得到分配时间帧中每一个通信时隙对应的通信节点的延迟期望和通信数据碰撞概率,选择该延迟期望和该冲突期望加权和最小的通信时隙,作为最优时隙,通信节点下一次占用该最优时隙传输通信数据。

本发明还公开了一种低功耗广域网内通信数据的传输调度系统,其中包括:

广域网构建模块,用于构建广域网,该广域网包括通信节点和网关,该通信节点以单跳的方式接入该网关,接入时该网关为该通信节点授时并分配通信时隙;

数据发送模块,用于使该通信节点在该通信时隙内主动向该网关传输通信数据和该通信数据的生成时间;

通信时隙更新模块,该网关根据该生成时间与该通信时隙,更新该通信节点的通信时隙;

循环模块,用于循环调用执行该数据发送模块和该通信时隙更新模块,以实现该广域网内通信数据的传输调度。

该低功耗广域网内通信数据的传输调度系统,其中该广域网构建模块包括:构建包括n个时隙的时间帧,该时间帧的第一个时隙为公共时隙,用于当该通信节点在被分配的通信时隙内未能与该网关成功进行数据传输时,该通信节点在下一个时间帧中该公共时隙内重新与网关进行数据传输。

该低功耗广域网内通信数据的传输调度系统,其中广域网构建模块中该通信节点接入网关的具体过程包括:

第一判断模块,用于置零retry_times和reconnect_times变量,retry_times为记录通信节点通过随机退避方法加入网络的次数,reconnect_times为节点通过公共时隙与网关进行数据传输的次数,判断retry_times是否超过阈值,若是则调用执行退出模块,否则执行数据广播模块;

退出模块、该通信节点退出处理流程;

数据广播模块,该通信节点进行随机退避延迟后,开启射频发送广播数据,增加retry_times计数,该通信节点在最长等待网关回复时间阈值内收到网关回包,则通信节点加入网络成功,调用执行网关回包解析模块,否则调用执行射频关闭模块;

射频关闭模块,用于关闭射频,并判断retry_times是否超过阈值,若是则调用执行退出模块,否则执行数据广播模块;

网关回包解析模块,用于关闭射频,清零retry_times参数,通过解析该网关回包,更新通信节点的本地时间,获得该通信时隙。

该低功耗广域网内通信数据的传输调度系统,其中该数据发送模块具体包括:

第二判断模块,该通信节点判断该通信时隙对应的时刻是否来临,若是则调用执行第三判断模块,否则继续等待时隙开始;

第三判断模块,判断该通信节点的数据队列中是否有待传输的通信数据,若有则调用执行数据发送模块,否则继续等待数据生成并调用执行该第二判断模块;

数据发送模块,该通信节点向该网关发送通信数据;

第四判断模块,判断通信节点是否在预设时间阈值内收到网关回包,若是,则调用执行删除模块,否则调用执行第五判断模块;

删除模块,将传输成功的通信数据从数据队列中删除,通过解析网关回包,更新节点本地时间,更新节点的通信时隙;

第五判断模块,判断当前通信时隙是否结束,若是则关闭射频,否则检查数据队列中是否还存在待传输的通信数据,若存在则调用执行该数据发送模块,否则关闭射频。

该低功耗广域网内通信数据的传输调度系统,其中该通信时隙更新模块包括:

射频开启模块,该网关始终保持无线射频开启并侦听信道,该网关当收到该通信数据,且该通信数据为广播数据或该通信数据中网关编号字段与该网关自身编号相同时,调用执行数据解析模块,否则继续等待下一通信数据;

数据解析模块,依据该通信数据的格式定义解析该通信数据,提取传输该通信数据的通信节点的编号、该通信数据的生成时间;

第六判断模块,根据该编号,判断该网关是否已对应通信节点的访问记录,若有则调用执行第七判断模块,否则调用执行时隙分配模块;

时隙分配模块,为该编号对应的通信节点分配存储空间,使用字典结构存储通信节点信息,将通信节点的键值插入字典中,其中键为该编号,值为通信节点对应存储空间的存储位置,置零通信节点存储空间中变量,该网关首次接收到节点数据包,此时为节点分配的通信时隙为该公共时隙;

第七判断模块,判断是否已建立节点流量模型,若是则调用执行时隙占用概率表更新模块,否则调用执行流量模型构建模块;

流量模型构建模块,该网关获取该通信节点两次通信数据后,初始化该通信节点的流量模型,将该通信节点的当前状态s=(data_time-last_flow_time)/tslot插入状态空间,其中tslot为通信时隙的长度,last_flow_time为该通信节点上次通信数据生成时间,data_time为该通信节点当前通信数据生成时间;

时隙占用概率表更新模块,根据通信节点当前通信数据占用的通信时隙,更新时隙占用概率表;

状态转移模块,根据当前节点状态更新节点的流量模型并进行状态转移,并通过马尔科夫链预测该通信节点下次通信数据生成时间和对应的概率,根据预测得到的通信数据生成时间和对应的概率,得到分配时间帧中每一个通信时隙对应的通信节点的延迟期望和通信数据碰撞概率,选择该延迟期望和该冲突期望加权和最小的通信时隙,作为最优时隙,通信节点下一次占用该最优时隙传输通信数据。

本发明面向低功耗广域网,提出了一种在应用层实现的高信道利用率、低延迟和低功耗传输调度方法。

附图说明

图1为帧格式图;

图2为数据包格式图;

图3为ack包格式图;

图4为本发明节点工作流程图;

图5为本发明网关工作流程图。

具体实施方式

针对低功耗广域网中信道资源紧张的缺点,提出一种高信道利用率的传输调度方法,同时有效提高网络数据延迟、功耗和负载能力关键性能。解决以下两个技术问题:1.低开销的节点流量建模方法,实现对平稳性周期和事件驱动节点流量的准确预测。2.高信道利用率传输调度方法,网关根据对节点数据流量对应时隙的预测,以避免数据碰撞丢包和降低数据延迟为优化目标,为节点分配时隙,

本发明提出的基于时隙分配的传输调度方法,包括帧格式定义、节点和网关数据通信流程定义和最优时隙分配算法。技术效果:节点在被分配的指定时隙内开启射频传输数据,节点不需要通过侦听信道的方式竞争通信时隙,节点仅在向网关传输数据后侦听较短时长信道以接收网关ack回包,方法具有节点侦听时间短,节点不进行侦听期间关闭射频,从而显著降低功耗的优点;同时,通过指定节点和网关的通信时隙,网络中不需要应用前导码的方法唤醒节点,避免了前导码造成的额外信道开销,提高了信道利用率。

本发明提出的马尔科夫链的节点流量建模方法,包括将节点两次数据包生成时间差即tn+1-tn定义为马尔科夫链状态和一种统计节点在不同状态下转移次数以建立马尔科夫状态转移概率的计数方法,如公式(1)所示,p(si|si-1)为从状态为si-1转移到状态si的概率,c(s,si-1)为从状态为si-1转移到状态s的次数,定义指数增长的计数方法以提高对状态转移的响应速度,k为状态持续保持相同的次数,max_k为防止c(s,si-1)容易溢出而设定的阈值,其优选值为5。

技术效果:网关接收到节点的数据包后,需要为节点分配用于下次数据传输的通信时隙,通过建立节点流量模型,网关能够预测节点待传输数据的生成时间,可以计算分配不同时隙对数据延迟的影响,网关为节点分配紧邻数据生成时刻的时隙从而降低网络数据延迟。同时,通过预测节点数据生成时间,综合网关为节点分配的通信时隙信息,得到不同时段被节点占用用于数据通信的概率,一方面通过将未被占用的时段对应的时隙分配给网络中其余节点,提高了信道的利用率,另一方面,通过避免分配时隙时造成多个节点占用相同时段进行数据传输,避免了数据碰撞丢包,提高了网络的有效带宽,避免数据重传造成的数据延迟和能耗开销。同时,基于马尔科夫链的流量建模方法能对平稳性周期性和事件驱动节点流量模式下下流量的预测,适用性广,具有计算和存储开销小,可以运行在嵌入式平台上的优点。

具体地说,本发明公开了一种低功耗广域网内通信数据的传输调度方法,其中包括:

步骤s1、构建广域网,该广域网包括通信节点和网关,该通信节点以单跳的方式接入该网关,接入时该网关为该通信节点授时并分配通信时隙;

步骤s2、该通信节点在该通信时隙内主动向该网关传输通信数据和该通信数据的生成时间;

步骤s3、该网关根据该生成时间与该通信时隙,更新该通信节点的通信时隙;

步骤s4、循环该步骤s2和该步骤s3,以实现该广域网的传输调度。

该低功耗广域网内通信数据的传输调度方法,其中该步骤s1包括:构建包括n个时隙的时间帧,该时间帧的第一个时隙为公共时隙,用于当该通信节点在被分配的通信时隙内未能与该网关成功进行数据传输时,该通信节点在下一个时间帧中该公共时隙内重新与网关进行数据传输。

该低功耗广域网内通信数据的传输调度方法,其中步骤s1中该通信节点接入网关的具体过程包括:

步骤s11、置零retry_times和reconnect_times变量,retry_times为记录通信节点通过随机退避方法加入网络的次数,reconnect_times为节点通过公共时隙与网关进行数据传输的次数;

步骤s12、检查retry_times是否超过阈值,若是则执行步骤s13,否则执行步骤s14;

步骤s13、该通信节点退出处理流程;

步骤s14、该通信节点进行随机退避延迟后,开启射频发送广播数据,增加retry_times计数;

步骤s15、该通信节点在最长等待网关回复时间阈值内收到网关回包,则通信节点加入网络成功,执行步骤s17,否则执行步骤s16;

步骤s16、关闭射频,执行步骤s12;

步骤s17、关闭射频,清零retry_times参数;

步骤s18:通过解析该网关回包,更新通信节点的本地时间,获得该通信时隙。

该低功耗广域网内通信数据的传输调度方法,其中该步骤s2具体包括:

步骤s21、该通信节点检查该通信时隙对应的时刻是否来临,若是则执行步骤s22,否则继续等待时隙开始;

步骤s22、检查该通信节点的数据队列中是否有待传输的通信数据,若有则执行步骤s23,否则继续等待数据生成并执行步骤s21;

步骤s23、该通信节点向该网关发送通信数据;

步骤s24、通信节点在预设时间阈值内收到网关回包,则通信数据传输成功,执行步骤s25,否则执行步骤s27;

步骤s25、将传输成功的通信数据从数据队列中删除;

步骤s26、通过解析网关回包,更新节点本地时间,更新节点的通信时隙;

步骤s27、检查当前通信时隙是否结束,若是则关闭射频,否则执行步骤s28;

步骤s28:检查数据队列中是否还存在待传输的通信数据,若存在则执行步骤s23,否则关闭射频。

该低功耗广域网内通信数据的传输调度方法,其中该步骤s3包括:

步骤s31、该网关始终保持无线射频开启并侦听信道;

步骤s32、该网关当收到该通信数据,且该通信数据为广播数据或该通信数据中网关编号字段与该网关自身编号相同时,执行步骤s33,否则继续等待下一通信数据,执行步骤s32;

步骤s33、依据该通信数据的格式定义解析该通信数据,提取传输该通信数据的通信节点的编号、该通信数据的生成时间;

步骤s34、根据该编号,检查该网关是否已对应通信节点的访问记录,若有则执行步骤s38,否则执行步骤s35;

步骤s35、为该编号对应的通信节点分配存储空间,使用字典结构存储通信节点信息,将通信节点的键值插入字典中,其中键为该编号,值为通信节点对应存储空间的存储位置;

步骤s36、置零通信节点存储空间中变量;

步骤s37、该网关首次接收到节点数据包,此时为节点分配的通信时隙为该公共时隙;

步骤s38、判断是否已建立节点流量模型,若是则执行步骤s310,否则执行步骤s39;

步骤s39、该网关获取该通信节点两次通信数据后,初始化该通信节点的流量模型,将该通信节点的当前状态s=(data_time-last_flow_time)/tslot插入状态空间,其中tslot为通信时隙的长度,last_flow_time为该通信节点上次通信数据生成时间,data_time为该通信节点当前通信数据生成时间;

步骤s310、根据通信节点当前通信数据占用的通信时隙,更新时隙占用概率表;

步骤s311、根据当前节点状态更新节点的流量模型并进行状态转移;

步骤s312:通过马尔科夫链预测该通信节点下次通信数据生成时间和对应的概率,根据预测得到的通信数据生成时间和对应的概率,得到分配时间帧中每一个通信时隙对应的通信节点的延迟期望和通信数据碰撞概率,选择该延迟期望和该冲突期望加权和最小的通信时隙,作为最优时隙,通信节点下一次占用该最优时隙传输通信数据。

为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。

本发明包括两大部分,基于时隙分配的传输调度和低开销的节点流量建模。

在传统数据传输过程中,前导码的作用是唤醒数据接收方,使数据进行同步传输,在传输数据中加入前导码,网络中无限传感器作为通信节点(以下简称节点)周期性开启射频、侦听信道,依据是否收到前导码转入接收状态或休眠状态,但低功耗广域网信道资源紧张,应用前导码造成额外的信道开销,同时侦听信道造成能耗开销,低功耗广域网中难以应用前导码的方法。低功耗广域网节点单跳接入网关和节点与节点之间不进行数据通信的特点,形成了以网关为中心的星型网络拓扑结构,通过网关为其负载的节点分配通信时隙,节点在被分配的指定时隙内开启射频传输数据的方式,网络中节点不需要通过侦听信道的方式竞争通信时隙,实现控制网络中节点有序访问信道,同时节点仅在向网关传输数据后侦听较短时长信道以接收网关报文达到确认(ack)回包,方法具有节点侦听时间短,节点不进行侦听期间关闭射频,从而显著降低功耗的优点;同时,通过指定节点和网关的通信时隙,节点在指定的时隙开启射频并与网关进行数据传输,不需要应用前导码的方法唤醒节点并同步传输,避免了前导码造成的额外信道开销,提高了信道利用率。

基于时隙分配的传输调度方法中,节点通信时隙与待传输数据生成时刻的时间关系影响网络信道利用率和数据延迟性能,节点通信时隙早于数据生成时刻造成信道浪费,节点通信时隙迟于通信时隙造成数据延迟较大。因此需要建立节点的流量模型,以实现网关与节点完成数据传输后,网关依据对节点流量的预测为节点分配用于下次数据传输的通信时隙,通信时隙为节点数据生成时刻,以避免信道浪费和降低数据延迟。低功耗广域网中节点流量以平稳性的周期性数据流量为主,但同时存在事件驱动的数据流量,如在一个环境监测应用中,当监测数据处于正常范围内时,节点的采样周期长,当监测数据超出正常范围后,节点降低采样周期已提高监测额实时性。同时,低功耗广域网中节点和网关一般为计算和存储能力有限的嵌入式设备,因此要求流量模型方法能够低开销地实现对平稳周期性和事件驱动节点流量的准确预测。

低功耗广域网信道资源紧张的特点要求将提高信道利用率作为核心目标,同时数据延迟、能耗和负载能力也是网络的关键性能。多个节点使用相同时隙进行数据通信造成的数据碰撞丢包和节点在被分配的时隙由于没有待传输的数据造成的信道浪费是降低信道利用率的主要因素;节点由于进行数据传输开启射频模块产生的功耗是节点整体功耗的重要组成部分,降低射频开启时间可以显著降低节点功耗,降低节点侦听信道的时间和避免数据冲突丢包造成数据重发是降低节点射频功耗的主要方法;数据延迟是指从节点通过传感器采样等方式产生数据,到在通信时隙将数据传输至网关并被网关成功接收所经历的时间延迟,分配紧邻数据生成时刻的时隙和避免数据碰撞丢包造成的数据重发是降低数据延迟的主要方法;低功耗广域网中信道资源紧张,提高信道利用率从而允许网络中更多节点使用信道进行数据传输是提高网络负载能力的主要方法。

为使本发明的技术方案更加清晰明了,以下结合附图对本发明进一步详细说明。

图1描述了本发明的帧格式,帧由n个等长的时隙构成,其中n为正整数,且第一个时隙为公共时隙,用于解决由于信号干扰等因素节点在被分配的时隙内未能与网关成功进行数据传输,节点在下一个帧中公共时隙内重新与网关进行数据传输以重新加入网络和获取通信时隙的问题。n优选值为8,tslot为时隙的长度,取值与节点、网关间时间同步精度和节点完成一次数据传输需要的时间相关,其中节点一次数据传输包括节点向网关发送数据包和接收网关ack回包两个过程,tslot优选值为5s。

图2、图3描述了本发明涉及的数据包和ack包格式。数据包用于节点向网关传输数据,数据包中data字段为节点传输的数据,ack包为网关成功收到节点数据包后,回复给节点的包,用于确认数据传输成功、同步节点时间和为节点分配通信时隙。数据包和ack包中不同字段说明如下:

sink_id:网关编号,数据包中sink_id用于指定数据包的目标网关,sink_id为0表示数据包为广播数据,无指定目标网关。

node_id:节点编号,ack包中node_id用于指定ack包的目标节点。

data_time:data数据生成时间,网关通过data_time建立节点流量模型。

data:节点向网关传输的数据,例如节点采集的传感数据。

sys_time:网络时间,节点通过sys_time与网关保持时间同步。

slot_index:网关为节点分配的帧中时隙位置,slot_index为[0,n)区间整数。

图4描述了节点的工作流程,流程图描述了节点首次加入网络、通过网关分配的指定时隙进行数据传输和通过公共时隙进行数据传输的处理流程。

节点首次加入网络工作流程说明如下:

步骤11:节点初始化射频模块,置零retry_times和reconnect_times变量,retry_times为记录节点通过随机退避方法加入网络的次数,reconnect_times为节点通过公共时隙与网关进行数据传输的次数。

步骤12:检查retry_times是否超过阈值max_retry_times,max_retry_times为允许节点通过随机退避连续尝试加入网络的最大次数,其优选值为5。若retry_times>max_retry_times执行步骤13,否则执行步骤14。

步骤13:判定节点多次加入网络失败,射频模块存在硬件故障,节点退出处理流程。

步骤14:由于网络中可能存在多个节点竞争加入网络,节点需要进行随机退避延迟后,开启射频,置零数据包中sink_id字段表示为广播数据,发送数据包,增加retry_times计数,同时置零并开启计时器rf_wait。

步骤15:节点在最长等待网关回复ack时间阈值max_rf_wait内收到网关ack回包,则节点加入网络成功,执行步骤17,否则表明节点超时未收到ack,执行步骤16。max_rf_wait优选值为3s。

步骤16:关闭射频,执行步骤12。

步骤17:关闭射频,清零retry_times参数。

步骤18:解析ack数据包,通过sink_id字段指定节点数据传输的目标网关,通过sys_time更新节点本地时间,slot_index指定节点数据通信的时隙。

步骤19:检查等式slot_index==0是否为成立,等式成立表示节点使用公共时隙与网关进行通信,执行步骤31,否则节点使用指定时隙与网关进行通信,执行21。

节点使用指定时隙与网关传输数据流程说明如下:

步骤21:检查节点被分配时隙对应的时刻是否来临,时隙开始步骤22,否则继续等待时隙开始,执行步骤21,公式(2)描述了通信时隙开始的条件。

步骤22:检查节点数据队列中是否有待传输数据,若有执行23,否则继续等待数据生成并执行步骤21。

步骤23:开启射频,发送数据包,置零节点下次通信时隙next_slot_index以等待网关为节点重新分配通信时隙,同时置零并开始计时器retry_time。

步骤24:节点在时间阈值max_rf_wait内收到网关ack回包,则节点数据传输成功,执行步骤25,否则表示由于干扰等因素,节点未能与节点成功进行数据传输,执行步骤27。

步骤25:节点向网关传输数据包成功,将此条数据包从节点待传输数据队列中删除。

步骤26:解析ack数据包,通过sys_time更新节点本地时间,通过slot_index字段赋值更新节点下次数据通信的时隙next_slot_index。

步骤27:检查节点通信时隙是否结束,通信时隙结束关闭射频,否则节点仍处于通信时隙内,可以继续传输数据,执行步骤29。公式(3)描述了通信时隙未结束的条件。

sys_time%(n×tslot)/tslot≥(slot_index+1)%n(3)

步骤28:检查数据队列中是否存在待传输数据,存在待传输数据执行步骤23,否则关闭射频。

节点使用公共时隙与网关进行数据传输的流程说明如下:

步骤31:检查节点通过公共时隙与网关进行数据传输的次数reconnect_times是否超过阈值max_reconnect_times。网关未建立节点流量模型时,节点获取到的通信时隙为公共时隙,或由于信号干扰等原因节点未获取到通信的指定时隙,节点需要通过公共时隙重新与网关通信,max_reconnect_times为允许节点连续使用公共时隙通信的最大次数,其优选值为5。reconnect_times超过阈值max_reconnect_times,认为节点无法通过公共时隙加入网络,需要通过随机退避的方式加入网络,执行步骤3-2。否则继续节点使用使用公共时隙进行通信,执行步骤3-3。

步骤32:置零reconnect_times和retry_times,置零sink_id表示当前网关不可用,需要寻找网关,执行步骤12。

步骤33:检查节点被公共时隙对应时刻是否来临,时隙开始执行执行步骤34,否则继续等待时隙开始,执行33,公式(2)描述了通信时隙开始的条件。

步骤34:由于可能存在多个节点使用公共时隙传输数据,节点需要进行随机退避后传输后传输数据,退避时间为小于tslot的随机数。

步骤35:由于节点可能在公共时隙内进行多次随机退避,需要检查当前时刻是否已超出公共时隙对应时刻,以防止多次随机退避后公共时隙已结束。若是执行步骤41,否则执行步骤36。公式(3)描述了公共时隙结束的条件。

步骤36:开启射频,发送数据包,reconnect变量自增1,置零节点下次通信时隙next_slot_index以等待网关为节点重新分配通信时隙,同时置零并开始计时器retry_time。

步骤37:节点在时间阈值max_rf_wait内收到网关ack回包,则节点数据传输成功,执行步骤38,否则表示由于干扰等因素,节点未能与节点成功进行数据传输,执行步骤3-1。

步骤38:节点向网关传输数据包成功,将此条数据包从节点待传输数据队列中删除。

步骤39:解析ack数据包,通过sys_time更新节点本地时间,通过slot_index字段赋值更新节点下次数据通信的时隙next_slot_index。

步骤310:置零reconnect_times参数。

步骤41:关闭射频,通过赋值操作slot_index=next_slot_index更新节点的通信时隙。

图5描述了网关的工作流程,具体步骤说明如下。

步骤51:网关初始化无线射频模块,始终保持无线射频开启并侦听信道。分配时隙占用概率表conflict_list[l]的存储空间,conflict_list[l]用于记录连续l个时隙被节点用作通信时隙的概率,l优选值为网络中节点的最长数据周期对应时隙数目的5~8倍。置零变量conflict_list_tail,conflict_list_tail用于记录已被分配的最远时刻对应时隙在时隙占用概率表中位置。

步骤52:网关持续侦听信道,当收到数据包且数据包为广播数据或数据包中sink_id字段与网关自身编号相同时,执行步骤53,否则继续等待数据包,执行步骤52。

步骤53:依据图2数据包格式定义解析数据包,提取node_id、data_time和data字段。

步骤54:检查网关是否已有数据包中node_id字段对应节点的访问记录,若无执行步骤55,否则执行步骤58。

步骤55:为节点分配存储空间,为提高检索效率,使用字典结构存储节点信息,将节点的键值插入字典中,其中键为节点的node_id,值为节点对应存储空间的存储位置。

步骤56:置零节点存储空间中变量,存储空间中变量名称和用途说明如下,执行公式(4)赋值。

变量last_flow_time:记录节点上次数据生成时间;

变量last_sys_time:记录网关上次为节点分配时隙时的网络时间;

变量first_visit_flag:网关首次收到节点数据包标志位,为1表示首次收到;

变量flow_model_flag:网关建立节点流量模型标志位,为1表示已建立;

变量state_list[s_n]:长度为s_n的节点马尔科夫链的状态空间,s_n取值与网关的存储空间大小和节点最多可能状态数相关。

变量state_index:记录节点当前状态在状态空间中state_list[s_n]的索引位置;

变量assign_slot_index:记录节点在帧周期中被分配的时隙位置;

变量k:记录节点状态持续相同的次数,其取值上限为max_k;

变量state_transfer_count[s_n][s_n]:记录状态空间状态之间转移的次数

变量state_transfer_sum[s_n]:记录某个状态转移到其余状态次数的总和

步骤57:由于网关至少需要两条节点数据包以建立节点的流量模型,网关首次接收到节点数据包,未建立节点流量模型,此时为节点分配公共时隙,即slot_index=0。

步骤58:检查等式flow_model_flag==1是否成立判断是否已建立节点流量模型,等式成立表示已建立节点流量模型,执行步骤510,否则执行步骤59。

步骤59:网关获取到节点两次数据包后初始化节点的流量模型,将当前状态s=(data_time-last_flow_time)/tslot插入状态空间,赋值state_index为当前状态s在状态空间中位置。

步骤510:由于已准确知道节点当前数据包占用的时隙情况,更新时隙占用概率表,以消除步骤步骤513中为节点分配时隙后对时隙占用概率表的影响,如伪代码所示。

步骤511:根据当前观测到的节点状态更新节点的流量模型并更新节点的状态索引,伪代码如下所示,8~13行用于防止用于长时间累加造成state_transfer_sum[s_n]数值溢出将对应的数值衰减到一半,max_sum优选值为255。

步骤512:最优时隙分配算法,依次完成节点流量预测、延迟期望计算、冲突期望计算和最优时隙选择。

节点流量预测;

通过基于马尔科夫链的方法预测节点下次数据生成时间和对应的概率。

p(tn+1=last_flow_time+state_list[i]×tslot)=

p(state_list[i]|state_list[state_index]),i<s_n

延迟期望计算:

依据对节点流量的预测,计算分配帧中每一个时隙,节点的延迟期望。

delay(x,i)=(i+n-s_t(x)modn)modn

t=last_flow_time

冲突期望计算:

依据对节点流量的预测,计算分配帧中每一个时隙,节点的数据碰撞概率。其中数据碰撞,指的是在同一通讯范围内两个或者以上的设备同时发送无线数据,造成这些无线数据由于互相干扰,无法被正确接收的事件。数据碰撞概率是马尔科夫链预测出的指帧中每一个时隙有可能存在其他设备同时发包的概率。如果将节点的通讯时间分配在该时隙,则存在以上述概率发生数据碰撞的可能。

s=state_list[state_index]

f(t,i)=(t+(i+n-t%n))%l

最优时隙选择:

选择延迟期望和冲突期望加权和最小的时隙,λ为加权系数,优选值为5。

loss[i]=delay_loss[i]+λ×conflict_loss[i]

步骤513:由于为节点分配了指定时隙,节点将在未来占用时隙进行数据传输,需要依据对节点流量预测,更新时隙占用概率表,如伪代码所示,9-15用于置零数据占用概率表中被当前时刻覆盖的时隙。

步骤514:依据等式sink_id==0是否判断判断节点的数据包是否为广播数据,等式成立执行步骤515,否则执行步骤516。

步骤515:由于网络中存在多个网关,节点发送广播数据后,可能有多个网关回复ack,为避免网关同时回复ack造成的数据碰撞丢包,网关需进行随机延迟退避,退避时间为小于tslot的随机值。

步骤516:网关赋值ack包中字段,网关编号赋值sink_id,数据包中node_id赋值node_id,网关当前时间赋值data_time,最优时隙slot_index赋值slot_index,回复ack后执行步骤52。

本发明通过时隙分配的传输调度方法,节点仅在通信时隙内侦听较短时间以等待网关ack回包,降低了节点功耗。通过建立节点的流量模型,网关可以预测节点数据生成时间,计算每一个时隙的数据延迟,分配数据延迟短的时隙降低节点的数据延迟。同时,综合对节点数据生成时间的预测和网关为节点分配的通信时隙信息,得到不同时段被节点占用信道进行数据传输情况,一方面通过将未被占用的时段对应的时隙分配给网络中其余节点,提高了信道的利用率,另一方面,通过避免分配时隙时造成多个节点占用相同时段进行数据传输,避免了数据碰撞丢包,从而避免了数据重传造成的数据延迟和能耗开销,提高了网络的负载能力。

以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。

本发明还公开了一种低功耗广域网内通信数据的传输调度系统,其中包括:

广域网构建模块,用于构建广域网,该广域网包括通信节点和网关,该通信节点以单跳的方式接入该网关,接入时该网关为该通信节点授时并分配通信时隙;

数据发送模块,用于使该通信节点在该通信时隙内主动向该网关传输通信数据和该通信数据的生成时间;

通信时隙更新模块,该网关根据该生成时间与该通信时隙,更新该通信节点的通信时隙;

循环模块,用于循环调用执行该数据发送模块和该通信时隙更新模块,以实现该广域网内通信数据的传输调度。

该低功耗广域网内通信数据的传输调度系统,其中该广域网构建模块包括:构建包括n个时隙的时间帧,该时间帧的第一个时隙为公共时隙,用于当该通信节点在被分配的通信时隙内未能与该网关成功进行数据传输时,该通信节点在下一个时间帧中该公共时隙内重新与网关进行数据传输。

该低功耗广域网内通信数据的传输调度系统,其中广域网构建模块中该通信节点接入网关的具体过程包括:

第一判断模块,用于置零retry_times和reconnect_times变量,retry_times为记录通信节点通过随机退避方法加入网络的次数,reconnect_times为节点通过公共时隙与网关进行数据传输的次数,判断retry_times是否超过阈值,若是则调用执行退出模块,否则执行数据广播模块;

退出模块、该通信节点退出处理流程;

数据广播模块,该通信节点进行随机退避延迟后,开启射频发送广播数据,增加retry_times计数,该通信节点在最长等待网关回复时间阈值内收到网关回包,则通信节点加入网络成功,调用执行网关回包解析模块,否则调用执行射频关闭模块;

射频关闭模块,用于关闭射频,并判断retry_times是否超过阈值,若是则调用执行退出模块,否则执行数据广播模块;

网关回包解析模块,用于关闭射频,清零retry_times参数,通过解析该网关回包,更新通信节点的本地时间,获得该通信时隙。

该低功耗广域网内通信数据的传输调度系统,其中该数据发送模块具体包括:

第二判断模块,该通信节点判断该通信时隙对应的时刻是否来临,若是则调用执行第三判断模块,否则继续等待时隙开始;

第三判断模块,判断该通信节点的数据队列中是否有待传输的通信数据,若有则调用执行数据发送模块,否则继续等待数据生成并调用执行该第二判断模块;

数据发送模块,该通信节点向该网关发送通信数据;

第四判断模块,判断通信节点是否在预设时间阈值内收到网关回包,若是,则调用执行删除模块,否则调用执行第五判断模块;

删除模块,将传输成功的通信数据从数据队列中删除,通过解析网关回包,更新节点本地时间,更新节点的通信时隙;

第五判断模块,判断当前通信时隙是否结束,若是则关闭射频,否则检查数据队列中是否还存在待传输的通信数据,若存在则调用执行该数据发送模块,否则关闭射频。

该低功耗广域网内通信数据的传输调度系统,其中该通信时隙更新模块包括:

射频开启模块,该网关始终保持无线射频开启并侦听信道,该网关当收到该通信数据,且该通信数据为广播数据或该通信数据中网关编号字段与该网关自身编号相同时,调用执行数据解析模块,否则继续等待下一通信数据;

数据解析模块,依据该通信数据的格式定义解析该通信数据,提取传输该通信数据的通信节点的编号、该通信数据的生成时间;

第六判断模块,根据该编号,判断该网关是否已对应通信节点的访问记录,若有则调用执行第七判断模块,否则调用执行时隙分配模块;

时隙分配模块,为该编号对应的通信节点分配存储空间,使用字典结构存储通信节点信息,将通信节点的键值插入字典中,其中键为该编号,值为通信节点对应存储空间的存储位置,置零通信节点存储空间中变量,该网关首次接收到节点数据包,此时为节点分配的通信时隙为该公共时隙;

第七判断模块,判断是否已建立节点流量模型,若是则调用执行时隙占用概率表更新模块,否则调用执行流量模型构建模块;

流量模型构建模块,该网关获取该通信节点两次通信数据后,初始化该通信节点的流量模型,将该通信节点的当前状态s=(data_time-last_flow_time)/tslot插入状态空间,其中tslot为通信时隙的长度,last_flow_time为该通信节点上次通信数据生成时间,data_time为该通信节点当前通信数据生成时间;

时隙占用概率表更新模块,根据通信节点当前通信数据占用的通信时隙,更新时隙占用概率表;

状态转移模块,根据当前节点状态更新节点的流量模型并进行状态转移,并通过马尔科夫链预测该通信节点下次通信数据生成时间和对应的概率,根据预测得到的通信数据生成时间和对应的概率,得到分配时间帧中每一个通信时隙对应的通信节点的延迟期望和通信数据碰撞概率,选择该延迟期望和该冲突期望加权和最小的通信时隙,作为最优时隙,通信节点下一次占用该最优时隙传输通信数据。

虽然本发明以上述实施例公开,但具体实施例仅用以解释本发明,并不用于限定本发明,任何本技术领域技术人员,在不脱离本发明的构思和范围内,可作一些的变更和完善,故本发明的权利保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1