Discusiones sobre Productos NI

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

Almacenar datos de adquisición en fichero

Hola a todos. Debo almacenar los datos de una adquisicion 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. La cosa seria que me matenga bien los tiempos a lo largo de todo el fichero. Adjunto el VI.

 

Muchas gracias

0 kudos
Mensaje 1 de 3
2.876 Vistas

Hola!

 

Te dejo una liga que contiene un ejemplo que puede ayudarte a resolver tu problema.  El ciclo que te recomendaría utilizar es el tercero, el que abre y cierra el archivo fuera del while loop.  Esto hace mas eficiente tu aplicación, ya que realizas la adquisición dentro del mismo ciclo.  

 

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

 

Espero que te sirva!!

 

Saludos,

 

Anuar Rojas

Anuar R.
National Instruments México y Latinoamérica
Ingeniería de Aplicaciones
www.ni.com/soporte
0 kudos
Mensaje 2 de 3
2.785 Vistas

hola, bueno, primero, los datos que estas guardando no son compatibles con el formato que maneja matlab, recuerda que matlab usa el "." y no la "," para la representacion de valores decimales (recuerda que la "," es un separador de columnas), para arreglar esto usa los vi array to spreadsheet string.vi para hacer tu vector una cadena de texto y search and replace string.vi donde el vector de busqueda es una constante "," y el vector reemplazo es una constante "." y crea una constante verdadera para la entrada replace all? 

 

lo otro, una sugerencia, usa el vi daq assistant.vi, usa la configuracion continuous o n samples, con estas sabras que el tiempo entre toma de datos no es estocastico sino deterministico, con lo cual puedes reconstruir en matlab el vector de tiempo sabiendo cual es la frecuencia de muestreo, yo implemente una solucion parecida, creo que puedes encontrar mi codigo aqui, si deseas te puedo mostrar tambien el codigo en matlab para reconstruir el vector de tiempos.

 

espero que te halla servido, cualquier duda puedes contactarme por mensaje privado.

 

pedro rivera

pdta: es un poco peligroso que el timeout sea -1, a veces el timeout te ayuda a saber si se ha dañado tu equipo o de algun otro error, lo que te aconsejo es que si sabes cuanto se demorara pongas un timeout largo, de alguna manera puede darse el caso de que tu vi no pueda cerrar al generarse un error, bueno, es una recomendacion pero no creo que sea la causa del fenomeno que estas reportando.

.:. Pedro Rivera .:.
i love to work and develop on labview, this is real fun!!!
Photobucket
0 kudos
Mensaje 3 de 3
2.779 Vistas