TPC-650是为CE或其他高级操作系统设计的硬件平台。它适合于各种工业应用,包括工业自动化、自动化生产线、精密加工、生产过程控制、环境控制、终端信息系统、娱乐管理系统等。它具有高质量的6.4“VGA TFT/5.7”QVGA STN液晶显示器、Intel Pentium 266 MMX微处理器、10/100 Base-T网口、二个串口(RS-232,RS-232/422/485)、一个快闪卡插槽、一个外部16位PC/104模块扩展槽和触摸屏。它的核心是微型X86 CPU,但它在图形显示和网络通信方面的性能更优。
PCM-3718H是一个高效的多通道数据采集模块,插在TPC-650的PC-104插槽。它支持12位的A/D转换和数字输入/输出,能够实现DMA方式的单/多通道的A/D转换。其DMA转换的采样频率可达100kHz。它具有灵活的触发选择,包括软件触发、实时同步触发和外部脉冲触发。
PCLD-880是通用螺丝端子板,能提供方便的信号接线,并能与数据采集卡的20芯扁平电缆相连。它还带有一个DB-37接口,可以支持带有DB-37的数据采集控制卡。它是能在恶劣的环境下实现可靠连接的工业端子块。
本系统的主要工作过程是用位移/速度/加速度传感器提取模拟电压信号,经过PCLD-880,输入到PCM-3718H。通过软件编程控制PCM-3718H数据采集模块,对模拟电压信号进行采样,完成A/D转换和数据的存储及处理。
2 软件设计
2.1 应用程序执行数据采集的工作过程
首先,从上位机下载任务文件,打开任务文件,在用户界面上显示为任务列表。操作人员将信息钮只读器与设备上的信息钮贴合,程序自动从任务表中找到匹配项,进行数据采集。每采集完一个设备,该设备号从任务列表中自动删除。
采集开始的同时会显示三种曲线:实时曲线、平均值曲线和FFT曲线。操作人员根据平均值曲线的平稳程度决定是否将采集到的数据存储起来。实时曲线可以反应所测物理量的真实变化情况。FFT曲线体现所测物理量的频域特征。采集完成后,向上位机发送数据。
2.2 多线程的数据采集
因为需要在较短的时间内完成数据采集、分析、图形显示和数据存储等任务,所以采用多线程模型利用多个线程分别完成各项任务。
本系统充分利用CE 操作系统的多线程特点将不同的任务分布到各个线程中,使各个任务同步而协调地进行。主线程负责创建用户界面、接收消息等工作。为了保证数据采集不被其他线程中断,专门开辟一个优先级较高的线程来采集数据。各个线程(数据采集线程、数据动态显示线程和数据存储线程)中所要完成的工作并行进行。线程间的通信通过消息响应函数PostMessage 和CEvent对象来实现。
数据采集线程和显示线程之间的同步通过使用线程同步对象Critical Section来实现。它能够保证在同一时间只有一个线程访问数据缓冲区。当采集线程向缓冲区中写数据时,采集线程拥有Critical Section,显示线程就不能够访问缓冲区;只有当采集线程将Critical Section对象释放之后,显示线程获得了Critical Section对象,进而才能读取缓冲区中的数据。这就保证了显示线程读到正确的数据。数据存储线程、采集线程及显示线程三者之间的同步也是如此。
2.3 软件模块关系和各个模块的功能
系统各软件模块关系如图2所示。
2.3.1 通信模块
通信模块负责本系统与上位机之间的通信,包括从上位机下载文件和向上位机传送采集的数据。使用CSocket类建立TPC-650上的客户端和桌面PC上的服务器程序。用CSocket类与CSocketFile和CArchive类一起使用来完成数据的发送和接收。在程序运行时,为了“听”由客户端程序发出的连接请求,服务器程序首先运行。下面是建立服务器和客户端通信程序的步骤。
(1)构造一个CSocket类对象。使用BOOL Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,LPCTSTR lpszSocketAddress=NULL)函数。在服务器程序中使用该函数时,要指定nSocketPort值。
(2)客户端CSocket调用CAsynCSocket∷Connect函数连接服务器Csocket。服务器端用CAsynCSocket∷Listen函数“听”客户端发送的连接消息。调用CAsynCSocket∷Accept函数接收客户端发送的消息。注意,virtual BOOL Accept(CAsynCSocket& rConnectedSocket,SOCKADDR*lpSockAddr=NULL,int*lpSockAddrLen=NULL)函数需要一个新的rConnectedSocket作为参数。因此在接收之前,要先构造一个新的CSocket类。
(3)构造一个CSocketFile类对象,它与CSocket类对象相关联。
(4)构造一个CArchive类对象,它与CSocketFile对象相关联。
(5)使用CArchive类对象在服务器和客户端之间传递数据。
系统程序中有二部分要用到客户端和服务器之间的通信。一是从上位机即桌面PC上下载任务文件;二是向上位机发送采集的数据。
在TPC-650上运行的客户端程序主要完成:(1)连接服务器;(2)向服务器发送采集到的数据;