1 引言
传统数据采集系统一般利用各种数据采集卡或是多串口卡,编制相应的定制软件,将外 部信号采集到工控机或普通PC 机。由于硬件结构的限制,传统的数据采集系统体积大、实 时性差、信号衰减严重、外挂设备数量有限,无法满足微型化、大容量、高实时性、多参数 和高稳定性的要求。随着计算机技术和网络技术的发展,各种新的数据采集的实现方案不断 出现,其中,以TCP/IP 通信机制的远程数据采集系统具有较好的使用前景[1]。本文以基于 WinCE 的嵌入式设备为核心,取代传统意义上的PC 机,采用TCP/IP 通信机制搭建的远程 数据采集系统,结合嵌入式设备和网络技术的优点,将信号采集、信号传输和数据处理相对 分离,提高了系统的抗干扰能力、实时性和高安全性,特别适用于远程、多参数的数据采集, 具有重要的使用价值和应用前景。
2 远程数据采集系统总体结构
基于嵌入式 WinCE 的远程数据采集系统如图1 所示,主要的组成部分及其功能如下: (1)客户端PC,主要进行远程数据采集器的信息配置和数据监控等;(2)Linux 系统服务 器,主要负责与数据采集器通信,进行数据的接收、分析、处理、存储和监视,以及采集器 配置文件的传输;(3)基于WinCE 的嵌入式数据采集器,主要根据远程配置参数,多点、 多参数动态采集生产设备信息、环境信息以及操作人员信息,包括电流、电压、压力、产量、 温度、湿度、班组号等。在远程数据采集系统中,利用高可靠性的TCP/IP 协议完成配置文 件的更新和采集数据的传输,以及采集器远程调试监控;利用嵌入式数据库(SQL Server CE)保存采集数据和服务器传送的远程配置文件;利用SQL Server CE 提供的RDA和Replication (合并复制)特性,当服务器网络断开后完成数据和配置文件的转储和备份,保证数据的完 整性;利用嵌入汇编控制的硬件看门狗技术保证系统运行的高稳定性;利用可扩展的IDE 接口可以保证大容量数据的存储。
基于嵌入式 WinCE 数据采集器采用研祥公司EVOC 104-1541CLDN(B)作为硬件平台。 EVOC 104-1541CLDN(B)是一款可由+5V 电源供电的嵌入式应用型的 All-in-one Geode 586 的主机板,能够提供嵌入式操作系统运行所需的核心硬件资源。主要的硬件资源包括: NS GX1 处理器,工作于 2.2V/333 MHz 时的功率为1.4W,速度最高可达333 MHz; 1 个10M 以太网口,2 个通用异步串行口(UART);2 个USB 数据接口;1 个LCD 控制器;1 个 64MSDRAM;1 个CF 卡接口;以及键盘接口和IDE 接口等。利用上述的核心硬件资源, 在集成开发环境中,可以进行开发平台的定制,数据采集和传输等模块的开发,实现远程数 据采集。
3 基于嵌入式WinCE 开发平台的定制
WinCE 嵌入式操作系统是一个紧凑、高效和可扩展的操作系统,其最大的特点是使用 了分层结构技术,使系统具有更好的可扩展性和定制性,使应用程序和操作系统独立于具体 硬件,以适应各种特殊的应用环境。操作系统从逻辑上可以分为硬件层,OEM 层,操作系 统层,应用程序层[2]。基于嵌入式WinCE 开发平台的定制主要是对操作系统层和OEM 层进 行定制。
微软提供了 PB(Platform. Builder)作为定制WinCE 操作系统的集成开发环境。PB 环 境支持多种功能模块和硬件接口,可以根据目标设备的具体硬件配置进行WinCE 的裁剪和 定制,定制wince 平台的流程如图2 所示。首先,通过安装和创建设备驱动程序对网卡、串 口、显示驱动、USB 和电源驱动等硬件进行定制;然后,定制系统组件和服务,包括TCP/IP, FTP,MFC,Telnet 等,并根据硬件配置和操作系统的应用特性修改配置文件;最后,生成 操作系统映像文件,通过网口或串口将其下载到目标设备中运行。定制完成后,导出应用程序开发工具包SDK。根据导出的SDK 开发包,运用EVC 开发工具可以编制数据采集模块 和数据传输模块。
4 基于嵌入式WinCE 数据采集模块设计
数据采集模块是整个数据采集器软件设计的核心部分,可以采用与设备连接的PLC、 单片机、工控机以及人机交互界面等,完成生产设备信息、环境信息及生产操作人员信息的 采集。在本文开发的系统中,主要是通过PLC 采集设备信息,通过单片机采集温度、湿度、 压力传感器的环境信息,通过基于嵌入式WinCE 采集器的人机交互界面直接采集生产现场 人员信息。
通过 PLC 采集设备信息时,数据采集器通过RS-232 接口以Host Link 通信协议与PLC 通讯。Host Link 通信协议采用“主从总线”方式通信,根据主动权的不同有两种实现形式, 一种是通信主动权在上位机(基于WinCE 的采集器)一方,即方式一;另一种是主动权在 下位机(PLC),即方式二。根据传输信号的性质不同,两种方式可以结合使用。针对本系 统的特点,对需要用户动态配置的信号,如设备当日产量、运行时间等,采用方式一;对于 经常需要监控的信号,如机器的运行温度、转速等,采用方式二。方式二的优点在于,仅当 下位机的数据发生变化时,PLC 才发起通信并上传数据。这种通信方式可以大幅度减少上 位机的监视时间,提高系统的实时响应能力。本文仅以方式一为例说明动态信号的采集过程。
采集器主动向 PLC 发出Host Link 命令帧到PLC,PLC 接收到命令帧后自动向上位机 发送应答信号,完成一次信号的采集过程。在Host Link 协议中,“@”为起始符号;节点号 为PLC 的编号(00-31);识别码说明Host Link 命令帧的功能;FCS 包含2 个字符,是帧的校 验码,即从帧起始到报文结束之前数据的异或运算结果,用来检查帧的传送结果是否正确; “*”和“CR”为终止符,表明帧结束[3]。在本系统中,WinCE 中提供了操作文件IO 函数 和通信函数来操作串口,进行串口通信。为了避免读线程调用WaitCommEvent()函数时造成 程序阻塞,提高CPU 的利用率和通信程序的实时性,改善系统的整体性能,采用多线程技 术实现异步串口读写的模拟[4,5]。串口通信的主要步骤如图3 所示,(1) 调用函数CreateFile() 打开串口,函数SetCommState()配置串口参数;(2)调用函数CreateThread()创建读写线程, 模拟异步读写串口(WriteFile()将命令写入串口缓冲区,WaitCommEvent()等待串口*事件 集发生,ReadFile()读取串口数据);(3) 关闭串口,将采集的数据进行处理和存储。
采集环境信息时,用AT89C51 单片机、A/D 转换模块、加外围电路构成的小型单片机 系统,通过串口与嵌入式采集器根据自定义通信协议进行通信,完成温度、湿度等数据的采 集。生产操作人员信息由嵌入式采集器的人机交互界面直接采集。
5 基于嵌入式WinCE 数据通讯模块设计
数据通信模块用于完成采集器与上层服务器之间的通信,其主要功能包括,接受远程控 制终端的命令,控制程序的运行状态,为程序的远程调试和监控提供方便;传输采集数据; 同步更新采集器配置文件。数据通信模块采用基于WinCE 的TCP/IP 协议,能够保证在传输 过程中数据的准确性和可靠性;嵌入式系统硬件抗干扰能力强,能够保证系统长期稳定运行。
在基于 WinCE 的TCP/IP 协议中,当接收到远程控制终端命令时,采集器处于TCP 服 务器角色,以便多个控制终端向采集器发送命令。其通信实现流程为:TCP 服务器首先调 用socket()函数建立流式套接字,然后调用bind()绑定本地地址,调用listen()函数进行* 客户终端连接,一旦*到客户终端连接后,服务器就调用accept()函数接收终端的连接请 求,并建立连接,同时服务器端启动一个新线程,建立单独的套接字实例与客户终端进行通 讯。通信协议格式为:命令名称,参数表。例如在通信格式“PATHR1, 0”中,PATHR1 命令表示暂停数据采集线程,参数0 表示立即执行。服务器收到此 命令后会立即暂停数据采集模块,并传回命令的执行结果。
采集器与服务器进行数据传输和配置文件(主要关于采集信号的类型,名称以及其它系 统配置信息)更新时,采集器处于TCP 客户端角色。其通信实现流程为:采集器调用socket() 函数建立流式套接字,然后调用connect()函数,请求与Linux 服务器建立TCP 连接,成功 建立连接后,同服务器进行数据传输和配置文件更新。数据传输和配置文件更新需要自定义 TCP 通信协议,采集器向服务器传输采集数据的通信协议格式为:数据类型,采集 时间,数据名称,数据值…;校验值;服务器向采集器更新配置文件的通信协议格式 为:数据类型,名称,区域,采集点数…;校验值。
6. 结束语
在微软提供的 PB(Platform. Builder)集成开发环境中,根据分层技术定制了基于WinCE 的开发平台,分别采用Host Link 协议和自定义协议设计了采集器与PLC 和单片机的数据采 集模块,并实现了采集器与Linux 服务器的数据通讯模块。作为一种新型的数据采集系统, 以嵌入式WinCE 为核心的远程数据采集系统充分发挥了嵌入式硬件设备的特点,系统实时 性强、稳定性好,功耗小,成本低,与传统的数据采集方案相比,特别适合于多点、多参数 的远程数据采集,具有广泛的应用前景。