吴清秀
摘 要:随着物联网概念的不断普及与深入,作为物联网核心技术的无线传感器网络得到了越来越多的应用。ZigBee局域网协议遵循IEEE802.15.4标准,而且具有低功耗等特点。其网络层主要涉及路由发现及路由维护,选择最佳路由,把消息转发至目的地,对基于ZigBee的网络管理进行学习研究具有重要意义。
关键词:ZigBee;协议栈;网络管理;路由
中图分类号:TP393 文献标识码:A 文章编号:2095-1302(2016)07-00-02
0 引 言
无线传感器网络(Wireless Sensor Network,WSN) 是一种分布式传感网络。末梢由许多被部署在一定区域且通过无线方式通信的微型传感器组成,这些网络传感节点往往是一个多跳、自组织的网络系统,因此网络设置的位置可以随时更改,比较灵活。无线传感器网络的主要功能在于收集、感知和初步处理传感网络覆盖范围内所获取对象的特定信息。但是传感网的网络拓扑结构对于网络节点间的数据传输和网络管理有着重要的作用,如何选择高效、稳定的网络拓扑来保证需求,常常引起研究者的注意。
1 ZigBee协议栈网络管理服务
ZigBee协议栈的核心部分在网络层(NWK),其主要职责是添加或删除网络节点、路由发现以及路由维护及传送数据等功能。路由是在多个节点之间选择合适的数据传输路径,是一个将消息从节点到中继再到其目的设备的过程。ZigBee端设备没有路由发现功能,负责发现和维护网络中的路由功能由ZigBee协调器和路由器提供。一般由ZigBee协调器端代表设备执行路由发现,ZigBee协调器的网络层根据现有设备布置情况决定创建一个新的网络和选择网络拓扑类型,设备节点的网络地址由ZigBee协调器分配。其网络管理过程需经过如下几个步骤:
(1) 网络发现,网络发现过程用于发现所有目前在设备POS内运行的网络。设备发现请求由应用层(APL)交给网络层。NWK层使用介质访问控制MAC层信道扫描来发现存在的其他网络。在所有的扫描办法中主动扫描是最优方式,如果设备不能进行主动扫描,那么设备将进行被动扫描。网络发现会验证在任何已发现的网络中是否至少存在一个ZigBee路由器当前允许加入。
(2) 网络形成,NWK层收到从APL层发来的请求后,可以把设备设定为ZigBee协调器,该设备必须是一个FFD。网络形成的第一步是进行能量检测扫描,然后对一组选定的信道进行扫描,基于MAC管理服务扫描结果在网络层针对唯一的PAN标识符和选定的信道,从而一个新的网络将选择当前网络层中网络最少的信道来建立。0x0000作为它的MAC短地址被ZigBee协调器的网络层所选择,即网络地址。
(3) 建立一个路由器设备,ZigBee路由器负责路由数据帧,路由发现以及路由修复。路由器能建立自己的超帧,并接受其他设备加入网络的请求。APL层使用NLME_START_ROUTER.request原语发送请求给网络层来建立一个路由设备。考虑到路由器能形成自己的超帧,这个原语包含的超帧参数有信标次序,超帧次序以及电池寿命范围(BLE)。网络层请求MAC创建或者更新超帧配置。
(4) 加入和离开网络,如果MAC的MAC_ASSOCIATION_PERMIT属性设置为TRUE,该设备将接受关联请求。ZigBee协调器或路由器的网络层可以通过请求MLME设置MAC_ASSOCIATION_PERMIT在一个固定的时间内为TRUE,以允许其他设备加入此网络。这个固定时间被称为允许周期。
如果关联请求被父节点检测到,以一个子节点是否已经在它的网络中为判断依据而查找它的邻居表以确定请求加入的节点是否合法。若邻居表没有该节点地址,子节点就会收到一个唯一的网络地址。每个父节点供给子节点的地址是在一定范围内的。如果父节点更新了它的邻居表,就表示该子节点的加入请求被接受,则父节点就把该设备当作它的子节点加入到邻居表中。如果该子节点有过关联该父节点的历史,网络层也会使用请求命令重新加入。即使父节点当前不接收任何新的子节点,该子节点设备也可以重新寻找其他父节点设备进行关联。
在特定的网络环境下也可以直接加入。如果父节点设备的地址池中配置了64位的子节点设备地址时,子节点设备可以直接加入。这种加入网络的方式,父节点设备已经事先选择关联了子节点设备,子节点设备在使用过程中就不必再进行尝试或关联父节点设备。父节点在开启网络之初,首先通过邻居表查询当前子节点设备,在邻居表中如果有子设备的64位地址,就表示找到匹配的地址,父节点就会停止搜索。如果邻居表中没有找到,且邻居表未满,父设备就会创建一个入口。
如果打算离开网络的设备是ZigBee协调器或者路由器,那么设备可以通过将目的地址设置为广播地址(Oxffff)来把网络层的离开命令帧广播到整个网络。广播离开命令的原因是让所有依赖该路由器或者协调器的设备知道,如果有必要,它们需要更新自己的路由或者寻找新的父设备。相比较而言,ZigBee端设备只是单播离开命令给它的父设备。在这两种情况下,请求网络层开始离开的过程都由APL层使用NLME_LEAVE.request原语来实现,当父设备网络需要删除它的子设备时,子设备会接收到来自父设备的单播leave-request命令,如果子设备被从网络中删除,父设备的邻居列表随即得到更新。也可以重复使用以前子设备的地址,只要APL层在给NWK层的NLME_LEAVE.request原语中允许地址复用。如果被删除的对象是一个充当ZigBee路由器的子设备,该子设备会通过设置目的地址为(Oxffff)来广播一个离开命令。
(5) 复位网络层,NWK层一旦收到下一个更高层的复位请求后就会进行一个复位操作,网络层首先复位MAC层。接收到MAC复位确认后,网络层把所有的NIB属性、路由表以及路由发现表恢复到它们的默认值。APL层以NLME_RESET.request的形式发送复位请求给网络层。网络层通过向APL层发送NLME_RESET.confirm原语来确认复位操作的结果。设备在初始上电后,尝试加入前以及离开网络后都会进行网络层复位。
(6) 同步,设备能使用同步过程来同步或者提取来自ZigBee协调器或路由器的待处理数据。有两种同步场景是信标使能和非信标使能。将MacAutoRequest的值设置为TRUE可以让MAC层自动产生并且发送数据请求命令。同步和数据请求过程在APL层使用NLME_SYNC.request来请求网络层进行,NLME_SYNC.confirm传递给APL层达到实现同步的结果。
2 编程与实现
ZigBee是一个由可多达65 000个无线数传模块组成的无线数传网络平台,其网络主要是由协调器建立的,其他节点加入到网络中,如果网络中只有两个节点,一个是协调器,另一个是路由器,则对路由器而言,协调器就是路由器的父节点,可以在路由器中调用获取父节点的函数来完成本次操作。网络在协调器通电后建立,节点自动加入网络成为路由器,路由器通过调用一定的函数获取本身的网络地址、MAC地址、父节点网络地址和父节点MAC地址,并通过串口将其输出到PC机。网络管理原理图如图1所示。
(1)协调器程序设计
#include "OSAL.h"
#include "AF.h"
#include "ADApp.h"
……
void GenericApp_Init(byte task_id)
{
GenericApp_TaskID = task_id;;
GenericApp_TaskID = 0;
GenericApp_epDesc.endpoint = GENERICAPP_ENDPOINT;
GenericApp_epDesc.task_id = &GenericApp_TaskID;
GenericApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&GenericApp_simpleDesc;
GenericApp_epDesc.latencyReq = noLatencyReqs;
afRegister(&GenericApp_epDesc);
}
以上函数是任务初始化函数,实现了端口初始化和端口的注册。
(2)路由器程序设计
#include "OSAL.h"
#include "AF.h"
#include "ADApp.h"
……
void ShowInfo(void);
void To_string(uint8 *dest,char * src,uint8 length);
typedef struct RFTXBUF
{
uint8 myNWK[4]; //存储本节点的网络地址
uint8 myMAC[16]; //存储本节点的MAC地址
uint8 PNWK[4]; //存储父节点的网络地址
uint8 PMAC[16]; //存储父节点的MAC地址
}RFTX;
void GenericApp_Init(byte task_id)
{
halUARTCfg_t uartConfig;
……
uartConfig.configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_115200;
uartConfig.flowControl = FALSE;
uartConfig.callBackFun = NULL;
HalUARTOpen(0,&uartConfig);
}
以上是任务初始化代码。在路由器代码中加入了串口的初始化函数,这样就可以使用串口了。
3 结 语
ZigBee网络是对基于IEEE802.15.4现有网络应用的一种良好技术应用拓展,具有大量的市场应用需求和发展前景。ZigBee协议栈还在不断升级,如何根据不同的需求设计高性能的ZigBee网络,在使用无线传感器网络过程中,本文对基于ZigBee的网络拓扑结构在网络管理的数据传输部分进行了初步探讨,如何选择高效、稳定的网络拓扑是一项很有意义的课题。
参考文献
[l] 李妤薇.基于ZigBee的无线传感器网络协议研究与设计实现[D].南京:南京邮电大学,2014.
[2] 孙冠男.基于ZigBee协议的物联网实验教学平台的设计与开发[D].济南:山东师范大学,2014 .
[3] 王小强,欧阳骏,黄宁淋.ZigBee无线传感器网络设计与实现[M].北京:化学工业出版社,2012.
[4] Ruiz L B,Nogueira J M,Loureiro A A F.MANNA: A Management Architecture for Wireless Sensor Networks [J].Journal of the IEEE Communications,2013,41(2):116-125.