刻度器

学会NIDAQmx中的十个函数解决80

发布时间:2023/3/31 10:04:16   

摘要

自从NI-DAQmx发布以来,NI数据采集(DAQ)用户就充分利用了它的许多特性,这些特性是为节省开发时间和提高数据采集应用程序的性能而设计的。

一个能节省相当大一部分开发时间的特性是NI-DAQmx应用程序编程接口(API),它在各种设备功能和设备系列中都是相同的。这就意味着一个多功能设备的所有功能可由同样的函数集编程得到(模拟输入、模拟输出、数字I/O和计数器)。而且,一个数字I/O设备和一个模拟输出设备都可使用相同的函数集编程得到。在LabVIEW中,由于多态机制,因而这是可以实现的。一个多态的VI接受各种数据类型以用于一个或多个输入和/或输出终端。NI-DAQmxAPI在它所支持的所有编程环境中也是保持一致的。您仅仅需要学会如何使用一个单一的函数集就可以在多种编程环境中对大部分NI数据硬件进行编程。

NI-DAQmx能够提高您的开发经验的另一个特性是DAQASSISTANT。这个工具通过一个图形化接口来配置简单和复杂的数据采集任务,从而帮助您无需编程即可创建您的应用程序。而且,同步,一个通常很难实现的过程(因为触发和/或时钟信号必须手动传递),利用NI-DAQmx则可以毫不费力地实现,NI-DAQmx会自动地完成单一设备上不同功能区域间和多个设备之间的信号传递。

您使用NI-DAQmx所建立的数据采集应用程序是受益于一个为实现最大化性能而设计的体系结构。这是一个高效的状态模型从而免去了不必要的重复配置。由于去除了开头,配置和采集就进行了优化。此外,您可以达到超过50Ks/S的单点I/O速率。由于采用内存映射寄存器,这种性能水平是可以实现的。

NI-DAQmx体系结构的另一个重要的特性是测量多线程(MeasurementMultithreading.)。自从NI-DAQmx实现多线程以来,多个数据采集操作可以同时进行,极大地提高了包含多个操作的应用程序的性能。它也极大地简化了对这些应用的编程。

关于NI-DAQmx益处的详细信息可以在文档——NI-DAQmx的优势——中获得。为了开始利用这些优势,您只需要学习几个函数。事实上,十个NI-DAQmx函数提供的功能即可解决80%的数据采集应用。这些函数将会详细地描述以帮助您理解它们的功能和使用它们的应用类型。

注意:本文档中所有引用的例程都可在以下位置获得:

目录:

DAQAssistant(数据采集助手)

NI-DAQmx创建虚拟通道函数

NI-DAQmx触发函数

NI-DAQmx定时函数

NI-DAQmx开始任务函数

NI-DAQmx读取函数

NI-DAQmx写入函数

NI-DAQmx等待直至完成函数

NI-DAQmx清除任务函数

NI-DAQmx属性节点

DAQAssistant(数据采集助手)

工具创建/编辑DAQmx任务[CVI]

项目添加新项目DAQmx任务[.NET]

DAQAssistant是一个图形化的界面,用于交互式地创建、编辑和运行NI-DAQmx虚拟通道和任务。一个NI-DAQmx虚拟通道包括一个DAQ设备上的物理通道和对这个物理通道的配置信息,例如输入范围和自定义缩放比例。一个NI-DAQmx任务是虚拟通道、定时和触发信息、以及其他与采集或生成相关属性的组合。在下图中,DAQASSISTANT配置成完成一个应变测量。

下面的文档叙述了DAQASSISTANT在LabVIEW、LabWindows/CVI和.NET中的使用。

NI-DAQmxExpressVI指南

在LabWindows/CVI中使用DAQASSISTANT

在MeasurementStudio中使用DAQASSISTANT

