el 05-23-2017 09:45 AM
Hola buenas tardes, como puedo hacer un delay en un formula node?
tengo el problema que al activarse momentáneamente una variable, esta es detectada en más ciclos de lo que deveria, como puedo evitar estos?
Espero haberme explicado correctamente.
Gracias
¡Resuelto! Ir a solución.
el 05-23-2017 12:22 PM
Hola Paico,
Tu problema suena a una condición de carrera en tu programación. Éstas son muy comunes cuando se utilizan variables locales/globales; por lo cual te recomiendo revisar tu diagrama de bloques y evitar su uso lo más posible. Una aproximación diferente es utilizar una arquitectura productor/consumidor, que permita enviar datos entre diferentes secciones de tu código, sin que éstos causen condiciones de carrera. Puedes encontrar más información aquí: http://digital.ni.com/public.nsf/allkb/0615A662C8525AED862579820056CEF3?OpenDocument
Un saludo!
el 05-23-2017 01:01 PM
No, no, bueno espera lo que he leído es que las variables se sobreescriben por no ir sincronizados los ciclos pudiendo perder información, pero eso no es lo que me pasa a mi. El problema es que si tengo tres acciones seguidas que se activan con l a misma variable como el ciclo está muy rápido las acciones se hace con un solo pulso tan rápido que no se ven, yo lo que quiero es que a pesar de haber 3 acciones en serie que se encienden con la misma variable sé enciendan con pulsos diferentes, si puedo luego subiré un ejemplo del vi.
gracias
el 05-23-2017 02:37 PM
Hola Paico,
En ese caso, me parece que hay dos respuestas: En principio no hay un comando de delay como tal disponible en el formula node, por lo que quizá quieras tomar una aproximación diferente al problema. Por otro lado, recomendarte utilizar el express VI de Time Delay para controlar la velocidad del flujo de tu programa.
Un saludo!
el 05-24-2017 05:12 AM
hola buenos días, mira un ejemplo simplificado de código seria el de la imagen, el cual si funciona pero si utilizo como variable de control la misma en ambos bucles (On) no funciona ya que la activación se hace antes de la desconexión del pulso...
Se que hay estructuras que pueden solventar este problema (aunque no las se utilizar) labview es un programa completísimo pero a veces hacer una pequeña cosa simple se vuelve un jaleo con los bloques.
Si tienes alguna sugerencia te lo agradezco
de todas formas gracias por la ayuda 🙂
el 05-24-2017 05:21 AM
El objetivo es hacer un menú rotatorio con dos señales, la estructura es tengo dos posibles opciones y al seleccionar una abro otro submenu con tres opciones donde una de ellas es retroceder al menú anterior desactivando el existente. La selección dentro de los menús de haría con una señal y el cambio de opción se realizaría con otra señal, he aquí donde me surge el problema!
el 05-24-2017 10:23 AM
Vale ya esta todo solucionado. Y la solución es la siguiente, tal vez sea un poco rebuscada por que lo que de la otra forma se hubiera resulto con un delay me a llevado a esto, pero bueno... funciona y parece que bien.
De todas formas muchas gracias Oscar. 🙂
el 05-24-2017 11:29 AM
Hola Paico,
Un gusto saber que has solucionado tu problemática. Muchas gracias por compartirnos tu solución.
Un saludo!