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.


Referencias de software


Preguntas frecuentes sobre Diagrama de estados

Un Diagrama de estados es una representación gráfica del número finito de estados de una máquina de estados, las transiciones de estado y las reglas que rigen dichas transiciones. Utiliza cuadros para representar estados o modos de operación, flechas para indicar transiciones y texto sobre las flechas para representar las reglas de transición.

Los Diagramas de estados representan diferentes modos de operación y las transiciones entre ellos en un sistema, mientras que los diagramas de flujo suelen mostrar pasos secuenciales de un proceso. Los Diagramas de estados se utilizan como puntos de partida de alto nivel para el diseño de software complejo, ya que su simplicidad permite comunicar claramente los distintos modos de operación.

En las máquinas de Moore, las salidas dependen únicamente del estado actual y se definen como acciones de estado. En las máquinas de Mealy, las salidas dependen tanto del estado como de las entradas y se definen en las transiciones.

Los gráficos de estados, también conocidos como Harel charts, son Diagramas de estados mejorados que añaden capacidades como jerarquía, paralelismo (u ortogonalidad) y difusión de eventos para representar detalles de diseño complejos en sistemas lógicos sofisticados.

Stateflow es un entorno de programación gráfica basado en máquinas de estados finitos que permite modelar lógica compleja en sistemas dinámicos para aplicaciones como control de supervisión, gestión de fallos, planificación de tareas, lógica de interfaz y protocolos de comunicación.

Sí. Los gráficos de estados permiten incorporar jerarquía mediante estados padre que contienen subestados, lo que ayuda a estructurar el diseño y a reducir el número de transiciones necesarias entre estados.

El paralelismo, u ortogonalidad, permite que un único gráfico de estados incluya múltiples estados que operan simultáneamente, representando el sistema completo en un solo gráfico que contiene dos o más máquinas de estados en paralelo.

La difusión de eventos permite el intercambio de información entre dos estados independientes o entre dos máquinas de estados. Cuando un evento se difunde, puede desencadenar transiciones, acciones o llamadas a funciones.

Sí. Puede utilizar las capacidades de generación automática de código de Simulink para convertir Diagramas de estados en código C, HDL o PLC para su despliegue.


También puede consultar estos temas: Modelado basado en eventos, Sistemas de control, lógica de control, máquina de estado, sistemas de control, sistemas embebidos, FDIR