DAQASSISTANT也可以生成代码来配置和/或完成特定的采集或生成(Generation)。这个LabVIEW中的过程在DAQASSISTANT帮助中,以及文档——使用DAQASSISTANT来自动生成LabVIEW代码——中进行了叙述。下面显示了一个DAQASSISTANT的实例以及相应的所自动生成的配置和LabVIEW代码例程。

与DAQASSISTANT所能提供的相比,某些数据采集应用程序需要更大的灵活性和/或性能。这些应用程序需要下面所叙述的简单、但功能强大的NI-DAQmx函数。

NI-DAQmx创建虚拟通道函数

库NI-DAQmx通道创建/配置[CVI]

任务.通道.创建通道属性[.NET]

NI-DAQmx创建虚拟通道函数创建了一个虚拟通道并且将它添加成一个任务。它也可以用来创建多个虚拟通道并将它们都添加至一个任务。如果没有指定一个任务,那么这个函数将创建一个任务。NI-DAQmx创建虚拟通道函数有许多的实例。这些实例对应于特定的虚拟通道所实现的测量或生成类型。下面是四个不同的NI-DAQmx创建虚拟通道VI实例的例程。

NI-DAQmx创建虚拟通道函数的输入随每个函数实例的不同而不同,但是,某些输入对大部分函数的实例,即使不是全部,也是相同的。例如一个输入需要用来指定虚拟通道将使用的物理通道(模拟输入和模拟输出)、线数(数字)或计数器。此外,模拟输入、模拟输出和计数器操作使用最小值和最大值输入来配置和优化基于信号最小和最大预估值的测量和生成。而且,一个自定义的刻度可以用于许多虚拟通道类型。在下面的LabVIEW程序框图中,NI-DAQmx创建虚拟通道VI用来创建一个热电偶虚拟通道。

NI-DAQmx触发函数

库NI-DAQmx触发函数[CVI]

任务.触发属性[.NET]

NI-DAQmx触发函数配置一个触发器来完成一个特定的动作。最为常用的动作是一个启动触发器(StartTrigger)和一个参考触发器(ReferenceTrigger)。启动触发器初始化一个采集或生成。参考触发器确定所采集的采样集中的位置,在那里前触发器数据(pretrigger)结束,而后触发器(posttrigger)数据开始。这些触发器都可以配置成发生在数字边沿、模拟边沿或者当模拟信号进入或离开窗口。在下面的LabVIEW程序框图中,利用NI-DAQmx触发VI,启动触发器和参考触发器都配置成发生在一个模拟输入操作的数字边沿。

许多数据采集应用程序需要一个单一设备不同功能区域的同步(例如,模拟输出和计数器)。其他的则需要多个设备进行同步。为了达到这种同步性,触发信号必须在一个单一设备的不同功能区域和多个设备之间传递。NI-DAQmx自动地完成了这种传递。当使用NI-DAQmx触发函数时,所有有效的触发信号都可以作为函数的源输入。例如,在下面的NI-DAQmx触发VI中,用于设备2的启动触发器信号可以用作设备1的启动触发器的源,而无需进行任何显式的传递。

NI-DAQm定时函数

库NI-DAQmx定时函数[CVI]

任务.定时属性[.NET]

NI-DAQmx定时函数配置定时以用于硬件定时的数据采集操作。这包括指定操作是否连续或有限、为有限的操作选择用于采集或生成的采样数量,以及在需要时创建一个缓冲区。

对于需要采样定时的操作(模拟输入、模拟输出和计数器),NI-DAQmx定时函数中的采样时钟实例设置了采样时钟的源(可以是一个内部或外部的源)和它的速率。采样时钟控制了采集或生成采样的速率。每一个时钟脉冲为每一个包含在任务中的虚拟通道初始化一个采样的采集或生成。下图中,LabVIEW程序框图演示了使用NI-DAQmx定时VI中的采样时钟实例来配置一个连续的模拟输出生成(利用一个内部的采样时钟)。

