首页 > 范文大全 > 正文

基于PCI-1711的数据采集系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于PCI-1711的数据采集系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要: 绍一种基于PCI总线结构、16路模拟输入、DMA中断方式数据采集系统的硬件组成,及其在Visual C++ 6.0环境下的软件开发。整个系统具有同步误差小,操作简单、易于调试、采样速度快等特点,且系统功能模块化增加了其扩展与兼容性。重点介绍了pci-1711驱动方式与采用的数据处理技术。经现场检测试验表明,本系统采集数据速率快、误差小(小于1%),兼容可扩展性强。

关键词: PCI-1711;数据采集;句柄;Visual C++6.0;驱动设计;DMA

随着社会的发展,减少事故带来的经济损失和人身安全提上日程,各种设备的状态监测与故障诊断已越来越重要了,它不仅涉及到常见的加工机床、钻机井架等,在高科技如航空航天等更为如此。近年来,振动与噪声理论、测试技术、信号分析与数据处理技术、计算机技术及其他相关基础科学的发展,为设备状态监测与故障诊断技术提供良好的理论基础。各种设备状态监测与故障诊断无不以设备状态的数据采集为前提。而专门的数据采集卡往往又比较昂贵。下面介绍基于一种经济实用采集卡PCI-1711的数据采集系统的设计。该系统基于16位PCI总线结构,16路单端模拟量输入,12位A/D转换器采样速率可达100KHz,1K缓存的连续采样和实时存储功能等。

一、 系统硬件介绍

组成硬件:计算机一台(内存256M以上)、传感器、PCI-1711采集卡。

本数据采集系统所采用的PCI-1711是华研公司出品的一款经济实用的数据采集卡, 其主要特点[1][2]有: 16 位PCI 总线接口, 完全符合PCI规格Rev2.1标准,支持即插即用。在安装插卡时,用户不需要设置任何跳线和DIP拨码开关。灵活的输入类型和范围设定PCI-1711/1711L有一个自动通道/增益扫描电路。在采样时,这个电路可以自动完成对多路选通开关的控制。用户可以根据每个通道不同的输入电压类型来进行相应的输入范围。所选择的增益值将储存在SRAM中。这种设计保证了为达到高性能数据采集所需的多通道和高速采样。卡上提供了FIFO(先进先出)存储器,可储存1KA/D采样值。卡上可编程计数器,可用于A/D转换时的定时触发。16路数字输入和16路数字输出,使用户可最大灵活的根据自己的需要来应用。

二、驱动方式

PCI-1711的软件开发包包含用于多种语言的函数接口[1] [3][4],包括:Driver.h和Adsapi32.lib 两个文件。在Visual C++6.0开发环境下,使用这些函数的关键是在FilevView视图下的增加Driver.h,和中增Adsapi32.lib,并在StdAfx.h全局头文件中包含如下语句:#include “…\Driver.h”,采集实现过程如图所示。

由于驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须先用函数DRV_DeviceOpen()创建一个设备对象句柄DriverHandle 。程序如下:

ErrCde=DRV_DeviceOpen(0,(LONG far*)&DriverHandle);

if(ErrCde!=SUCCESS)

{ strcpy(szErrMsg,"Device open error!");

MessageBox((LPCSTR)szErrMsg,"Device Open",MB_OK);

return;

}

有了这个句柄就有了对该设备的控制权。然后将些句柄作为参数传递给其他函数,如DRV_DeviceGetFeatures到得设备设置,DRV_AIConfig可配置设备增益,RV_DioWritePortByte可用于数据输出,DRV_DeviceClose释放句柄。

三、软件设计

为增加系统容错性,可移植性,可维护性,本软件统一由Visual C++6.0语言MFC方式编写数据处理程序,为提高数据实时采集速度和减少CPU占有率,采用基于DMA方式采集数据,为了便于实现其各功能,基于面向对象的程序设计思想把系统各个功能模块化处理[5]。

(一)基本思想

把采集的数据实时处理.一方面图形显示(默认界面),或数据显示;一方面实时存储,以备查阅或后续处理.这里重点介绍本软件采用的数据处理技术。

数据预处理

在数据采集过程中,由于各种偶然因素的干扰,所采集电压信号明显偏离正常值,。如果不将这些偶然异常电压剔除,就会歪曲采集结果。结合硬件的性能指标,采用限幅方式剔掉偏离电压。

|X2X1|

式中:X2 与 X1是 相邻的两个采集值,X 是限幅尺度。

如果X2与X1差值的绝对值小于X,系统认为采集的是正常值,反之系统认为是异常值。

2.滑动平均

每采进一个新数据就将临时缓冲区最早存储的那个数据丢掉,认为包含新值在内的临时缓冲区内的所有数据的算术平均值或加权平均值是最新采集的一个值,该方法是数字滤波常用的一种有效方法。

Y1= (X1+X2+…X256)/256;

Y1= (X2+X3+…X257)/256

(二)DMA方式数据采集的编程实现

在计算机对采集的数据进行处理时存在一个瓶颈, 就是采集与传输数据的速度。采用DMA传送方式可以将采集的数据直接存入存储器, 避免使用CPU 的寄存器, 从而实现数据的高速采集。首先要获得设备句柄DriverHandle 以便使用PCI 设备。然后配置各项硬件参数, 包括://取得设备设置

ptDevFeatures.buffer=(LPDEVFEATURES)&DevFeatures;

ptDevFeatures.size=sizeof(DEVFEATURES);

// 配置设备增益ptAIConfig.DasGain=

DevFeatures.glGainList[gwGain].usGainCde;

ptAIConfig.DasChan=gwChannel; //采集通道电压

ptAIVoltageIn.chan=gwChannel;

ptAIVoltageIn.gain=ptAIConfig.DasGain;

ptAIVoltageIn.TrigMode=0;

ptAIVoltageIn.voltage=(FLOAT far*)&fVoltage;

启动设备工作和计时器计时, 循环采集AD数据。

四、结束语

本数据采集系统应用PCI 总线作为传输介质,以采集卡PCI-1711为核心硬件,开发设备驱动程序并用Visual C++6.0编写数据处理程序同时把采集处理过的数据用图形和列表显示;使用DMA方式采集数据,使系统不仅具有良好的采集速度和很好的程序移植性;而所采集数据误差很小,完全满足实际工程要求。

参考文献:

[1].实时数据采集系统中定时程序的设计[J].南阳师范学院学报,2006,6: 88-90.

[2] .

[3] PCL-1711L数据采集卡用户手册[M].2003.兵工自动化,2007,26(2):60

[4] 高龙,闵琴.基于LabVIEW和PCI-1711的高速数据采集系统.

[5] 何瑾,张烨君,于彤彦.基于PCI 总线的数据采集卡的设计[J] .现代电子技术, 2006