在LabVIEW中使用NI-DAQmx设置停止触发

更新 Nov 13, 2023

适用于

软件

  • LabVIEW

驱动

  • NI-DAQmx

问题详述

我有一个NI数据采集(Data Acquisition, DAQ)设备,现在想在LabVIEW中使用NI-DAQmx向该设备发送一个信号以告知它何时开始和停止数据采集作业。怎样才能实现这一功能?

解决方案

DAQmx无法直接生成停止触发。但您可以通过使用参考触发并修改读取位置的方式在LabVIEW中创建等效的停止触发。

首先,您需要创建一个有限点数据采集任务,该任务需要在参考触发之前和之后各采集N个样本点。为了给参考触发的触发前采样提供数据,这个DAQmx任务将在等待参考触发时不断地进行数据采集。即便这些通过连续采集得到的数据不是当前任务明确指定所需要的数据,您仍可以通过调用DAQmx读取访问并存储这些数据。

请参阅下述代码段,该代码段展示了一个将参考触发设置为停止触发的范例:

图1:在LabVIEW中使用开始触发和停止触发的DAQmx应用程序

上述范例使用DAQmx创建了一个模拟输入数据采集任务,该任务使用了两个触发:数字边沿开始触发和数字边沿参考触发。

开始触发指定当前任务何时开始采集后续参考触发所需的数据样本,而参考触发则指定何时发送任务最初所要求的有限点样本,这些样本由参考触发前的采样和参考触发后的采样组成。

注意:如有需要,您可以将开始触发和参考触发的信号源设置为来自相同的PFI接线端口。DAQmx驱动在开始触发的信号到来之前不会等待参考触发的信号,因此将这两种触发的信号源设置为来自相同的端口不会导致端口使用冲突的发生。

配置参考触发

相较其他种类的触发,参考触发需要一个额外的输入参数,即每通道触发前采样 :
 
图2:LabVIEW中的触发前采样参数

触发前采样数定义了在有限点数据采集期间采集到的总样本中,有多少样本是在参考触发发生之前采集到的。除去触发前样本的其余样本被称为触发后样本 。

计算触发后采样数的算式如下:

触发后采样数= 每通道采样 (DAQmx定时的输入参数) - 每通道触发前采样 (DAQmx触发的输入参数)

举例来说,为了将任务配置为获取最少数量的触发前样本(触发前采样数的最小设置值为2)且获取40个触发后样本,您需要将42作为DAQmx定时中每通道采样数的输入,并将2作为DAQmx参考触发中每通道触发前采样数的输入。这样的设置下,该有限点数据采集任务的最终输出具有如下的形式:
 
 
图3:使用参考触发后,DAQmx读取的最终输出形式

注意:若DAQmx任务使用了参考触发,那么对任务的定时进行设定时,必须为参考触发设置至少为2的触发前采样和触发后采样。因此,当您使用设置参考触发的方法实现停止触发的功能时,您始终会在停止触发发生后收到至少2个采样点。这些多余的采样点可以在后续的处理中丢弃。

相关信息

使用参考触发进行连续采集
默认情况下,DAQmx会为根据需要读取的样本数量创建一个足够大的缓冲区(例如上述范例中的缓冲区大小将被设置为42)。

为了使DAQmx应用程序能够在等待参考触发时从缓冲区连续提取采集样本,我们还需要进行另外两项修改:
  1. 在配置任务的定时属性后,使用DAQmx配置输入缓冲区对DAQmx应用程序的缓冲区大小进行手动设置。
  2. 使用DAQmx读取属性节点,设置DAQmx读取»Relative To以修改在缓冲区中的读取位置。默认情况下,使用参考触发时,此属性设置为第一个触发前采样 。通过将其设置为当前读取位置 ,DAQmx读取将提取开始触发发生后第一个被放入缓冲区的样本。如果不更改该属性,DAQmx读取将会处于等待状态,直到参考触发发生后才能在缓冲区中进行样本的检索。