Discusiones sobre Productos NI

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

representacion de datos

hola he realizado un programa de adquisicion de datos y control de un equipo de ultrasonidos y me gustaria saber como puedo representar los datos que voy adquiriendi a la  vez que ejecuto el programa. La adquisicion de datos la he sustitido por un señal simulada que asemeja el comportamiento del sistema medido.
Aqui os dejo el programa, para que os hagais una idea.Se que no es el optimo y posiblemente tendra muchos errores pero llevo muy poco tiempo trabajando cn labview.
0 kudos
Mensaje 1 de 8
3.625 Vistas

Hola Juanet Para representar los datos que vas adquiriendo simplemente puedes meterlos a una Waveform Graph o un Chart, simplemente conecta ahí tus datos adquiridos.

Puedes encontrar ejemplos de como desplegar tus datos en Help>>Find Examples, y ahí busca por Task, dentro de Building User Interfaces>>Displaying Data y puedes encontrar varios ejemplos

Con respecto a como hacer mejores programas, en este caso te recomiendo que cambies a una estructura de maquina de estados, en el siguiente link viene explicadas:

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

También puedes usar la guie que esta en el siguiente link para que te des una idea:

http://zone.ni.com/reference/en-XX/help/371361B-01/TOC38.htm

Saludos

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 8
3.606 Vistas

Muy buenas,

He estado mirando el tutorial sobre la maquina de estados y no veo como puedo aplicarla en mi caso excepto para diferenciar entre control y toma de datos, ademas no veo muy claro como tendria q hacer el metodo de seleccion de cada caso de forma que me respetase los tiempos en los que debe hacer control y los momentos en los que debe adquirir datos.  Podria por ejemplo con este metodo crear un caso q sea todo la inicializacion de mi sistema y el cual la maquina debe ejecutar all principio para despues quedarse en los casos d control y adquisicon de datos seleccionando cada uno segun sea necesario? y si es posible,  como puedo hacer para ejecute por ejemplo el control durante 10 min y haga una toma de datos para  despues continuar con el control del sistema.

Por otro lado es necesario q inicialice el puerto serie cada vez q ejecuto una accion sobre el mismo o por el contrario con inicializarlo al comenzar el programa y cerrarlo cuando temine de ejecutarlo es suficiente? 

0 kudos
Mensaje 3 de 8
3.595 Vistas

La maquina de estados puede verse en la forma mas sencilla como una sequence (similar a la que estas usando) en el cual cada estado equivaldría a uno de tus pasos en la secuencia, la ventaja que esta te probé es que el cambia de un estado a otro es dinámico, puede ser continuo o puede brincar de un estado a otro sin pasar por los intermedios dependiendo de la decisión, y como ventaja adicional es de que es escalable pues es muy fácil agregar un caso nuevo en la maquina.

Una forma de aplicarlo es cada etapa de tu programa cae como un caso, o si quieres darle todavía un poco mas de forma separa casos como dices uno de inicialización y uno de clausura, uno de toma de datos y otro de análisis de datos. 

En cada uno de los casos, el sistema puede decidir a que estado cambiar y si no a terminado el paso puede cambiar la mismo caso. Por ejemplo con el caso que mencionas de los 10 minutos, puedes poner el VI de elapsed time a contar los 10 minutos y si el tiempo no a terminado regrese a ese estado (como si estuviera en un while) durante 10 minutos, una vez que se cumpla el tiempo que pase al estado de análisis.

Con respecto a la inicialización de tu serial, puedes inicializarlo en estado de inicialización y en un estado de finalización cerrar la sesión (es muy importante cerrar la sesión del puerto serial. El hacer esto en lugar de abrir y cerrar la sesión cada vez que escribes hace más eficiente tu programa.

La parte de usar la maquina de estados mas que por la parte de que funcione tu programa era como sugerencia de arquitectura. Es una de las más aceptadas para programar en LabVIEW.

Saludos  

 

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 4 de 8
3.587 Vistas
Muy buenas Benjamin, siguiendo tu consejo he creado una maquina de estados,  y creo q si q mejora el comportamiento del programa. Ademas he añadido un caso para representar los datos q voy adquiriendo de manera enfrentado, pero he hecho algo de andar por casa ya que ocupa demasiada memoria por no hablar de que cuando paro el while del interior para reajustar manualmente losparametros como DB pierdo todos los datos representados anteriormente.
 
Te adjunto el programa global para ver si puedes oriemtarme un poco en la representacion.
 
Muchas gracias y un saludo.
 
Juan
0 kudos
Mensaje 5 de 8
3.574 Vistas

Hola Juanet estuve revisando tu VI, dos cosas que puedes hacer para mejorar el rendimiento de tu programa. La primera es para que no consuma todo el tiempo del procesador puedes poner un "wait unitl next ms" con una constate de 100 para liberar espacio en tu procesador.

Con respecto a que ocupa mucha memoria eso se debe a la forma en que estas manejando los arreglos.  Por lo general lo ideal es que inicialices el arreglo y utilices el VI de replace array en lugar de insert into array, con esto es mas eficiente el uso de memoria.  Inicializar los Arreglos implica usar una constante con un arreglo en 0 del tamaño igual o mayor del que esperas.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 6 de 8
3.566 Vistas

hola Benjamin, no me termina de quedar claro lo que quieres que haga. ¿donde debo poner el wait para liberar memoria del procesador?

Y respecto a la representacion de datos tengo otraduda, si hago replace array ¿pierde todos los datos adquiridos anteriormente?ya que me interesa saber como va evolucionando la medicion a lo largo del tiempo. hay alguna forma para q en la grafica XY simplemente añada nuevos puntos y no tenga que redibujarla completamente cada vez?

Gracias y un saludo.

Juan

0 kudos
Mensaje 7 de 8
3.557 Vistas
Hola Juanet, el wait colocalo dentro del ciclo while, esto libera espacio de porcesador, suficiente para que la computadora haga otras cosas, pero es tan peque;o que no vas a notar diferencia.
Con respecto al replace array te anexo un ejemplo espero que esto te sirva
Saludos
Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 8 de 8
3.525 Vistas