为了在数据采集应用程序中实现同步,如同触发信号必须在一个单一设备的不同功能区域或多个设备之间传递一样,定时信号也必须以同样的方式传递。NI-DAQmx也是自动地实现这个传递。所有有效的定时信号都可以作为NI-DAQmx定时函数的源输入。例如,在下面的DAQmx定时VI中,设备的模拟输出采样时钟信号作为同一个设备模拟输入通道的采样时钟源,而无需完成任何显式的传递。

文档——NI-DAQmx定时和同步特性——包含了关于使用NI-DAQmx定时函数来利用NI-DAQmx完成同步的其他信息。

大部分计数器操作不需要采样定时,因为被测量的信号提供了定时。NI-DAQmx定时函数的隐式实例应当用于这些应用程序。在下面的LabVIEW程序框图中,NI-DAQmx定时VI的隐式实例用来将一个缓冲的脉冲宽度采集配置成有限的特定个数的采样。

某些数据采集设备支持将握手作为它们数字I/O操作的定时信号的方式。握手使用与外部设备之间请求和确认定时信号的交换来传输每一个采样。NI-DAQmx定时函数的握手实例为数字I/O操作配置握手定时。

NI-DAQmx启动任务函数

库NI-DAQmx任务配置/控制启动任务[CVI]

任务.启动方式[.NET]

正如我们在简介中所提到的那样,NI-DAQmx所使用的状态模型免去了不需要的重复配置来获得一个更高的效率并且将性能最大化。这个状态模型包括任务可存在的五个状态。关于每一个状态的详细信息可以在关键的NI-DAQmx概念任务任务状态模型中的NI-DAQmx帮助中找到。

NI-DAQmx启动任务函数显式地将一个任务转换至运行状态。在运行状态,这个任务完成特定的采集或生成。如果没有使用NI-DAQmx启动任务函数,那么在NI-DAQmx读取函数执行时,一个任务可以隐式地转换至运行状态,或者自动开始。这个隐式的转换也发生在如果NI-DAQmx启动任务函数未被使用而且NI-DAQmx写入函数与它相应指定的自启动输入一起执行。

虽然不是经常需要,但是使用NI-DAQmx启动任务函数来显式地启动一个与硬件定时相关的采集或生成任务是更值得选择的。而且,如果NI-DAQmx读取函数或NI-DAQmx写入函数将会执行多次,例如在循环中,NI-DAQmx启动任务函数就应当使用。否则,任务的性能将会降低,因为它将会重复地启动和停止。阐述何时使用NI-DAQmx启动任务函数的其他信息可以在关键的NI-DAQmx概念任务显式启动一个任务中的NI-DAQmx帮助中找到。下面的LabVIEW程序框图演示了不需要使用NI-DAQmx启动函数的情形,因为模拟输出生成仅仅包含一个单一的、软件定时的采样。

相反,下面的LabVIEW程序框图演示了应当使用NI-DAQmx启动函数的情形,因为NI-DAQmx读取函数需要执行多次来从计数器读取数据。

NI-DAQmx读取函数

库NI-DAQmx读取函数[CVI]

通道读取类[.NET]

NI-DAQmx读取函数需要从特定的采集任务中读取采样。这个函数的不同实例允许选择采集不同的类型(模拟、数字或计数器)、虚拟通道数、采样数和数据类型。下面是四个不同的NI-DAQmx读取VI实例的例程。

可以读取多个采样的NI-DAQmx读取函数的实例包括一个输入来指定在函数执行时读取数据的每通道采样数。对于有限采集,通过将每通道采样数指定为-1,这个函数就等待采集完所有请求的采样数,然后读取这些采样。对于连续采集,将每通道采样数指定为-1将使得这个函数在执行的时候读取所有现在保存在缓冲中可得的采样。在下面的LabVIEW程序框图中,NI-DAQmx读取VI已经被配置成从多个模拟输入虚拟通道中读取多个采样并以波形的形式返回数据。而且,既然每通道采样数输入已经配置成常数10,那么每次VI执行的时候它就会从每一个虚拟通道中读取10个采样。

NI-DAQmx写入函数

