Accelerating the pace of engineering and science

Stateflow

Características principales

  • Entorno de modelado, componentes gráficos y motor de simulación para modelar y simular lógica compleja
  • Semántica de ejecución determinista con jerarquía, paralelismo, operadores temporales y eventos
  • Diagramas de estado, tablas de transición de estado y matrices de transición de estado que representan máquinas de estado finito
  • Diagramas de flujo, funciones de MATLAB y tablas de verdad para representar algoritmos
  • Animación de diagramas de estado, registro de actividades de estado, registro de datos y depuración integrada para analizar el diseño y detectar errores en tiempo de ejecución
  • Chequeos estáticos y de run-time para problemas cíclicos, inconsistencias de estado, violaciones de rango de datos y condiciones de overflow.
  • Máquinas de estado finito de Mealy y Moore

Introducción a Stateflow
Construir y simular diagramas de estado

Lógica de diseño

Stateflow ofrece interfaces gráficas y tabulares para modelar la lógica del sistema mediante máquinas de estado. En una máquina de estado, se modelan los modos de funcionamiento del sistema a modo de estados y se representa la lógica para cambiar de un modo a otro mediante transiciones y uniones. Es posible modelar los distintos componentes del sistema a modo de estados que se ejecutan de forma exclusiva o en paralelo. Stateflow permite gestionar la complejidad del diseño mediante la organización de objetos, funciones y componentes del diagrama de estado de forma jerárquica.

En Stateflow, se puede representar la lógica combinatoria de forma gráfica mediante diagramas de flujo y en formato tabular mediante tablas de verdad.

El diseño de la lógica implica definir la comprobación de las condiciones y las acciones subsiguientes que se realizarán. Stateflow permite definir condiciones y acciones en C o en MATLAB®. Es posible gestionar los datos empleados en las condiciones y las acciones desde Simulink® Model Explorer. Antes de ejecutar el diseño, Stateflow notifica las posibles incoherencias de estado, los datos y eventos no utilizados y las transiciones no válidas.

Stateflow diagram defining the logic for a boiler temperature control system.
Diagrama de Stateflow que define la lógica de un sistema de control de la temperatura de una caldera. En el diagrama se emplean funciones gráficas (parte derecha) para implementar los algoritmos de utilidad a los que llama el sistema de calefacción (parte izquierda).

Diseño gráfico de la lógica

Stateflow ofrece un editor y objetos gráficos para diseñar máquinas de estado y diagramas de flujo. Para crear una máquina de estado, se seleccionan estados, transiciones y uniones en una paleta gráfica y se arrastran al editor de Stateflow. También se pueden crear funciones mediante la notación de diagramas de flujo, subsistemas de Simulink, MATLAB y tablas de verdad. El diagrama de Stateflow se puede especificar como un híbrido de máquinas de Mealy y Moore con funciones ampliadas, como una máquina de Mealy o como una máquina de Moore.

Es posible crear diagramas de flujo mediante el diseño de transiciones que se conectan en las uniones y se ejecutan en función de una lógica condicional. El Pattern Wizard permite crear patrones de flujo de lógica empleados con frecuencia. Los diagramas de flujo se pueden colocar en funciones gráficas para su uso en diversas ubicaciones del diagrama de estado y en otros diagramas de estado del mismo modelo. Los diagramas de flujo se pueden utilizar para diseñar la lógica de las transiciones entre estados.

Stateflow diagram that uses a graphical function generated by the pattern wizard.
Diagrama de Stateflow (izquierda) que emplea una función gráfica (derecha) generada mediante Pattern Wizard (centro).

El editor de Stateflow proporciona comprobaciones en tiempo de edición para identificar la colocación incorrecta de objetos y las transiciones no válidas.

Stateflow Editor with a model of a cooling system.
Stateflow Editor con un modelo de un sistema de refrigeración. Los estados con límites superpuestos están resaltados en rojo.

Diseño de la lógica mediante tablas

Las tablas de transición de estado de Stateflow proporcionan un entorno estructurado para modelar máquinas de estado. Con el fin de crear una máquina de estado, se añaden filas para los estados y columnas para las transiciones entre estados. Las tablas de transición de estado ayudan a crear máquinas de estado, ya que proporcionan menús desplegables con nombres de estados, completan de forma automática la sintaxis de las máquinas de estado finito y llevan a cabo otras comprobaciones durante la edición. Antes de ejecutar el modelo, puede ejecutar tests estáticos de diagnóstico a fin de detectar errores de sintaxis, transiciones incompletas y estados que no se pueden alcanzar.

La vista de matriz de transición de estado generada a partir de las tablas de transición de estado permite identificar rápidamente condiciones y posibles estados de destino a partir de un estado concreto.

Las tablas de verdad de Stateflow permiten modelar una lógica que no requiere el mantenimiento de un estado en las sucesivas ejecuciones. Para crear una tabla de verdad, se introducen las condiciones que se deben comprobar seguidas por combinaciones de resultados para esas condiciones. Después, se pueden introducir acciones para las distintas combinaciones de resultados. Tras crear la tabla de verdad, se pueden ejecutar tests estáticos de diagnóstico a fin de identificar las condiciones con exceso o falta de especificación.

