无线传感器网络系统软件开发研究与探求

2011-10-26 03:27杨玉红黑龙江建筑职业技术学院哈尔滨150025
中国科技信息 2011年8期
关键词:控制权调用路由

杨玉红 黑龙江建筑职业技术学院,哈尔滨 150025

无线传感器网络系统软件开发研究与探求

杨玉红 黑龙江建筑职业技术学院,哈尔滨 150025

软件开发是整个项目系统设计的重点和关键所在。它直接决定着系统功能实现的好坏、网络的运行的稳定性。在ZigBee技术的基础上,本文进行了无线传感器网络系统的软件开发,对系统软件的总体结构、开发流程进行了介绍。

软件系统;路由节点;协调器节点

Low-power wireless sensor networks wmbedded Software Development

Abstract: Software development is the focus of the project design and key. It directly determines the quality system function, operation of the network stability. Based on the ZigBee technology,this wireless sensor network system for software development, the overall structure of the system software, the development process was introduced.Key words software system; routing node; coordinator node

一、软件总体结构

本系统软件包括路由(Router)节点程序和协调器(Coordinator)节点程序两部分,这两部分程序相互配合,共同实现数据的采集以及传输。

路由节点一方面实现数据的采集和处理,另一方面实现数据的融合和路由,对本身采集的数据和收到的其他节点发送的数据进行综合,转发路由到协调器节点。不论ZigBee网络采用何种拓扑方式,网络都需要有一个并且只能有一个协调器节点,它是整个网络的控制中心。这种角色的设备一方面负责网络的配置和管理,包括定义通信信道、网络标识符(PANID),配置网络的profile,响应节点加入网络的请求和绑定请求,为其他节点分配网络地址、维护路由表等;另一方面还负责接收各路由节点发来的数据,并将所得到的数据通过串口上传到PC。系统总体软件结构如图1所示。

图1 ZigBee网络系统软件总体结构

由上图可以看出,软件设计部分基本上与硬件功能模块相对应,路由节点和协调器节点相互独立,但有时又必须交互运行才能完成特定任务。路由节点通过执行各类传感器的驱动程序采集环境数据,然后启动数据发送程序,该程序模块首先设置数据发送的参数,构造符合AFDE(应用框架层数据实体)结构的数据帧,然后通过各层的数据服务接入点发出数据发送请求,最后将数据发送出去。数据以多跳的形式到达协调器节点后,触发协调器节点执行数据接收程序,该程序模块通过调用合适的函数将接收到的数据解析成应用层能识别的数据结构,进行数据处理后,调用串口数据发送程序,最终将数据上传至计算机。

二、软件开发流程

基于ZigBee的应用程序实际上是和ZigBee协议栈交替的对处理器和外围部件进行操作。为了实现这个目标,Jennic在ZigBee协议栈的基础上提供了BOS基本操作系统。ZigBee协议栈的开发接口API(Application Programming Interface,应用程序编程接口)如图2所示。图中浅色部分就是BOS调用的用户程序的接口。

图2 ZigBee协议栈的开发接口API

这些函数是用户应用和ZigBee协议栈的进行交互的基本接口。从纵向结构看,这些API函数相互调用实现应用层、网络层、MAC层和底层硬件之间的数据和命令传输。从横向来看,它们实现了用户应用程序、BOS简单操作系统和ZigBee协议栈之间的数据和命令传输。

这些函数大致可分成三类,第一类是应用的初始化函数,它们用于在设备上电时对协议栈进行初始化;第二类是应用程序调用协议栈函数,这类函数通常由第一类函数进行调用;第三类是协议栈调用应用程序的函数,这类函数通常作为协议栈和应用程序进行通讯的接口。

当设备上电后,应用程序从AppColdStart函数开始运行。它是整个用户应用程序的入口,在该函数体中应该调用一系列的协议栈和BOS的初始化函数,完成无线信道编号、ZigBee网络的ID等网络系统参数的设置,之后启动BOS,并把程序控制权交给BOS。

在调用JZA_vAppDefineTasks函数之前,BOS还要执行一些内部函数。在这里应用程序向BOS定义自己的任务,定义完成后,控制权还给BOS。

执行完内部函数之后,BOS将控制权还给应用程序来执行最后一个初始化函数JZA_boAppStart。用户程序可以利用该函数调用应用框架API(AF API),为节点的端点注册ZigBee描述符,为以后的数据传输做准备。在JZA_boAppStart函数的最后需要调用JZS_vStartStack函数启动ZigBee协议栈。在执行JZA_boAppStart函数过程中,协调器节点会试图发起网络,而路由节点则试图加入网络。这些操作的结果可以通过指示网络事件的JZA_vStackEvent函数进行查询。如果操作成功,协调器节点和路由节点则开始各自的工作。当这些完成之后,应用程序将控制权交给BOS。

在BOS和ZigBee协议栈成功启动后,程序控制权会根据发生的网络事件,通过调用应用函数实现在BOS、ZigBee协议栈和应用程序三者之间的传递。其中,JZA_vAppEventHandler函数一直被BOS自动调用,用户可以把定期执行的任务或需要处理的硬件事件放在此函数中。其它函数是事件驱动函数,只有在相应事件发生时才被调用。用户执行完一个函数之后,控制权将返还给BOS。BOS还会有规律的把控制权交给ZigBee协议栈,以便ZigBee协议栈及时处理一些必要的事务。

10.3969/j.issn.1001-8972.2011.08.058

猜你喜欢
控制权调用路由
神农科技集团正式接收广誉远控制权
铁路数据网路由汇聚引发的路由迭代问题研究
核电项目物项调用管理的应用研究
多点双向路由重发布潜在问题研究
一种基于虚拟分扇的簇间多跳路由算法
公司控制权的来源
系统虚拟化环境下客户机系统调用信息捕获与分析①
路由重分发时需要考虑的问题
FF陷控制权争夺漩涡
上市公司控制权争夺中独立董事的义务——以万华之争为例