Error -50103 al usar NI-DAQmx con soporte para LabVIEW

Actualizado el Feb 4, 2020

Reportado en

Software

  • LabVIEW

Driver

  • NI-DAQmx

Detalles del problema

¿Por qué recibo el siguiente error cuando no uso explícitamente los mismos recursos cuando uso NI-DAQmx con soporte para LabVIEW?

Mensaje de error original:
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. 
 
 

Solución

Este error es el resultado de que NI-DAQmx reconozca un conflicto de recursos físicos. Debido a que el error se puede observar en una variedad de situaciones, describimos varios casos posibles a continuación:
  • Caso 1: Iniciar y borrar continuamente una tarea DAQmx (en un bucle) durante un período de tiempo prolongado.
  • Caso 2: tener tareas de contador (del inglés counter) que necesitan dos contadores y una de ellas está siendo utilizada por otra tarea en el mismo dispositivo.
  • Caso 3: uso de múltiples VIs de DAQ Assistant Express para acceder a los canales en la misma placa de adquisición de datos.
  • Caso 4: uso de varios SubVI que se ejecutan sin ningún error de forma independiente, pero generan un error cuando se los llama desde un VI de nivel superior.
  • Caso 5: Ejecutar simultáneamente más tareas de entrada analógica o salida analógica de las que permite el dispositivo DAQ.
  • Caso 6: No se puede borrar correctamente una tarea y liberar sus recursos.

Caso 1: crear, configurar, iniciar y borrar continuamente una tarea DAQmx (en un bucle) durante un período prolongado de tiempo.

Para evitar este problema, configure e inicie su tarea una vez antes del bucle, luego llame a la función de lectura / escritura en el bucle según sea necesario y borre la tarea después del bucle.

Para obtener ejemplos sobre cómo hacer esto, eche un vistazo a los ejemplos para DAQmx y la página de la Comunidad de NI. Para encontrar ejemplos, inicie LabVIEW y vaya a Help»Find Examples. Seleccione búsqueda por Task y seleccione Hardware Input and Output»DAQmx.

Incorrecto:

Correcto:


Caso 2: Uso de múltiples tareas de contador en el mismo dispositivo.

Para cualquier tarea que requiera dos contadores, el segundo contador se reserva según el contador que está conectado al  create virtual channel vi.
Los contadores siempre se emparejan con el contador que se encuentra a su lado, por lo que ctr0 se empareja con ctr1 y ctr2 se empareja con ctr3. Algunas tareas de contador requieren múltiples contadores .

Caso 3: uso de múltiples VIs de DAQ Assistant Express para acceder a los canales en la misma placa de adquisición de datos.

No es posible tener varias tareas DAQmx que intenten acceder al mismo dispositivo físico. Por lo tanto, es necesario borrar cada tarea después de que se haya completado la adquisición de datos. La entrada de detención (del inglés stop input) del DAQ Assistant Express VI detiene la tarea y libera recursos del dispositivo cuando Express VI completa la ejecución.
  • Para el punto único o la adquisición de datos finitos, el valor predeterminado para la entrada de detención es verdadero, por lo que no es necesario conectar una constante booleana True a esta entrada.
Para prevenir este error con múltiples VIs Express en el mismo bucle:
  • Conecte el terminal de Error Out de un asistente de DAQ al terminal Error In del segundo asistente de DAQ.
  • Si realiza múltiples instancias de la misma medida, simplemente puede usar un solo Asistente DAQ configurado para múltiples canales.

Caso 4: uso de varios SubVI que se ejecutan sin ningún error de forma independiente, pero generan un error cuando se los llama desde un VI de nivel superior.

Es probable que ocurra el error -50103 cuando tenga varios NI-DAQmx VI que vuelvan a realizar la misma tarea sin borrar la tarea abierta anteriormente. Para evitar que se produzca este error:
  • Borre la tarea antes de volver a abrirla en otro SubVI, o simplemente pase la tarea DAQmx de un SubVI a otro para evitar tener que abrir la tarea nuevamente.

Caso 5: Ejecutar simultáneamente más tareas de entrada analógica o salida analógica de las que permite el dispositivo DAQ .

Este error también puede aparecer cuando un programa llama explícitamente a varias tareas que realizan el mismo tipo de operación al mismo tiempo. Al igual que con los otros dos casos anteriores, esto produce una situación en la que múltiples tareas independientes intentan acceder al mismo recurso al mismo tiempo. Hay un límite en el número de tareas de hardware simultáneas que pueden ejecutarse con tarjetas PCI / PCIe y con chasis cDAQ . Aunque las tareas pueden estar usando diferentes canales, esto sigue siendo un conflicto porque requieren el uso del mismo convertidor analógico a digital y reloj de muestra.
  • Para resolver este problema, combine todas las operaciones del mismo tipo en la misma tarea. Para DAQmx 7.3 y versiones posteriores, es posible hacerlo incluso con varios tipos de entrada analógica si utiliza varios VI de creación de canal de DAQmx.

Caso 6: No se puede borrar correctamente una tarea y liberar sus recursos.

Cuando una tarea DAQmx se inicia o, de lo contrario, ingresa a los recursos de estados reservados o comprometidos asociados con esa tarea, como los relojes, los canales, las líneas de activación o la memoria intermedia, los adquiere exclusivamente la tarea.

Puedes resolver esto haciendo uno de los siguientes:
  • Agregue un DAQmx Clear Task.vi al final de la tarea
  • Agregue un DAQmx Control Task.vi al final de la tarea y configure su action para unreserved

No aborte la ejecución usando el botón abortar si está usando un ciclo while para leer o escribir y la tarea Borrar se ejecuta después del ciclo. En su lugar, use el botón Detener adjunto al terminal condicional del bucle.

Información adicional

Caso NI-DAQ tradicional (del inglés Traditional NI-DAQ Case): ejecutar una aplicación DAQmx después de una aplicación NI-DAQ tradicional (legacy) sin reiniciar primero el controlador NI-DAQ tradicional (legacy). Siga los pasos a continuación para restablecer el controlador tradicional NI-DAQ (legacy):
  1. Ir a Measurement & Automation Explorer 
  2. Expandir dispositivos e interfaces (del inglés Devices and Interfaces)
  3. Haga clic derecho en los dispositivos tradicionales NI-DAQ (heredados)
  4. Seleccione Restablecer controlador para Traditional NI-DAQ (Legacy)
Esto libera los recursos previamente reservados para Traditional NI-DAQ (Legacy), y le permite usar el controlador DAQmx para su adquisición de datos.




Nota: el caso 5 es común cuando se intentan realizar múltiples tareas del mismo tipo utilizando un chasis cDAQ-9172. Tenga en cuenta que este chasis solo tiene un motor de temporización. Para evitar este problema, consolide toda su adquisición analógica en una sola tarea para hacer un uso adecuado del motor de temporización único. Los chasis cDAQ-9174 y 9178 tienen tres motores de temporización de entrada analógica y, por lo tanto, pueden admitir tres tareas de entrada analógica concurrentes si todas las tareas están en módulos separados.