APP下载

HBE-ZigbeX无线传感器网络平台 3种拓扑结构的 Ti nyOS实现

2011-01-25,高,王

关键词:树状网络拓扑数据包

李 慧 ,高 飞 ,王 兵

(云南民族大学电气信息工程学院,云南昆明 650500)

无线传感器网络是由大量具有特定功能的传感器节点通过自组织的无线通信方式,相互传递信息,协同地完成特定功能的智能专用网络.它综合了传感器技术、嵌入式计算机技术、通信技术、分布式信息处理技术、微电子制造技术和软件编程技术等,可以实时监测、感知和采集网络所监控区域内的各种环境或监测对象的信息,并对收集到的信息进行处理后传送给终端用户[1].无线传感器网络在工业、农业、交通、军事、安全医疗、空间探测,以及家庭和办公环境等众多领域都有着广泛的应用.传感器网络采用自组织方式进行组网[2],其拓扑结构根据具体应用场景来设计,基本结构仍是星型网、树型网、环型网这 3种基本的网络拓扑结构.传感器网络节点是无线传感器网络的基本单元.本文利用 HBEZigbeX试验平台,对已嵌入节点的实验包 TestTree进行分析并加以改进,编程实现了星型、环形和树状这 3种基本拓扑结构,并进行了组网实验,验证了我们设计方案的有效性.

HBE-ZigbeX[3]是韩国韩伯电子公司设计开发的一款性价比较高无线传感器网络试验平台.其硬件系统中,采用了 8位微型控制器 At mega128L,无线收发模块采用支持 ZigBee协议的 CC2420通信芯片,ZigbeXMote设备作为可以构成传感器最基本的模块,集成了温度、湿度、照度等传感器来获取多种物理信息.HBE-ZigbeX软件平台采用了广泛应用于无线传感器网络节点设备的专用操作系统 Tiny-OS,该操作系统设计时考虑到了无线传感器节点的一般特征 (最少的硬件、低容量存储器、低 CPU性能).使用 Zigebx平台提供的节点结合 nesC的语法编程,能够方便地实现对环境因素的检测,并且为实现网络互连提供了丰富的软件接口和编程组件.

1 TestTree框架分析

1.1 树路由

树路由,就是指汇聚节点与周边节点形成树状结构的路由协议,树路由与无线传感器网络一样,最终会将路由数据传送给汇聚节点.图 1是树状路由的模型,其中 Sink是汇聚节点,编号为 HC:x,表示在树状路由中处于第 x层的节点.路由树中的节点自动寻找上一层节点转发已测量的传感器数据.树路由拓扑结构在几乎固定的网络中非常有效,在树路由形成的拓扑结构中最大的特点是不会形成环路.

在韩伯Mote设备中,提供了树路由组件.树路由组件每隔约 10 s周期性生成 Hello数据包 (定义如表 1所示,BeaconFrame数据结构),向周边节点通知自已的存在,以 Hello数据包的跳数为标准,选择自身的上层父节点.针对周边节点的信息保持 5个路由表,当跳数相同时,以 LQ I和 RSSI值为标准选择最佳的父节点.

表1 Hello数据包字段定义

1.2 基于 nesC语言的数据包格式

在网络中传输一般数据报文 (NWKFrame数据结构)所使用的数据格式如表 2所示.

在树路由协议中,多跳路由的下一跳地址由图2中的多跳路径时中间地址决定,需要传输的数据由最后一个字段确定.

表2 一般数据包字段定义

当一个节点收到以上结构的数据后,会自动根据 NWKFrame结构体中的 Dst3_for_multihop成员分量,来判断下一跳路由地址,将数据包发送给它所指示的分量.Dst2_for_multihop成员分量是 Dst3_for_multihop预处理部分,当传送数据时实际将 Dst2_for_multihop的值复制给 Dst3_for_multihop,然后将发送数据的节点地址 TOS_LOCAL_ADDRESS复制给Dst2_for_multihop.

1.3 树路由实现方法

首先在 nesC中为每一个节点指定了 1个地址编号,该地址编号由 2个字节组成,其值由 TOS_LOCAL_ADDRESS指定.在实现树路由时,首先规定编号在 1~4的节点为第 1跳路由,大于 4的编号节点为第 2跳路由,0号节点为汇聚节点[3].

首先在发送 (Send)组件中对下一条路由地址做如下初始化:

NWKFp->Dst2_for_multihop=UnkownAddress;

NWKFp->Dst3_for_multihop=UnkownAddress;

然后在数据发送函数 For wardingDataFrame中,根据 Dst2_for_multihop来指定下一跳地址.如下面代码所示:

task void ForwadingDataFrame()

{

//…

if(NWKFp->Dst2_for_multihop==UnkownAddress)

{

NWKFp->Dst2_for_multihop=TOS_LOCAL_ADDRESS;

}

else

{

NWKFp->Dst3_for_multihop=NWKFp->Dst2_for_multihop;

NWKFp->Dst2_for_multihop=TOS_LOCAL_ADDRESS;

}

NWKFp->FrameControl=For wardDataFrame;

if(call Tree_send.send (NextAddress,sizeof(NWKFrame),&ForwardingFrame))

{

//…

}

}

由ForwadingDataFrame函数的具体实现可以看出,下一跳地址是由 NWKFp->Dst2_for_multihop决定的,于是我们可以由改变 NWKFp->Dst2_for_multihop的值来改变网络拓扑结构.

2 3种网络拓扑结构下的实现

2.1 星型网络结构