Truth table implementing the logic for selecting a valid sensor reading in a fault-detection algorithm, and an automatically generated graphical representation of the truth table.
Izquierda: Tabla de verdad que implementa la lógica para seleccionar una lectura de sensor válida en un algoritmo de detección de fallos. Derecha: Representación gráfica generada automáticamente de la tabla de verdad.

Integración de componentes y algoritmos de planificación

Tras crear los componentes en Stateflow, se pueden integrar con otros componentes a fin de crear el algoritmo de la máquina de estado. Los componentes de Stateflow pueden contener funciones de MATLAB y Simulink, código C personalizado, funciones gráficas y tablas de verdad. En el algoritmo, se puede planificar la ejecución de componentes y funciones mediante lógica basada en tiempo y lógica basada en condiciones.

Cada componente de Stateflow se puede desarrollar, ejecutar y verificar de forma independiente, lo que permite que varios usuarios trabajen en distintas partes del algoritmo al mismo tiempo.

Simulink model incorporating a Stateflow diagram that uses graphical functions, MATLAB functions, and truth tables.
Modelo de Simulink (izquierda) que incorpora un diagrama de Stateflow (derecha). El diagrama de Stateflow modela la lógica empleada en un ascensor e incluye funciones gráficas, funciones de MATLAB y tablas de verdad.

Integración de componentes en el diseño

Es posible reutilizar un componente en varios diagramas y modelos; para ello, haga clic en él con el botón derecho del ratón, conviértalo en un subdiagrama atómico y colóquelo en una biblioteca. Para utilizar el componente, basta con arrastrarlo desde la biblioteca y soltarlo en el diagrama o el modelo. Cuando se actualiza un componente en la biblioteca, todas sus instancias se actualizan automáticamente. Los componentes y las funciones se pueden organizar de forma jerárquica para representar el sistema de forma concisa y precisa.

Reutilización de estados varias veces en un diagrama
Creación y reutilización de componentes en Stateflow para el modelado a gran escala

Algoritmos de planificación

Es posible modelar lógica condicional y basada en tiempo en Stateflow a fin de llamar a funciones de Simulink y de MATLAB. Los eventos basados en la lógica modelada en Stateflow se pueden enviar a Simulink para activar subsistemas que reaccionan a una llamada de función o a cambios en la señal de control.

Stateflow proporciona operadores basados en eventos y en tiempo (before, after, at y every) que permiten especificar la lógica de transición de estado en función de recuentos de eventos y tiempo transcurrido sin utilizar temporizadores ni contadores.

Modelado de un sistema de anulación de lanzamiento
Cree un modelo de un sistema de anulación de lanzamiento que devolverá una aeronave a la Tierra si se produce una anomalía o un fallo durante su lanzamiento.

Simulación de modelos y análisis de los resultados

Es posible analizar el comportamiento del sistema mediante la simulación del modelo. Se pueden ejecutar escenarios what-if mediante el reinicio de la simulación a partir de cualquier estado guardado y analizar su reacción ante diversas configuraciones y opciones.

Simulación de un modelo

En Stateflow se puede visualizar el comportamiento del sistema durante la simulación mediante la animación del diagrama de estado a fin de resaltar los estados y las transiciones activos en el modelo.

Las funciones de depuración de Stateflow permiten avanzar paso a paso por la simulación de forma detallada. Se pueden establecer puntos de interrupción, monitorizar valores de datos y avanzar por distintas funciones paso a paso en los diagramas de estado. Desde la ventana del depurador de Stateflow se puede controlar la ejecución de la simulación y visualizar la pila de llamadas y el estado de ejecución del diagrama.

El depurador de Stateflow detecta errores en tiempo de ejecución, lo que incluye incoherencias de estado, infracciones de rango de datos y posibles bucles infinitos.

Análisis de resultados

Durante la simulación, es posible visualizar sus resultados mediante:

  • Visualización de estados y datos con pantallas y scopes de Simulink
  • Visualización de datos registrados en Simulation Data Inspector
  • Creación de pantallas personalizadas con MATLAB

Si lo prefiere, puede registrar los datos de actividad de estados y diagramas para su procesamiento posterior en MATLAB.

Simulation data visualization options in Stateflow: Simulink Data Inspector for comparing signals, a custom MATLAB interface for analyzing data, and the Simulink Signal Selector for comparing states.
Opciones de visualización de datos de simulación en Stateflow. Arriba a la izquierda: Simulink Data Inspector para comparar señales específicas. Abajo a la izquierda: interfaz personalizada de MATLAB para analizar datos. Derecha: Simulink Signal Selector para comparar estados concretos.

Validación del diseño y generación de código

Mediante el uso de Stateflow con otros productos de Simulink, es posible validar el diseño con respecto a los requisitos y generar código para la implementación en el sistema embebido.

Gracias a Simulink Verification and Validation, podrá asignar requisitos directamente a objetos de Stateflow, comprobar la conformidad con estándares y recopilar métricas de cobertura del modelo.

Con Simulink Design Verifier, podrá detectar errores de diseño y generar vectores de prueba para errores difíciles de localizar mediante métodos formales.

Con el uso de productos de generación de código complementarios, es posible generar código C y C++, HDL o PLC directamente desde el diagrama de estado.

Simulación de robot móvil con Simulink

Ver seminario virtual