Máquina de estados

Introducción a las state machines

Una 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. Las máquinas de estados se utilizaban tradicionalmente para describir sistemas informáticos, pero su uso se ha extendido para modelar la lógica compleja de sistemas dinámicos tales como 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 para un sistema
  • Definición de una lógica de recuperación, aislamiento y detección de fallos
  • Supervisión de la manera de cambiar entre distintos modos de funcionamiento

Existen muchas formas de expresar una máquina de estados, aunque lo más frecuente es emplear un enfoque gráfico. Un diagrama de transición de estados, también conocido como diagrama de estados, muestra un número finito de estados con reglas que controlan cuándo se pasa de un estado a otro.

Por ejemplo, se puede utilizar un diagrama de estados para representar una versión simplificada de la transmisión automática de un automóvil. La máquina de estados que se muestra a continuación tiene cuatro estados operativos, identificados como first, second, third y fourth. Al igual que las marchas que representan, estos estados son exclusivos, de modo que solo hay un estado activo a la vez. Esta máquina de estados monitoriza la velocidad del automóvil y cambia de marcha cuando la velocidad cruza el umbral fijado para la marcha que está en funcionamiento.

Figura 1. Diagrama de estados de un sistema de transmisión automática modelado con Stateflow.

Existen dos tipos principales de diagramas de estados:

  • Mealy: las salidas de la máquina de estados no solo dependen de los estados, sino también de las entradas al sistema, que se representan definiendo salidas de la máquina en las transiciones como se muestra en la Figura 2
  • Moore: las salidas de la máquina de estados solo dependen del estado del sistema, que se representa definiendo salidas de la máquina en los estados como se muestra en la Figura 3

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

Para crear máquinas de estados que emulen un componente de software complejo, no basta solamente con los elementos básicos de los diagramas de estados. Se requieren las siguientes prestaciones adicionales para capturar detalles complejos del sistema de manera eficiente:

  • Jerarquía: presenta los estados principales y structura el diseño aún más
  • Paralelismo u ortogonalidad: permite que un solo diagrama incluya múltiples estados que funcionen simultáneamente
  • Emisión de eventos: permite el intercambio de información entre dos estados o máquinas de estados independientes

Cuando estas prestaciones se combinan con diagramas de transición de estados, las representaciones reciben el nombre de gráficos de estados de Harel, o simplemente gráficos de estados.

Figura 4. Gráfico de estados de un sistema de seguridad modelado con Stateflow.

Para obtener más información sobre estas prestaciones, consulte diagramas de estados y gráficos de estados.

Máquinas 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.

Puede utilizar MATLAB® para ejecutar gráficos de estados independientes como objetos de MATLAB, o Simulink® para simular gráficos de estados como bloques de Simulink.

Para obtener más información sobre el modelado y la ejecución de gráficos de Stateflow en MATLAB o Simulink, consulte Modelado de máquinas de estados finitos.

Para obtener más información sobre el modelado de máquinas de estados, consulte Stateflow y Simulink.

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