Sunteți pe pagina 1din 4

MAQUINAS DE ESTADO

OSCAR JAVIER PINZON TORRES

QUE SON:
Más conocidas por su acrónimo en inglés FSM (Finite State Machine), se utilizan
ampliamente en el diseño de circuitos digitales (además de en otros ámbitos de la
ingeniería, como la programación), para describir el comportamiento de un sistema según
el valor de sus entradas y de cómo van cambiando en el tiempo. Ésta es una definición
parcial pero que nos permite hacernos una primera idea intuitiva. Desde el punto de vista
de las FSM, un sistema está compuesto de estados por los que va pasando el sistema, de
señales de entrada que modifican esos estados y de señales de salida que pueden utilizarse
para conocer el estado del sistema y actuar en consecuencia. Un ejemplo muy visual podría
ser un semáforo, el cuál dispone de tres estados diferentes, uno para cada color. Las
entradas del sistema las podría generar un temporizador que activa una señal cada cierto
tiempo, indicando que hay que pasar al siguiente estado. Por último, las salidas del sistema
podrían ser tres señales que indiquen qué lámpara, de las tres disponibles, tiene que
encenderse.
DONDE SE UTILIZAN :
es una de las arquitecturas fundamentales que los desarrolladores de LabVIEW usan con
frecuencia para construir aplicaciones rápidamente. La arquitectura State Machine se
puede utilizar para implementar complejos algoritmos de toma de decisiones
representados por diagramas de estado o diagramas de flujo. Más precisamente, una
máquina de estados implementa cualquier algoritmo descrito por una "máquina de
Moore", que realiza una acción específica para cada estado en el diagrama.

Las máquinas de estado se utilizan en aplicaciones donde existen estados distinguibles.


Cada estado puede conducir a uno o varios estados y también puede finalizar el flujo del
proceso. Una máquina de estado se basa en la entrada del usuario o en el cálculo del estado
para determinar a qué estado ir a continuación. Muchas aplicaciones requieren un estado
de "inicialización", seguido de un estado predeterminado en el que se pueden realizar
muchas acciones diferentes. Las acciones realizadas pueden depender de las entradas
anteriores y actuales, así como de los estados. A continuación, se puede utilizar un estado
de "apagado" para realizar acciones de limpieza.

Las máquinas de estado se utilizan con mayor frecuencia al programar interfaces de usuario.
Al crear una interfaz de usuario, diferentes acciones de usuario envían la interfaz de usuario
a diferentes segmentos de procesamiento. Cada uno de estos segmentos actuará como
estados en la máquina de estados. Estos segmentos pueden conducir a otro segmento para
su procesamiento posterior o esperar a otro evento de usuario. En este ejemplo, la máquina
de estado monitorea constantemente al usuario para la siguiente acción a realizar. Existe
otro patrón de diseño que se puede utilizar para implementar una interfaz de usuario, el
controlador de mensajes en cola. Un controlador de mensajes en cola es una versión más
sofisticada de State Machine y ofrece flexibilidad adicional, pero también agrega
complejidad adicional. Los controladores de mensajes en cola se tratarán en otro momento.

Las pruebas de procesos son otra aplicación común de State Machines. En este ejemplo,
cada segmento del proceso está representado por un estado. Según el resultado de la
prueba de cada estado, se puede llamar a un estado diferente. Esto puede suceder de
manera continua, realizando un análisis en profundidad del proceso que se está probando.

Por qué utilizar una máquina de estados

Además de su poderosa capacidad para implementar algoritmos de toma de decisiones, las


máquinas de estado también son formas funcionales de planificación de aplicaciones. A
medida que crece la complejidad de las aplicaciones, también lo hace la necesidad de un
diseño adecuado. Los diagramas de estado y los diagramas de flujo son útiles y, a veces,
esenciales para el proceso de diseño. Las máquinas de estado no solo son ventajosas en la
planificación de aplicaciones, sino que también son fáciles de crear. La creación de una
máquina de estados eficaz requiere que el diseñador cree una tabla de estados posibles.
Con esta tabla, el diseñador puede planificar cómo se relaciona cada estado con otro. El
proceso de diseño involucrado en la creación de una máquina de estado operativa también
mejorará el diseño general de la aplicación.
Existen diferentes métodos para determinar a qué estado hacer la transición.
A continuación, se analizan cuatro métodos comunes (Nota: en los siguientes
ejemplos de métodos, "Init" podría pasar a cualquier estado):

Esquema general de una máquina de estados finito

Máquinas de Moore y de Mealy

Su diferencia está únicamente en la dependencia de las salidas

Máquina de Moore:Las salidas dependen sólo del estado presente Las entradas intervienen en la
decisión del próximo estadoZ = f(y)

Máquina de Mealy:Las salidas dependen del estado presente y del valor de las entradasZ = f(y,X)

Diagramas de estados

Para cualquier estado, hay un número finitode posibles próximos estados En cada ciclo de reloj la
máquina cambia al siguiente estado Uno de los posibles próximos estados se convierte en el nuevo
estado presente Depende del estado presente y de las entradas
NOTAS IMPORTANTES

Hay algunas advertencias a tener en cuenta al crear una máquina de estado, es decir, la redundancia
de código y el uso de Enum.

Redundancia de código

Problema: la parte más difícil de crear una máquina de estados es diferenciar entre los posibles
estados en el diagrama de estados. Por ejemplo, en el diagrama de estado de la máquina de coque
(figura 4), podríamos haber tenido estados de 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 centavos en
lugar de tener un "esperar respuesta ”Estado que va de un estado a otro dependiendo del tipo de
moneda que se suelte. Eso crearía 11 estados diferentes con el mismo diagrama de caso exacto. El
código redundante puede crear un gran problema en una aplicación más grande.

Solución: si diferentes estados tienen el mismo diagrama de casos, intente combinarlos en un solo
estado. Por ejemplo, el estado de "espera de respuesta" se crea para evitar la redundancia de
código.

Uso de enumeración

Problema: Las enumeraciones se utilizan ampliamente como selectores de casos en State Machines.
Si el usuario intenta agregar o eliminar un estado de esta enumeración, los cables restantes
conectados a las copias de esta enumeración se romperán. Este es uno de los obstáculos más
comunes al implementar State Machines con enumeraciones.

Solución: dos posibles soluciones a este problema son:

1. Si todas las enumeraciones se copian de la enumeración modificada, las interrupciones


desaparecerán.

2. Cree un nuevo control con la enumeración y seleccione "typedef" en el submenú. Al seleccionar


typedef, todas las copias de enumeración se actualizarán automáticamente si el usuario agrega o
elimina un estado.

S-ar putea să vă placă și