在LabVIEW中解决NI-DAQmx错误-50103

更新 Aug 30, 2019

适用于

Software

  • LabVIEW

Driver

  • NI-DAQmx

问题详述

当我在使用支持LabVIEW的NI-DAQmx时,并没有明确地使用相同的资源,为什么会出现以下错误?
DAQmx上发生错误-50103 Start Task.vi:7220001可能的原因:指定的资源已被保留。无法按指定完成操作。
 

解决方案

此错误是NI-DAQmx识别物理资源冲突的结果。由于这种错误可以在各种情况下发生,我们将在下面描述几种可能的情况:
  • 情况1:一段时间中持续启动和清除DAQmx任务(在循环中)。
  • 情况2:具有需要两个计数器的计数器任务,其中一个计数器正由同一设备上的另一个任务使用。
  • 情况3:使用多个DAQ Assistant Express VI访问同一数据采集板上的通道。
  • 情况4:使用多个独立运行且没有任何错误的子VI,但在从顶层VI调用时会产生错误。
  • 情况5:同时运行比DAQ设备允许的更多模拟输入或模拟输出任务。
  • 情况6:未能正确清除任务并释放其资源。

情况1:在较长时间内连续创建,配置,启动和清除DAQmx任务(在循环中)。

要避免此问题,请在循环之前配置并启动任务一次,然后根据需要调用循环中的读/写函数,并在循环后清除任务。

有关如何执行此操作的示例,请查看DAQmx的范例和NI社区页面的示例。要查找示例,请启动LabVIEW并转到帮助»查找示例 。按任务浏览并选择硬件输入和输出»DAQmx

不正确:

正确:


情况2:在同一设备上使用多个计数器任务。

对于任何需要两个计数器的任务,第二个计数器是根据连接到创建通道vi的计数器保留的。计数器总是与其旁边的计数器配对,因此ctr 0与ctr 1配对,ctr 2与ctr 3配对。某些计数器任务需要多个计数器

情况3:使用多个DAQ Assistant Express VI访问同一数据采集板上的通道。

尝试访问同一物理设备的多个DAQmx任务是不能实现的。因此,有必要在数据采集完成后清除每个任务。当Express VI完成执行时,DAQ Assistant Express VI的停止输入将停止任务并释放设备资源。
  • 对于单点或有限的数据采集,所以你并不需要连接一个布尔常量到这个输入,停止输入的默认值是true。
首先防止在同一循环中使用多个Express VI的错误:
  • 将一个DAQ助手的错误输出端子连接到第二个DAQ助手的错误输入端子。
  • 如果执行相同测量的多个实例,您只需使用为多个通道配置的单个DAQ助手。

情况4:使用多个独立运行且没有任何错误的子VI,但在从顶层VI调用时会产生错误。

当您有多个NI-DAQmx VI同时再次调用相同任务而不清除先前打开的任务时,可能会发生错误-50103。要防止发生此错误:
  • 在另一个SubVI中再次打开任务之前清除任务,或者只是将DAQmx任务从一个SubVI传递到另一个SubVI以避免再次打开任务。

情况5:同时运行比DAQ设备允许的更多模拟输入或模拟输出任务

当程序显式调用同时执行相同类型操作的多个任务时,也会出现此错误。与前两种情况一样,这会产生多个独立任务同时尝试访问同一资源的情况。在使用PCI / PCIe卡cDAQ机箱时,可以运行的并发硬件定时任务数量是有限的。即使任务可能使用不同的通道,这仍然是一个冲突,因为它们需要使用相同的模数转换器和采样时钟。
  • 要解决此问题,请将同一类型的所有操作合并到同一任务中。对于DAQmx 7.3及更高版本,如果使用多个DAQmx创建通道VI,即使使用多种类型的模拟输入,也可以执行此操作

情况6:未能正确清除任务并释放其资源。

当DAQmx任务启动或以其他方式进入保留或提交状态时,与该任务相关联的资源(例如时钟,通道,触发线或缓冲存储器)仅由任务获取。

您可以通过执行以下操作之一来解决此问题:
  • 在任务结束时添加DAQmx Clear Task.vi
  • 在任务结束时添加DAQmx Control Task.vi ,并将其操作设置为unreserve

如果使用while循环进行读取或写入,则不要使用中止按钮中止执行,并且在循环后执行清除任务。请改用Loop的条件终端附带的停止按钮。

相关信息

传统NI-DAQ案例:在传统NI-DAQ(旧版)应用程序之后运行DAQmx应用程序,而无需先重置传统NI-DAQ(旧版)驱动程序。按照以下步骤重置Traditional NI-DAQ(旧版)驱动程序:
  1. 转到Measurement&Automation Explorer
  2. 展开设备和接口
  3. 右键单击传统NI-DAQ(旧版)设备
  4. 选择重置传统NI-DAQ驱动程序(旧版)
这将释放以前为Traditional NI-DAQ(旧版)保留的资源,并允许您使用DAQmx驱动程序进行数据采集。




注意:尝试使用cDAQ-9172机箱执行相同类型的多个任务时,情况5很常见。请记住,此机箱只有一个定时引擎。为避免此问题, 请将所有模拟采集合并为一个任务 ,以正确使用单个定时引擎。 cDAQ-9174和9178机箱有三个模拟输入定时引擎,因此如果所有任务都在不同的模块上,则可以支持三个并发模拟输入任务。
 

本文是否有帮助?

无帮助