1引言
近年来,近距离的数字化智能数据采集与控制系统得到了普遍应用,流行的结构是以PC机、笔记本电脑、工控机等作为上位机,以单片机、嵌入式系统作为下位机,通过串行通信、488总线、CAN总线、以太网等多种方式进行数据传输。这些有线数据传输系统具有布线不便、通信电缆容易受损等弊端。
随着无线数据通信技术的日益成熟,在工业控制、检测与测量领域,无线自动化(WirelessAutomation)已经成为人们关注的焦点,迫切需要低成本、高可靠、低功耗的无线数据传输方案代替有线系统。蓝牙作为一种电缆替代技术,可以方便地实现设备之间的无线连接,具有低成本、低功耗、高速率、抗干扰能力强、组网灵活等特点,是实现近距离无线数据传输的理想选择[1]。当前主要的掌上电脑(PocketPC)和智能手机(Smartphone)均支持蓝牙协议。
同时,随着掌上终端处理能力的不断增强,以掌上终端作为上位机控制中心成为可能,掌上终端携带方便,尤其适用于野外或复杂条件下的现场控制。
本文基于掌上智能终端实现对分布式数据采集系统的蓝牙无线控制,在掌上终端的主流操作系统WindowsMobile上实现基于不同蓝牙协议栈的终端设备控制与数据通信,完成数据的实时无线传输。能够设置多个采集终端的数据采集参数并实时无线回收数据,保证数据采集的实时性、数据可靠性和软件系统稳定性。
2掌上终端控制的蓝牙微微网无线数据采集系统
2.1系统结构
如图1所示,多个蓝牙无线数据采集器组成蓝牙微微网,与掌上终端通过蓝牙连接进行控制信令传输及数据通信。掌上终端识别网内的数据采集器,发送控制命令并实时显示回收的数据。蓝牙无线数据采集器在掌上终端的控制下设置数据采集参数,启动或停止数据采集,实时采集所需要的现场信号,并通过蓝牙微微网,将数据无线回传至掌上系统。
图1掌上终端控制的蓝牙微微网无线数据采集系统结构图
2.2蓝牙无线数据采集器
各数据采集器通过距离、压力、温度等传感器将目标物理量转换为电信号,并由A/D转换器转换为数字信号。数据采集器上配接蓝牙模块,通过UART与蓝牙模块连接,数据的收发通过读写UART寄存器来完成。采集器通过蓝牙链路接收来自掌上控制器的命令及采集参数,并将各时刻的数据组织为帧结构,发送至掌上控制终端。
2.3掌上智能控制终端系统
掌上终端代替PC机、笔记本电脑、工控机等作为现场数据采集系统的上位机,是现场数据采集与控制中心及数据接收中心,主要任务包括:蓝牙数据采集器管理及传感器校正、数据采集器参数设置、数据采集控制、无线数据接收、实时显示与数据存储、回放。
基于掌上智能终端内嵌的蓝牙模块,调用相应的协议栈库函数即可完成蓝牙的相关操作。数据采集器管理模块负责设备查找与设备安全认证;采集参数摄制及控制模块向采集器发送工作控制命令;无线数据接收模块实时接收采集器数据并提供图形化显示;实时采集的数据按照约定格式存放在指定文件中,并根据需要提供历史数据回放。
2.4蓝牙微微网无线数据通信
蓝牙是一种短距离低功耗无线传输技术,工作于2.4GHz的ISM频段[2]。蓝牙通信协议栈分为四层,其中核心层为基带协议层(BaseBand)链路管理协议(LMP)、逻辑链接控制和适配协议(L2CAP)以及服务发现协议(SDP),核心层之上为电缆替代协议(RFCOMM)与电话传送控制协议(TCS-Binary)[2]。本系统蓝牙无线传输工作在RFCOMM协议上,利用SerialPortProfile将蓝牙设备虚拟成串口设备,数据的传输操作与串口操作相同,开发方便。
3掌上控制系统的工作流程
掌上控制系统的主要功能包括采集参数设置、采集器系统自检、传感器校正、采集控制以及数据回显。参数设置模块设置采样间隔、保存文件路径、工程信息等参数;采集器系统自检模块以预采集的方式启动采集器,检测整个系统软硬件工作状态;传感器校正模块实现各传感器的零漂纠正及系数率定;采集控制模块控制采集器的数据采样启动与结束,接收并处理数据,完成数据的实时显示及保存;数据回显模块从文件读取历史数据并显示。
4主要功能实现
4.1数据帧蓝牙
数据通信中,命令帧结构与数据帧的约定如下:命令帧由两位命令标识、四位命令参数和两位结束符组成,如IT0001ZZ,IT代表设置采样间隔命令,0001约定为采样间隔为0.01ms,ZZ为统一结束符。数据帧由两位机器识别码、两位数据和两位结束符组成,如A1HLZZ;其中H表示16进制数据的高位,L代表低位。
每次采集传输数据时,终端无间隔采集并传送5组数据,在掌上控制终端进行中值滤波,以减小误差。
4.2蓝牙设备发现与连接实现
4.2.1基于微软协议栈的蓝牙传输
实现基于微软的蓝牙驱动,开发简单。通过使用Socket实现通信连接。
发现设备需要用到三个Winsock的API,分别是WSALookupServiceBegin、WSALookupServiceNext和WSALookupServiceEnd。头文件为Winsock2.h,库文件为Ws2_32.lib。
使用Socket设备发现的代码如下:
WSALookupServiceBegin(&querySet,LUP_CONTAINERS,&hLookup);WSALookupServiceNext(hLookup,flags,&dwSize,pwsaResults)WSALookupServiceEnd(hLookup);
利用pwsaResults返回的蓝牙物理地址与GUID做为socket连接参数,可与目的设备进行连接。代码如下:
SOCKETm_socketClient=socket(AF_BT,SOCK_STREAM,
BTHPROTO_RFCOMM);connect(m_socketClient,(SOCKADDR*)&sa,sizeof(sa))进行设备连接。连接成功后,可用下列代码进行数据收发:
recv(p->m_socketClient,buf,1024,0);send(m_socketClient,(char*)buf,nSize,0);
4.2.2基于widcomm协议栈的蓝牙传输实现
使用如下语句启动查询:
StartInquiry();
VoidOnDeviceResponded(BD_ADDRbda,DEV_CLASSdevClass,BD_NAMEbdName,BOOLbConnected)
bda为返回设备地址,bdName为返回设备名称。当查询时间结束时,响应查询定时器函数,开启服务查找线程:
StartDiscovery(m_BdAddr,m_pServiceGuid);
Widcomm提供了各种协议的不同连接方式,基于RFCOMM协议的SPP连接代码如下:
CSppClient::CreateConnection(m_BdAddr,m_serviceName);
当设备连接成功,可以返回相关状态:
VoidOnClientStateChange(BD_ADDRbda,DEV_CLASSdev_class,BD_NAMEname,shortcom_port,SPP_STATE_CODEstate)
使用函数返回的com_port为串口号建立串口操作
CreateFile(buff,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL)。
4.3设备安全认证
无线信道具有开放性的特点,在有效的距离范围内任何符合频率的接收机都能将信号捕获。所以,无线数据传输的安全性是系统设计的重点问题之一。本系统通过三种途径确保无线数传的安全。
一是利用蓝牙标准中的信道标准来保障。蓝牙的工作频率为2.4GHZ,覆盖范围是相隔1MHz的79个通道(从2.402GHz到2.480GHz)[2]。数据传输技术使用短封包,运用了跳频展频技术,跳频频率为1600次/秒,这样从物理层上防止了偷听和避免了干扰。但是这对使用蓝牙设备的窃听和干扰是无效的。
二是使用蓝牙系统中的PIN码。如果传输设备都没有PIN的认证,任何一个蓝牙设备均可以连接获取数据的传输。设置PIN码之后,只有通过PIN码认证的设备,才能进行蓝牙设备的连接和数据传输。
三是通过认证命令实现应用层安全认证,由移动终端发起设备认证命令,等待蓝牙数据采集器返回就绪状态码,掌上终端将生成的认证码A装入特定格式的帧发送至采集器,采集器通过算法得到认证码B并返回发送,如果认证码均正确,则互发确认消息,通过设备认证。
4.4轮询模式下的伪同步与实时
同步传输的多线程实现掌上终端控制系统与蓝牙数据采集器的连接可采用两种方式:基于轮询连接的伪同步模式与实时同步连接传输。轮询模式是掌上控制终端与各采集器分时连接,同步模式是掌上控制终端与所有采集器同时连接,实现同步控制并完成数据传输。
两种连接模式均利用Windows多线程机制实现。为每一个数据采集器开启独立线程,完成数据处理。两种模式均通过事件机制(Event)进行控制,对于轮询模式,初始化时所有数据采集处理线程处于挂起状态,主程序依次触发事件唤醒相应线程进行数据采集处理。同步模式工作时,主程序同时触发所有事件,唤醒所有处理线程进行采集处理,每处理完一个数据采集器的数据,所有的线程同步一次,从而实现数据在时间上的同步。
在待采集数据变化缓慢的情况下,如在温室内监测气温与湿度,采样率低,采用轮询模式可以缩短连接时间,降低设备功耗,延长工作时间。而同步模式适用于数据变化相对较快,对各个数据采集器同步要求高的情况。
5测试结果
掌上系统能够无线连接控制4个数据采集终端,实时接收并显示各数据采集器的数据.在实时接收并绘制数据曲线的同时,可随时执行数据回显功能,实现曲线缩放。
掌上终端采用华硕A626,基于内置的蓝牙模块,与蓝牙数据采集器的通信距离达10m;如果将数据采集模块蓝牙芯片更换至Class3级别,则传输距离可达到100m。本系统传输数据量不大,系统通信速率为9.6kbps,可以更好地利用蓝牙的省电模式。当连接4个蓝牙数据采集器,每个采集器发送时间间隔为10ms时,掌上控制终端同时接收没有出现丢包。
6结论
论文基于掌上终端开发了现场数据采集的蓝牙无线控制系统,解决了蓝牙微微网连接、安全认证、同步处理接收等关键问题,实现了上位机的可移动化、便携化。克服了有线数据采集控制系统的连线不便、安装复杂等缺点,可广泛应用于工业现场控制,医疗监测,智能家居等多种不适宜布线的场所
本文作者创新点:使用移动终端作为上位机,通过蓝牙微微网技术以及其他关键技术同步控制多个下位机,并能实时处理、存储并显示接收数据。
参考文献
[1]何戟,李孝安,段渭军,基于蓝牙的移动数据采集处理系统的设计与实现[J],计算机应用研究,2006年11期
[2]BluetoothSIG,BluetoothProtocolCoreVersion2.0+EDR[S].2004
[3]陈莉,钱东平,赵东杰,蓝牙技术在地下水监测系统中的应用[J],微计算机信息,2007年26期
[4]吴建,通用型工业数据采集平台的设计与开发[J],微计算机信息,2008年24卷第3-3期
[5]王宏,用于局域监测控制系统的无线数据传输解决方案[J],计算机应用与软件,2008年2期