Causes of NI-DAQmx Error -50103 "The Specified Resource is Reserved"Primary Software:
Primary Software Version: 7.0
Primary Software Fixed Version: N/A
Secondary Software: N/A
Why do I get the following error?
Error -50103 The Specified Resource is Reserved
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: Running a DAQmx application after a Traditional DAQ application without first resetting the Traditional DAQ driver.
Case 2: Continuously starting and clearing a DAQmx task (in a loop) for an extended period of time.
Case 3: Generating a finite pulse train and another counter task on the same device in LabVIEW with NI-DAQmx.
Case 4: Using multiple DAQ Assistant Express VIs to access channels on the same data acquisition board.
Case 5: Using multiple SubVIs that run without any error independently, but generate an error when called from a top-level VI.
Case 6: Concurrently running two or more analog input or analog output tasks.
Case 7: Failing to properly clear a task and release its resources.
Running a DAQmx application after a Traditional DAQ application without first resetting the Traditional DAQ driver. Follow the steps below to reset the Traditional DAQ driver:
Continuously 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, then call the read/write function in the loop as needed.
For an example on how to do this, take a look at the simple Cont Acq&Graph - Int Clk.vi example. To find the example, launch LabVIEW and go to Help»Find Examples. Browse by task to Hardware Input and Output»DAQmx»Analog Measurements»Voltage.
Generating a finite pulse train and another counter task on the same device in LabVIEW with NI-DAQmx. For any device which uses the STCII chip (CompactDAQ, E and M Series) a finite pulse train generation reserves both counters.
When performing a finite pulse train generation, one counter generates the pulse train, and the other counter generates a pulse that acts as a gate for the first counter. If you change the pulse train to generate continuously or only generate one pulse, you can run two counter tasks at the same time without error.
The following three cases for the error can happen due to improper programming practice. Generally speaking there are two ways you can resolve this error. You can either run each task in series, or combine all channels of the same acquisition type into a single task. In order to run the tasks in series make sure to stop each task before starting the next. If you decide you want to use a single task there are two options. If all physical channels are doing the same type of acquisition you can just combine the physical channel lists of the two tasks. If you have two analog input tasks that are of different types (i.e. AI Voltage and AI Current) you can call multiple DAQmx Create Channel VIs and wire the task out of the first into the task in of the second to configure each physical channel or group of channels individually.
Using multiple DAQ Assistant Express VIs to access channels on the same data acquisition board can cause this error because each Express VI creates a separate task. 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. For single point input/output (I/O), wiring False to the stop input optimizes performance, but it does not release the device's resources. Error -50103 will be thrown if you are using multiple DAQ Assistant Express VIs with single point or finite data acquisition in a loop with a False constant wired into the stop input. For continuous acquisition, the default value is False. To avoid this error, be sure to pass a True to the stop input on the last iteration of your loop.
Note that it is critical to properly set the execution order of both Express VIs if they occur within the same loop. This will prevent both DAQmx tasks from running concurrently and generating an error. You can establish order of execution by wiring the Error Out terminal of one DAQ Assistant to the Error In terminal of the second DAQ Assistant. However, when performing multiple instances of the same type of measurement within the same while loop, it is not necessary to use multiple DAQ Assistants. Instead, you can simply use a single DAQ Assistant configured for multiple channels.
Using multiple SubVIs that run without any error independently, but generate an error when called from a top-level VI. Error -50103is likely to occur when you have multiple NI-DAQmx VI's that call the same task again without clearing the previously opened task. If at any given time you try to open a task that already is being used, you might receive an error "resource is reserved".
To prevent this error from occurring, 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.
Concurrently running two or more analog input or analog output tasks. This error can also be thrown when a program explicitly calls multiple tasks performing the same type of operation at the same time. As with the other two cases, this produces a situation where multiple independent tasks are concurrently attempting to access the same resource. Even though the tasks might be using different channels, this is still a conflict because they require use of the same analog to digital converter and sample clock. To resolve this issue, combine all operations of the same type into the same task. For DAQmx 7.3 and later, it is possible to do this even with multiple types of analog input if you use multiple DAQmx Create Channel VIs.
Note: Case 6 is common when trying to perform multiple tasks of the same type using a cDAQ-9172 chassis. Keep in mind that this chassis only has one timing engine. To avoid this problem, consolidate all of your analog acquisition into a single task to make proper use of the single timing engine. The cDAQ-9174 and 9178 chassis have three analog input timing engines and thus can support three concurrent analog input tasks.
Failing to properly clear a task and release its resources. When a DAQmx task starts or otherwise enters the Reserved or Committed states (See NI-DAQmx Help for Task State Model), resources associated with that task such as clocks, channels, trigger lines, or buffer memory are acquired exclusively by the task. Because the task has reserved these resources, any task that tries to access these resources will encounter Error -50103.
You can resolve this by doing one of the following:
KnowledgeBase 32JEOHW0: Why Can I Not Put More Than One Type of Measurement Into My DAQmx Task Using the DAQ Assistant?
KnowledgeBase 3D28G3Z6: Virtual Channels of Different Measurement Types in One Task in the DAQ Assistant
KnowledgeBase 2XQEAPQJ: DAQmx Error Codes and Common Solutions
KnowledgeBase 4OPFI8BB: How Can I Create Two Simultaneous Analog Output Waveform on Different Channels on the Same Device?
Developer Zone Example: DAQmx Acquire with Multiple Channel Input Ranges
Report Date: 01/07/2009
Last Updated: 12/01/2011
Document ID: 4T6CQKBP