Discusiones sobre Productos NI

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

DUDA SOBRE DETENCION Y ESCAPE DE PROGRAMA

Hola gente, es mi 2do post, en esta oportunidad tengo una duda un tanto basica si se quiere , pero la verdad es que las detenciones y salidas de un programa son de lo mas importantes a la hora de armar uno.

Estoy realizando un autoclave, que es un pequeño contro de temperatura y presion implementando maquina de estdos con un case, para ello tengo principlamente ejecutandose dos while en paralelo. Necesito lo sigueinte

1- Apretar un boton DETENER, y que el programa no continue al estado siguiente.Alli se quede..esperando que se aprete el boton INICIAR nuevamente

2- un boton SALIR, que este me saque directamente de la ejecucion del programa

 

Una de las opciones que probe para detener los dos bucles while fue configurar una variable local del boton stop y con ello tb su accion mecanica porque sino da error , lo puse en (Switch when pressed), pero al volver a apretar run, ese boton ya quedo configurado en stop y no pude restaurarlo a su posicion original.Agradezco desde ya vuestas sugerencias y que tengan una feliz navidad proxima

 

captura_bloques_autoclave.jpg

0 kudos
Mensaje 1 de 3
2.742 Vistas

Hola Totem723, 

 

si vas a usar una variable local, debes tener cuidado con las "condiciones de carrera" (race conditions), es decir, cuidar de no leer y escribir las variables al mismo tiempo. NI recomienda usar la variables locales para actualizar indicadores, es decir, para lectura. 

 

En tu caso, lo que podrías hacer es, al momento de terminar el código, llevar a la variable local a su valor False. Esto lo podrias hacer colocando una estructura flat (flat sequence) entre el while y el simple error handler, como muestra la siguiente imagen. 

Capture.JPG

Así te aseguras de que, antes que termine el código, el botón de Stop ya no está más presionado, y listo para la siguiente ejecución. También puedes hacer esto al inicio del código, antes de entrar al While. Esto es una buena práctica también, especialmente cuando tienes varios tipos de variables (locales, globales, compartidas, etc). Si estás usando una máquina de estados, podrías crear un estado de "inicialización" en donde inicialices todas tus variables. 

 

Quizás hayan otras formas de hacer esto, pero creo que es lo más sencillo y efectivo que podrás hacer.

 

Espero haberte ayudado, y que tengas unas felices fiestas. 

 

Patricio Cortes | NI Cono Sur
0 kudos
Mensaje 2 de 3
2.725 Vistas

Muchas gracias por la ayuda! comienzo con las pruebas y comento como me fue

0 kudos
Mensaje 3 de 3
2.692 Vistas