引 言
随着无线通信和射频技术 不断发展,具有布局灵活, 成本低廉, 组网便捷等特点 无线数据采集系统正在逐渐取代传统 有线数据采集系统, 目前,市场上 无线数据采集系统虽然功能较齐全,但一般不具有以太网通信和节点自主加入 功能, 这在很大程度上限制了系统 扩展性能,给系统 维护带来一定困难,同时也限制了系统在有较高要求 特殊环境中 应用, 本系统实现了一种实时, 可靠 分布式自组织无线数据采集系统,具有更好 扩展性和通用性,
1 系统概述和原理
子网 系统结构如图1所示, 主数据采集器(相当于一个基站)和数据采集节点通过无线通信组成数据采集子网,二者之间采用主从式基于时间片轮询 点对多点通信方式;各数据采集节点通过传感器组完成各种类型数据 采集,主控点每隔一个时间片向各个数据采集点请求一次数据传输;数据采集节点接收到数据请求命令后,向主数据采集器发送数据;主数据采集器接收数据并将数据每隔一个小时间片,按一定 数据格式存储在SD存储卡中,
计算机服务器与主数据采集器采用有线方式组网,二者之间通过以太网进行数据通信, 当系统中有多个数据采集子网时,各个主数据采集器需要通过交换机转换后与服务器连接, 服务器端可随时从SD存储卡中读取数据,
为了保证网络 可靠性和健壮性,网络 自主加入功能由服务器端进行使能控制, 每次自主加入持续一个较短 时间,服务器端可以随时手动添加或删除网络中 数据采集节点,
2 系统硬件组成
如图2所示,主数据采集器 硬件系统主要包括LPC2378控制器模块, 按键模块, LCD显示模块(可选), SD/MMC卡接口, 以太网接口和无线收发器等几大模块, 主数据采集器采用高性能 10/100 Mbps以太网PHY收发器芯片DM9161A作为以太网控制器, 无线收发器通过模拟I2C总线与LPC2378连接,SD/MMC卡通过SD总线与LPC2378连接,
LPC2378是NXP公司新近推出 一款基于ARM 微控制器,可在高达72 MHz 频率下运行,拥有512 KB 片内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所示,
编者注:源程序见网站www.mesnet.com.cn
5 系统测试与结论
5.1 网络自主加入功能测试
系统测试初期,将网络自主加入功能一直开放,经过测试发现,有时网络运行会不稳定,比如在一段较长时间内,会出现节点一直处于掉线状态, 经过分析,系统将自主加入功能赋予服务器,且每次开放持续一个较短 时间间隔(本系统设置2 s),这是由于无线收发器只能进行半双工通信,在接收和发送状态切换过程中可能造成数据丢失,因此要尽量将时间间隔设置短些, 经过测试证实,此时网络运行更稳定,同时也使服务器端管理员对网络有更好 管理和监控能力,增强了网络 健壮性,
5.2 μC/OS-II任务调度测试
主数据采集器 操作系统多任务调度 优先级安排,要做到以下两点:系统调用频繁 任务优先级相对较高;占用CPU资源较多 任务优先级相对较低, 同时,系统要尽量减少任务之间 切换和过多信号量 使用,避免信号量 竞争特别是死锁现象 发生,
5.3 结 论
通过一段时间 运行,在服务器端软件 管理下,此无线数据采集系统能够很好地进行数据采集,具有较高 稳定性, 由于使用了以太网和自主网络,系统因此具有更好 通用性, 扩展性和易维护性;同时系统 数据采集具有较好 实时性,可以满足对数据采集实时性较高 环境使用, 作为一种设计方案,本系统可结合具体 应用进行功能扩展,从而更好地满足不同 需求,
|