el 01-19-2012 04:07 AM
Hola a todos. Estoy haciendo un programa que debe capturar datos de varias entradas analogicas de la tarjeta 6218USB. La adquisicion son voltages que debo mostrar en una grafica en tiempo real y almacenar en un fichero de texto. La captura no tiene una duracion fija, puede ser minutos o horas.
Como puedo hacer para que los datos se capturen indefinidamente y se vayan mostrando en la grafica?.
El problema es que si pongo una duracion de la adquisicion de por ejemplo 0.1 segundos para que que coja datos y los muestre en una grafica y repita el proceso hasta que se presione un boton de stop en la en la graph solo se muestra ese 01sg, si utilizo un chart para que muestre todos los datos quedan espacios entre medio de cada periodo de captura.
El VI esta hecho con la version 2011 con DAQmx
Seguro que es algo sencillo, pero no tengo mucha experiencia y le he dado muchas vueltas y no consigo sacarlo. Muchas gracias de antemano.
¡Resuelto! Ir a solución.
el 01-20-2012 05:53 AM
Hola, Álex,
la aplicación que comentas es de lo más común en DAQmx. El problema que tienes es que has hecho una adquisición puntual. Para hacer la adquisición de varios canales en continuo, has de incluir un bucle while en el código.
El problema que tienes con el tiempo de 0,1 s es que eso es el timeout, es decir, el tiempo para el cual se para la aplicación si no ha recibido dato alguno.
Te mando un código hecho con la API de DAQmx para adquirir de los canales 0, 1 y 2. Funciona, está contrastado. Por cierto, es mejor que programes con la API directamente y no crees el código de bajo nivel a partir de un bloque exprés como has hecho hasta ahora.
Te mando un tutorial de DAQmx para que amplíes conocimientos:
http://zone.ni.com/devzone/cda/tut/p/id/5434
También puedes encontrar diversos ejemplos de programación en LabVIEW >> Help >> Find Examples...>> Browse >> Directory Structure >> DAQmx.
Un saludo.
Jesús.
el 01-20-2012 06:39 AM
Estoy usando la version 2011 y no me deja abrir el archivo, podrias pasarmelo en la version correspondiente para que lo pueda abrir? muchisimas gracias
el 01-20-2012 06:40 AM
Disculpa, error mio, uso la version 2010, perdon 😞
el 01-20-2012 06:51 AM
Hola, Álex,
estaba en la 2011. Te lo mando en la 2010 por si acaso y una captura del DB por si no puedes abrirlo.
Saludos.
Jesús.
el 01-20-2012 07:44 AM
Muchas gracias, me has servido de gran ayuda. Ahora debo almacenar esos datos en un fichero de texto, para tratarlos con matlab. de forma que tenga los valores de tiempo en una columna y los voltages adquiridos en las siguientes columnas. He hecho una prueba y almacena los datos correctamente, pero los tiempos no.
Si en el DQmx Read le doy por ejemplo 100 samples por canal, lee 100 muestras y luego otras 100 y asi... y en cada iteracion los tiempos comienzan de nuevo.
0,0000E+0 -5,4795E-2 -2,3887E-2 -5,0520E-2
1,0000E-3 -6,7618E-2 -3,8025E-2 -6,2686E-2
2,0000E-3 -7,7483E-2 -4,8219E-2 -7,2551E-2
3,0000E-3 -8,2086E-2 -5,4466E-2-7,6496E-2
4,0000E-3 -8,1757E-2 -5,5781E-2 -7,5510E-2
........
........
........
0,0000E+0 -2,0927E-2 8,3369E-3 -1,8954E-2
1,0000E-3-3,8025E-2 -8,4324E-3 -3,6053E-2
........
........
Si pongo este valor en -1, se supone que va tomando todas las muestras segun esten disponibles, pero obtengo los mismo que antes con la diferencia que en vez de empezar los tiempos cada 100 muestras lo hace de forma aleatoria.
No se si es cosa del timeout, lo puesto a -1 tambien para que espere indefinidamente, pero parece que no tiene nada que ver. Adjunto el VI
el 01-20-2012 07:48 AM
Hola, Álex,
¿podrías abrir otro hilo independiente copiando tu último post? Es para organizar mejor la información del foro y no mezclar churras con meninas. En cuanto lo tengas, te escribo la solución y un pequeño ejemplo con transferencias de datos por colas para volcado a disco, que creo que es la mejor opción.
Un saludo!!
Jesús.
el 01-20-2012 07:49 AM
Por cierto, cuando lo hagas, marca la entrada de la solución de este hilo para que otros usuarios con el mismo problema puedan identificarlo rápidamente.
Jesús.
el 01-20-2012 07:51 AM
Ok. muchas gracias
el 03-10-2014 01:28 AM
Hola que tal tengo que realizar este ejercicio pero realmente no se como realizarlo cualquier aporte se agradecería
Realice un Vi, que en el panel frontal se simule el arranque de una torre de
enfriamiento (ventilador en movimiento/led encendido), y la detención con un
botón por medio de una DAQ. El arranque del ventilador debe cumplir con una
rampa de aceleración que este de 15 al 100%, la curva de aceleración debe
tener un ángulo de 18°, calcule los incrementos de aceleración y muéstrelo en
una gráfica. La señal de aceleración debe estar de 0 a 5V en una salida.