Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Modelizar máquinas de estados finitos

Stateflow® es un entorno de programación gráfica basado en máquinas de estados finitos. Con Stateflow puede probar y depurar su diseño, tener en cuenta diferentes escenarios de simulación y generar código desde su máquina de estados.

Las máquinas de estados finitos son representaciones de sistemas dinámicos que pasan de un modo de operación (estado) a otro. Las máquinas de estados:

  • Sirven a modo de punto de inicio de alto nivel para un proceso de diseño de software complejo.

  • Permiten centrarse en los modos operativos y en las condiciones necesarias para cambiar de un modo al siguiente.

  • Ayudan a diseñar modelos que permanecen claros y concisos incluso cuando aumenta el nivel de complejidad del modelo.

El diseño de sistemas de control depende en gran medida de que las máquinas de estados gestionen lógica compleja. Entre sus aplicaciones se incluyen el diseño de sistemas de control para aeronaves, automóviles y robots.

Ejemplo de un gráfico de Stateflow

En un gráfico de Stateflow, usted combina estados, transiciones y datos para implementar una máquina de estados finitos. Este gráfico de Stateflow presenta un modelo simplificado de la lógica de cambio de marcha del sistema de transmisión automática de cuatro velocidades de un automóvil. El gráfico representa cada la posición de cada marcha por medio de un estado, que se muestra como un rectángulo con la etiqueta first, second, third o fourth. Estos estados, así como las marchas a las que representan, son exclusivos, por lo que solo hay un estado activo en cada momento.

Stateflow chart with states labeled first, second, third, and fourth. The chart transitions between the states when the speed is higher or lower than a specified amount.

La flecha a la izquierda del diagrama representa la transición predeterminada e indica el primer estado que se activará. Cuando ejecuta el gráfico, este estado aparece resaltado en el área de trabajo del gráfico. Las otras flechas indican las posibles transiciones entre los estados. Para definir la dinámica de la máquina de estados, se asocia cada transición a una condición booleana o a un evento activador. Por ejemplo, este gráfico monitoriza la velocidad del automóvil y cambia de marcha cuando la velocidad supera un umbral fijo. Durante la simulación, el resaltado del gráfico cambia cuando los diferentes estados se activan.

Chart animation showing states and transitions activating.

Este gráfico presenta un diseño simple que ignora factores importantes como la velocidad y el par motor. Puede crear un modelo más amplio y realista enlazando este gráfico de Stateflow con otros componentes de MATLAB® o Simulink®. Los siguientes ejemplos describen tres posibles enfoques.

Ejecutar el gráfico como un objeto de MATLAB

Este ejemplo presenta una versión modificada de un sistema de transmisión automática que incorpora jerarquía de estados, lógica temporal y eventos de entrada.

  • Jerarquía: el gráfico consta de un superestado gear_logic que rodea al gráfico de transmisión automática de cuatro velocidades del ejemplo anterior. Este superestado controla la velocidad y la aceleración del automóvil. Durante la ejecución, gear_logic siempre está activo.

  • Lógica temporal: en el estado gear_logic, la acción on every(0.25,sec) determina la velocidad del automóvil. El operador every crea un temporizador de MATLAB que ejecuta el gráfico y actualiza los datos speed del gráfico cada 0,25 segundos.

  • Eventos de entrada: los eventos de entrada SpeedUp, Cruise, y SlowDown restablecen el valor delta del gráfico. Estos datos determinan si el automóvil acelera o mantiene su velocidad en cada paso de ejecución.

Puede ejecutar este gráfico directamente como un objeto en MATLAB mediante la ventana de comandos o utilizando un script. También puede programar una app de MATLAB que controle el estado del gráfico por medio de una interfaz de usuario gráfica. Por ejemplo, esta interfaz de usuario envía un evento de entrada del gráfico cuando hace clic en un botón. En el gráfico, la función widgets de MATLAB controla los valores de los indicadores y las lámparas en la interfaz.

Para iniciar el ejemplo, en la barra de herramientas de App Designer, haga clic en Run. El ejemplo continúa ejecutándose hasta que cierre la ventana de la interfaz de usuario.

De forma alternativa, en editor de Stateflow, dentro de la pestaña State Chart (Gráfico de estado), haga clic en Run. Para controlar la velocidad del automóvil, utilice los botones SpeedUp (Acelerar), SlowDown (Reducir la velocidad) y Cruise (Mantener la velocidad) del panel de símbolos. Para detener el ejemplo, haga clic en Stop.

Para obtener más información sobre cómo ejecutar gráficos de Stateflow como objetos de MATLAB, consulte Ejecución en MATLAB.

Simular un gráfico como bloque de Simulink con eventos locales

