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 MATLAB®, Simulink o C. Es posible gestionar los datos empleados en las condiciones y las acciones desde Symbols Manager. 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 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 Editor proporciona comprobaciones en tiempo de edición para identificar problemas sintácticos y semánticos, tales como la ubicación incorrecta de objetos y las transiciones no válidas.
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 modelizar la lógica cuando la salida depende exclusivamente de la entrada actual. Puede construir una tabla de verdad mediante la introducción de condiciones seguidas de combinaciones de resultados para dichas condiciones. Las acciones se pueden introducir para diferentes combinaciones de resultados. Después de construir la tabla de verdad, puede ejecutar diagnósticos estáticos para identificar condiciones sobreespecificadas e infraespecificadas.
Es posible crear componentes reutilizables en Stateflow e integrarlos 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.
Stateflow facilita la modelización basada en componentes y el diseño modular. Es posible segmentar el diagrama en componentes de diseño reutilizables que se pueden guardar en una librería. 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.
Es posible modelar lógica condicional, basada en eventos y basada en tiempo en Stateflow a fin de invocar algoritmos de Simulink y MATLAB de forma periódica o continua. Stateflow puede permitirle organizar la ejecución de componentes para simular la planificación de su entorno en tiempo real.
Stateflow proporciona operadores basados en eventos y en tiempo (tales como after y duration) que permiten especificar la lógica de transición de estado en función de recuentos de eventos, tiempo transcurrido y señales a las que se les ha eliminado el ruido sin tener que crear y mantener sus propios temporizadores y contadores.
Es posible analizar el comportamiento del sistema mediante la simulación y visualizar los resultados. 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.
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. Cabe la posibilidad de establecer puntos de interrupción, monitorizar valores de datos y avanzar por distintas funciones paso a paso en los diagramas de estado. Además, se pueden detectar errores en tiempo de ejecución, lo que incluye incoherencias de estado, infracciones de rango de datos y posibles bucles infinitos.
Durante la simulación, es posible visualizar los resultados de las formas siguientes:
Si lo prefiere, puede registrar los datos de actividad de estados y diagramas para su procesamiento posterior en MATLAB.
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.
Los Simulink Requirements permiten vincular directamente los requisitos con objetos de Stateflow mediante el método de arrastrar y colocar.
Las Simulink Check permiten comprobar que los diagramas de estado se ajusten a los estándares.
La Simulink Coverage permite recopilar métricas de cobertura sobre el modelo y el código generado.
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.