【NI-DAQmx入门】DAQmx 函数说明

        本文将粗浅讲解一下DAQmx函数的用法,如需详细了解使用方法,请查阅NI的DAQmx帮助文档,DAQmx 函数的位置如下:    

【NI-DAQmx入门】DAQmx 函数说明_第1张图片

         首先NI-DAQmx是NI针对NI的DAQ硬件设计的一套驱动,同时会提供一套API供用户使用,适配AI、AO、DIO、COUNTER等不同类型的数据采集方式。用户只需要了解每个函数的功能依据范例便可设计出一个数据采集应用程序。同时NI-DAQmx支持多线程测量,可以进行多个数据采集任务,简化了编程。

DAQ助手

        DAQ助手可通过图形化界面让用户交互式地创建、编辑、运行NI-DAQmx虚拟通道和任务。同时还可生成代码,用于配置和/或执行指定的采集或生成。DAQ助手适用于刚刚入门数据采集的新手,但是如果后期需要设计一个高性能的数据采集系统,则DAQ助手可能会不满足要求。

【NI-DAQmx入门】DAQmx 函数说明_第2张图片

DAQmx创建虚拟通道

        “NI-DAQmx创建虚拟通道”函数可创建一个虚拟通道并将其添加至任务, 也可用于创建多个虚拟通道并将其全部添加至任务。 如未指定任务,该函数将自动创建一个任务。 该VI是一个多态VI,可以实现不同的通道IO类型(模拟输入、模拟输出、数字输入、数字输出、计数器输入、计数器输出)或者不同物理量传感器的测量(温度、应变、声压、力等)

【NI-DAQmx入门】DAQmx 函数说明_第3张图片【NI-DAQmx入门】DAQmx 函数说明_第4张图片

DAQmx定时

        主要对需要硬件定时的数据采集任务进行时钟配置(板载时钟源、外部时钟源),指定采样模式为连续采集还是有限点采集,并且依据采样率和采样点数创建缓冲区。同样该VI也是一个多态VI,可以选择定时的模式

握手:

        在设备和外围设备之间使用数字握手,确定采集或生成数字采样的数量;

        在DAQ设备将数据传输至外围设备时进行配置,使用导入采样时钟控制Burst握手定时;

        在DAQ设备将数据传输至外围设备时进行配置,使用DAQ设备的板载采样时钟控制Burst握手定时,并导出外围设备使用的时钟。

隐式:

        设置不定时采集或生成采样的数量。一般情况下,如任务不需要采样定时,可使用该实例(例如,使用计数器缓冲频率测量、周期测量或脉冲序列生成的任务)。对于有限计数器输出任务,采样每通道是要生成的脉冲数量。

使用波形:

        通过波形输入的dt分量确定采样时钟的速率。dt是采样间的时间间隔,单位为秒。如采样模式有限采样,NI-DAQmx将在波形中生成相应数量的采样。实际上,VI并不生成任何采样。必须把同一个波形连接至DAQmx VI,生成采样。

检测更改:

        配置任务在指定线或端口的上升/下降沿采样。如需检测线或端口的上升和下降沿,可将线或端口的名称连接至上升沿物理通道下降沿物理通道

流水线采样时钟:只有6536、6537支持该定时类型。

【NI-DAQmx入门】DAQmx 函数说明_第5张图片【NI-DAQmx入门】DAQmx 函数说明_第6张图片

DAQmx触发

       配置任务的触发方式,通常用法是控制数据采集任务的开始、目标原始数据的位置以及同步。

  • 如果没有配置触发任务则在开始任务以后就立即开始采样或者生成采样。
  • 开始触发多用于启动采集或者生成,常用方式有数字边沿、数字模式、模拟边沿、模拟多边沿、模拟窗、时间。
  • 参考触发用于在一组采集样本中创建预触发数据结束后和后触发数据开始前的位置,常用方式有数字边沿、数字模式、模拟边沿、模拟多边沿、模拟窗。
  • DAQmx触发可自动路由触发信号到单个设备或者多个设备不同功能区域的同步(模拟输出、计数器等等)

【NI-DAQmx入门】DAQmx 函数说明_第7张图片【NI-DAQmx入门】DAQmx 函数说明_第8张图片

 DAQmx开始任务

        使任务进入运行状态,开始测量或者生成,如果不使用此函数,则测量任务将由隐士转换为运行状态并自动启动。虽然不一定需要,但包含硬件定时的采集或生成的任务最好使用“NI-DAQmx开始任务”函数来显式启动。

        而且,如果需要多次执行“NI-DAQmx读取”函数或“NI-DAQmx写入”函数(比如在一个循环中),则应使用“NI-DAQmx开始任务”函数。 否则任务会由于不断重复开始和停止而影响执行性能。 

        在循环之前显式启动任务并在循环执行之后停止任务可显着提高性能。这是由于 DAQmx 任务的任务状态造成的。在循环之前启动任务可确保任务处于运行状态,如果在循环之前使用,这可以帮助减少执行时间。

