一种改进ZigBee算法及在温室监控无线网络中的应用

2020-11-03 11:36周艳平马维军
计算机测量与控制 2020年10期
关键词:网关路由无线网络

周艳平,马维军

(青岛科技大学 信息科学技术学院,山东 青岛 266061)

0 引言

ZigBee技术作为时下新兴的近距离无线传感网络通信技术,具有距离短、功耗低、成本低和自组网等优点,在工农业、军事、医疗和环境监测领域有着普遍的应用[1-3]。近年来温室大棚因其突破地域、季节、气候等因素的限制,在我国得到广泛的推广[4]。但传统的温室大棚生产效率低,人力成本高,网络和信息技术的发展为温室大棚供了新的方向[5]。

本文设计了一种改进ZigBee路由算法,解决了ZigBee网络中由于RREQ分组洪泛而导致的能量过度损耗和节点失效的问题,结合改进的ZigBee路由算法设计了温室监控无线网络,实现了温室内农作物生长参数的实时采集、远程监测和控制功能。

1 ZigBee网络路由

ZigBee联盟将ZigBee网络中的节点分为协调器节点(coordinator)、路由器节点(router)和终端节点(end device)[6]。IEEE802.15.4标准从设备完整性的角度出发,将ZigBee网络中的设备分成全功能型(FFD)和精简功能型(RFD)。ZigBee网络中的协调器负责发起和建立网络且协调器只能由FFD充任,终端节点既可以由FFD充任也可以由RFD充任。ZigBee网络分成星型网(star)、网状网(Mesh)和簇树型(cluster-tree)3种网络拓扑结构。星型网络的终端节点以协调器为中心呈星型分布,终端节点必须处于协调器的通信范围之内,致使星型网络的通信范围过小。网状网络中各节点之间可以直接或间接的进行通信,具有高可靠性和高冗余性的特点,但网状网络的拓扑结构复杂,路由开销大。簇树型网络是一种分层次的网络拓扑结构,吸收了星型网络和网状型网络的优点,可扩展性强,得到了广泛应用。

1.1 ZigBee网络地址分配机制

ZigBee网络中的节点具有一个16位的网络地址和一个64位IEEE地址,64位IEEE地址具有唯一性,16位的网络地址由父节点予以分配。ZigBee网络采用DAAM分布式地址分配机制[7]。在DAAM分布式地址分配机制中,定义Cskip(d)函数用于计算父节点为子节点分配的地址偏移量,公式如下:

(1)

其中:d表示父节点深度,Cm代表每个父节点能拥有的至多子节点的个数,Lm代表网络的最大深度,Rm代表父节点能拥有的至多路由器节点的数量[8-9]。不同类型的节点分配地址的方式也不同。ZigBee协调器节点地址为0x00,新加入的节点按照加入顺序地址深度依次加1,若新加入的节点是终端节点,其父节点通过式(2)计算节点的地址;若新加入的节点是路由器节点,其父节点通过式(3)计算节点的地址。

An=Aparent+Cskip(d)×Rm+n

(2)

An=Aparent+(n-1)×Cskip(d)+1

(3)

在ZigBee网络中,每一个具有路由能力的节点都会维护一个在其一跳通信范围内的邻居表。在ZigBee协议中规定,邻居表包含了在其一跳范围内ZigBee节点的所有信息且其记录的内容会因为网络内节点的变化而保持实时更新。邻居表的实时更新有利于及时获取相邻节点信息,选择符合通信要求的节点。邻居表中记录的内容不是固定的,可根据需要在邻居表中添加一些特定的参数信息。

1.2 ZigBee路由算法

目前在ZigBee网络常用的路由算法有Cluster-Tree路由算法和AODVjr路由算法。

Cluster-Tree路由算法基于ZigBee地址分配机制计算下一跳节点的16位网络短地址,在传输方向上按照树形结构向上或向下传输。在 Cluster- Tree算法中,结合式(4)辨别目的节点是否为自己的后代,根据式(5)计算出下一跳的地址,并将数据转发至下一跳节点。Cluster-Tree路由算法传输效率低,且选择的传输路径不一定是最优路径,接近协调器的节点容易因能量低而脱离网络,致使网络瘫痪。

A

(4)

(5)

AODVjr算法是一种按需分配的路由协议,规定只有目的节点能发送路由应答分组(RREP),删除了先驱节点列表以及hello分组。AODVjr算法路由发现过程如图1所示。在前向路由建立的过程中,节点在接收到RREQ后,选择跳数较少的RREQ并更新节点路由信息,直至目的节点接收到RREQ。目的节点在接收到RREQ分组之后,选择跳数较少的路径向源节点发送RREP分组来创建反向路由[10]。源节点收到RREP之后,准备进行数据的传输。 AODVjr路由算法在路由发现过程中对RREQ分组的广播范围和广播方向没有限制,当网络规模较大时容易引起广播风暴,增加节点的能耗[11]。

图1 路由发现过程示意图

2 改进ZigBee路由算法

2.1 改进算法思路

