Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Modelar máquinas de estado finito con gráficos de Stateflow

Una máquina de estado finito 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 estado 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 estado finito, 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 estado finito 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 estado finito 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 estado en un formato conciso y 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: implementa el diseño de lógica combinatoria 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 Usar tablas de verdad para modelar la lógica combinatoria.

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 estado 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 estado finito:

  1. Cree un modelo de Simulink que contenga un gráfico de Stateflow vacío llamando a la función sfnew.

    sfnew

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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:

    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.

  8. Conecte el gráfico a otros bloques del modelo de Simulink utilizando puertos de entrada y de salida.

  9. 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.

Consulte también

Funciones

Bloques

Temas