Discusiones sobre Productos NI

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

Usar 32 entradas analógicas con el mismo subvi

¡Resuelto!
Ir a solución

Hola, estoy programando en labview para mi PFC. Tengo que medir 32 entradas analógicas a la vez, como el programa es el mismo, lo que he hecho ha sido hacer un subvi y luego en el programa principal lo he puesto 32 veces y con los "physical channel" correspondientes a cada entrada. Pero me he dado cuenta que realmente sólo coge una de las entradas, es decir, es siempre la misma entrada las 32 veces. No sé si es que de esta manera es imposible hacerlo o que estoy haciendo algo mal. Adjunto el subvi.

0 kudos
Mensaje 1 de 16
4.315 Vistas

Hola magalee.

 

Las 32 entradas analógicas que mencionas las obtienes de una sola tarjeta?

 

Si este es el caso la solución es muy sencilla, únicamente en el control de physical channel  necesitarías hacer lo siguiente Dev1/ai0:31 te adjunto una imagen para que lo visualices mejor.

 

Saludos

NI Applications Engineer

Alfredo Lugo

0 kudos
Mensaje 2 de 16
4.301 Vistas

Sí, obtengo todas las entradas de la misma tarjeta. Eso ya lo había realizado y aún así sigue sin funcionarme.

0 kudos
Mensaje 3 de 16
4.294 Vistas

Se me ha olvidado mencionar y creo que es lo más importante, que quiero realizar las 32 mediciones a la misma vez con el mismo subvi, es posible?

0 kudos
Mensaje 4 de 16
4.291 Vistas
Solución
Aceptado por el autor del tema magalee

Hola qué tal magalee.

 

Parece ser que no había comprendido tu pregunta, pero ahora que la replanteé creo tener tu solución. Básicamente lo que quieres hacer es meter 32 entradas a un Sub VI, bueno esto no se puede hacer de esta manera, ya que un Sub VI tiene como número de entradas máximas 28 terminales (para entradas y salidas), por lo que tendrías que utilizar 14 entradas y 14 salidas en un Sub VI, además esto no sería muy óptimo para tu código. Una manera simple de solucionar esto es:

 

• Utilizar un cluster y generar dentro del cluster las 32 constantes de los canales que utilizarás.

 

Así de esta manera tu Sub VI sólo necesitará una entrada y únicamente necesitarías una función de unbundle para volver a obtener tus 32 constantes de los canales virtuales y ya procederías a inicializar las tareas de cada uno, así como su lectura, si es lo que quieres en tu aplicación o si generes una tarea y lees los 32 canales y los despliegas en un solo indicador. Te adjunto un pequeño ejemplo de cómo podrías utilizar dos tareas simultaneas, simplemente para que puedas observar que necesitarías inicializar la tarea para cada canal, así como su lectura y su finalización.

 

https://decibel.ni.com/content/docs/DOC-3864

 

Saludos..que tengas un excelente día.

 

NI Applications Engineer

Alfredo Lugo

Mensaje 5 de 16
4.271 Vistas

Efectivamente ese era mi problema. Lo solucionaré de este modo. Muchas gracias

0 kudos
Mensaje 6 de 16
4.249 Vistas

Lo he realizado de la misma forma y me sigue apareciendo el error diciendo "The specified resource is reserved".

Conseguí obtener las 32 entradas poniendo los 32 DAQmx en serie, de esta forma no es que sea muy eficiente, pero sí que consigo obtener las salidas correspondientes. He intentado que sea más óptimo de la forma explicada anteriormente pero me sigue saliendo el mismo error que me salía antes.

0 kudos
Mensaje 7 de 16
4.246 Vistas

Hola magalee.

 

Si pudieras enviarme un print screen para lograr visualizar lo que estás haciendo sería de gran ayuda. Según entiendo lo que necesitas es inicializar los 32 canales en tu VI principal y tratarlos en tu Sub VI, cierto?. Si este es el caso tal vez está imagen pueda ser útil, pero si no envíame el print screen para poder ayudarte de una mejor manera.

 

Saludos que tengas un excelente día.

0 kudos
Mensaje 8 de 16
4.244 Vistas

Hola Alfredo, aquí te mando unas imágenes para que veas lo que intento hacer. La idea de hacer un subVI es porque esto tengo que meterlo en un programa más grande. El programa "main" que hice era sólo para probar si de este modo funcionaba pero lo que luego haré realmente es meter los datos en un graph xy porque necesito que sea en función de otra variable. Gracias por todo!

Descargar todos
0 kudos
Mensaje 9 de 16
4.241 Vistas

Hola magalee, disculpa la tardanza.

 

Si estás utilizando tus canales de entrada como “estáticos”, que no modifican su canal de entrada como por ejemplo el primer canal es siempre ai0, lo mejor que puedes hacer es definirlo como constante, por lo que en tus SubVIs simplemente necesitaras generar un error closter in y un error cluster out, así como la salidad de la tarea, para poder inicializarla. Te adjunto un pequeño VI donde podrás observar esto de una mejor manera. Una última pregunta, el problema básicamente se enfoca en poder inicializar las 32 entradas en un SubVI y trabajar estas entradas en un VI principal, tal como lo muestras en tu imagen verdad?

 

Si este es el caso puedes inicializar las 32 en un solo SubVI así como se ve en el ejemplo de VI que te adjunto. Si el problema fuera por otro lado porfavor hasmelo saber.

 

Que tengas un excelente día.


Saludos…

0 kudos
Mensaje 10 de 16
4.149 Vistas