【NI-DAQmx入门】DAQmx 函数说明_第9张图片

DAQmx停止任务

        停止当前的数据采集任务而不释放资源,可以再次启动数据采集任务而不用重新创建任务。在循环后停止任务将使任务在循环内保持运行状态,并且在停止后不会返回到先前的任务状态。

【NI-DAQmx入门】DAQmx 函数说明_第10张图片

DAQmx清除任务

        用于清除指定的任务,如果任务正在运行,则函数将先停止任务,然后释放任务所有的资源。 一旦任务被清除后,除非再次创建,否者该任务无法再使用。 因此,如果需要再次使用任务,则应使用“NI-DAQmx停止任务”函数来停止任务,而不是将其清除。对于连续操作,应使用“NI-DAQmx清除任务”函数来停止实际的采集或生成。

【NI-DAQmx入门】DAQmx 函数说明_第11张图片

DAQmx结束前等待

        等待数据采集任务完成后结束任务,该函数可用于确保停止任务前已完成指定的采集或生成,一般用于有限点采集。

【NI-DAQmx入门】DAQmx 函数说明_第12张图片

DAQmx读取

        从指定的数据采集任务中读取样本,该函数是一个多态VI,可用于采集不同类型模拟、数字、计数器及原始数据。指定的采样数量从DAQ板卡上的FIFO传输到RAM中的PC缓存后,“NI-DAQmx读取”函数再将样本从PC缓存转移到应用程序开发环境(ADE)内存中。

        同时函数包括一个用于指定函数执行时每通道采样数的输入,每次执行VI时便读取一次数据。

【NI-DAQmx入门】DAQmx 函数说明_第13张图片

DAQmx写入

        用于将样本写入指定的生成任务中。将样本从应用程序开发环境(ADE)写入到PC缓存中。 然后这些样本从PC缓存传输到DAQ板卡FIFO以进行生成。

        每个“NI-DAQmx写入”函数的实例包含一个自动开始输入,用于在任务没有显式启动时判定该函数是否隐式启动任务。显式启动硬件定时的生成任务时应使用“NI-DAQmx开始任务”函数。 如果需要多次执行“NI-DAQmx写入”函数,则还应使用该函数来使性能最优化。

【NI-DAQmx入门】DAQmx 函数说明_第14张图片

DAQmx属性

        

NI-DAQmx系统属性节点

DAQmx系统属性节点可以返回当前计算机上的可用设备、任务或通道。下图显示了系统属性节点返回当前系统上的设备名称。

NI-DAQmx 设备属性节点

您可以使用DAQmx 设备属性节点来查询常规设备设置,例如总线类型(PCI、PXI)或设备序列号。您还可以查询更具体的设置,以查找最大模拟输入采样率,甚至哪些引脚用于访问板载计数器。下图显示了使用设备属性节点的示例。
 
【NI-DAQmx入门】DAQmx 函数说明_第15张图片

还有一个属性节点对应于每个主要 DAQmx 功能 - 创建通道、定时、触发、读取和写入。这些属性节点可用于访问高级功能。
 

DAQmx 通道属性节点

DAQmx 通道属性节点可用于配置或读取 DAQmx 通道的更高级功能。该属性节点需要来自DAQmx Create Channel VI的任务引用。该引用告诉驱动程序属性节点正在引用指定的通道。下图显示了如何使用通道属性节点来读取和写入通道的属性。
 
【NI-DAQmx入门】DAQmx 函数说明_第16张图片

DAQmx 定时属性节点

DAQmx 定时属性节点使用户能够访问DAQmx 定时 VI中不可用的数十个属性。

【NI-DAQmx入门】DAQmx 函数说明_第17张图片

从此属性节点中,您可以更改时钟的活动边沿、配置数字线路上的更改检测或查询采样时钟速率。一般来说,该属性节点为您提供了数十种更高级的计时属性。
 

DAQmx 触发器属性节点

DAQmx Trigger VI还有一个与之关联的属性节点,可提供对高级触发功能的访问。不过,您也可以使用DAQmx触发属性节点而不使用触发VI来设置触发事件。下图显示了为计数器输出任务设置暂停触发器的代码片段。所有触发都是通过属性节点配置的。
 
【NI-DAQmx入门】DAQmx 函数说明_第18张图片

DAQmx 读写属性节点

DAQmx WriteDAQmx Read VI都有属性节点。这些属性节点在查询写入或读取操作的状态时非常有用。它们还可以用于以编程方式更改正在进行的写入或读取任务。
 