针对 ZigBeeCluster- Tree算法和 AODVjr算法中存在的问题,提出一种优化的 ZigBee路由算法,该算法以 AODVjr算法为基础,结合 Cluster- Tree算法,对 RREQ分组的广播过程进行限制,并从节点的剩余能量值和链路质量入手,对ZigBee路由算法进行改进。

在ZigBee网络中,越靠近协调器的节点,数据转发量越大,需要对节点的剩余能量值进行估量,防止网络分割现象的出现。可运用下式对节点的剩余能量值进行估量:

(6)

其中:Emin表示节点最小剩余能量值,t表示网络运行时间,energy表示节点初始能量,dj表示节点深度,为特定系数用于减缓Emin衰减的速度。

在ZigBee中规定的链路质量指示(link quality indicator, LQI)用于计量接收到的数据帧的强度与质量,衡量通信过程中数据包的丢失情况。LQI的值可以通过下式计算得到。

(7)

其中:n表示环境衰减因子,d表示节点之间的间隔,A表示节点发射端和接收端间隔1米时的信号强度。LQI的取值在0x00~0xFF之间,当LQI的值大于0x4B时,表明节点接收到的数据帧的强度与质量满足通信要求,当LQI的值低于0x32时,节点接收到的数据帧的强度和质量较差,数据包的多次重传导致节点能量消耗加剧[12-13]。

2.2 改进算法流程

在Cluster-Tree算法中,网络最大深度的2倍即2 Lm是可能存在的最大路径,故在优化算法中设置RREQ分组的最大广播范围为2 Lm。结合Cluster-Tree路由算法辨别目的节点是不是自己的子孙节点来控制RREQ分组的广播方向。在 RREQ分组中设置标记位 Flag, Flag=0则接收到 RREQ的节点的子孙节点不广播该 RREQ, Flag=1则接收到该 RREQ分组的节点的父节点不广播该 RREQ分组。在路由节点中添加一个变量Power表示节点可用的能量值。

改进算法流程如下:

1)源节点为终端节点时,由父节点广播终端节点的数据。

2)源节点为路由节点且其邻居表内未记录目的节点地址,则启动路由发现过程,并根据式5)设置Flag值。

3)在路由发现阶段,中间节点B在接收到节点A的RREQ分组之后,检查RREQ分组的转发次数(Hops)以及中间节点自身的剩余能量值(Power)和链路质量(LQI)。

4)如果Hops>2Lm,节点B丢弃该分组;如果Power

5)中间节点查询邻居表中是否记录该目的节点,若有记录,中间节点直接将RREQ分组发送给该邻居节点。否则Flag=0时,若节点B是节点A的子节点,节点B不广播该RREQ。若节点B是A的父节点,且目的节点是节点B的子孙节点,节点B在设置Flag=1,Hops加1后广播RREQ分组并替换Power值;如果目的节点不是节点B的子孙节点,则节点B保持Flag值不变,替换Power值和Hops值之后,转发RREQ分组。

Flag=1时,若节点B是节点A的父节点,节点B不广播该RREQ分组。若节点B是节点A的子节点,且目的节点不是节点B的子孙节点,则节点B不广播该RREQ分组;若目的节点是节点B的子节点,节点B保持Flag值不变,更新Power值和Hops之后,广播RREQ分组。

6)目的节点在接收到RREQ之后,按照RREQ的广播路径向源节点发送RREP。源节点收到后,按照该路径传输数据。

2.3 改进算法仿真

为了评估改进后的路由算法的性能,在NS2仿真软件中从网络剩余能量、分组投递率以及网络节点死亡数量3个方面设置仿真实验,对改进算法和传统算法进行仿真。

在仿真实验中,设置网络范围为100 m*100 m,网络参数Cm=5,Lm=6,Rm=4,数据包长度为128 bits,节点的初始能量值为1 500 J,采用 CBR作为数据信息源,在分析网络剩余能量和分组投递率时,分别设置节点数量为10~100个不同的网络环境下进行仿真,在分析网络节点死亡率时,设置节点数量为100。仿真实验结果如图2~4所示。

图2 网络剩余能量百分比对比图

图3 分组投递率对比图

图4 网络节点死亡率对比图

2.4 实验结果与分析

根据NS2仿真实验得出的结果,从网络剩余能量、分组投递率以及网络死亡节点数量3个方面对仿真结果进行分析。

网络剩余能量百分比的值越高表明网络的剩余能量值越高,网络的能量损耗也就越低,网络的生命周期也就越长。该值可以通过网络剩余能量值和网络初始能量值计算得到。分组投递率是接收数据分组与投递数据分组总数的比值,体现了节点间的LQI,是衡量网络传输性能的关键指标。

从图2可以看出,节点数量的逐步增多,导致网络剩余能量百分比逐渐降低。改进的路由算法由于在路由发现阶段对 RREQ分组的广播范围进行限制,减少了不必要的能量损耗,同时能量较低的节点不参与 RREQ分组广播,有效了节省了网络的整体耗能。

