el 10-25-2007 01:48 AM
Hola,
Estoy realizando un programa para adquirir el peso de una balanza por el puerto RS-232 del ordenador. La adquisición queria realizarla cada hora, y lo he conseguido con un bucle “while loop”. El más difícil todavía es que quiero que me lo haga a las horas en punto (es decir, a alas 1:00, a las 2:00, etc, y no con cadencias de una hora). Dentro de los VI de “timing” no encuentro la forma de hacerlo. Alguien me puede ayudar.
Gracias de antemano.
Me parece un foro muy util.
el 10-25-2007 12:18 PM
Hola Mak, como aqui resaltas en tu pregunta hay una confusión muy común entre el tiempo de ejecución y tiempos controlados por software.
Los primeros son tiempos que le dicen como trabajar al procesador. Por ejemplo si tu colocas un solo ciclo while sin ningún wait y te vas a el Task manager, vas a notar que consume gran parte de tu procesador sino es que todo tu procesador. Esto es porque le estas diciendo que corra lo mas rápido posible. Esto es muy útil por ejemplo si quieres programar un método numérico y lo que quieres es que trabaje lo más rápido posible. Sin embargo cuando estás leyendo un panel frontal o algo similar no te interesa gastar todos los recursos de tu sistema en esto. Para controlar este tiempo puedes utilizar lo que son las estructuras de Eventos o funciones como el “Wait” o “Wait Until Next ms” o las Timed Loop.
http://zone.ni.com/devzone/cda/tut/p/id/4120
http://zone.ni.com/devzone/cda/tut/p/id/4324
Ahora para que se ejecute cada cierto tiempo podemos hacer varias cosas. Puedes utilizar el VI de Enlapsed time, por ejemplo para que se ejecute cada hora. Esto no va a ir sincronizado con la hora en forma automática pero se puede hacer y es una manera sencilla.
La otra opción es tomar la hora del sistema con los Vis de la Paleta de Timing, y con estos hacer comparaciones si se cumple la condición que quieres se ejecuta. Te anexo un pequeño ejemplo que manda un mensaje cada hora
Saludos
el 10-26-2007 08:10 AM
el 10-26-2007 08:11 AM
Perdón,
Me habia olvidado de enviar el VI.
Saludos
el 10-26-2007 10:28 AM
el 10-26-2007 11:12 AM
Hola mak45 el problema que tienes es básicamente un problema de sincronización, aquí cuando pones highlight execution el VI se ejecuta más lento por lo que desaparece este problema. Aquí unas pequeños cambios que podrías hacer a tu VI es el abrir y cerrar el puerto serial sácalo del ciclo while asi solo se ejecuta una sola vez, esto ayuda a que sea más eficiente. Por otro lado podrías agregar un Wait until next ms o un wait con un pequeño retardo dentro de tu ciclo while y esto tendría un efecto similar a corre el programa en highlight execution.
Saludos
el 10-26-2007 12:00 PM
Hola BeCeGa,
Gracias por tus consejos. De momento, con lo que me has dicho ya no me dá error.
Saludos
Mak
el 06-17-2011 01:51 AM
Hola amigos he leido sus comentarios y veo que me podrian dar algunas pautas para poder obtener datos de una balanza por el puerto serie rs 232, me prgunto si se puede hacer con cualquier balanza me refiero a la marca, me gustaria por favor me pudiesen ayudar con algunos ejemplos, les agradeceria.
el 06-17-2011 02:02 AM
Cuales serian las pautas que tendria que tener para empezar a programar la adqusicion de datos de una balanza. muchas gracias.
el 06-17-2011 02:12 AM
Hola fralver,
en principio cualquier balanza con RS232 puedes comunicarte. En primer lugar te hace falta saber velocidad, etc. que debe estar en el manual de la balanza. Te puede bajar el NI que esté en la web para ver como empezar. A mi me funciona al final.
Saludos
mak