State machines

Introducción a state machines

Una state machine o finite state machine (máquina de estados o máquina de estados finitos) es una representación de un sistema reactivo basado en eventos que pasa de un estado a otro si se cumple la condición que controla el cambio. La mayoría de las state machines se expresan utilizando diagramas, pero también se pueden representar mediante texto.

Se necesitan tres componentes básicos para crear una state machine:

  • Estados: Distintos pasos, tareas o modos de funcionamiento que distinguen el proceso
  • Transiciones: Métodos para la transición entre diferentes estados
  • Acciones: Eventos o cambios que se producen durante la ejecución de una state machine

Componentes básicos de state machines en un sistema de transmisión automática modelado con Stateflow. (Vea el ejemplo.)

Las primeras state machines fueron utilizadas por especialistas en matemáticas y profesionales de informática para describir sistemas informáticos. Permitían simplificar lógica compleja y obtener una representación gráfica más manejable. En comparación con alternativas basadas en texto, el carácter visual de una state machine permite apreciar cómo los diferentes estados de un sistema se relacionan entre sí y qué condiciones generan una transición o acción. Con el tiempo, el uso de state machines se han ampliado para incluir modelado de lógica compleja de los sistemas dinámicos de aeronaves, automóviles, robots y teléfonos móviles.

Algunos ejemplos de operaciones que incluyen lógica compleja son:

  • Planificación de una secuencia de tareas o pasos de un sistema
  • Definición de una lógica de recuperación, aislamiento y detección de anomalías
  • Supervisión del cambio entre distintos modos de funcionamiento

Puede utilizar una state machine para representar un modelo simplificado de la transmisión automática de un automóvil. El siguiente ejemplo ilustra cuatro estados operativos, denominados first, second, third y fourth. Al igual que ocurre con las marchas que representan, los estados de una state machine son mutuamente excluyentes: solo uno puede estar activo a la vez. Esta state machine supervisa la velocidad del automóvil y cambia de marcha cuando alcanza el umbral de velocidad correspondiente a la marcha activa.

State machine de un sistema de transmisión automática en Stateflow con transiciones entre marchas cuando se alcanza el umbral de velocidad. (Vea el ejemplo.)

State machines de Mealy y Moore

Se deben considerar dos estándares comunes cuando se diseñan state machines:

  • Mealy: Las salidas son una función del estado y de las entradas, y se representan definiendo las salidas en las transiciones.
  • Moore: Las salidas dependen únicamente del estado, y se representan definiéndolas en los propios estados.
Diagrama de state machine que resalta los estados de entrada correspondientes a recibir una moneda de cinco centavos, una de diez centavos o ninguna, con sus respectivas salidas.

State machine de una máquina expendedora modelada con la semántica de Mealy que define si se dispensa una bebida durante las transiciones. (Vea el ejemplo.)

Diagrama de state machine que muestra cinco estados de un semáforo orientado en dos direcciones.

State machine de un semáforo modelada con la semántica de Moore que define el color de la señal dentro de cada estado. (Vea el ejemplo.)

Para obtener más información sobre las semánticas y cuándo implementarlas, consulte Visión general de máquinas de Mealy y Moore.

Conceptos de Harel con state machines

A medida que evolucionaba la complejidad de los componentes de software, también lo hacían los componentes básicos de las state machines. En la década de 1980, el Dr. David Harel identificó estas capacidades necesarias para reflejar con precisión detalles más complejos de sistemas:

  • Jerarquía: Introduce uno o varios estados principales para estructurar y compartimentar aún más el diseño.
  • Paralelismo u ortogonalidad: Permite que un solo diagrama incluya múltiples estados que funcionan simultáneamente.
  • Transmisión de eventos: Permite el intercambio de información entre dos estados o state machines independientes.

Cuando estas capacidades se combinan con state machines, las representaciones se denominan gráficos de estados de Harel.

Definir la complejidad de un sistema de seguridad requiere elementos de un gráfico de estados de Harel. (Vea el ejemplo.)

State machines con Stateflow

Stateflow® es un entorno de programación gráfica basado en finite state machines. Puede comenzar con diagramas de estados simples y crear state machines para modelar la lógica compleja de sistemas dinámicos. Puede diseñar state machines, diagramas de transición de estados, diagramas de flujo, tablas de transición de estados y tablas de verdad. Este enfoque ayuda a desarrollar aplicaciones de control de supervisión, planificación de tareas, gestión de fallos, protocolos de comunicación, interfaces gráficas y sistemas híbridos.

Puede simular state machines en Stateflow para evaluar su rendimiento en diferentes condiciones. Por ejemplo, puede simular una state machine que modela un ascensor para comprobar cómo responde cuando se oprimen distintos botones o se produce un fallo. Simular la state machine permite asegurarse de que la lógica se comporta como se espera, evaluar si faltan condiciones y probar distintos escenarios.

Para obtener más información sobre el modelado de state machines, consulte Stateflow y Simulink®. Para aprender a crear state machines en Stateflow, consulte Design Finite State Machines in Stateflow.


También puede consultar estos temas: Lógica de control, Diagrama de estados, Sistemas de control, Sistemas embebidos, FDIR, Diseño basado en modelos, Pruebas basadas en modelos, PackML, Modelización y simulación, Software de simulación, Ingeniería de sistemas basada en modelos (MBSE)