Main Content

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

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:

  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 Stateflow Editor Operations.

  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

| | |

Temas relacionados