Error -50103 When Using NI-DAQmx With LabVIEW or in NI-MAX

Updated Aug 21, 2019

Reported In

Hardware

  • PCI-6143

Software

  • LabVIEW

Driver

  • NI-DAQmx

Issue Details

Why do I get the following error? 

Error -50103 occurred at DAQmx Start Task.vi: 7220001

Possible Reason(s): The specified resource is reserved. The operation could not be completed as specified. 
 

Solution

This error is the result of NI-DAQmx recognizing a physical resource conflict. Because the error can be observed in a variety of situations, we describe several possible cases below:
 
  • Case 1: Continuously starting and clearing a DAQmx task (in a loop) for an extended period of time.
  • Case 2: Having counter tasks that need two counters and one of them is being used by another task on the same device.
  • Case 3: Using multiple DAQ Assistant Express VIs to access channels on the same data acquisition board.
  • Case 4: Using multiple SubVIs that run without any error independently, but generate an error when called from a top-level VI.
  • Case 5: Concurrently running more analog input or analog output tasks than the DAQ device allows.
  • Case 6: Failing to properly clear a task and release its resources.
  • Case 7: Attempting to use a task in NI-MAX while it is being used by a running LabVIEW program.
  • Case 8: Using the wrong source for a counter task

Case 1: Continuously creating, configuring, starting, and clearing a DAQmx task (in a loop) for an extended period of time.

To avoid this problem, configure and start your task once before the loop, then call the read/write function in the loop as needed and clear the task after the loop. 

For examples on how to do this, take a look at the examples for DAQmx and the NI Community page. To find examples, launch LabVIEW and go to Help»Find Examples. Browse by task and select Hardware Input and Output»DAQmx.

Incorrect:

Correct:


Case 2: Using multiple counter tasks on the same device.

For any task that requires two counters, the second counter is reserved based on the counter that is wired to create channel vi. The counters are always paired with the counter next to it, so ctr 0 is paired with ctr 1 and ctr 2 is paired with ctr 3. Some counter tasks require multiple counters

Case 3: Using multiple DAQ Assistant Express VIs to access channels on the same data acquisition board.

It is not possible to have multiple DAQmx tasks attempting to access the same physical device. Thus, it is necessary to clear each task after the data acquisition has completed. The stop input of the DAQ Assistant Express VI stops the task and releases device resources when the Express VI completes execution. 
  • For single point or finite data acquisition the default value for the stop input is true so you do not need to wire a True Boolean constant to this input.
To prevent this error with multiple Express VIs in the same loop:
  • Wire the Error Out terminal of one DAQ Assistant to the Error In terminal of the second DAQ Assistant.
  • If performing multiple instances of the same measurement or of different measurements (e.g Voltage and Acceleration), you can simply use a single DAQ Assistant configured for multiple channels. 

Case 4: Using multiple SubVIs that run without any error independently, but generate an error when called from a top-level VI.

Error -50103 is likely to occur when you have multiple NI-DAQmx VI's that call the same task again without clearing the previously opened task. To prevent this error from occurring:
  • Option 1: Clear the task before you open it again in another SubVI, or just pass the DAQmx task from one SubVI to another to avoid having to open the task again.
  • Option 2: If you're doing the same operation on multiple channels, use channel expansion to Select More Than One NI-DAQmx Channel in MAX .

Case 5: Concurrently running more analog input or analog output tasks than the DAQ device allows.
 

Each type of hardware (PCI/PCIe and cDAQ) has a limited number of concurrent hardware sessions available.  This limits the number of concurrent tasks an application can call simultaneously.

  • Combine common type operations into a single task. DAQmx 7.3 and later supports multiple analog input types via Create Channel VI's.

When using E, M, S, X, or AO Series DAQ devices, you can do one hardware-timed analog output task. However, most devices also support performing one or more software-timed tasks simultaneously with one hardware-timed task. This functionality allows the device to generate different signals with different timing characteristics at the same time on the same device.

  • If you do have multiple channels on one output task, these channels will share the same timing information because the will share the AO sample clock. However, different signals can be output on each channel. Here is an example of this.
Case 6: Failing to properly clear a task and release its resources.

When a DAQmx task starts or otherwise enters the Reserved or Committed states resources associated with that task such as clocks, channels, trigger lines, or buffer memory are acquired exclusively by the task. 

You can resolve this by doing one of the following:
  • Add a DAQmx Clear Task.vi at the end of the task
  • Add a DAQmx Control Task.vi at the end of the task, and set its action to unreserve

Don't abort the execution using the abort button if you are using a while loop to read or write and the Clear task is executed after the loop. Use the Stop Button attached to the conditional terminal of the Loop instead.

Case 7: Attempting to use a task in NI-MAX while it is being used by a running LabVIEW program.
 
If a LabVIEW program is currently running your DAQmx task to acquire data, then it will reserve the hardware resource corresponding to this task. This means that NI-MAX will be unable to concurrently access this hardware resource, or device.

To prevent this conflict, you can either perform any NI-MAX actions before or after running your LabVIEW program, or while your program is stalling in a state before DAQmx Start Task has been called or after DAQmx Clear Task has been called. These functions reserve and release hardware resources, respectively.

Case 8: Using the wrong source for a counter task

Make sure that the source you are selecting is supported for the task you are trying to run. (for example, wiring in an internal counter for a digital edge instead of the onboard clock).

Additional Information

Traditional NI-DAQ Case: Running a DAQmx application after a Traditional NI-DAQ (Legacy) application without first resetting the Traditional NI-DAQ (Legacy) driver. Follow the steps below to reset the Traditional NI-DAQ (Legacy) driver:
  1. Go to Measurement & Automation Explorer
  2. Expand Devices and Interfaces
  3. Right Click Traditional NI-DAQ (Legacy) Devices
  4. Select Reset driver for Traditional NI-DAQ (Legacy)
This releases the resources previously reserved for Traditional NI-DAQ (Legacy), and lets you use the DAQmx driver for your data acquisition.

Also of Note:
NI 672X devices do not support performing a hardware-timed task simultaneously with one or more software-timed tasks.

 

 

WAS THIS ARTICLE HELPFUL?

Not Helpful