Diagrama de estados

Introducción a los diagramas de estados

Un diagrama de estados, o diagrama de transición de estados, es una representación gráfica del número finito de estados, transiciones de estados y reglas que rigen las transiciones de una máquina de estados. Los diagramas de estados se utilizan como puntos de partida de alto nivel para el diseño de software complejo por su simplicidad, que permite comunicar de manera clara los distintos modos de funcionamiento.

En un diagrama de estados:

  • Los recuadros representan los estados o distintos modos de funcionamiento
  • Las flechas indican la transición de un estado a otro
  • El texto correspondiente a cada flecha representa la regla que rige la transición
Figura 1. Diagrama de estados de un horno microondas con 3 modos de funcionamiento (OFF [apagado], Heating [calentar] e Idling [reposo]), modelado con Stateflow.

Figura 1. Diagrama de estados de un horno microondas con 3 modos de funcionamiento (OFF [apagado], Heating [calentar] e Idling [reposo]), modelado con Stateflow.

Las salidas o acciones de una máquina de estados son descripciones del comportamiento de cada estado del sistema. Los tipos de máquinas de estados de Moore y Mealy se clasifican según el lugar donde se define la salida de la máquina.

Implementación de Moore de un diagrama de estados

En este tipo de máquina de estados, las salidas dependen solo del estado del sistema y se definen como acciones de estado. Independientemente de cómo se introduzca un estado, la acción de estado es la misma. Por ejemplo, en el diagrama de estados de la Figura 2, la salida de Heating (calentar) es la misma independientemente de si la transición ocurre desde el estado Idling (reposo) u OFF (apagado).

Figura 2. Diagrama de estados modelado con la implementación de Moore en Stateflow.

Figura 2. Diagrama de estados modelado con la implementación de Moore en Stateflow.

Implementación de Mealy de un diagrama de estados

En este tipo de máquina de estados, las salidas no dependen solo del estado del sistema, sino también de las entradas al sistema. Como muestra el diagrama de estados de la Figura 3, los resultados de una implementación de Mealy se definen en las transiciones.

Figura 3. Diagrama de estados modelado con la implementación de Mealy en Stateflow.

Figura 3. Diagrama de estados modelado con la implementación de Mealy en Stateflow.

En la implementación de Mealy, los diagramas de estados se pueden reorganizar y simplificar agregando bucles para actualizar las salidas de la máquina. Los diseños más complejos sacan mayor partido de este tipo de implementación.

Figura 4. Diagrama de estados reorganizado modelado con la implementación de Mealy en Stateflow.

Figura 4. Diagrama de estados reorganizado modelado con la implementación de Mealy en Stateflow.

Las máquinas de Mealy y Moore son muy utilizadas debido a su simplicidad y claridad; ambos se suelen mezclar en el mismo diagrama de estados.

Gráficos de estados: diagramas de estados realzados

Los componentes básicos de los diagramas de estados no son suficientes para que un solo diagrama pueda representar sistemas lógicos complejos. Se requieren prestaciones adicionales para capturar detalles de diseño complejos de manera eficiente. Los gráficos de estados, también conocidos como gráficos de Harel, ofrecen prestaciones tales como jerarquización, paralelismo u ortogonalidad, además de emisión de eventos.

La prestación de jerarquización permite una mayor compartimentación del diseño y puede reducir el número de líneas de transición necesarias entre estados. Se pueden introducir estados primarios para crear una jerarquización en las máquinas de estados. Por ejemplo, en el gráfico de estados de la Figura 5, el estado primario Baking (cocinar) incluye los estados secundarios Heating (calentar) e Idling (reposo), y el diagrama de estados correspondiente.

Figura 5. Gráfica de estados con jerarquización, modelada en Stateflow.

Figura 5. Gráfico de estados con jerarquización, modelado en Stateflow.

Las prestaciones de paralelismo u ortogonalidad permiten que un solo gráfico de estados incluya múltiples estados que funcionen simultáneamente. Por ejemplo, en el gráfico de estados de la Figura 6, Oven (horno) y Oven_Light (luz del horno) se pueden considerar como dos máquinas de estados independientes que funcionan simultáneamente. El gráfico representa el sistema completo en una única gráfica que contiene dos máquinas de estados paralelas.

Figura 6. Gráfica de estados con jerarquización y paralelismo, modelada con Stateflow.

Figura 6. Gráfico de estados con jerarquización y paralelismo, modelado con Stateflow.

Las prestaciones de emisión de eventos amplían la funcionalidad del sistema, ya que permiten el intercambio de información entre dos estados o máquinas de estados independientes. En el caso anterior, las dos máquinas de estados son independientes, ya que el funcionamiento de la luz del horno no depende del sistema de calentamiento. Con la emisión de eventos, se puede agregar una funcionalidad para apagar la luz cuando el horno termine de cocinar utilizando un comando sencillo en la lógica del estado Oven (horno), como se observa en la gráfica de estados de la Figura 7.

Figura 7. Gráfica de estados con jerarquización, paralelismo y emisión, modelada con Stateflow.

Figura 7. Gráfico de estados con jerarquización, paralelismo y emisión, modelado con Stateflow.

Los gráficos de estados con prestaciones de jerarquización, paralelismo y emisión ayudan a representar funcionalidades complejas del sistema evitando diagramas de estados complejos.

Diagramas y gráficos de estados con Stateflow

Stateflow® es un entorno de programación gráfica basado en máquinas de estados finitos. Con Stateflow, puede comenzar con diagramas de estados simples y crear gráficos de estados para modelar la lógica compleja de sistemas dinámicos, como transmisiones automáticas, sistemas robóticos, teléfonos móviles y muchos más. Entre las aplicaciones de lógica compleja se incluyen:

Si necesita que la lógica creada controle un componente de software, puede utilizar las prestaciones de generación de código automática de Simulink para convertir el gráfico de estados en código C, HDL o PLC y desplegarlo.

Para obtener más información sobre el modelado de diagramas de estados y estas técnicas avanzadas, consulte Stateflow y Simulink. El ejemplo Modelado de un sistema de seguridad demuestra la jerarquización, el paralelismo y la emisión de eventos en Stateflow.

También puede consultar estos temas: control logic, state machine, control systems, embedded systems