Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Maldito Error 50103

Hola amigos
 
Aquí estoy otra vez para plantermos mis problemas en este tan acogedor mundo de la programación en Labview.
 
Resumiendo para no aburrir. Sistema de adquisición. Hardware NI 9233 con usb carrier 9162.
 
Preparé la adquisición con 1 canal y todo iba perfectamente (no sin previos quebraderos de cabeza).
 
Para adquirir los 4 canales, simplemente copié y pegué los bloques 3 veces...
 
El Panel es el siguiente:
 
 
 
Pues nada, como veis, 4 canales, todos con las mismas opciones de configuración. Arriba pone "ACTIVAR" al lado de cada canal. Es un "boolean" que va conectado a un lazo "case structure". Si no lo activas, pues nada, no hace nada. Y si lo activas, pues pasaría a hacer la adquisición.
 
Del diagrama de bloques no es fácil hacer una sola captura porque sale muy grande, así que intentaré colocar lo importante y a parte subir el VI para que lo podáis abrir.
 
Esta sería una captura de la ventana de navegación del diagrama de bloques:
 
 
Como ves hay una lazo principal, el más grande, que engloba a otros cuatro. El primero es una "case structure" para elegir calibrado, adquisición o procesado. En este caso, estamos en adquisición.
 
Los otros cuatro lazos son los que configuran la adquisición de cada canal.
 
Os muestro a continuación una captura de la parte importante de los bloques:
 
 
Como veis, no he conectado nada al "task in" del "create virtual channel". No sé si ahí puede estar el problema. Con un canal nunca me dió problemas, no sé si al haber más eso influye.
 
El fallo que me da al adquirir es este:
 
 
Como se puede apreciar en la gráfica del canal 3, ha adquirido ese, pero en los demás me dice que no puede. Sé que el problema es que le estoy pidiendo varias tareas a la vez y que el recurso está siendo utilizado.
 
Lo que me gustaría saber es cómo podría solventar este problema. Si debo asignar diferentes "task in" a cada canal o si por el contrario el error está en otro lado. El problema del "task in" es que lo tengo que crear primero, con el asistente. Y claro, si luego yo creo un ejecutable y voy a otro PC a usar el programa, es posible que esas "task in" no existan en ese otro PC, por lo que me de algún error.
 
No sé si me dejo algo en el tintero por explicar. Por si acaso, aqui os subo el VI para que si os viene mejor podáis descargarlo y echarle un vistazo:
 
 
PD: Hay cosas, como el hecho de que me guarde un archivo .txt que no están acabadas, asi que mejor no os fijéis en eso, porque de momento no tiene mucha importancia.
 
Pues nada. Como siempre mil gracias. He intentado ponerlo lo más claro posible, pero soy consciente de que esto a veces sólo lo entiende quien lo ha programado, asi que cualquier cosa decidme y os contestaré en la medida de lo posible.
 
Saludos amigo.
0 kudos
Mensaje 1 de 11
5.493 Vistas

El error que te sale es debido a que hay recursos en tu placa de adquisición que no pueden compartirse entre más que un task, y cuando intentas lanzar uno nuevo te sale el error. Si quieres leer más que un canal al mismo tiempo, lo que debes hacer es añadir todos los canales por leer al mismo task; claro, si este ya está obrando tendrás que terminarlo antes de añadir los canales.

Otra solución para no parar la tarea de adquisición para añadir / quitar los canales: configuras tu adquisición para que adquiera siempre todos los canales y solamente decides cuál de ellos visualizar; esto es: tu control de "Activar" pasa a ser solamente un botón de "Visualizar mediciones", que si no está activado hace que las mediciones no pasel a la pantalla / archivo sino que se pierdan.

Para añadir más canales puedes poner varios bloques Create Channel si estos tienen diferentes características, u usar un solo bloque pasando el valor "Dev1/Ai0:3". Ten en cuenta que el valor mínimo y máximo por medir pueden ser pasados directamente al CreateChannel sin necesidad de añadir el channel node posteriormente.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 2 de 11
5.489 Vistas
"El error que te sale es debido a que hay recursos en tu placa de adquisición que no pueden compartirse entre más que un task, y cuando intentas lanzar uno nuevo te sale el error. Si quieres leer más que un canal al mismo tiempo, lo que debes hacer es añadir todos los canales por leer al mismo task; claro, si este ya está obrando tendrás que terminarlo antes de añadir los canales."
 
