引言随着无线通信和射频技术的不断发展,具有布局灵活、成本低廉、组网便捷等特点的无线数据采集系统正在逐渐取代传统的有线数据采集系统。目前,市场上的无线数据采集系统虽然功能较齐全,但一般不具有以太网通信和节点自主加入的功能。这在很大程度上限制了系统的扩展性能,给系统的维护带来一定困难,同时也限制了系统在有较高要求的特殊环境中的应用。本系统实现了一种实时、可靠的分布式自组织无线数据采集系统,具有更好的扩
引 言
随着无线通信和射频技术的不断发展,具有布局灵活、成本低廉、组网便捷等特点的无线数据采集系统正在逐渐取代传统的有线数据采集系统。目前,市场上的无线数据采集系统虽然功能较齐全,但一般不具有以太网通信和节点自主加入的功能。这在很大程度上限制了系统的扩展性能,给系统的维护带来一定困难,同时也限制了系统在有较高要求的特殊环境中的应用。本系统实现了一种实时、可靠的分布式自组织无线数据采集系统,具有更好的扩展性和通用性。
1 系统概述和原理
子网的系统结构如图1所示。主数据采集器(相当于一个基站)和数据采集节点通过无线通信组成数据采集子网,二者之间采用主从式基于时间片轮询的点对多点通信方式;各数据采集节点通过传感器组完成各种类型数据的采集,主控点每隔一个时间片向各个数据采集点请求一次数据传输;数据采集节点接收到数据请求命令后,向主数据采集器发送数据;主数据采集器接收数据并将数据每隔一个小时间片,按一定的数据格式存储在SD存储卡中。
计算机服务器与主数据采集器采用有线方式组网,二者之间通过以太网进行数据通信。当系统中有多个数据采集子网时,各个主数据采集器需要通过交换机转换后与服务器连接。服务器端可随时从SD存储卡中读取数据。
为了保证网络的可靠性和健壮性,网络的自主加入功能由服务器端进行使能控制。每次自主加入持续一个较短的时间,服务器端可以随时手动添加或删除网络中的数据采集节点。
2 系统硬件组成
如图2所示,主数据采集器的硬件系统主要包括LPC2378控制器模块、按键模块、LCD显示模块(可选)、SD/MMC卡接口、以太网接口和无线收发器等几大模块。主数据采集器采用高性能的10/100Mbps以太网PHY收发器芯片DM9161A作为以太网控制器。无线收发器通过模拟I2C总线与LPC2378连接,SD/MMC卡通过SD总线与LPC2378连接。
LPC2378是NXP公司新近推出的一款基于ARM的微控制器,可在高达72 MHz的频率下运行,拥有512KB的片内Flash程序存储器,局部总线上有32 KB的SRAM,可进行高性能的CPU访问;具有丰富的接口和外设。系统主要使用10/100 Ethernet MAC(带有相关的DMA控制器,位于独立的AHB总线上)和SD/MMC接口(共用通用的AHB DMA控制器)。
无线收发器采用挪威Nordic公司推出的2.4 GHz单片无线射频收发芯片——nRF2401。通过外接增益天线,芯片的实际传输距离可达100 m。芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。该芯片具有接收灵敏度高、外围电路少、发射功率低、传输速率高(最高传输速率达1 Mbps)、功耗低等优点。
nRF2401具有4种工作模式,分别是工作模式(接收/发送)、配置模式、掉电模式和待机模式。模式可通过软件进行配置和切换,芯片正常工作情况下处于工作模式。nRF2401有两个数据收发缓冲通道,其中通道1可以接收和发送数据,通道2只可以接收数据。同一个芯片的两个通道可以配置相同的地址,也可以配置不同的地址。
数据采集节点的硬件系统采用了宏晶科技公司具有低功耗、高速度等特点的STC89LE52RC单片机作为微控制器。节点系统还包括:无线收发器、传感器组和电池供电模块等,其中无线收发器和传感器组通过软件模拟SPI总线与单片机连接。
3 通信协议
3.1通信协议设计
如图1所示,各个无线数据采集子网之间采用并联方式构成整个数据采集网络。由于无线模块可以预置40位地址(本系统预置32位地址),这样可以确保每个数据采集节点和主数据采集器具有唯一的通信地址;网络加入时段的广播地址(本系统设置数据采集节点和主数据采集器的数据通道2作为广播通道,其地址为广播地址)可以重复,通过软件在广播中加入主数据采集器识别标识符,每个子网的数据采集节点只会接收对应的主数据采集器的广播。因此,系统能够避免数据采集器问以及数据采集节点间的同频干扰和子网间的干扰等问题。
图3为一个无线数据采集子网的通信协议示意图。
该协议具体的通信算法如下:
①主无线数据采集器开机后进入查询工作状态,按一定时间片不断向各数据采集节点发送数据请求命令。
②数据采集节点开机后进入监听状态(初始化默认自身连接在网络中),监听是否有主无线数据采集器的数据请求命令。
③数据采集节点接收到主无线数据采集器的数据请求命令后,进入数据发送状态,向主无线数据采集器发送采集的传感数据。
④如果间隔一段时间(系统设置10 s),数据采集节点未监听到任何数据,节点就认为是自身掉线(没有连接在网络中);节点同时开始监听是否有主无线数据采集器的要求加入网络的广播,然后向主无线数据采集器发送请求加入命令。
⑤服务器控制主无线数据采集器允许加入网络的广播发送。
⑥数据采集节点接收到要求节点加入网络的广播后,进入数据发送状态,向主无线数据采集器发送请求加入命令,同时认为自身在线(连接在网络中)。
⑦如果主无线数据采集器接收到节点的请求加入命令,则记录节点状态为在线。
3.2 数据传送格式
发送帧数据格式:
每格代表1个字节,1帧14个字节。
接收帧数据格式:
每格代表1个字节,1帧10个字节。
4 系统程序设计
4.1 主数据采集器程序设计
主数据采集器的软件设计引入实时操作系统(RTOS)概念,采用μC/OS-II实时操作系统(V2.52版本)作为系统软件的核心。软件基于3层设计,包括硬件驱动层、操作系统层和用户应用层。
驱动程序是硬件和软件之间的桥梁,任何一个硬件设备都需要加载驱动程序才能被系统正常识别和支持。这种固化在了硬件中的软件被称为“Firmware”,即固件。它存储着系统中硬件设备最基本的参数,为系统提供直接的、底层的硬件控制。本系统主要使用了以太网驱动和SD卡驱动。
操作系统层可以看作一个实时的多任务调度器,并且完善地添加了与多任务操作系统相关的一些系统服务,如信号量、消息队列、邮箱等。要将μC/OS-II移植到ARM处理器LPC2378上,需要修改3个与ARM体系结构相关的文件——OS_CPU.H、OS_CPU_C.C、OS_CPU_A.S;同时还要配置与CPU相关的Startup.S和Target.C文件。
主数据采集器的应用层主要设计了数据查询任务、数据采集节点加入任务、服务器通信任务等。其中数据查询任务实现:轮询各数据采集节点状态;接收数据采集点的数据,将数据存储在SD存储卡中。具体实现流程如图4所示。
数据采集节点加入任务实现:
①初始设置不允许网络自动加入,此时将节点加入任务挂起。
②允许自动加入时,先进行广播,每次广播持续时间为0.5 s。
③切换为接收模式,一次添加时间允许添加10个节点(通信出错时的节点算入添加计数值)。
④从数据缓冲通道2接收数据,每次间隔0.5 s,并判断接收命令是否为数据采集节点请求加入。
⑤若为请求加入命令,则在主数据采集器内存的索引表中查找该节点地址;未找到,则添加节点地址至内存查找表中。
⑥将节点信息存储至SD卡中,若存储失败,则在内存中删除该节点。
具体实现流程如图5所示。
服务器通信任务实现:向主数据采集器发送通信命令;主数据采集器响应命令并返回相应的消息。
通信命令包括:获取SD卡中数据采集节点信息和采集的数据;禁止或允许网络自主加入以及删除或添加网络中的数据采集节点等。具体实现流程如图6所示。
4.2 数据采集节点的程序设计
数据采集节点的主程序相对简单,节点一般工作在休眠模式,休眠模式下只有无线模块处于工作状态(监听)。当无线模块监听到数据时,唤醒数据采集节点的CPU。节点根据接收到的主数据采集器的通信命令主要完成两项任务:接收主数据采集器的广播,申请自主加入网络;接收主数据采集器的数据请求命令,向主数据采集器发送实时采集的传感数据。具体实现流程如图7所示。
编者注:源程序见网站.cn
5 系统测试与结论
5.1 网络自主加入功能测试
系统测试初期,将网络自主加入功能一直开放,经过测试发现,有时网络运行会不稳定,比如在一段较长时间内,会出现节点一直处于掉线状态。经过分析,系统将自主加入功能赋予服务器,且每次开放持续一个较短的时间间隔(本系统设置2 s),这是由于无线收发器只能进行半双工通信,在接收和发送状态切换过程中可能造成数据丢失,因此要尽量将时间间隔设置短些。经过测试证实,此时网络运行更稳定,同时也使服务器端管理员对网络有更好的管理和监控能力,增强了网络的健壮性。
5.2 μC/OS-II任务调度测试
主数据采集器的操作系统多任务调度的优先级安排,要做到以下两点:系统调用频繁的任务优先级相对较高;占用CPU资源较多的任务优先级相对较低。同时,系统要尽量减少任务之间的切换和过多信号量的使用,避免信号量的竞争特别是死锁现象的发生。
5.3 结 论
通过一段时间的运行,在服务器端软件的管理下,此无线数据采集系统能够很好地进行数据采集,具有较高的稳定性。由于使用了以太网和自主网络,系统因此具有更好的通用性、扩展性和易维护性;同时系统的数据采集具有较好的实时性,可以满足对数据采集实时性较高的环境使用。作为一种设计方案,本系统可结合具体的应用进行功能扩展,从而更好地满足不同的需求。