APP下载

基于Windows的改进型数据采集和处理系统

2016-01-05李苗

电脑知识与技术 2015年31期
关键词:数据采集

李苗

摘要:目前数据采集和处理系统中存在采样数据丢失、延时、效率低等问题,基于异步I/O调用、多线程、循环缓存技术,本文设计出一种改进型数据采集和处理系统。该系统可以实现软件程序与数据采集卡之间实时、高速、无阻塞的数据传输。

关键词:数据采集;循环缓存机制;多线程技术;异步I/O调用

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)31-0005-02

The Improved Data Acquisition and Processing System Based on Windows

LI Miao

(School of Computer Science, Xian Shiyou University, Xian 710065, China)

Abstract: Based on sampling data in the data acquisition and processing system is lost, delaying and low efficiency, this paper designed a new data acquisition and data process system based on several technologies of asynchronous I/O calls,multi-threading and circulation caching mechanism. It can realize real-time, high-speed and non-blocking data transmission between software programs and data acquisition card.

Key words: Data acquisition;circulation-caching mechanism; Multithreading technology; Asynchronous I/O calls

随着测量精度要求的提升,数据采集处理系统对数据采样的实效性、准确性等要求越来越高,常见的数据采集系统包括硬件和软件系统两部分,其中硬件采用数据采集卡,软件由驱动程序和应用程序组成。驱动程序是硬件和软件连接的桥梁,主要是实现软硬件之间的数据通信。应用软件是整个数据采集系统的核心,完成数据采集、处理、显示等功能。本文设计的数据采集和处理应用程序采用异步I/O调用,使程序与数据采集卡之间完成畅通的数据交互;不同应用程序之间运用多线程技术和循环缓存技术,改进后的系统能够提高资源利用率,实现高速完整的数据集采集,具有开发周期短、可靠性高、成本低、通用性好等优点。

1 基于Windows系统的改进型数据采集和处理系统

数据采集卡的软件系统包括驱动程序和应用程序设计,传统的数据采集系统应用程序通常采用同步I/O调用驱动程序和单线程,存在系统阻塞、延时问题。使用异步I/O调用可以解决系统阻塞问题,使用多线程技术配合循环缓存技术,不同线程完成不同功能,并对高速连续信号进行采集、显示、存储,既可以保证系统的实时性,又可以节约系统资源。

1.1 应用程序与驱动程序之间的通信

跨平台驱动程序模型WDM中驱动程序与应用程序之间通过异步I/O调用和事件通知的方式进行数据通信。通过调用事件程序,WDM与应用程序进行数据交互。在接收I/O请求后,驱动程序检测事件发生情况。分为两种情况:事件发生并即将与应用程序交互,驱动程序会通过WDM的调度例程完成驱动程序与应用程序之间的数据通信;如果没有事件等待,应用程序会调用系统函数来完成I/O的数据采集。

1.2 多线程和循环存储技术概述

程序运行的基本单元包括进程和线程,系统利用该基本单元实现系统对应用的并发性。一个程序至少有一个进程,一个进程至少有一个线程。线程是进程的一个实体,是CPU调度和分派的基本单位。OS为每个线程分配一定的CPU时间,接下来为每一个线程以循环方式提供一定的时间片,保证几个线程运行一致。线程不拥有系统资源,只与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程通过创建和撤销另一个线程,并与同一个进程中的多个线程之间并发执行。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行,具有系统管理开销小、线程间切换快、并行程度高、易于通信等优势。

Windows是一种多任务的非实时操作系统,通常Windows系统中线程切换时间需要20ms,因此数据处理和显示会对实时数据采集造成一定的时延,造成数据丢失。多线程可以更好的开发并行性和提高系统性能,是一种系统设计发展趋势,为减少系统工作过程中数据处理、存储和显示对高速连续数据采集产生的时延作用,采用多线程技术可以有效地减少Windows等待时间,提高程序执行效率。

本系统将数据采集、数据处理、数据显示以及存储放在多个线程中,这几个While循环是并行运行的,从而保证每个独立的数据采集程序不受其他线程的影响;在数据采集存储中引用了循环缓存技术,保证采集到的数据的准确性和实效性。