No acabo de entender cómo resolver el problema. Cómo añado todos los canales al mismo task. Yo no sé si está obrando o no como dices. No tengo más tareas que esas y las 4 deberían empezar al mismo tiempo.
 
 
0 kudos
Mensaje 3 de 11
5.483 Vistas
Bueno, creo que este ejemplo vale más que muchas palabras: mira al control "physical channels" en el que he indicado 4 canales.
 


Mensaje editado por Roberto Bozzolo


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 4 de 11
5.479 Vistas
Hola de nuevo.
 
Sí, así es una opción, pero no creo que me valga. El problema es que yo realmente no voy a hacer un procesado en tiempo real. Voy a guardar los datos en un archivo para luego realizar una serie de funciones. Entonces no sé si con este método tuyo podré diferenciar bien cada canal. A parte de que necesitaría un grafico para cada canal...
0 kudos
Mensaje 5 de 11
5.473 Vistas
El DAQMx Read vi restituye un arreglo de mediciones: cada elemento del arreglo contiene las mediciones adquiridas por un canal físico, así que para separar los canales es suficiente usar el index array: los elementos individuales pueden ser graficados en distintos indicadores y archivados en distintos archivos en el disco.


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 6 de 11
5.469 Vistas
Ummm, te agradezco muchisimo tu ayuda y el tiempo dedicado, pero me acabo de dar cuenta de que me plantea eso otro problema. El número de muestras y la frecuencia de muestreo tendría que ser la misma para cada canal y puede que me interesase que fuese distinta. ¿Eso sería posible?
0 kudos
Mensaje 7 de 11
5.463 Vistas

Esto no es posible en el hardware porque en tu tarjeta puede haber solamente una tarea de acquisición cada vez (¡esto es basicamente el motivo originante esta discusión! Guiño ).

Lo que normalmente se sugiere en estas situaciones es adquirir todos los canales a la más alta frequencia necesaria y descartar las muestras que no se necesiten en los canales a baja frequencia. Hay muchas discusiones sobre estos temas en los foros que aclaran esto límite y que puedes buscar y estudiar (yo encontré varias haciendo una búsqueda por "different scan rate" en el área Multifunction DAQ). También hay otros métodos que basicamente no utilizan las capacidades de clock de la placa de medición sino se apoyan a la capacidad de la computadora para garantizar la frequencia de muestreo: en estos casos se podrían tener diferentes frequencias de muestreo para cada canal pero todo el sistema se basa en la pc siendo capaz de sostener el proceso que requiere tu aplicación. Estos también pueden encontrarse con la misma búsqueda.

Ambos métodos tiene ventajas y desventajas: creo que tú debes evaluar si hutilizar un método u el otro. en dependencia de tus requerimientos.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 8 de 11
5.459 Vistas
Puff... Pues si sólo puedo poner una frecuencia, lo que haré será probar lo que me has comentado de usar el Index array para separar las diferentes mediciones y a ver si me sale algo decente. Lo intentaré y leeré esos temas que me comentas a ver si lo saco adelante.
 
En caso de no ser así, volveré a molestarte Guiño
 
Gracias por todo.
 
Saludos
0 kudos
Mensaje 9 de 11
5.457 Vistas

Hola , he leido todo el hilo sobre el error 50103 pero no consigo acabar de entender ciertas cosas: yo estoy planteando un programa para adquirir A LA VEZ intensidad (A) y tensión (V) de un panel solar a traves de sensores (tomaría tan solo un dato por segundo). Es absolutamente necesario que la lectura se haga al mismo tiempo ya que el cometido es obtener la potencia (W) multiplicando las lecturas de ambos sensores en todo momento. Querría saber si esto es posible o que opciones tengo para llevarlo a cabo. También sería interesante poder monitorizar las 3 variables (intensidad, tension y potencia) a la vez. Como digo he leido las distintas soluciones que se proponían a "Juachi" pero no las acabo de entender porque estoy empezando con el Labview. Si alguien pudiese contestar de forma especifica o con algún ejemplo sencillo le estaría muy agradecido.

Saludos

 

0 kudos
Mensaje 10 de 11
5.327 Vistas