库NI-DAQmx写入函数[CVI]

通道写入类[.NET]

NI-DAQmx写入函数将采样写入指定的生成任务中。这个函数的不同实例允许选择生成类型(模拟或数字),虚拟通道数、采样数和数据类型。下面是四个不同的NI-DAQmx写入VI实例的例程。

每一个NI-DAQmx写入函数实例都有一个自启动输入来确定,如果还没有显式地启动,那么这个函数是否将隐式地启动任务。正如我们刚才在本文NI-DAQmx启动任务部分所讨论的那样,NI-DAQmx启动任务函数应当用来显式地启动一个使用硬件定时的生成任务。它也应当用来最大化性能,如果NI-DAQmx写入函数将会多次执行。对于一个有限的模拟输出生成,下面的LabVIEW程序框图包括一个NI-DAQmx写入VI的自启动输入值为“假”的布尔值,因为生成任务是硬件定时的。NI-DAQmx写入VI已经被配置将一个通道模拟输出数据的多个采样以一个模拟波形的形式写入任务中。

NI-DAQmx等待直至完成函数

库NI-DAQmx任务配置/控制等待直至任务完成函数[CVI]

任务.等待直至完成方式[.NET]

NI-DAQmx等待直至完成函数在结束之前等待数据采集操作的完成。这个函数应当用于保证在任务结束之前完成了特定的采集或生成。最为普遍的是,NI-DAQmx等待直至完成函数用于有限操作。一旦这个函数完成了执行,有限采集或生成就完成了,而且无需中断操作就可以结束任务。此外,超时输入允许指定一个最大的等待时间。如果采集或生成不能在这段时间内完成,那么这个函数将退出而且会生成一个合适的错误信号。下面LabVIEW程序框图中的NI-DAQmx等待直至完成VI用来验证有限模拟输出操作在任务清除之前就已经完成。

NI-DAQmx清除任务函数

库NI-DAQmx任务配置/控制清除任务函数[CVI]

任务.处理方式[.NET]

NI-DAQmx清除任务函数可以清除特定的任务。如果任务现在正在运行,那么这个函数首先中止任务然后释放掉它所有的资源。一旦一个任务被清除,那么它就不能被使用,除非重新创建它。因此,如果一个任务还会使用,那么NI-DAQmx结束任务函数就必须用来中止任务,而不是清除它。

对于连续的操作,NI-DAQmx清除任务函数必须用来结束真实的采集或生成。在下面的LabVIEW程序框图中,一个计数器生成了一个连续的脉冲序列。这个脉冲序列不断输出直至等待循环退出和NI-DAQmx清除任务VI执行。

NI-DAQmx属性节点

NI-DAQmx属性节点提供了对所有与数据采集操作相关属性的访问。这些属性可以通过写入NI-DAQmx属性节点来设置,而且当前的属性值可以从NI-DAQmx属性节点中读取。而且,在LabVIEW中,一个NI-DAQmx属性节点可以用来写入多个属性或读取多个属性。例如,下面的LabVIEWNI-DAQmx定时属性节点设置了采样时钟的源,然后读取采样时钟的源,最后设置采样时钟的有效边沿。

许多属性可以使用前面讨论的NI-DAQmx函数来设置。例如,采样时钟源和采样时钟有效边沿属性可以使用NI-DAQmx定时函数来设置。然而,一些相对不常用的属性只可以通过NI-DAQmx属性节点来访问。在下面的LabVIEW程序框图中,一个NI-DAQmx通道属性节点用来使能硬件低通滤波器,然后设置滤波器的截止频率来用于应变测量。

结论

NI-DAQmx节省了数据采集应用程序的开发时间并提高了它的性能。NI-DAQmx节省开发时间的众多方式之一是提供一个仅需要少量函数的API来使用它绝大多数的功能。事实上,在学习完本文所讨论的10个函数之后,您就可以解决80%的数据采集应用。



转载请注明:http://www.aideyishus.com/lkgx/3851.html
------分隔线----------------------------