星型网络由中心节点和其它子节点组成,中心节点可直接与汇聚节点通信,而其他子节点必须通过中心节点才能和汇聚节点和其他子节点通信,在有限网络中,中心节点通常由集线器或交换设备充当,在无线传感器网络中,中心节点可以有设备较其他子节点负载的节点担当.这种网络拓扑结构的优点是,在中心节点处理速度和容量范围内,可以任意增删子节点,中心节点和子节点程序无须修改.其缺点是,一旦中心节点瘫痪,整个网络也就随之瘫痪.如图 2所示,每一个节点右边都显示了它获取的物理信息 :温度 Temp、光照强度 Light、湿度 Humi、红外Ultrared、Energy Consumption能量损耗[4].

实验采用 1号节点为中心节点,以其他编号节点作为子节点,形成星型网络.其实现代码如下:

if(TOS_LOCAL_ADDRESS!=SinkAddress){

if(TOS_LOCAL_ADDRESS==0x01){

//0x01表示 1号节点,0表示汇节点,SinkAddress=0

NWKFp->Dst2_for_multihop=SinkAddress;

}

else

{

NWKFp->Dst2_for_multihop=0x01;

}

}

2.2 自定义固定结构树状网

树状拓扑是从总线型拓扑演变而来的,它把星状和总线型结合起来,形状像 1棵倒置的树,顶端有1个带分支的根,每个分支还可以延伸出子分支.树状拓扑的优点是易于扩展和故障隔离,树状拓扑的缺点是对根的依赖性太大,如果根发生故障,则全网不能正常工作,对根的可靠性要求很高.图 3中,根节点为 1号节点和 2号节点,3、4和 5号节点经过 1号节点将数据转发给汇聚节点,6和 7号节点经过 2号节点转发给汇聚节点.如图 3所示,每一个节点右边都显示了它获取的物理信息:温度 Temp、光照强度 Light、湿度 Humi、红外 Ultrared、Energy Consumption能量损耗.如果需要增删节点或者扩展网络,则

代码需要重新编制.其实现代码如下:

//树形网络结构

if(TOS_LOCAL_ADDRESS!=SinkAddress){

if(TOS_LOCAL_ADDRESS==0x01||TOS_LOCAL_ADDRESS==0x02){

NWKFp->Dst2_for_multihop=SinkAddress;

}

else if(TOS_LOCAL_ADDRESS==0x03||TOS_LOCAL_ADDRESS==0x04||TOS_LOCAL_ADDRESS==0x05)

{

NWKFp->Dst2_for_multihop=0x01;

}

else if(TOS_LOCAL_ADDRESS==0x06||TOS_LOCAL_ADDRESS==0x07)

{

NWKFp->Dst2_for_multihop=0x02;

}

}

2.3 环形网络结构

环状网络使整个无线传感器网络形成 1个环路,在环形网络中,传感器数据像接力棒一样,被一棒一棒的传往下一个节点,然后再某一个节点处,将数据传递给汇聚节点.这种网络可以用于湖泊,以及公共群体周边,实现对监视区域的包围监视.

本文中的环形网络的实现是从 1号节点开始,将下一跳地址设置为 TOS_LOCAL_ADDRESS值加1,当数据达到末节点时,让下一跳地址等于 1号节点地址,于是形成环形网络结构.如图 4所示,每一个节点右边都显示了它获取的物理信息:温度Temp、光照强度 Light、湿度 Humi、红外 Ultrared、Energy Consumption能量损耗.

代码如下所示[5]:

NWKFp->Dst2_for_multihop=TOS_LOCAL_ADDRESS+1;

if(TOS_LOCAL_ADDRESS==END_NODE_ADDRESS)

{

NWKFp->Dst2_for_multihop=0x01;

}

实现效果如图 4所示.

如果想增加网络环路中的节点数,只需更改宏END_NODE_ADDRESS,然后重新编译各个节点的程序[6].如果想要实现自动添加或增删的节点的环形网络,可以在每一个节点的内部 RAM中,添加 1个字节单元来表示环形网络中节点的最大数目,如果有 1个节点增加,则网络广播有 1个节点添加的消息,每个节点收到这个消息之后,则将自己内部相应的 RAM单元表示总结点数目加 1,如果减少网络中节点数目,则在节点退出工作之前,向网络广播有1个节点要退出的消息,当每个节点收到消息之后,将相应的内存单元表示的数减 1.各个节点根据这个单元寻找环路的终点.但这种做法无疑会使程序的结构变得复杂,不易实现.

3 结语

从以上实现方法可以看出,若要更改网络拓扑结构,只需要更改每一个节点转发数据时报文字段中的 NWKFp->Dst2_for_multihop即可,因此在以TinyOS为操作系统 HBE-ZigbeX硬件平台上实现网络不同的网络拓扑是相当方便的.

[1]张鹤峰.计算机网络技术 [M].大连:大连理工大学出版社 ,2001:4-5

[2]张侃侃,刘晔,艾斯喀尔·喀迪尔,等.基于 TinyOS操作系统的无线传感器网络自组网研究[J].传感技术学报 ,2007,20(6):1 350-1 352.

[3]徐昌洙,李哲熙.Ubiquitous传感器网络[K].韩国:韩伯电子技术研究所.

[4]GAYD.nesC 1.1 language reference manual[K].2003.

[5]LEV IS P,GAYD.TinyOSprogramming[M].CambridgeU-niversity Press,2009:241-245.

[6]曾黎,蒋沅.多传感器数据融合的数学方法研究[J].云南民族大学学报:自然科学版,2010,19(5):321-324.

猜你喜欢

树状网络拓扑数据包
树状月季的栽培管理及园林应用
基于通联关系的通信网络拓扑发现方法
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
C#串口高效可靠的接收方案设计
蓬勃能力之树 奠基生命成长
2017款捷豹F-PACE网络拓扑图及图注
劳斯莱斯幻影车载网络拓扑图
一种FC网络管理软件的设计
列表画树状图各有所长