Máquina de estado (programación de LabVIEW)


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Una máquina de estado es un tipo de técnica de programación que se utiliza en la mayoría de lenguajes de programación diferentes. La máquina de estado es una herramienta especialmente importante y flexible que se utiliza en la programación de LabVIEW porque la codificación es muy fácil de mantener, documentar y reutilizar. [1]

Introducción a las máquinas de estado

Las máquinas de estado giran en torno a 3 conceptos: el estado, el evento y la acción. El estado es la posición o estado en el que se encuentra el programa cuando está resolviendo el problema. Por ejemplo, un estado podría estar esperando que el usuario haga algo o ejecutando un cálculo. Los estados trabajan para ayudar a dividir el panorama general y ayudar a que todo funcione mejor. Desarrollarlos sabiamente ayudará a que la máquina estatal funcione de manera más eficiente. Los eventos son sucesos que tienen un significado específico para el programa en sí. El ejemplo que estaremos construyendo es una máquina expendedora que dispensa un artículo después de que el usuario ha introducido la cantidad correcta de dinero. Un evento para este programa podría ser el dinero que se inserta o la persona que presiona el botón de inicio. La acción es cómo reaccionará el programa ante el evento particular que ha ocurrido.[1]

Máquinas de estado en LabVIEW

En LabVIEW , las máquinas de estado son aún más poderosas. Una máquina de estado puede ayudar al programa a responder inteligentemente a diferentes tipos de datos que el usuario podría ingresar. [1] Para ayudar a explicar esta característica, usaremos un programa de máquina expendedora simple para ayudar a ilustrar la técnica.

Dispositivos comunes de una máquina de estado

Un bucle while simple ubicado en un bucle while usando constantes enumeradas y registros de desplazamiento

En LabVIEW, las máquinas de estado pueden iniciarse simplemente creando un ciclo while con una estructura de caso ubicada dentro del ciclo. El ciclo while puede tener una constante especial conectada a él, llamada constante enumerada. Una constante enumerada es una palabra o frase constante que se cambia a un entero simple de 0 a n - 1, donde nes el número de casos que le gustaría tener al usuario. Hacer esto hace que la programación sea mucho más fácil de entender para el usuario porque, en lugar de mirar códigos numéricos, están buscando algunas palabras que describen lo que está sucediendo. Una máquina de estado también depende en gran medida de los registros de turnos. Un registro de desplazamiento se utiliza para pasar información en un bucle while. Por ejemplo, un registro de desplazamiento comenzará con información sobre la que se trabajará en el ciclo. Una vez finalizado el trabajo, se puede guardar un nuevo valor en el registro de desplazamiento para usarlo al inicio del ciclo la próxima vez. [2]A continuación, todo lo que tiene que hacer el programador es agregar tareas a cada caso individualmente. Después de que se crea la constante enumerada inicial, a menudo vale la pena convertirla en una definición de tipo (comúnmente conocida como definición de tipo). Convertir la constante enumerada en un tipo def. permite al usuario continuar copiando el original y reutilizarlo en el programa, como un control normal excepto con una definición de tipo, cambiar una instancia los cambia todos. Escriba def. permite que el programa sea mucho más robusto y simplifica mucho el cambio si es necesario agregar algo nuevo.

Ejemplo simple de máquina expendedora

Ejemplo de máquina de estado de LabVIEW (caso de inicio) .png

En el ejemplo de la máquina expendedora, estamos usando registros de turno para pasar la cantidad total de dinero en la máquina y las constantes enumeradas que controlan en qué caso estamos. Cuando miramos nuestra imagen del caso de inicio, podemos ver los registros de desplazamiento en el lado izquierdo y derecho y las constantes enumeradas en el medio. También podemos ver en la parte inferior de la imagen una pestaña que se utiliza para mostrar cada sección individual en la que se escribe como indicador. Al hacer esto, eliminamos la posibilidad de que el usuario se salga del bucle y lo bloquee en el caso en el que se supone que debe estar. Cuando estamos en la etapa de inicio del programa, queremos asegurarnos de que el usuario tiene razón. allí con el programa.

Ejemplo de LabVIEW State Machine (Diagrama de bloques de inicio) .png

Este caso mantiene al usuario en el menú de inicio en el diagrama de bloques, que se muestra a continuación, hasta que el usuario presiona el botón de inicio. Una vez que se presiona el botón de inicio, el programa se envía al siguiente caso (llamado caso "Insertar dinero").

Ejemplo de LabVIEW State Machine (Insertar caja de dinero) .png

Una vez en el caso de "Insertar dinero", el usuario será retenido aquí nuevamente para continuar agregando dinero al total que ha tenido hasta ahora mediante el uso de registros de turno y botones que agregan dinero cada vez que los presionas. Este es el caso principal, donde se está haciendo la mayor parte del trabajo y donde la máquina expendedora es lo más real posible, sin agregar monedas reales, todos los demás casos tienen la mayor parte del trabajo ejecutándose en segundo plano. Una vez que el usuario ha terminado de agregar dinero, presiona el botón "Terminado de insertar dinero" para pasar al caso "Dispensar".

Ejemplo de LabVIEW State Machine (Insertar diagrama de bloques de cambio) .png

La pestaña "Insertar caja de dinero" también cambia la pestaña que se muestra a la pestaña "Insertar cambio" en el diagrama de bloques. Aquí el usuario puede ingresar dinero y también ver cuánto dinero fue a través de la pantalla "Cambio total insertado".

Ejemplo de LabVIEW State Machine (Dispense Case) .png

El caso "Dispense" comienza verificando primero para asegurarse de que el usuario haya introducido suficiente dinero para comprar un artículo. Hay una segunda estructura de caso en este caso para manejar las dos opciones de dinero suficiente o dinero insuficiente. Si hay suficiente dinero en el sistema, aparecerá un cuadro de mensaje que dice gracias por comprar el artículo, y luego la cantidad de dinero que se necesita para comprar un artículo se resta de la cantidad total de dinero en el sistema. Si no hay suficiente dinero en el sistema, el programa emite un nuevo mensaje que dice que no hay suficiente dinero y envía todo el dinero que se insertó previamente antes de pasar al caso "final".

Ejemplo de LabVIEW State Machine (Diagrama de bloques de cambio de dispensación) .png

El diagrama de bloques para el caso "Dispense" y el caso "final" es la misma imagen. Realmente no hay nada que el usuario realmente tenga que hacer además de los mensajes emergentes que generará el programa.

Ejemplo de LabVIEW State Machine (End Case) .png

El caso "final" es un caso muy simple que funciona simplemente para retrasar el programa para permitir que el usuario tenga tiempo suficiente para comprobar que ha recibido su cambio y recogido su artículo. Después de 5000 milisegundos (5 segundos), se usa el temporizador de espera, y el programa continúa de regreso a la página de inicio para esperar a que llegue otro usuario para comenzar el proceso nuevamente.

Beneficios

La máquina de estado se utiliza a menudo porque es fácil de iniciar rápidamente y agregar o eliminar partes del programa. Las máquinas de estado funcionan de manera que también ayudan a mantener organizado al desarrollador mientras trabajan. [3]

Referencias

  1. ^ a b c Amargo, Rick. Técnicas avanzadas de programación de LabVIEW . Boca Ratón: CRC Press LLC, 2001.
  2. ^ Página de ayuda de LabVIEW de LabVIEW 2011.
  3. ^ "Tutorial: State Machines" , www.ni.com, 2014.