本文将粗浅讲解一下DAQmx函数的用法,如需详细了解使用方法,请查阅NI的DAQmx帮助文档,DAQmx 函数的位置如下:
首先NI-DAQmx是NI针对NI的DAQ硬件设计的一套驱动,同时会提供一套API供用户使用,适配AI、AO、DIO、COUNTER等不同类型的数据采集方式。用户只需要了解每个函数的功能依据范例便可设计出一个数据采集应用程序。同时NI-DAQmx支持多线程测量,可以进行多个数据采集任务,简化了编程。
DAQ助手可通过图形化界面让用户交互式地创建、编辑、运行NI-DAQmx虚拟通道和任务。同时还可生成代码,用于配置和/或执行指定的采集或生成。DAQ助手适用于刚刚入门数据采集的新手,但是如果后期需要设计一个高性能的数据采集系统,则DAQ助手可能会不满足要求。
“NI-DAQmx创建虚拟通道”函数可创建一个虚拟通道并将其添加至任务, 也可用于创建多个虚拟通道并将其全部添加至任务。 如未指定任务,该函数将自动创建一个任务。 该VI是一个多态VI,可以实现不同的通道IO类型(模拟输入、模拟输出、数字输入、数字输出、计数器输入、计数器输出)或者不同物理量传感器的测量(温度、应变、声压、力等)
主要对需要硬件定时的数据采集任务进行时钟配置(板载时钟源、外部时钟源),指定采样模式为连续采集还是有限点采集,并且依据采样率和采样点数创建缓冲区。同样该VI也是一个多态VI,可以选择定时的模式
握手:
在设备和外围设备之间使用数字握手,确定采集或生成数字采样的数量;
在DAQ设备将数据传输至外围设备时进行配置,使用导入采样时钟控制Burst握手定时;
在DAQ设备将数据传输至外围设备时进行配置,使用DAQ设备的板载采样时钟控制Burst握手定时,并导出外围设备使用的时钟。
隐式:
设置不定时采集或生成采样的数量。一般情况下,如任务不需要采样定时,可使用该实例(例如,使用计数器缓冲频率测量、周期测量或脉冲序列生成的任务)。对于有限计数器输出任务,采样每通道是要生成的脉冲数量。
使用波形:
通过波形输入的dt分量确定采样时钟的速率。dt是采样间的时间间隔,单位为秒。如采样模式为有限采样,NI-DAQmx将在波形中生成相应数量的采样。实际上,VI并不生成任何采样。必须把同一个波形连接至DAQmx VI,生成采样。
检测更改:
配置任务在指定线或端口的上升/下降沿采样。如需检测线或端口的上升和下降沿,可将线或端口的名称连接至上升沿物理通道和下降沿物理通道。
流水线采样时钟:只有6536、6537支持该定时类型。
配置任务的触发方式,通常用法是控制数据采集任务的开始、目标原始数据的位置以及同步。
使任务进入运行状态,开始测量或者生成,如果不使用此函数,则测量任务将由隐士转换为运行状态并自动启动。虽然不一定需要,但包含硬件定时的采集或生成的任务最好使用“NI-DAQmx开始任务”函数来显式启动。
而且,如果需要多次执行“NI-DAQmx读取”函数或“NI-DAQmx写入”函数(比如在一个循环中),则应使用“NI-DAQmx开始任务”函数。 否则任务会由于不断重复开始和停止而影响执行性能。
在循环之前显式启动任务并在循环执行之后停止任务可显着提高性能。这是由于 DAQmx 任务的任务状态造成的。在循环之前启动任务可确保任务处于运行状态,如果在循环之前使用,这可以帮助减少执行时间。
停止当前的数据采集任务而不释放资源,可以再次启动数据采集任务而不用重新创建任务。在循环后停止任务将使任务在循环内保持运行状态,并且在停止后不会返回到先前的任务状态。
用于清除指定的任务,如果任务正在运行,则函数将先停止任务,然后释放任务所有的资源。 一旦任务被清除后,除非再次创建,否者该任务无法再使用。 因此,如果需要再次使用任务,则应使用“NI-DAQmx停止任务”函数来停止任务,而不是将其清除。对于连续操作,应使用“NI-DAQmx清除任务”函数来停止实际的采集或生成。
等待数据采集任务完成后结束任务,该函数可用于确保停止任务前已完成指定的采集或生成,一般用于有限点采集。
从指定的数据采集任务中读取样本,该函数是一个多态VI,可用于采集不同类型模拟、数字、计数器及原始数据。指定的采样数量从DAQ板卡上的FIFO传输到RAM中的PC缓存后,“NI-DAQmx读取”函数再将样本从PC缓存转移到应用程序开发环境(ADE)内存中。
同时函数包括一个用于指定函数执行时每通道采样数的输入,每次执行VI时便读取一次数据。
用于将样本写入指定的生成任务中。将样本从应用程序开发环境(ADE)写入到PC缓存中。 然后这些样本从PC缓存传输到DAQ板卡FIFO以进行生成。
每个“NI-DAQmx写入”函数的实例包含一个自动开始输入,用于在任务没有显式启动时判定该函数是否隐式启动任务。显式启动硬件定时的生成任务时应使用“NI-DAQmx开始任务”函数。 如果需要多次执行“NI-DAQmx写入”函数,则还应使用该函数来使性能最优化。
DAQmx系统属性节点可以返回当前计算机上的可用设备、任务或通道。下图显示了系统属性节点返回当前系统上的设备名称。
您可以使用DAQmx 设备属性节点来查询常规设备设置,例如总线类型(PCI、PXI)或设备序列号。您还可以查询更具体的设置,以查找最大模拟输入采样率,甚至哪些引脚用于访问板载计数器。下图显示了使用设备属性节点的示例。
还有一个属性节点对应于每个主要 DAQmx 功能 - 创建通道、定时、触发、读取和写入。这些属性节点可用于访问高级功能。
DAQmx 通道属性节点可用于配置或读取 DAQmx 通道的更高级功能。该属性节点需要来自DAQmx Create Channel VI的任务引用。该引用告诉驱动程序属性节点正在引用指定的通道。下图显示了如何使用通道属性节点来读取和写入通道的属性。
DAQmx 定时属性节点使用户能够访问DAQmx 定时 VI中不可用的数十个属性。
从此属性节点中,您可以更改时钟的活动边沿、配置数字线路上的更改检测或查询采样时钟速率。一般来说,该属性节点为您提供了数十种更高级的计时属性。
DAQmx Trigger VI还有一个与之关联的属性节点,可提供对高级触发功能的访问。不过,您也可以使用DAQmx触发属性节点而不使用触发VI来设置触发事件。下图显示了为计数器输出任务设置暂停触发器的代码片段。所有触发都是通过属性节点配置的。
DAQmx Write和DAQmx Read VI都有属性节点。这些属性节点在查询写入或读取操作的状态时非常有用。它们还可以用于以编程方式更改正在进行的写入或读取任务。
具体来说,您可以使用DAQmx 读取属性节点来指定要从缓冲区读取哪些样本。例如,您可以通过设置RelativeTo 属性选择仅读取最新值。下图显示了如何配置属性节点以读取缓冲区中最近的 100 个样本。
同样,您可以使用DAQmx 写入属性节点写入这些相同的属性,以定义在输出缓冲区上放置新数据的位置。您还可以使用写入属性节点来配置模拟输出再生或查询缓冲区以查看有多少可用空间。下图显示了如何使用该属性节点来持续监视写入操作的缓冲区状态。
LabVIEW 中的 NI-DAQmx 事件提供了一种在数据采集硬件上满足某些条件时从硬件或软件中断生成信号的方法。使用 NI-DAQmx 事件的主要优点是它不是处理器密集型的,并且不会阻止对 DAQ 设备的任何其他驱动程序调用的访问,因为 NI-DAQmx 是多线程的。
NI-DAQmx 事件可用于 PC 缓冲区监控,并可与 DMA 数据传输结合使用。然而,它们不用于通过 PCI 总线传输数据。
NI-DAQmx 事件可以在硬件和软件级别生成。
要在 LabVIEW 中设置这些事件,请使用 DAQmx 导出信号属性节点。它位于 LabVIEW 中的测量 I/O >>DAQmx-数据采集 >> DAQmx 高级任务选项 >> DAQmx 导出信号下。
通过 DAQmx 导出信号属性节点,您可以选择事件多态实例,例如 AI 保持完成事件、更改检测事件、计数器输出事件。
其他位于 LabVIEW 中的测量 I/O >>DAQmx-数据采集 >> DAQmx 高级任务选项子选项板和 LabVIEW 中的测量 I/O >>DAQmx-数据采集 >> DAQmx 设备配置 >> 看门狗子选项板调色板。
软件事件为一组 DAQ 事件提供异步通知机制。与硬件事件不同,软件事件不需要您使用线程等待数据可用。使用基于事件的编程,您可以编写一个在等待数据时继续执行工作的应用程序,而无需开发多线程应用程序。
NI-DAQmx 包含以下软件事件: