Modelar una máquina de estados finitos
Una máquina de estados finitos representa sistemas reactivos basados en eventos que cambian entre modos de funcionamiento cuando se cumplen condiciones específicas. Por ejemplo, puede modelar la transmisión de un automóvil que cambia de marcha a medida que acelera. Dado que una máquina de estados finitos puede representar sistemas con varios estados y transmisiones, son habituales en los campos de ingeniería de software, robótica y telecomunicaciones. Puede modelar una máquina de estados finitos utilizando los estados, transiciones y datos de Stateflow®.
Por ejemplo, en este sencillo gráfico de Stateflow, la transmisión de un automóvil pasa de un estado de marcha a otro.

En el desarrollo de software, puede utilizar una máquina de estados finitos para gestionar interfaces de usuario, diseño de protocolos y automatización de flujos de trabajo. En robótica, las máquinas de estados finitos controlan el comportamiento de los robots y permiten realizar transiciones fluidas entre tareas como navegar, evadir obstáculos y manipular objetos. En telecomunicaciones, se modelan protocolos de comunicación y operaciones de red. Puede utilizar Stateflow para diseñar y simular el rendimiento de las máquinas de estados finitos en varios dominios, así como resolver sus problemas.
Tipos de bloques de Stateflow
Para representar las relaciones entre las entradas, salidas y modos de funcionamiento de una máquina de estados finitos, puede utilizar estos bloques de Stateflow para crear diagramas de transición de estados, tablas de transición de estados y tablas de verdad.
Bloque de Stateflow | Caso práctico |
|---|---|
| Chart | Representación gráfica de una máquina de estados finitos. Dentro de un gráfico de Stateflow, se usan estados y transiciones para formar un sistema lógico secuencial. Los estados corresponden a los modos de funcionamiento y las transiciones representan rutas entre estados. Para obtener más información, consulte Representar modos de funcionamiento con estados y Transición entre modos de funcionamiento. |
| State Transition Table | Representación tabular de una máquina de estados finitos para lógica modal secuencial. Utilice un bloque State Transition Table para modelar una máquina de estados en un formato compacto que requiere un mantenimiento mínimo de los objetos gráficos. Para obtener más información, consulte Modelar máquinas de estado finito con tablas de transición de estado. |
| Truth Table | Representación tabular de diseño de lógica combinatoria. Puede utilizar bloques Truth Table para modelar la toma de decisiones para detectar y gestionar fallos, y cambiar de modo. Para obtener más información, consulte Usar tablas de verdad para modelar la lógica combinatoria. |
Implementar bloques de Stateflow
Para crear un gráfico de Stateflow que modele una máquina de estados finitos, siga estos pasos:
Cree un modelo de Simulink® que contenga un gráfico de Stateflow vacío utilizando la función
sfnew. Para abrir Stateflow Editor, haga doble clic en el bloque Chart.Para cada modo de funcionamiento del sistema, represente un estado e implemente acciones añadiendo etiquetas de estado.
Represente transiciones para mostrar la dirección de la lógica de flujo entre estados y añada etiquetas de transición para implementar las condiciones de transición. Utilice una transición predeterminada para marcar el primer estado activo.
Si su sistema tiene entradas o salidas, o depende de cualquier variable de estado, añada datos de entrada, de salida y locales. Para obtener más información, consulte Añadir datos de Stateflow.
Si su sistema reacciona a activadores de eventos o debe activar acciones en el gráfico o en otros bloques del modelo, añada eventos de entrada, de salida o locales. Para obtener más información, consulte Use Events to Execute Charts.
Si su gráfico tiene acciones de estado o condiciones de transición complejas, puede añadir funciones reusables. Puede seleccionar funciones gráficas, funciones de MATLAB, funciones de Simulink o tablas de verdad. Como alternativa, puede escribir su propio código C o C++ para integrarlo en su gráfico. Para obtener más información, consulte Reuse MATLAB Code by Defining MATLAB Functions y Llamar a las funciones de Simulink en estados y transiciones.
Conecte el gráfico a otros bloques del modelo de Simulink utilizando puertos de entrada y de salida.
Haga clic en Run
para simular el modelo. Stateflow Editor anima el gráfico durante la simulación resaltando los estados activos y las transiciones.
Los gráficos de Stateflow y los bloques State Transition Table pueden usar MATLAB® o C como lenguaje de acción. Los bloques Truth Table usan solo MATLAB como lenguaje de acción. Para obtener más información, consulte Diferencias entre C y MATLAB como sintaxis de lenguaje de acción.
Para ver un tutorial que ilustra cómo crear un gráfico de Stateflow, consulte Crear gráficos de Stateflow.
Referencias
[1] Harel, David. "Statecharts: A Visual Formalism for Complex Systems." Science of Computer Programming 8, no.3 (June 1987): 231-74.
[2] Hatley, Derek J. and Imtiaz A. Pirbhai. Strategies for Real-Time System Specification. New York, NY: Dorset House Publishing, 1988.