Discusiones sobre Productos NI

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

Mandar email cuando se cumpla una condicion y otras cosas

Tengo varias dudas y espero que me puedan ayudar. Llevo apenas 2 semanas trabajando con Labview y entre lo sencillo que es su interfaz y tutoriales he avanzado algo pero creo que no he logrado la maxima eficiencia del producto.

 

Basicamente es una interfaz que monitorea un tanque de oxigeno mediante una TAD de Arduino Uno.

 

Sin embargo mis problemas son los siguientes:

 

1) Cuando la variable de "Litros" sea menor a 200 se mande un email alertando que esta proximo a acabarse, lo que pasa es que se repite muchisimas veces colgando mi VI. Vi algo llamado time loops, que quiero que revise esa condición cada 20min, sino que continue el proceso.

 

2) Hice los elementos muy grande para mi pantalla y los hice en un Tab Control y ahora no puedo ver la interfaz completa sino partes de ella, y no consigo maneras eficientes de reducirlos.

 

Cualquier ayuda es muy importante, les dejare 2 imagenes de los problemas y el VI para que alguno lo vea.

 

Descargar todos
0 kudos
Mensaje 1 de 7
2.802 Vistas

Hola Josumaru

 

Para el tipo de aplicación que estás desarrollando una alternativa es usar una "maquina de estados". Creando estados para leer el nivel, compararlo y enviar el correo de así ser necesario o regresar al estado de leer el nivel. De esta forma ejecutaras las acciones secuencialmente y aseguraras que una vez que el nivel de oxigeno sea menor a 200 litros, el mail sea enviado una sola vez.

 

En esta liga: http://www.ni.com/academic/students/learn-rio/state-machine/esa/

podrás encontrar más información sobre como hacer una "maquina de estados". Además en la barra de herramientas de Labview puedes ir a Help>>Find Examples y en la pestaña de Search buscar "State Machine Fundamentals" y encontarás un template en el que puedes basarte.

 

De igual manera te recomiendo que uses SubVIs para hacer tu diagrama de bloques modular y más sencillo de leer; puedes usar los SubVIs para hacer las conversiones de unidades, por ejemplo. Acá te dejo un link que explica esto: http://www.ni.com/white-paper/7593/en/

 

0 kudos
Mensaje 2 de 7
2.762 Vistas

Hola Cmurillo. Gracias, tenia en cuenta que no estaba optimizando bien mi programa pero por desconocimiento de las MILES de herramientas del LabView.

 

Nada de arreglar el tamaño que se ajuste a la pantalla? Simplemente voy a ajustarlos.

0 kudos
Mensaje 3 de 7
2.738 Vistas

Hola Josumaru,

 

Dando seguimiento a tus preguntas, puedo comentarte lo siguiente: 

1) Revisando un poco más a detalle tu código, entiendo que el ciclo de la izquierda es el que lee el sensor ¿cierto? Si mi deducción es correcta, es posible que tu código este incurriendo en "condiciones carrera". Las condiciones carrera se dan cuando cuando utilizamos una variable local, global o compartida para transferir datos entre dos ciclos en paralelo, esto se debe a que los ciclos no están corriendo a la misma velocidad, pues la velocidad a la que el sensor puede recopilar datos (hardware) no es la misma a la que el programa (software) la está ejecutando, lo que genera perdida de datos o mediciones duplicadas, según sea el caso.

 

En este link encontrarás un poco más de información sobre las condiciones carrera y una posible alternativa de solución: http://digital.ni.com/public.nsf/allkb/0615A662C8525AED862579820056CEF3

 

También pude observar que la parte de tu código que se encarga de comparar el nivel, no se encuentra dentro de algún ciclo, lo que significa que dicha comparación se realizará una sola vez cada que corres tu VI. Mi recomendación es que realices esta comparación dentro de un ciclo  con el objetivo de que se ejecute constantemente mientras tu VI este corriendo.

 

De igual forma es importante considerar como es el flujo de datos en Labview, un nodo del diagrama de bloques se ejecuta una vez que ha recibido todas las entradas requeridas. Esto te ayudará a comprender qué está leyendo y/o ejecutando tu código en cada momento e identificar los posibles errores. Aquí encontrarás un poco más de información al respecto: 

http://digital.ni.com/public.nsf/allkb/0615A662C8525AED862579820056CEF3

 

Como te comente en mi respuesta anterior, considero que la "Maquina de estados" es una forma util de implementar tu aplicación

 

2) Para escalar el panel frontal puedes intentar lo siguiente:

  1. Selecciona todos los objetos en el panel frontal (Ctrl+A) 
  2. En la barra de herramientas selecciona la flecha hacia abajo en "Reorder" y despues Group, esto agrupara todos los objetos como uno solo.
  3. Selecciona el objeto agrupado, clik derecho y selecciona "Scale Object with Pane"
  4. Dimensiona el objeto de acuerdo a tus necesidades.

 

Saludos!!

 

 

 

0 kudos
Mensaje 4 de 7
2.728 Vistas

Si ya incluí la comparación dentro un ciclo, sabia que no estaba del todo optimizado mi codigo pero funciona, gracias por tus recomendaciones. Ahora funciona mucho mejor con el state machine, uno  de los errores que me ocurrian era que mandaba cierta cantidad de email por min y el servidor SMTP se colgaba, ya logré solucionarlo.

 

Respuestas:

1) Si la parte de la izquierda es el ciclo de adquisicion de datos del sensor y creo que le habia dado una solucion con el "Wait until next multiple", gracias por acotar y hasta ahora he probado el sensado y el VI y no se desborda.

 

Acerca del diagrama de bloques de ejecutarse una vez haya recibido todas las entradas requeridas me reenviaste lo de la condicion de carrera.

 

Te enviare pronto el VI actualizado, creo que quedo mucho mejor.

0 kudos
Mensaje 5 de 7
2.717 Vistas
CMurillo otra cosa: Una de las cosas que me plantie para este "proyecto" es montar mi VI en una pagina web o algun "servidor" para que sea distribuida por cualquier cliente que ingrese a esa ruta. He estado viendo por encima la parte de Web Publishing Tool y creo que no funcionara, porque no se si le asigne una IP fija y no podré verlo desde el telefono, por ejemplo. He visto algunas alternativas pero me gustaria tambien que me recomendaras una solución, te adjunto un diagrama del proceso mas o menos general.
0 kudos
Mensaje 6 de 7
2.713 Vistas

Hola Josumaru,

 

Que gusto escuchar que la "state machine" te funcinó!

 

Respecto a lo que te comentaba del flujo de datos en Labview, te adjunto el enlace correcto: http://www.ni.com/getting-started/labview-basics/esa/dataflow

 

Para monitorear tu proyecto vía remota "Web Publishing tool" puede funcionar, sin embargo para monitorearla es necesario instalar "LabView Run Time Engine" para poder desplegar el sitio web.

 

Te comparto algunos enlaces que te ayudaran a crear el Web server para monitorear tu aplicación. Si necesitas más apoyo al respecto, te agradecería que abrieras un nuevo foro para tratar este tema en particular, esto con el objetivo de no "mezclar" temas diferentes en un mismo thread.

 

http://zone.ni.com/reference/en-XX/help/371361P-01/lvconcepts/viewing_fp_remote/

 

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019LsaSAE

 

Saludos,

0 kudos
Mensaje 7 de 7
2.688 Vistas