数据采集卡
数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自动采非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。通常,必须在数据采集设备采集之前调制传感器信号,包括对其进行增益或衰减和隔离,放大,滤波等.对待某些传感器,还需要提供激励信号(
数据采集卡,即实现数据采集(DAQ)功能的计算机扩展卡,可以通过USB、PXI、PCI、PCI Express、火线(1394)、PCMCIA、ISA、Compact Flash等总线接入个人计算机。
数据采集卡就是把模拟信号转换成数字信号的设备,其核心就是A/D芯片。
运动控制卡也有采集卡的功能,但主要是输出脉冲信号控制司服电机和步进电机,也就是一个闭环控制系统。
我的频率不需要做的很高,需要显示频率的大概不会超过10KHZ,而需要的频率大概也不会超过30Khz,如果是USB口的就更好了
我和NI的工程师联系了下,他推荐了我下面这块卡
大家帮我看看啊
NI USB-6259
高速USB M系列多功能DAQ
用于自动探测和配置的即插即用USB;内置信号连接
与LabVIEW、LabWindows/CVI和用于Visual Studio.NET的Measurement studio兼容 随附NI-DAQmx、VI Logger Lite数据
软件和其他测量服务
32路模拟输入(16位);1.25 MS/s单通道采样率(共计1 MS/s) 4路模拟输出(16位,2.8 MS/s);48条数字I/O(32条时钟线);2个32位计数器
采集管线上的压力,要用压力传感器(由智能型和一般的),根据你说的情况,你的采集信号需要远传,所以压力传感器采集上来的信号送给变送器(或者数据采集卡),这个变送器(或数据采集卡)就是将你传感器传过来的信号进行处理的,如果有多个信号要采集,就用多路输入的卡或变送器。 至于采集多少个处理一次,对于石油管道上的压力波动,在稳态下应该很小,所以管道上的压力可看作是个常数值,就算有波动,频率也不会太高,这样采样频率村也不用太高,对于温度、压力等缓变信号,在满足奈奎斯特采样定理的基础上,1秒钟采样10次就可以了。
对于数据要滤波处理,我想你说的应该是对经过采样之后的数据进行滤波,采样之后就变成数字量了,这时候要采用数字滤波的方式,对于压力这样的缓变信号,我会采用中位值滤波,也就是采集奇数个值,让它们按大小排列,取最中间那个值,作为本次采样滤波的结果,如果信号变化不大,采集5个信号就可以了,5个信号采集完就处理一次。
当然这个滤波的算法要写入采集卡的CPU中,这样的话,采集卡就应该有可编程功能。 如果可以的话,你可以就用最普通的采集卡,用他将信号变送出来输出
信号,自己用做个单片机做个
数据处理电路,将滤波程序写入单片机,呵呵。我原来这么做过,效果还可以。
在数据采集和处理过程中,有些模拟信号的幅值和频率变化的速度是非常快的,如何将这些高速变化的模拟信号采集到计算机里进行处理便是一个需要解决的实际问题。由于数字数据传输速率等系统瓶颈的影响,使用常规的技术方法往往不能理想地解决上述实际问题。以PCI总线为代表的高性能局部总线的推出,为计算机的模拟输入通道采样频率的大幅度提高提供了坚实的技术基础。
PCI-1711数据采集卡
PCI-1711是12位的低损耗多功能采集卡卡,具有独特的电路设计和完善的数据采集与控制功能,支持即插即用,具有FIFO的高速缓存,可灵活设定输入类型和范围,具有16通道单端模/数输入、16通道数字I/O和2通道数模输出,采集速率可达100kHz,可编程的计数/计时器可作为A/D转换的速度触发,同时具有通道自动搜索功能。内部结构主要有单端模拟输入通道、模拟输出通道和触发源连接三部分。
库
及其应用
厂家为用户提供了PCI-1711采集卡的库函数和不同语言的例程,使用户具有良好的Windows开发环境。厂家主要为可编程的DAS卡提供DDL、ActiveDAQ和GeniDAQ等驱动文件,同时还提供了在Visual Basic、Visual C++、C++ Builder和Delphi等开发环境下的例程,这些都方便了用户根据自己的实际情况完成数据采集的编程工作。在Visual C++开发环境下,其原文件要包含库函数“driver.h”。
卡的软件编程需要以下几个
。 结合Visual C++ 软件开发环境,PCI-1711采集
(1)采集卡的注册。可以放在.cpp文件的开始位置,或者直接包含注册的库函数。
(2)采集卡的配置。在配置文件里,可以设置通道号和通道增益模式。
(3)采集卡的数据采集。这里要根据设置的通道号和采集模式来采集数据,同时选择触发模式和电压补偿。触发模式中,0为内触发模式,1为外触发模式。
(4)数据处理。用户可根据自己的需要将采集来的电压值进行处理,同时可在Visual C++的环境下,将采集处理后的数据通过友好的人机界面显示出来。
(5)释放采集卡。在Visual C++开发环境下,可用库函数提供的DRV_DeviceClose()函数将采集卡关闭。
应用中的注意事项
PCI-1711采集卡的信号线要尽可能远离电源线、发电机和具有电磁干扰的场所,也要远离视频监视系统,因为它会对数据采集系统产生很大的影响。在现场试验中,如果信号线和电源线必须并行(比如在同一个电缆沟里),则两者之间必须保持适当的安全距离,同时最好用屏蔽电缆,以确保信号安全准确地传输。
采集卡的每个通道的模拟量采集都有一个输入电压范围,超过了这一范围会造成采集卡A/D转换部分的烧毁,所以在采集模拟信号时,要保证被采集的信号在设定的量程范围内。
应用实例
下面是在Visual C++的环境下实现PCI-1711数据采集的一段程序。采样频率可以通过SetTimer()函数设定,采用内部触发方式。采集卡使用的五个步骤中,第一步在OnCtrStart()函数中实现,第五步在OnCtrStop(),第二步和第三步在Adinput()函数中实现,第四步为数据处理,根据用户不同的需要进行相应的处理,这里从略。
void CStable2View::OnCtrStart()
{
// TODO: 添加命令句柄代码
// Step 1:注册设备
if(ErrCde =DRV_DeviceOpen(DeviceList[gwDevice].dwDeviceNum,
(LONG far *)&DriverHandle)!=0)
return ;
else
timeId=SetTimer(nIDE, 100, NULL);
}
ADinput(unsigned CHAR chan) /* chan是通道号*/ {
float fVoltage;
//Step 2:配置设备
ptAIConfig.DasChan = chan; ptAIConfig.DasGain = 1; if(ErrCde = DRV_AIConfig(DriverHandle,(LPT_AIConfig)&ptAIConfig)!=0)
return 0;
// Step 3:采集数据
ptAIVoltageIn.chan = chan; // 输入通道
ptAIVoltageIn.gain = 1; // 增益代码,可参考
的电压范围 ptAIVoltageIn.TrigMode = 0; // 0: 内触发器,1: 外触发器 ptAIVoltageIn.voltage = &fVoltage; // 返回的电压 if(ErrCde = DRV_AIVoltageIn(DriverHandle, &ptAIVoltageIn)!=0)
return 0;
return (fVoltage);
}
//step 4:处理数据(发送)
void CStable2View::OnCtrStop() {
// TODO:添加命令句柄代码
timeId=0;
KillTimer(timeId);
// Step 5:释放设备
DRV_DeviceClose(&DriverHandle);
}
结语
PCI-1711是一种非常经济实用的数据采集卡,可以应用在很多领域。在现场试验中,用PCI-1711采集卡采集重力加速度计和陀螺输出的电压信号,经过采集卡的A/D采集,并对数据进行处理,将所得数据通过一个良好的人机界面显示出来。
参考文献
1 刘英,梁捷红.在PCI总线上实现的A/D数据采集.测控技术.1998.2.
2 江秀汉,周建辉,汤楠.计算机控制原理及其应用.西安电子 科技大学出版社.1995.8
3 张旭东,付强,何宋华等.基于PCI接口的多通道高速数据采集 系统.数据采集与处理.2000.2
4 Advantech Co.,Ltd 《PCI-1711/1731 100KS/s,12-bit,16ch S.E.Inputs Low- Cos
t Multifunction Card,User's Manual》