Discusiones sobre Productos NI

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

llenado tanque

¡Resuelto!
Ir a solución

Hola a todos. Soy nuevo en labview. Estoy haciendo algunas practicas y me he encontrado con un problema que no se resolver. Si alguien sabe que ocurre que me lo diga, gracias!!!

 

Estoy haciendo un ejercicio de llenado de un tanque. Utilizo un slide (dbl) que va a un sumador. Una de las entradas es el slide, la otra es la propia salida del sumador, la cual tb va al tanque. Tengo más cosas puestas como un indicador de fecha y hora y poco mas. El problema es que una vez empiezo a llenar el tanque va muy bien pero de repente, creo que sale del sumador, aparece un valor extremadamente alto que me llena el tanque en un segundo. El slide como max se pone a 0,5. Por lo tanto la suma es de 0,5 por segundo (lo he puesto asi), y de repente, del sumador en vez de aparecer el valor anterior mas 0,5; aparece un valor muy alto.

 

Alguien sabe pq? 

 

Os pondría el vi si me deciis como!

 

Gracias

0 kudos
Mensaje 1 de 35
7.112 Vistas
Solución
Aceptado por el autor del tema serrano_10

Que tal:

 

He estado revisando tu VI, y efectivamente sucede que de tanto en tanto se obtiene una "rafaga" de agua jeje, y se llena rápido el tanque. Lo que está sucediendo es que estas mandando un Timeout variable a la estructura de evento, estas utilizando el campo "Second", de la fecha, entonces, cuando da el cambio de 59 a 0, le estas indicando un Timeout de 0 a la estructura, esto quiere decir q tiene que esperar 0 milisegundos (o sea nada) para ejecutar las instrucciones, lo que resulta en q lo haga tan rápido como puede la computadora, por eso vez un incremento tan grande y tan rápido. No es que sea instantaneo, sino que lo hace muy muy rápido.

 

Deberias cablear un valor constante al Timeout para evitar esta situación. Si tu objetivo es simplemente aumentar el nivel en cierta cantidad cada cierto tiempo, puedes ocupar una estructura mas simple para tú código. Por otro lado, no he estudiado al 100% tu condición de reset, ¿me puedes decir cuando pretendes reiniciar el nivel a cero?

 

Si me dices eso, te podemos ayudar en hacer una mejor codificación de tu VI.

 

Saludos

 

Robst.



Robst - CLD

Using LabVIEW since version 7.0


0 kudos
Mensaje 2 de 35
7.105 Vistas

ok, muchas gracias, probaré ahora mismo.

 

La condición de reset será cuando pase de un dia a otro. Pretendo guardar (en un futuro espero no muy lejjano) en una base de datos el agua que se va gastando por dia.

 

Como puedes ver, cuando son las 23:59:XX se activa un boolean que multiplica por cero el valor del tanque.  Obviamente antes deberé guardarlo en mi base de datos. (Pero aun no se, asi que primero veré si puedo solucionar todos estos fallos).

 

Muchas gracias.

0 kudos
Mensaje 3 de 35
7.103 Vistas

OK,  bueno, quedamos al pendiente de tus pruebas.

 

Cualquier duda o comentario adicional no dudes en postear.

 

Saludos.

 

Robst.



Robst - CLD

Using LabVIEW since version 7.0


0 kudos
Mensaje 4 de 35
7.097 Vistas

Hola de nuevo. Gracias por la ayuda del otro día. Ahora me he encontrado con un nuevo problema y no encuentro documentación para solucionarlo. Me gustaría hacer un panel en el cual aparezca un boton que cuando lo pulsas te haga introducir el nombre de un usuario que aparecerá tb como un boton debajo del boton de "nuevo usuario". No se si podrá hacerse.

 

Tb me salio el otro dia un error " you cannot use "xxxx.vi" recursively". Verás, tengo un vi llamado uno.vi que habre uno llamado dos.vi. Quiero poner  un boton "Atras" que habra en dos.vi el uno.vi. No puedo porq me sale ese error. ¿Algún consejo de donde debo mirar?

 

Gracias
0 kudos
Mensaje 5 de 35
7.054 Vistas

Que tal:

 

Bueno, antes de pasar a lo técnico, comentarte que en caso de tratarse de algun tema nuevo, siempre es mejor crear un nuevo hilo de discusión, para poder tener un mejor seguimiento de los temas.

 

