Discusiones sobre Productos NI

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

error en la adquisicion de datos

Hola:

 

Porfavor necesito que me ayuden:

 

Por que tengo un error al leer los datos con la daq usb 6008, cuando escojo como adquisicion continua, y no lo tengo cuando escojo la opcion n samples.

 

Aca tengo la configuracion de la tarjeta y el error.

 

 

Gracias.

Descargar todos
0 kudos
Mensaje 1 de 5
4.169 Vistas

Hola Silvi aquí el error no es de la configuración sino como está funcionando tu programa. Este problema lo que te está indicando es que se pierden muestras en el buffer y esto puede ser que estés haciendo muchas operaciones en tu ciclo por lo que tarda mucho entre leer muestras.

Por ejemplo si tu dices que tome N Samples y tome 100 muestras a 1Khz. Tu programa va a tomar solo 100 muestras y sigue tu aplicación. Si entre ciclos tu programa tarda 3 segundos. Tu estarías toman de 100 a 1Khz cada 3 segundos por lo que perderías muestras (pero no se genera un error). En otras palabras entre la muestra 100 y la 101 hay 3 segundos.

Ahora cuando tu pones adquisición continua, tu tarjeta sigue tomando muestras durante estos tres segundos. Cuando tu vuelves a pedir las muestras te va a dar las siguientes 100 muestras de las que tomaste la primera vez, de esta forma no pierdes muestras. El problema es que si estas tomando muestras muy rápido, o tu programa corre muy lento el buffer se llena y se pierden muestras que es lo que te indica este error. En otras palabras entre la muestra 100 y la 101 hay 1 ms

Para corregirlo puedes pasar cosas de este ciclo como escritura a archivos a un ciclo paralelo, o disminuir la velocidad de muestreo. Una arquitectura que se utiliza mucho para este tipo de casos es producer consumer, en la cual tomas los datos en un ciclo y los envías en un Queue, ya en otro ciclo los datos son procesados.

Aquí hay un ejemplo de como implementarlo:

http://decibel.ni.com/content/docs/DOC-2431

Y aquí hay mas información al respecto:

http://zone.ni.com/devzone/cda/tut/p/id/3023

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
Mensaje 2 de 5
4.162 Vistas
Gracias por su respuesta
0 kudos
Mensaje 3 de 5
4.148 Vistas

gracias por su ayuda si me podria ayudar como hago entonces el programa:

 

 

el objetivo es almacenar los datos durante 6 segundos en un array con un boton que indique desde cuando quiero empezar a almacenar, una vez tomados los datos los quiero manipular y por ultimo graficarlos entonces como haria para realizar esta operacion es que tengo problemas con esto, si me puede enviar un ejemplo o donde puedo encontrar ejemplos,

 

gracias

 

silvia

0 kudos
Mensaje 4 de 5
4.137 Vistas

Hola silvi  en Help>> Find Examples hay ejemplos tanto de como tomar los datos y como almacenarlos. Si quieres que tu adquisición empiece con el botón revisa los de software triggger, y especifica que quieres tomar 6 segundos de muestra (esto lo calculas en base al sample rate y el numero de muestras ej si quieres 6 segundos muestreando a 2 hz necesitas 12 muestras. La salida de este bloque seria un arreglo con todos los datos por lo que ya lo puedes manipular y escribir al archivo.

Saludos  

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 5 de 5
4.072 Vistas