本文介绍两种利用PXIe-6738模拟量输出板卡通过LabVIEW编程输出正弦波形的方法。
本方案的前提需求为利用NI的模拟量输出板卡输出四路幅值-10~10V,频率0-10kHz可调正弦波形。
介绍方案之前做以下介绍性描述:
1、采样率:指硬件一秒内可采集或生成的采样点数(例如:PXIe-6738板卡最大采样率为1M/s,即代表该板卡1s内最多可生成1M个采样点);
2、波形采样数:指一个完整波形包含的实际采样点数。
因此可得到结论:实际波形采样数=采样率➗波形频率

根据奈奎斯特定律,采样率不小于信号频率2倍时,采样信号方可无失真重建信号。为充分保持原始信号的形状,工程上采样率通常至少为原信号最高频率的5~10倍。
由于方案需要输出正弦波形,因此根据上文描述,波形采样数应不小于5。

方案1:
固定波形采样数,通过调节板卡采样率实现正弦波形输出
该方案LabVIEW程序框图如下
利用NI模拟量输出板卡&LabVIEW输出正弦波形的方法
PS:由于RT程序中事件结构无法响应前面板动作,因此通过布尔2来控制频率和幅值的值改变事件。
本方案中通过LabVIEW自带的正弦函数发生器(SIne Waveform.vi)来生成一个完整周期的正弦波形,如图中下方while循环所示。其中,设置波形采样数为10(即保证采样率为原信号频率10倍),根据波形频率与波形采样数,确定该波形频率下的采样率为Fs=10*Frequency。
每次更改函数发生器生成的频率均生成一个新的Fs,并将该Fs设置为AO板卡采样时钟的采样率。
由于每次函数发生器只生成一个完整波形的正弦信号,因此需将AO板卡重生成模式设置为“允许重生成”,即AO板卡FIFO输出完毕且无新数据填充时,再次在FIFO中自动生成相同数据。设置“允许重生成”需注意必须保证AO任务开始时FIFO满载,对于本方案即意味着波形采样数=每通道采样数,因此需设置每通道采样数=10。

方案优点:本方案采用允许重生成模式进行波形的复制载入,不需要周期性对DAQmx write.vi进行写操作,解放了程序对资源的占用。
方案缺点:当波形频率变化较快且频率较低时,由于每次FIFO中加载一个完整周期的波形,必须等待FIFO清空时才能输出新生成的波形信号,对于实时性要求较高的应用场合将不满足使用要求。

方案2:
固定板卡采样率,通过调整波形采样数实现正弦波输出
方案程序框图利用NI模拟量输出板卡&LabVIEW输出正弦波形的方法
前面板与示波器显示
利用NI模拟量输出板卡&LabVIEW输出正弦波形的方法利用NI模拟量输出板卡&LabVIEW输出正弦波形的方法
波形生成器程序框图
利用NI模拟量输出板卡&LabVIEW输出正弦波形的方法
设置板卡DAQmx write.vi的写入周期为5ms,AO板卡采样率为100k,则5ms内AO板卡每通道实际输出500个采样点。
本方案中应设置重生成模式为“不允许重生成”,即必须保证任务开始后FIFO始终不为空,因此为避免由于定时精度偏差导致的写入采样数少于需求采样数,需在波形生成器中使产生采样数略大于500,同时设置DAQmx write.vi超时不为0,避免FIFO溢出。
在该方案中,固定了板卡的采样率,随着生成波形频率的增加,波形采样数随之减少,为保证采样率10倍于原始信号,该方案生成波形的频率上限为10kHz。

方案优点:本方案采用实时生成波形载入板卡FIFO的方式进行波形输出,通过调节定时循环周期即可适应不同的波形产生响应时间需求。
方案缺点:需要周期性调用DAQmx write.vi,增加了程序对资源的占用。

相关文章: