微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于ZigBee的自愈自组网的设计与应用

基于ZigBee的自愈自组网的设计与应用

时间:05-16 来源:互联网 点击:

Z_Stack协议栈提供多种任务事件触发机制,可以直接通过API函数osal_set_event()设置要触发的任务标志位;也可以通过设置一个软件定时器osal_start_timeEx()函数等待溢出来触发;最后,也可以通过调用系统消息传递机制来触发任务事件。在进行应用开发时,需要在tasksEvents数组中添加相应的任务,确定任务的ID号。同时在初始化系统任务函数osalInitTasks()中添加任务的初始化函数,在事件处理函数数组tasksArr[]中添加任务处理函数。每个任务的ID号是唯一的,系统按每次检测到的任务ID号执行相对应的事件处理函数。

3 具有自愈功能的自组网设计与应用
通过对ZigBee协议体系的研究,利用Z_Stack协议栈在CC2530平台上,实现ZigBee自愈功能的自组网,传感器节点对无人值守通信基站的交流电压、电流和温湿度环境等参数进行信号调理和采集后经路由器节点、协调器,再通过GPRS通信方式传递到监控中心,实现对无人值守通信基站的交流电压、电流和温湿度环境等参数的实时监控结构如图3所示。


3.1 自组网的设计
ZigBee无线网络中,只有一个节点作为协调器,其他节点都是路由器或终端。网络中每个节点都有两个地址:64位IEEE扩展地址和16位网络地址。64位IEEE扩展地址类似于MAC地址,它唯一的标识着每一个设备。16位的网络地址在节点加入网络时由其父节点(协调器或路由器)动态分配,该地址仅在路由或者数据传输时使用。
ZigBee无线网络有两种地址模式,静态地址分配和树状地址分配。协调器确定整个网络节点数目,每个节点都拥有一个网络深度,用以指示在其父子链路上数据传输到协调器所需的最小跳数。协调器的深度为0,而它的孩子节点深度为1。可知,多跳网络中深度大于1,网络深度是由协调器来决定的。ZigBee网络中,假设一个父节点有最大孩子节点数为Cm,网络最大深度为Lm,一个父节点的最大路由数为Rm,可以计算网络中每个节点的功能函数Cskip(d):

式中d是节点到协调器的深度。如果Cskip(d)的值为0,则表明此节点为叶子节点,而Cskip(d)的值大于0,则表明该节点可作为一个父节点,这个父节点可以接收子节点并根据它们是否具有路由能力来分配地址。具体过程是:首先一个子节点的地址被分配,子节点地址比父节点的地址多1,然后其余节点根据下式求出:
An=Aparent+Cskip(d)*Rm+n (2)
式中1≤n≤(Cm-Rm),Aparent代表父节点的地址。
ZigBee协调器在上电后,首先要建立一个无线网络。在Z_Stack协议栈中,通过函数ZDApp_NetworkInit()进行网络初始化,系统检测到ZDP任务的ZDO_NETWORK_INIT事件,调用处理函数ZDO_StartDevice()启动网络的组建。通过变量logicalType判断设备类型,如为协调器,则调用ZStatus_t NLME_NetworkFormationRequest()来完成网络的组建,同时该函数产生一个回调函数ZDO_Network Formation ConfirmCB(),通过该函数,根据系统消息判断网络组建是否成功。
当网络建立完成并允许新设备加入时,子设备(即子节点)才可以请求加入网络。在Z_Stack协议栈中,子节点上电后调用ZDApp_Networkl nit()进行网络初始化,之后调用NLME_NetworkDiscovery Request()来寻找射频范围内存在的ZigBee网络,该函数会产生回调函数ZDO_Netwo rk Discovery ConfirmCB(),系统就是通过该函数来得到发现的网络信息。在发现有已经建好的ZigBee网络后,调用NLME_JoinRequest()加入网络,同时产生回调函数ZDO_JoinConfirmCB(),通过该函数判断加入网络是否成功。路由器在网络中负责信息的转发,发现邻居等,同时路由器必须在另一个路由的射频范围内,并且持续监听网络内传递的新信息。终端节点负责各种数据的采集与上传以及接收下传命令并执行,同时监听网络。
3.2 自愈功能的实现
如果在网络的正常运行情况下,有路由器因故障离网,导致原有的路由线路破坏。ZigBee提供了实现网络自愈功能的基础,在用户研发的软硬件配合下,可以实现强大的网络自愈功能,使得整个网络不因个别节点的变动而能持续工作。终端节点在这种情况下,又会再次启动发现网络加入网络的过程。但,前提是在终端节点的射频范围内存在着可用的路由器。在Z_Stack协议栈中,通过调用zb_ReadConfiguration()可以访问非易失性存储器NV中的信息,其中包括节点的设备类型logicalType,节点的IEEE地址,节点的启动模式startOptions等重要信息,同时也可以通过调用zh_WriteComqguration()来写入这些设备信息,能够在协议栈中灵活的配置网络节点,实现整个网络的自启动、自组网以及自愈等功能,提高了网络的稳定性、健壮性也同时提高了网络的工作效率。
3.3 所研发网络的一个应用例子
在像无人值守通信基站(或局站)等重要场合,需对基站的交流电压、电流和温湿度环境等参数实时监控。采用本网络对基站的各种参数进行采集,软件设计主要在Z_Stack协议栈的应用层上实现。各种参数信号经过外部调理电路处理后连接到CC2530的模拟IO口,CC2530的ADC转换模块采集各个参数并在内部进行定标和各种运算处理。处理后的数据部分供给采集子节点本地使用;部分需上传的数据经过CC2530的系统触发数据传送事件,调用afStatus_tAF_DataRequest()将数据无线发送给协调器。
协调器接收到各种测量参数对应的无线数据后直接发送至登记注册过的端点。应用程序将通过AF_INCOMING_MSG_CMD OSAL消息事件处理接收到的数据包(包内主要有:数据组号group ID、发送节点的网络地址、端点号、数据类型以及各种测量参数对应的数据)。协调器通过对数据包的分析,准确的提取出所需要的节点号以及各种测量参数数据,最后通过GPRS通信方式将采集的数据上传到监控中心,实现对无人值守通信基站的交流电压、电流和温湿度环境等参数的实时监控。

4 结束语
文中分析了ZigBee协议体系结构各层主要功能,以及ZigBee网络中两种网络拓扑结构;研究分析了TI的Z_Stack协议栈的开发与工作流程,以及自组网、自愈组网的协议开发过程。基于CC2530无线单片机硬件平台设计了一个具有自组网、自愈功能的ZigBee无线传感器网络,很好地实现了网络的自组网和自愈功能,同时完成了对无人值守通信基站的交流电压、电流和温湿度环境等参数的实时监控。该系统应用广泛,还可以用在其他工业远程测控、路灯遥测遥控以及环境监测等无人值守领域,有非常好的应用前景和显著的社会经济效益。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top