具体来说,您可以使用DAQmx 读取属性节点来指定要从缓冲区读取哪些样本。例如,您可以通过设置RelativeTo 属性选择仅读取最新值。下图显示了如何配置属性节点以读取缓冲区中最近的 100 个样本。
 

同样,您可以使用DAQmx 写入属性节点写入这些相同的属性,以定义在输出缓冲区上放置新数据的位置。您还可以使用写入属性节点来配置模拟输出再生或查询缓冲区以查看有多少可用空间。下图显示了如何使用该属性节点来持续监视写入操作的缓冲区状态。

【NI-DAQmx入门】DAQmx 函数说明_第19张图片
DAQmx事件

        LabVIEW 中的 NI-DAQmx 事件提供了一种在数据采集硬件上满足某些条件时从硬件或软件中断生成信号的方法。使用 NI-DAQmx 事件的主要优点是它不是处理器密集型的,并且不会阻止对 DAQ 设备的任何其他驱动程序调用的访问,因为 NI-DAQmx 是多线程的。

        NI-DAQmx 事件可用于 PC 缓冲区监控,并可与 DMA 数据传输结合使用。然而,它们不用于通过 PCI 总线传输数据。

        NI-DAQmx 事件可以在硬件和软件级别生成。

硬件事件

  • 高级完成事件——当开关完成执行其扫描列表中的指令时发出的信号。
  • AI 保持完成事件— 当正在测量的物理通道上的模拟信号已被锁存或保持时,多路复用模拟输入电路发出的信号。AI 保持完成事件旨在向外部多路复用器发出信号以切换到下一个通道。该信号以前称为 SCANCLK,它是可以发出该信号的外部端子的旧名称。
  • 更改检测事件— DIO 设备在检测到数据线上的更改后生成的信号。
  • 计数器输出事件——计数器达到最终计数时产生的信号。
  • 握手事件— 由 DAQ 设备生成的用于握手的信号。对于某些设备,此事件的断言和取消断言时间可在握手周期内进行配置。对于这些设备,默认配置是模仿 8255 协议,这意味着对于输入任务,此事件在设备 FIFO 中有可用空间后置位;对于输出任务,它在数据线上驱动有效数据后断言;在输入和输出任务中,握手触发器置位后事件将取消置位。
  • 准备传输事件— 发送到外围设备的信号,表明 DAQ 设备已准备好传输。对于突发握手输出任务,这意味着数据位于数据线上。对于输入任务,这意味着设备 FIFO 中有可用空间。该事件由支持突发握手时序的设备使用。
  • 样本完成事件— 当设备从任务中的每个通道获取样本时产生的信号。
  • 看门狗定时器到期事件— 看门狗定时器到期时产生的信号。

要在 LabVIEW 中设置这些事件,请使用 DAQmx 导出信号属性节点。它位于 LabVIEW 中的测量 I/O >>DAQmx-数据采集 >> DAQmx 高级任务选项 >> DAQmx 导出信号下。

【NI-DAQmx入门】DAQmx 函数说明_第20张图片

        通过 DAQmx 导出信号属性节点,您可以选择事件多态实例,例如 AI 保持完成事件、更改检测事件、计数器输出事件。

        其他位于 LabVIEW 中的测量 I/O >>DAQmx-数据采集 >> DAQmx 高级任务选项子选项板和 LabVIEW 中的测量 I/O >>DAQmx-数据采集 >> DAQmx 设备配置 >> 看门狗子选项板调色板。

软件事件 

        软件事件为一组 DAQ 事件提供异步通知机制。与硬件事件不同,软件事件不需要您使用线程等待数据可用。使用基于事件的编程,您可以编写一个在等待数据时继续执行工作的应用程序,而无需开发多线程应用程序。

NI-DAQmx 包含以下软件事件:

  • 每采集 N 个样本到缓冲区事件— 当用户定义数量的样本从设备写入 PC 缓冲区时发生。此事件仅适用于支持缓冲任务的设备。
  • 从缓冲区传输每 N 个样本事件— 当用户定义的样本数从 PC 缓冲区写入设备时发生。此事件仅适用于支持缓冲任务的设备。
  • 完成事件— 当任务完成执行或错误导致任务完成时发生。不会导致任务完成的可恢复错误不会导致触发此事件。同样,调用 Stop 函数/VI 来完成执行也不会导致该事件触发。使用位于 LabVIEW 中测量 I/O >>DAQmx-数据采集 >> DAQmx 高级任务选项下的 DAQmx 任务完成属性节点。
  • 信号事件— 当指定的硬件信号发生时发生。支持的信号包括计数器输出事件、变化检测事件、采样完成事件和采样时钟。

你可能感兴趣的:(数据采集【Data,Acquisition】,labview)