首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于Windows CE的便携式数据采集与处理系统
来源:本站整理  作者:佚名  2010-03-16 12:00:29



目前,一些发达国家的工业设备运行监测和管理已日趋信息化和专业化,但国内这方面尚存在许多问题。有些企业出于投资规模和经济效益的考虑,尚未引进现代化的检测设备和管理手段,依旧使用传统的人工巡检和记录模式。即使一些大型企业已配备了较先进的监测系统和监测仪器,但是由于具体操作人员的素质和责任心等方面的问题,并未使其发挥应有的作用,且导致近年来国内设备运行故障频繁发生。因此研制和开发过程装备智能诊断系统是十分必要的。整个系统的设计思想是:系统主机对设备运行状况进行分析并发出任务指令;巡检人员按任务指令要求利用巡检仪采集并存储数据,然后将采集好的数据发送到主机;主机再根据巡检仪输入的数据分析设备的运行状态并发出下一次的任务指令。如此循环以达到保证设备安全运行的目的。本文介绍针对巡检仪提出的一种基于Windows CE的数据采集与处理系统,并给出了硬件设计和软件设计。
  选择Window CE(以下简称CE)作为软件运行平台,这主要是基于它的特点[1]考虑的。CE是多线程、多任务、完全抢占式的32位嵌入式操作系统。新的内核服务,例如嵌套式的中断、更好的线程响应、新增的任务特性、信号量等,使得它能对事件和中断立即响应,能够满足数据采集中苛刻的实时性要求。它支持的多线程使得数据采集和显示处理等能够同时进行。它具有强大的存储和文件处理能力,能够满足数据存储的需要。它对通信及网络的支持,使得它与系统主机的通信变得更加容易。
1 系统的硬件结构
  系统硬件的主要组成如图1所示。

  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)向服务器发送采集到的数据;

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:229,230.50000 毫秒