摘 要:详细介绍了PXI模块化仪器系统中NI公司E系列PXI卡,在VC++环境下进行数据采集与处理的方法。
关键词:PXI;VC++ 数据采集与处理 PXI模块化仪器系统是建立在PXI总线体系结构上的虚拟仪器系统, PXI(PCI Extensions for Instrumentation)是CompactPCI总线体系在自动测试领域的扩展。它充分利用了现代计算机技术、PC机主流技术的最新进展。PXI模块仪器系统自1997年10问世以来,由于其高性能、低价格,受到各方面从事测量的工程技术人员的关注。PXI这一自动测试领域里的新星,正愈来愈受到人们的青睐。 NI公司的E系列PXI卡,提供了大量的函数供开发者使用,现把在VC++环境下进行数据采集与处理的方法介绍如下:1.进行数据采集的几个重要函数1.1单通道数据采集函数DAQ_Op* 函数原形:DAQ_Op (deviceNumber, chan, gain, buffer, count, sampleRate)* 参数说明: deviceNumber模拟输入通道所在的多功能卡号 chan模拟输入通道号 gain通道的放大倍数 buffer 数据存放的数组 count数据采集的数量 sampleRate数据采集速率* 功能: 对单个通道进行数据采集。比如DAQ_Op (1,0,1,c,32000,4000),表示多功能卡号为1,采样通道为1号卡的0通道,该通道的放大倍数为1,数据存放在数组c中,共采样32000个点,采样速率为每秒4000个点。1.2数据换算函数DAQ_Vscale: 由于样品数据为二进制数,需要换算成十进制数值才能进行数据运算,该函数正好完成了此项功能。* 函数原形:DAQ_VScale (deviceNumber, chan, gain, gainAdjust, offset, count, binArray, voltArray)* 参数说明: deviceNumber模拟输入通道所在的多功能卡号 chan模拟输入通道号 gain通道的放大倍数 gainAdjust调整通道的放大倍数 offset数据处理过程中的误差校准量 count需要处理的数组长度 binArray需处理的数组 voltArray处理结果* 功能: 把采样数据由二进制数据换算成十进制数据。比如DAQ_VScale(1,0,1,1,0,32000,c,a)完成了对1 号卡的0通道采集数据的变换,放大倍数为1,放大倍数调节为1,误差校准量为0,需要处理的数据量为32000,需要变换的数据存放在c数组中,变换结果存放在a数组中。1.3多通道数据采集函数SCAN_Op。 函数原形同单通道采集函数,不再重述,仅举例说明用法。 比如SCAN_Op(1,5,chan,gain,c,70000,10000,0)表示对1号卡的5个通道进行数据采集,5个通道号存放在chan数组中,根据需要定,如可定为{1,3,4,5,8};5个通道的放大倍数存放在数组gain中,采样结果存放在数组c中,采样数为70000,采样速率为每秒10000个点。1.4数据调整函数SCAN_Sequence_Demux: 由于多通道采样是循环采样,为了把每一个通道的数据存放在一起,需要对采样结果进行调整。* 函数原形: SCAN_Sequence_Demux (numChans, chanVector,bufferSize, buffer,samplesPerSequence,scanSequenceVector,samplesPerChannelVector)* 参数说明:numChans通道数chanVector存放通道号的数组bufferSize需调整的数据量buffer 样品存放的数组、调整后存放的数组samplesPerSequence每一个扫描周期内的样品数scanSequenceVector 每一个扫描周期内样品的存放顺序samplesPerChannelVector 每个通道的样品数 如SCAN_Sequence_Demux(5,chan,70000,c,5,chan,ffg)表示对5个通道的采样结果进行调整,通道顺序存放在数组chan中,每一个扫描周期内每个通道的样品只有一个,且存放顺序与通道顺序相同,调整后的结果存放于c数组中,每个通道的数据个数存放于数组ffg中。2.程序的实现: 通过下面的程序可以实现对多个通道的数据采集: short gain[10]={1,1,1,1,1,1,1,1,1,1}; unsigned long ffg[10]; short chan[10]={15,18,19,20,21,22,23,24,25,26}; SCAN_Op(1,10,chan,gain,c,40000,10000,0); SCAN_Sequence_Demux(10,chan,40000,c,10,chan,ffg); DAQ_VScale(1,22,1,1,0,40000,c,a); 上面这段函数实现了对十通道进行数据采集, 数组gain[10]定义了需进行数据采集的通道,该卡有64个单端通道(32个差分通道),需要进行数据的通道可以根据需要任意定义。 数据gain[10]定义每个通道的放大倍数,该卡对每一个通道有多种放大倍数进行选择,对于小信号无需外加放大器,可以直接利用卡上的放大器进行放大,提高测试精度。 函数SCAN_Op实现了对十个通道的数据采集,每个通道的采样频率为每秒1000点,每个通道采集4000个点,采样结果存放在数组c中。这里需要注意的是,该函数中的采样频率是每个通道采样频率的和,因而函数中该值为10000;由于该函数进行的是循环采样,数组c中存放的是二进制数据,数据的存放次序为{15,18,19,20,21,22,23,24,25,26,15,18,19,20,21,22,23,24,25,26……}。 函数SCAN_Sequence_Demux是对采样结果进行顺序调整,调整后的数据依然放在数组c中,数据的存放次序变为{15,15,…,18,18,…,19,19,…,…,26},也就是说前4000个点是通道15的,其次为通道18的,依次类推,最后为通道26的数据。 函数DAQ_Vscale完成对数据的换算,把每个通道的值由二进制换算成十进制,便于进行数据分析,换算后的结果存放在数组a中。 由此可见,使用该卡对数据进行采集和处理相当方便,程序也很简单,我们在多个项目中均采用了该卡,效果很好。1 应用该卡进行数据采集的注意事项 * 该卡的输入范围为±10V,当被采集的信号大于10V时,需要在采样前对信号进行处理,使其在±10V范围内,以保证测试的准确可靠。 * 该卡可以进行单端信号的采集,也可以进行差分信号的采集,每个通道的采集方式需要根据被测信号的的特性,由软件来设定。否则采集结果就不正确。 * 多通道数据采集是循环采集,值为二进制数据,需要进行次序调整和进制转换,而后才能对数据进行分析和处理。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表