From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

adquisicion deterministica de multiples canales analogicos para formato matlab

hola, tengo que adquirir 4 señales, 3 analogicas y una digital y guardarlas en un documento de texto con formato tipo matlab. ya tengo resuelto un vi que me cambia formato labview a formato matlab y el de escibir los datos en el documento de texto, originalmente use un diseño de adquisicion de datos temporizada por software, adquisicion "on demand" pero debido a que el tiempo entre datos no es deterministico debo usar una adquisicion temporizada por software, la que aparenta ser la mejor solucion es la adquisicion de datos "continuous" que toma n datos a una frecuencia determinada, luego saca los datos tomados y se detiene cuando el usuario lo detenga mediante un pulsador.

 

quiero saber si el hecho de poner un vi para guardar estos valores en un documento de texto dentro del vi me introduce un retardo en la adquisicion de datos que pueda ser tomado en cuenta, puedo medir este retardo?.

 

muchas gracias por su ayuda

 

pedro rivera

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

Hola pedro :

 

Con los datos que proporcionas parece difícil hacer un diagnostico del problema como tal, ademas no añades el código para poder evaluarlo. Lo que te recomiendo es en la pestaña de herramientas busques la opción de "Perfomance and Memory" dicha aplicación te indicara cuales son los sub VIs que tardan mas tiempo.

 

En lo personal te recomiendo que si buscas desempeño al usar el DAQ utilices un arquitectura Producto Consumidor. Si no sabes lo que es este sería un buen comienzo:

 

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

 

y después

 

http://forums.ni.com/t5/LabVIEW/Producer-Consumer-Architecture/td-p/494883

 

¡Espero te resulte útil! 

0 kudos
Mensaje 2 de 12
4.075 Vistas

gracias por el dato de la opcion performance and memory laratronik, creo que usare solo esa, respecto a la arquitectura productor consumidor no es necesaria debido a que la tarjeta cuando mide en el modo continuous hace uso del buffer interno para que no se pierdan las mediciones.

 

por cierto, sabes si se puede crear un nodo de propiedades de una generacion de datos o de un vi daq assistant?

 

gracias

pedro rivera

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

Perfecto Pedro :

 

Te comentaba lo del productor consumidor por que asumo lo siguiente:

1) Tu flujo ode datos es Adquiero -> Proceso -> Guardo

2) Al correr el Perfomance and Memory te darás cuenta cuales son los SubVIs que mas tardan ejecutarse.

3) SI la lentitud es debido a que tardas mas en procesar que en adquirir la arquitectura mencionada puede ayudar.

 

Si tu consideras que no es el caso seguir esta arquitectura, y te das cuenta que la lentitud se deriva a partir de SubVIs que tu programaste una opción que podría ayudarte, es hacer el SubVI o SubVIs "reentrant" (Pestaña archivo -> VI properties). Esto te ayudaría a evitar el depender de que el SubVI termine de procesa para volverlo a ejecutar.

 

Sobre los nodos de propiedad de la DAQ te refieres a esto:

 

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

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

 

Espero te resulte útil y si surgen mas dudas no dudes en preguntar.

 

Saludos

 

Luis Eduardo

Mensaje 4 de 12
4.064 Vistas

hola, gracias por la informacion, me parece sumamente interesante lo del subvi reentrant, lo que significa es que podria en un momento tener funcionando dos veces el mismo subvi?, 

 

la adquisicion de datos en el daq assistant es "continuous" y dice que tiene un buffer interno para no perder datos, el tiempo de muestreo es de 260hz y tomo 65 muestras, se esta demorando menos de un milisegundo en el procesamiento de datos y en el guardado que estoy haciendo, pero le queria preguntar como puedo guardar el valor de una salida analogica, lo que pasa es que esta adquisicion de datos es de 4 sensores simultaneos pero me gustaria guardar la señal de esfuerzos de control que estoy mandando a mi planta para poder ver el tiempo de respuesta de mi planta y de los sensores para obtener datos para una identificacion, pensaba recuperar los datos de la salida de mi canal analogico ao1con un nodo de propiedad del canal ao1y crear un vector de 65 valores para concatenarlos con los vectores de mis señales analogicas, idealmente los dos indicadores tipo cadena no van, los estaba usando para depurar la parte en la que encuentro las comas de una cadena y las reemplazo por puntos para usar los datos en matlab, muchas gracias y abajo esta el codigo en cuestion

 

rutina de adquisicion.JPG

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

Pedro:

 

Muchas gracias ya veo el problema.

 

Te anexo un simulador de DAQ  (Versión 8.0 y 9.0) que espero pueda ser de gran utilidad sobre todo en el uso de convertir de tipo de valores dinámicos. Para que puedas aislar tus señales por separado y guardarlas juntas o separadas. 

Utilizo el "Write to Spreadsheet file" para ira añadiendo la información y no sobre escribir el archivo (por si lo necesitas). Y lo puedes guardar con extensión .txt  y si quieres abrir el archivo usa el "Read from text file" .

 

Sobre lo del punto si estas en sistema operativo Windows puedes cambiar en preferencias de idioma para que en vez de regresar la coma regrese punto decimal.

 

¡ Espero ayude a resolver tu problema !

0 kudos
Mensaje 6 de 12
4.056 Vistas

Pedro:

 

Olvidaba sobre lo del VI Reentrante. Y si como menionas puedes usar el código en parelo. Labview implementa muchos de sus VIs de esa manera para mejorar su desempeño. Te dejo una liga con mayor infromación!

 

http://digital.ni.com/public.nsf/allkb/98847B4E4C715E6D86256C59006B57CC

 

0 kudos
Mensaje 7 de 12
4.054 Vistas

gracias luis eduardo, me es de mucha ayuda toda la informacion, hasta pronto, buscare informacion de como cambiar de coma a punto, lo que pasa es que todo el procesamiento de datos que tengo que hacer tengo que realizarlo en matlab, y matlab toma las comas igual que el separador tab.

 

pedro rivera

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

Perfecto, si quieres almacenar tu señal puedes usar un shif register en el ciclo (lo inicializas con un array vacío) y utilizas un build array (como concatenate) para almacenar los datos (Considero que esto es mejor que un poperty node del DAQ).

 

 Si estas en windows sabias que puedes mandarle los datos directamente a matlab usando un Matlab script node, puede ser que te sirva.

 

Saludos

LE

0 kudos
Mensaje 9 de 12
4.046 Vistas

no lo habia pensado de esa manera luis eduardo, pero me queda una duda, si yo estoy generando un vector de 125 mediciones muestreando a 500hz y en la medicion numero 25 cambio mi esfuerzo de control de, por ejemplo, 20hz a 30hz (frecuencia de un variador para controlar una motobomba) tendria como salida final deseada un vector con los primeros 25 datos en 20 y los otros 100 datos en 30, pensaba en usar el vi get date/time in seconds, pero solo tendria una resolucion de un segundo y por mediciones anteriores se que entre el tiempo en que yo envio una señal a mi variador y el tiempo que se demora en responder mi motobomba hay aproximadamente 19 milisegundos, quiero generar un vector de esfuerzo de control con el que pueda ser capaz de registrar este tiempo de demora.

 

muchas gracias

 

pdta: puedo usar la funcion export2wsdlg para exportar mis datos directamente al workspace matlab?, gracias

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