Respecto a lo primero que comentas, creo que no entiendo exactamente que es lo que necesitas, ¿Necesitas invocar a un cuadro de diálogo para introducir el nombre de usuario? Si, es asi, puedes utilizar el Express VI "Promt User for Input", el cual te suministra un cuadro de diálogo básico para obtener entrada de usuario. O bien, si requieres algo personalizado, puedes diseñar un VI para que funcione como tu cuadro de diálogo y mandarlo llamar.

 

Respecto al mensaje "You cannot use "xxxx.vi" recursively", bueno, se refiere a que una función no se puede llamar a si misma, directa o indirectamente. Eso se llama recursión, y en otros lenguajes de programación es posible, pero en LabVIEW no. Bueno, en este caso se trata de recursión porque uno manda llamar a dos, pero dos manda llamar a uno. Si lo que quieres es implementar navegación entre pantallas, tal vez te convenga tener un VI "base", con un subpanel, y en el subpanel ir insertando el VI que necesites visualizar, según se indique con un panel de botones.

 

Dime si esto es lo que necesitas, o si me he equivocado en la interpretación, y poder ayudarte.

 

Saludos.



Robst - CLD

Using LabVIEW since version 7.0


0 kudos
Mensaje 6 de 35
7.042 Vistas

El problema no es un cuadro de dialogo. A ver si me hago entender. Es algo complicado y soy malo explicandome. Imaginemos un front panel con un sólo boton que pone "Nuevo usuario". Si le doy, aparecerá un cuadro de dialogo donde pedirá introducir el nombre. Ese nombre se guardará en una pagina excel. Cuando volvamos a la página anterior, ahora aparecerá el boton de "Nuevo usuario" y otro botón con el nombre del usuario. Si le doy al boton del usuario accederé a la página excel donde está guardado.

 

Lo que no tengo ni idea es el tema de hacer que aparezcan botones, y que además se les pueda dar una funcionalidad.

 

Alguna idea???

 

He conseguido hacer que un boton que ya existe aparezca y desaparezca usando el "vision" o algo así. Lo que quiero es llamar a alguna funcion que cree un booleano con el nombre de usuario que he introducido antes.

 

Gracias. 

 

Respecto al otro tema, no me he enterado muy bien de lo que me has dicho.

 

Gracias

0 kudos
Mensaje 7 de 35
7.030 Vistas

Que tal:

 

Bueno, respecto a crear botones programáticamente, es una característica que no está soportada oficialmente en LabVIEW, aún, creo que en un futuro no muy lejano lo haran, pero de momento no es oficial. La alternativa que puedes tener es "esconder" tu botón previamente usando la propiedad "Visible" con un Property Node, y hacerlo aparecer y desaparecer conforme lo vayas necesitando. Si necesitas cambiar el texto que muestra el botón, puedes igualmente escribir el valor deseado en las propiedades Label y/o Caption, según necesites.

 

Respecto a la recursión, o recursividad como tambien se le conoce, bueno, he investigado un poco mas, y sí la puedes implementar en LabVIEW, aunque no directamente. Para ampliar más este concepto, te dejo unas ligas donde se explica bien lo que es la recursión y como implementarla en LabVIEW.

 

http://math1.unice.fr/laboratoire/help/C/OldCtutor/ctutor/node62.html

http://en.wikipedia.org/wiki/Recursion_(computer_science)

http://es.wikipedia.org/wiki/Recursi%C3%B3n

http://www.desarrolloweb.com/articulos/funciones-recursivas-recursividad.html

 

 

Espero esta información te sea de utilidad, o bien si necesitas más ayuda o no es lo que necesitabas, no dudes en postear.

 

Saludos.

 

Robst.



Robst - CLD

Using LabVIEW since version 7.0


0 kudos
Mensaje 8 de 35
7.012 Vistas

Mil gracias por esos enlaces. Cuando acabe este vi os lo envío para que veais como ha quedado.

 

Bye!!

Mensaje 9 de 35
7.008 Vistas

Bueno, he conseguido la recursividad. El problema es que crea copias cuando hace la llamada, por lo que si quiero cerrar un .vi que ha llamado a otro, usando la properties "close", al no ser el original me da un error. Mejor pongo los .vi's para que lo veas tu mismo. Es extraño que un programa como Labview, siendo (o pareciendo) tan completo y útil no contemple una forma más sencilla y estable de llevar a cabo recursividad.

 

 

Descargar todos
Mensaje 10 de 35
7.003 Vistas