Este ejemplo proporciona un diseño más complejo para un sistema de transmisión automática. El gráfico de Stateflow aparece como un bloque en un modelo de Simulink. Los otros bloques del modelo representan componentes de automoción relacionados. El gráfico interactúa con los otros bloques compartiendo datos a través de las conexiones de entrada y de salida. Para abrir el gráfico, haga clic en la flecha de la esquina inferior izquierda del bloque shift_logic.

Este gráfico combina jerarquía de estados, paralelismo, datos de estado activo, eventos locales y lógica temporal.

  • Jerarquía: el estado gear_state contiene una versión modificada del gráfico de la transmisión automática de cuatro velocidades. El estado selection_state contiene subestados que representan los modos operativos de estado estacionario, de aumento de marcha y de reducción de marcha. Cuando las circunstancias requieren un cambio de marcha superior o inferior, estos estados se activan.

  • Paralelismo: los estados paralelos gear_state y selection_state aparecen como rectángulos con un borde discontinuo. Estos estados operan simultáneamente, incluso cuando los subestados dentro de ellos se activan y se desactivan.

  • Datos de estado activo: el valor de salida gear refleja la selección de marchas durante la simulación. El gráfico genera este valor a partir del subestado activo en gear_state.

  • Eventos locales: en lugar de condiciones booleanas, este gráfico utiliza los eventos locales UP y DOWN para activar las transiciones entre marchas. Estos eventos se originan a partir de los comandos send en selection_state cuando la velocidad del automóvil se sale del rango de operación para la marcha seleccionada. La función calc_th de Simulink determina los valores límite para el rango de operación en función de la marcha seleccionada y la velocidad del motor.

  • Lógica temporal: Para evitar una rápida sucesión de cambios de marcha, selection_state utiliza el operador de lógica temporal after para retrasar la emisión de los eventos UP y DOWN. El estado emite uno de estos eventos solo si se requiere un cambio de marcha durante un periodo de tiempo mayor que el tiempo predeterminado TWAIT.

Para ejecutar una simulación del modelo:

  1. Haga doble clic en el bloque User Inputs. En el cuadro de diálogo de Signal Editor, seleccione un perfil de freno a acelerador predefinido de la lista Active Scenario. El perfil predeterminado es Passing Maneuver.

  2. Haga clic en Run. En el editor de Stateflow, la animación del gráfico resalta los estados activos durante la simulación. Para ralentizar la animación, en la pestaña Debug (Depuración), seleccione Slow en la lista desplegable Animation Speed (Velocidad de la animación).

  3. En los bloques Scope, examine los resultados de la simulación. Cada bloque Scope muestra una gráfica de sus señales de entrada durante la simulación.

Simular un gráfico como bloque de Simulink con condiciones temporales

Este ejemplo ofrece otra alternativa para modelizar el sistema de transmisión de un automóvil. El gráfico de Stateflow aparece como un bloque en un modelo de Simulink. Los otros bloques del modelo representan componentes de automoción relacionados. El gráfico interactúa con los otros bloques compartiendo datos a través de las conexiones de entrada y de salida. Para abrir el gráfico, haga clic en la flecha de la esquina inferior izquierda del bloque Gear_logic.

Este gráfico combina jerarquía de estados, datos de estado activo y lógica temporal.

  • Jerarquía: este modelo coloca el gráfico de transmisión automática de cuatro velocidades dentro de un superestado gear. El superestado monitoriza el vehículo y las velocidades del motor y activa los cambios de marcha. Las acciones que aparecen en la esquina superior izquierda de la marcha de estado determinan los umbrales operativos para la marcha seleccionada y los valores de las condiciones booleanas up y down. La etiqueta en,du indica que las acciones de estado se ejecutan la primera vez que el estado se activa (en = entry) y en cada unidad de tiempo subsiguiente mientras el estado esté activo (du = during).

  • Datos de estado activo: el valor de salida gear refleja la selección de marchas durante la simulación. El gráfico genera este valor a partir del subestado activo en gear.

  • Lógica temporal: Para evitar una rápida sucesión de cambios de marcha, las condiciones booleanas up y down utilizan el operador de lógica temporal duration para controlar la transición entre marchas. Las condiciones son válidas cuando la velocidad del automóvil se mantiene fuera del rango de operación para la marcha seleccionada durante un periodo de tiempo mayor que tiempo predeterminado TWAIT (medido en segundos).

Para ejecutar una simulación del modelo:

  1. Haga doble clic en el bloque User Inputs. En el cuadro de diálogo de Signal Editor, seleccione un perfil de freno a acelerador predefinido de la lista Active Scenario. El perfil predeterminado es Passing Maneuver.

  2. Haga clic en Run. En el editor de Stateflow, la animación del gráfico resalta los estados activos durante la simulación. Para ralentizar la animación, en la pestaña Debug (Depuración), seleccione Slow en la lista desplegable Animation Speed (Velocidad de la animación).

  3. En el bloque Scope, examine los resultados de la simulación. El bloque Scope muestra una gráfica de la marcha seleccionada durante la simulación.

Siguientes pasos