我应该怎么做才能在Labview中执行异步模拟输入操作?



主要软件:
主要软件版本: 6.0
主要软件修正版本: N/A
次要软件: Driver Software>>NI-DAQ, Driver Software>>NI-DSA
硬件: Modular Instruments>>Dynamic Signal Acquisition and Analysis (DSA), Multifunction DAQ (MIO)

问题: 我在Labview中调用NI-DAQmx设备执行一个模拟输入操作。我注意到DAQmx的读操作VI会一直处于挂机状态,直到我需要读的所有数据全部到达或者超时情况发生。在这段等待时间内, 显示在任务管理器中的CPU使用率增加到100%(在单处理器系统上)。如果我有其他进程并行运行,包括其他数据采集操作或额外的应用程序运行,这些程序运行的比较慢。这种现象的原因是什么,它可以避免吗?

解答: DAQmx的读操作函数是同步执行的,这就意味着,在它运行所需要的所有数据到达之前,如果它被调用,它将执行一个紧凑的内部循环,不断轮询积压,直到所有需要的数据到达。这种紧凑的内部循环就给其他进程留下了很少甚至几乎没有的处理器带宽。 一个解决方案是使这种“积压轮询”转移到Labview层而不是依靠DAQmx读取函数在DAQmx DLL中执行。这使得循环执行的更加“松散”,允许其他进程获得更多处理器的带宽。这个子vi称为“异步模拟输入读取”(这个子vi例子的链接如下)提供了DAQmx异步读取技术替代DAQmx中的读取函数。 下面的示例程序链接提供了一个如何使用异步模拟输入读取,在一个并行的循环中执行两个数据采集操作的演示。

相关链接: Example Program: Asynchronous Parallel DAQ Operations in LabVIEW KnowledgeBase 28JEUR2L: Windows 2000 CPU Usage Is 100% for My VI

附件:


Asynchronous AI Read.vi - Asynchronous AI Read.vi


报告日期: 06/10/2003
最近更新: 05/23/2015
文档编号: 2Y9GO82L