Modelar máquinas de estados finitos con gráficos de Stateflow
Una máquina de estados finitos es una representación de un sistema reactivo basado en eventos que cambia de un modo de funcionamiento a otro cuando la condición que define el cambio es verdadera. Por ejemplo, puede usar una máquina de estados para representar la transmisión automática de un vehículo. La transmisión dispone de modos de funcionamiento: estacionamiento, marcha atrás, neutro, conducción y baja. Cuando el conductor mueve la palanca de cambios, el sistema cambia de un modo de funcionamiento a otro.
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 añadir bloques de Stateflow® a un modelo de Simulink® para crear diagramas de transición de estados, tablas de transición de estados y tablas de verdad:
Chart: representación gráfica de una máquina de estados finitos basada en un diagrama de transición de estado. En un gráfico de Stateflow, los estados y las transiciones forman los componentes básicos de 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: representa una máquina de estados finitos para la lógica modal secuencial en un formato tabular. En lugar de representar los estados y las transiciones en un gráfico de Stateflow, puede utilizar una tabla de transición de estado para modelar una máquina de estados en un formato conciso y compacto que requiere un mantenimiento mínimo de los objetos gráficos. Para obtener más información, consulte Utilizar tablas de transición de estado para expresar lógica secuencial en formato tabular.
Truth Table: implementa el diseño de lógica combinacional en un formato tabular. Puede utilizar bloques de tablas de verdad que permitan modelar la toma de decisiones para detectar y gestionar fallos y cambiar de modo. Para obtener más información, consulte Use Truth Tables to Model Combinatorial Logic.
Para implementar la lógica de control, 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.
Sugerencia
Para combinar las ventajas de la programación de máquinas de estados con la funcionalidad completa de MATLAB, puede crear un gráfico de Stateflow independiente. Puede ejecutar gráficos independientes como objetos de MATLAB directamente 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. Para obtener más información, consulte Create Stateflow Charts for Execution as MATLAB Objects.
Programar un gráfico de Stateflow
Para crear un gráfico de Stateflow que modele una máquina de estados finitos:
Cree un modelo de Simulink que contenga un gráfico de Stateflow vacío llamando a la función
sfnew
.sfnew
Para abrir el editor de Stateflow, haga doble clic en el bloque del gráfico. Si desea obtener más información sobre el uso del editor de Stateflow, consulte Operaciones en el editor de Stateflow.
Para cada modo de funcionamiento de su sistema, represente un estado e implemente las acciones de estado añadiendo etiquetas de estado como se describe en Representar modos de funcionamiento con estados.
Para organizar sistemas complejos, defina una jerarquía de estados representando estados secundarios dentro de un estado principal. Por ejemplo, puede utilizar un superestado para encerrar subestados que compartan las mismas acciones de estado. Para obtener más información, consulte Utilizar la jerarquía de estados para diseñar complejidad de estado multinivel.
Para modelar modos de funcionamiento que estén activos al mismo tiempo, habilite la descomposición paralela (AND) en un estado principal. Para obtener más información, consulte Definir modos exclusivos o paralelos con la descomposición de un estado.
Para representar la dirección de la lógica de flujo entre estados, represente transiciones e implemente las condiciones de transición añadiendo etiquetas de transición como se describe en Transición entre modos de funcionamiento.
Para marcar el primer estado que se activa, use una transición predeterminada. Para obtener más información, consulte Usar transiciones predeterminadas para especificar la actividad del subestado inicial.
Para crear rutas desde un único origen a múltiples destinos o de múltiples orígenes a un único destino, combine transiciones e intersecciones conectivas. Para obtener más información, consulte Combinar transiciones e intersecciones para crear rutas ramificadas.
Si su sistema tiene entradas o salidas, o depende de cualquier variable de estado, añada datos de entrada, de salida y locales como se describe en 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 como se describe en Sincronizar los componentes del modelo con la transmisión de eventos.
Si su gráfico tiene acciones de estado o condiciones de transición complejas, añada funciones reusables a su gráfico. Use el formato de función que sea más natural para el tipo de cálculo en la acción de estado o la condición de transición seleccionando una de estas funciones:
Funciones gráficas: encapsule diagramas de flujo que contienen patrones de bucle lógicos e iterativos. Consulte Reuse Logic Patterns by Defining Graphical Functions.
Funciones de MATLAB: escriba algoritmos orientados a matrices para analizar y visualizar datos. Consulte Reuse MATLAB Code by Defining MATLAB Functions.
Funciones de Simulink: optimice su diseño llamando a subsistemas de llamada a función de Simulink. Consulte Reutilizar las funciones de Simulink en gráficos de Stateflow.
Tablas de verdad: represente la lógica combinacional para aplicaciones de toma de decisiones. Consulte Use Truth Tables to Model Combinatorial Logic.
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 Custom Code in Stateflow Charts.
Conecte el gráfico a otros bloques del modelo de Simulink utilizando puertos de entrada y de salida.
Para simular el modelo, haga clic en Run . Durante la simulación, el editor de Stateflow resalta los estados activos y las transiciones mediante la animación del gráfico.
Para ver un tutorial que muestra este flujo de trabajo, consulte Crear y ejecutar un gráfico 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.