Discusiones sobre Productos NI

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

ejecutar a una hora daterminada

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.

0 kudos
Mensaje 1 de 12
3.776 Vistas

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

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 12
3.768 Vistas
Hola BeCeGa,
 
Gracias por tu ayuda. Me ha sido de mucha ayuda,
Pero ahora lo que me sucede es que en la dquisición me da un error en VISA. (error 1073807253 occurred at VISA read in...)  Adjunto VI que he elaborado, así como "pantallazo" con el error que me dá. Ahora el VI lo tengo para que se ejecute cada minuto.
 
Saludos
 
Mak
0 kudos
Mensaje 3 de 12
3.756 Vistas

Perdón,

Me habia olvidado de enviar el VI.

 

Saludos

0 kudos
Mensaje 4 de 12
3.755 Vistas
Hola de nuevo,
 
por cierto, respecto al error que comentaba de la lectura del VISA; he descubierto que cuando pongo en marcha el VI en el modo "highlight execution" que va más despacio, no me da el error. Se aceptan explicaciones?
 
Saludos
 
Mak.
0 kudos
Mensaje 5 de 12
3.746 Vistas

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

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 6 de 12
3.739 Vistas

Hola BeCeGa,

Gracias por tus consejos. De momento, con lo que me has dicho ya no me dá error.

Saludos

Mak

 

 

0 kudos
Mensaje 7 de 12
3.733 Vistas

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.

 

0 kudos
Mensaje 8 de 12
3.189 Vistas

Cuales serian las pautas que tendria que tener para empezar a programar la adqusicion de datos de una balanza. muchas gracias.

0 kudos
Mensaje 9 de 12
3.186 Vistas

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

0 kudos
Mensaje 10 de 12
3.185 Vistas