从图3中可以看出,由于改进的路由算法对RREQ分组的广播范围进行限制并选择LQI值符合要求的节点,使得分组投递率得到提高。

从图4可以看出,在网络运转的前期,由于节点能量充裕,节点死亡率为零,随着网络的运转,部分节点因频繁进行数据转发和数据接收,导致节点能量耗尽,节点死亡率逐渐升高。优化的 ZigBee路由算法从节点的剩余能量值入手,数据不广播给剩余能量值较低的节点,死亡节点出现的时间较晚且节点死亡率低于传统的路由算法,显著的提高了网络的运行周期。

结合图2~4的仿真结果及以上分析,可以看出优化算法能够达到预期效果。

3 温室监控无线网络设计

结合改进的ZigBee路由算法,设计了一种基于ZigBee技术的温室监控无线网络,无线网络采用树型拓扑结构,在每个温室内设置一个路由节点和十至二十个终端节点。

3.1 硬件设计

温室监控无线网络由监控终端、ZigBee网关以及上位机数据监控中心三部分构成,网络架构如图5所示。监控终端包括路由节点、采集及控制节点。路由节点负责存储和转发采集节点采集的数据,并将控制指令转发给控制节点。采集节点和控制节点由ZigBee通信模块和特定的传感器组成,负责采集和控制温室内的环境参数(包括温湿度、CO2浓度和光照强度等)。 ZigBee网关是温室监控无线网络的核心,由 ZigBee协调器和 STM32微控制器两部分组成,负责建立和维护无线网络,接收采集节点发送的数据,将数据格式转换之后发送至上位机数据监控中心,同时将上位机数据监控中心发送的指令转发给终端节点。

图5 温室监控无线网络架构

ZigBee网关由ZigBee协调器和STM32微型控制器组成。 STM32微控制器选用 ALIENTEK战舰 STM32 F103开发板,以ARM Cortrex- M3为内核,CPU工作频率最高可达72 MHz,板载十多种标准接口和丰富的片上资源,板载的 DM9000网络接口芯片通过1个100 M以太网接口( RJ45)实现连接互联网和数据的远程传输功能。 ZigBee协调器选择 CC2530芯片,它是一种支持 IEEE802.15.4、 ZigBee和 RF4 CE应用的片上系统( SOC)解决方案,具有无线射频模块,集成RF收发器功能,是一种增强型的8051CPU,能够以极低的功耗和极低的成本建立起强大的无线传感器网络[14-15]。ZigBee网关硬件结构如图6所示。

图6 ZigBee网关硬件结构

3.2 软件设计

软件设计部分需要对温室监控无线网络中的3种ZigBee节点的通信模块移植 Z- stack协议栈,它是 TI公司推出的 ZigBee无线通讯协议,定义了 OSAL操作系统并管理和调度 ZigBee网络中各层定义的协议,并提供 API接口函数,方便用户调用。根据Z-stack协议栈分别为协调器节点、终端节点和路由节点设计程序。

图7 ZigBee网关软件流程

ZigBee网关是连接上位机数据监控中心和监控终端的桥梁。它既要保证节点正常工作,也要建立起与上位机数据监控中心的通信功能。 ZigBee网关在建立网络并处理完入网请求后,检查是否接收到指令数据和采集节点传回的环境数据并对指令及时作出响应,ZigBee网关软件流程如图7所示。路由节点在运行过程中只负责进行数据和控制指令的存储和转发。路由器节点在上电初始化后,检测是否有新节点加入网络,接收终端节点发送的数据并将其转发至 ZigBee网关,同时将 ZigBee网关发送的控制指令转发至终端节点。终端节点包括采集节点和控制节点,采集节点将定时采集到的环境数据发往ZigBee网关,控制节点接收到控制指令后,解析指令并运行相应的控制设备。终端节点采取休眠-唤醒的机制,唤醒期间节点接收指令并执行相应的采集和控制操作。终端节点的休眠时间可结合实际情况调节,终端节点程序流程图如图8所示。

图8 终端节点软件流程

4 结束语

本文提出了一种优化的ZigBee路由算法并将其应用在温室监控无线网络中。改进的算法通过控制 RREQ分组的广播范围和广播方向,选择节点剩余能量和 LQI值较优的节点广播,从仿真图像中可以看出,优化的算法有效地降低了 ZigBee网络的能耗,提高了 ZigBee网络的运行时间。改进的ZigBee路由算法成功应用于温室监控无线网络中,该改进算法和监控无线网络也可以在相关领域中应用。

猜你喜欢
网关路由无线网络
基于无线网络的高速公路电缆防盗报警系统设计
智能燃气表物联网运行体系网关技术研究
基于FPGA的工业TSN融合网关设计
大规模低轨卫星网络移动性管理方案
时间触发卫星无线网络同步仿真研究
一种主从冗余网关的故障模式分析与处理
聚类分析和神经网络的无线网络流量预测研究
数据通信中路由策略的匹配模式
一种用于6LoWPAN的多路径路由协议
OSPF外部路由引起的环路问题