el 02-09-2007 06:40 AM
el 02-10-2007 03:27 PM
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
el 02-12-2007 07:21 AM
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?
el 02-12-2007 05:53 PM
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
el 02-14-2007 11:16 AM
el 02-14-2007 04:26 PM
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
el 02-15-2007 03:28 AM
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
el 02-17-2007 11:34 AM