数据采集与处理系统运行时,数据采集线程将数据采集卡采集到的数据放入内存缓冲区,数据处理线程将内存缓冲区中的数据读取处理,并加以分析和显示。采集的数据积累到一定的量后,自动启动数据存储线程,实现数据存储并挂起。通过事件消息机制同步数据采集、分析、显示和存储线程,以全局数据对象的方式完成资源共享、最终达到高速、连续、实时的数据采集和处理。

2 改进型的数据采集和处理系统软件设计

所有线程可以访问内存堆栈、串口、文件等各种系统资源,基于Windows操作系统的事件对象可以使程序管理同一个或不同进程中的线程之间所共享的数据与资源访问。在线程访问资源之前,需要等待该资源对应的事件的发生。通过函数库中的CreateEvent() 函数建立事件对象,这样就可以直接控制事件对象的状态。创建SetEvent()函数可以将事件状态由未知改为已通知状态;创建和调用ResetEvent() 函数,可以将该事件重置为未通知状态。Win32 API提供了一组能使线程阻塞其自身执行的等待函数(如WaitForSingleObject()),在函数未返回时,线程将处于等待状态,此时线程只消耗很少的CPU时间。通过调用等待函数不仅可以实现线程同步,而且可以提高系统的执行效率,具体的系统程序运行情况图1所示。

图1 数据采集主程序框图

通过循环存储方式,合理分配存储空间,在系统运行时存储数据,每次只占据缓存区的一部分,当达到缓存区底部时,转向缓存区顶部再次填充同一缓存区,并依次读取数据,实现连续采集数据。在存储过程中,合理分配存储空间的大小和存储速率,实现应用程序从缓冲区的特定位置读取数据,同时新采集的数据存入缓存区的另一位置,这样可以保证一个线程能够正常读取数据,另一线程又可以完成数据更新,保证读取的数据不会被更新的数据覆盖,不会出现数据丢失和错乱,实现数据采集与处理的并行性。

3 结束语

本系统的优势主要体现在以下几个方面:(1) 高速数据采集卡与应用程序之间,通过异步I/O调用的方式可以有效地解决采集系统阻塞问题;(2) 多线程和循环缓存技术的运用,可以节约系统资源,提高了采集与处理的效率。

若数据采集卡每次采样后,连续传输10KB的数据,其传输时间约为130μs,数据处理时间约为160μs。在传统的数据采集系统中,工作流程是先读数据,再进行数据处理,而改进后的数据采集、处理系统,使用异步I/O调用、多线程、循环缓存技术,第二次数据处理与第一次数据处理是并行同步进行的,执行效率可以大幅度提升。实验结果显示,改进后的数据处理性能得到大幅度提升,随着数据量的增加,数据执行效率较传统数据采集、处理系统得到大幅度提升。

参考文献:

[1] 邢瑞川, 安世奇, 疏学明. 多线程技术在数据采集中的应用[J]. 包头钢铁学院学报, 2001,20(2):157-160.

[2] 李光春, 黄建国, 王志刚. 多线程技术在数据采集中的应用[J]. 技术平台, 2009(7): 85-87.

[3] 李竹青, 徐建南, 王志刚, 等. 基于异步I/O与多线程技术的数据采集卡软件设计[J]. 测控技术, 2008(8).

[4] 向科峰. 基于LabVIEW的数据采集系统若干问题[D]. 西南科技大学, 2007:24-33.

[5] 杨西侠, 柯晶.信号分析与处理[M]. 北京: 机械工业出版社, 2007.

[6] 王梦羚, 王思明. 基于PCI-1713和LabVIEW的高速数据采集系统设计[J]. 微计算机信息, 2006,22(7-1):120-122.

[7] 闫玲, 方开祥, 姚寿广. 基于LabVIEW的多功能数据采集与信号处理系统[J]. 江苏科技大学学报:自然科学版, 2006,20(3):50-54.

[8] 宋庭新, 桂婕. 便捷式动态信号采集系统的研制[J]. 计算机测量与控制, 2004,12(2):161-163.

[9]李建宏,何玉珠.多线程技术在复杂数据采集系统中的应用[J].电子测量技术,2008,31(5):102-104.

猜你喜欢

数据采集
Web网络大数据分类系统的设计与改进
CAN总线通信技术在电梯监控系统中的应用
基于大型嵌入式系统的污水检测系统设计
基于AVR单片机的SPI接口设计与实现
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究
大数据时代的管理会计