解决方案
此错误是NI-DAQmx识别物理资源冲突的结果。一些常见的资源包括定时引擎、通道、触发线、任务、采样时钟等。由于这种错误可以在各种情况下发生,我们将在下面描述几种可能的情况:
- 情况1:无法正确清除任务并释放其资源
- 情况2:使用已从多计数器计数器任务中保留的计数器
- 情况3:使用多个任务访问数据采集板上的相同物理通道
- 情况4:使用多个子VI,这些子VI独立运行而没有任何错误,但在从顶级VI调用时会产生错误
- 情况5:并行运行的模拟输入或模拟输出任务超出了DAQ设备的允许范围
- 情况6:使用多个不共享采样时钟的硬件定时任务输出模拟输出波形。
- 情况7:当LabVIEW程序正在运行某个任务时,尝试通过NI-MAX使用该任务
- 情况8:使用错误的来源运行计数器任务
情况1:无法正确清除任务并释放其资源。当DAQmx任务开始或以其他方式进入保留或提交状态时,与该任务相关联的资源(例如时钟、通道、触发线或缓冲存储器)将仅由该任务获取。
您可以通过执行以下任一操作来解决此问题:
- 在任务结束时添加DAQmx清除任务
- 在任务结束时添加DAQmx控制任务,并将其动作设置为未保留
如果您正在使用while循环进行读写,并且在循环后执行了清除任务,请不要使用中止按钮来中止执行, 而是将停止按钮连接到循环的条件接线端。
情况2:使用已从多计数器计数器任务中保留的计数器。对于任何需要两个计数器的任务,第二个计数器是根据连接到创建通道vi的计数器保留的。计数器总是与其旁边的计数器配对,因此ctr 0与ctr 1配对,ctr 2与ctr 3配对。某些计数器任务需要
多个计数器 。
发生此问题的原因是,实际使用的计数器数量根据计数器任务类型而有所不同。 特别是在下面的附加代码这样的情况下。 请参见下面的VI片段。
对于基于STC II芯片的M系列DAQ,需要使用两个计数器来生成有限脉冲序列。 请参阅下表按系列比较DAQ设备的计数器。
从表中可以看到,在发生本文所述错误的情况下,M系列DAQ设备具有两个计数器,并且由于有限脉冲任务需要两个计数器而发生资源错误。
计数器功能 | E系列 | M系列 | X系列 |
---|
计数器/计时器 | 2, 24-bit | 2, 32-bit | 4, 32-bit |
---|
计数器时基 | 20 MHz | 80 MHz | 100 MHz |
---|
正交编码器输入 | 无 | 有 | 有 |
---|
数字去抖滤波器 | 无 | 仅适用于计数器任务 | 在所有数字线路上可用 |
---|
缓冲计数器输入任务的最大速率基准 | 单个计数器(PCI)上为150 kHz | 380 kHz(PCI)1194 kHz-621x单计数器 | 所有四个计数器(PCIe)均为10 MHz |
---|
缓冲计数器输出? | 无 | 无 | 有 |
---|
情况3:使用多个任务访问数据采集板上的相同物理通道。
每个物理通道只能分配给一个任务。 您可能没有意识到这正在发生,因此请确保检查在NI MAX中创建的所有任务,并且没有正在运行的其他任务/子VI包含相同的资源。
情况4:使用多个子VI,这些子VI独立运行而没有任何错误,但在从顶级VI调用时会产生错误。
当多个NI-DAQmx VI再次调用同一任务而不清除先前打开的任务时,很可能发生错误-50103。 为防止发生此错误:
- 选项1:在再次在另一个子VI中再次打开该任务之前,请先清除该任务,或者将DAQmx任务从一个子VI传递至另一个子VI,以避免再次打开该任务。
- 选项2:如果要在多个通道上执行相同的操作,请参考在LabVIEW中选择多个NI-DAQmx通道 使用通道扩展。
情况5:并行运行的模拟输入或模拟输出任务超出了DAQ设备的允许范围。每种类型的硬件(
PCI/PCIe 和
cDAQ )都具有有限数量的并发硬件会话。 这限制了应用程序可以同时调用的并发任务的数量。
- 将常见类型的操作合并为一个任务。 DAQmx 7.3和更高版本通过创建通道VI 支持多种模拟输入类型。
使用E,M,S,X或AO系列DAQ设备时,您可以执行一个硬件定时的模拟输出任务。 但是大多数设备支持与一项硬件定时任务同时执行一个或多个软件定时任务。 此功能允许设备在同一设备上同时生成具有不同定时特性的不同信号。
- 如果在一个输出任务上确实有多个通道,则这些通道将共享相同的时序信息,因为它们将共享AO采样时钟。 但是,可以在每个通道上输出不同的信号,请参考范例 。
情况6:使用多个不共享采样时钟的硬件定时任务输出模拟输出波形。
通过参考在LabVIEW中的一个示例,您应该能够实现此功能。 通过选择帮助>>查找示例...,在示例查找器中选择浏览选项卡,然后选择硬件输入和输出>> DAQmx >>模拟输出>>电压-连续输出vi。 这将允许您在前面板上选择任意数量的通道,并将相同的波形输出到这些通道。
在这些通道上实现相移,您可以按照下面的截图类似的方式编辑现有示例。
其他解决方法包括:
与一个硬件定时任务同时执行多个软件定时任务使用E、M、S、X或AO系列DAQ设备时,您可以执行一个硬件定时的模拟输出任务。 但是大多数设备还支持与一项硬件定时任务同时执行一个或多个软件定时任务。 此功能允许设备在同一设备上同时生成具有不同定时特性的不同信号。
一个硬件定时任务上有多个AO通道在一个硬件定时任务中,您可以包括多个AO通道。 这些通道将共享相同的时序信息,因为它们将共享AO采样时钟。 但是可以在每个通道上输出不同的信号,请参考
范例 。 注意:在NI PXIe-4461/3之类的设备上,两个模拟输出都有专用的定时引擎,因此可以在每个通道上运行两个独立定时的模拟输出任务。
情况7:当LabVIEW程序正在运行某个任务时,尝试通过NI-MAX使用该任务。如果LabVIEW程序当前正在运行您的DAQmx任务以获取数据,则它将保留与此任务相对应的硬件资源。 这意味着NI-MAX将无法同时访问该硬件资源或设备。
为避免这种冲突,您可以在运行LabVIEW程序之前或之后执行任何NI-MAX操作,或者在程序处于调用DAQmx启动任务之前或调用DAQmx清除任务之后的状态下进行暂停。 这些功能分别保留和释放硬件资源。
情况8:使用错误的来源运行计数器任务确保您要运行的任务支持所选择的源。 (例如,在内部计数器中连接数字边缘而不是板载时钟)。