Crear gráficos de Stateflow
En este tutorial, se utiliza un gráfico de Stateflow® para modelar la lógica de un sistema de baterías recargables.
El sistema de baterías tiene estos requisitos:
La batería se carga cuando se conecta a una fuente de potencia externa. De lo contrario, se descarga.
La capacidad de la batería se carga a una velocidad del 4% de la carga total y se descarga a una velocidad del 3%.
Cuando se está cargando, la batería no genera potencia. Cuando se está descargando, la batería genera 3,5 vatios de potencia.

Para modelar estos requisitos, se crea un gráfico que contiene dos estados, Charge y Discharge, que representan los modos de funcionamiento del sistema de baterías.
Crear un gráfico
Cree un nuevo modelo de Simulink® que contenga un bloque Chart vacío.
Inicie MATLAB®. En la barra de herramientas de MATLAB, en la pestaña Home, haga clic en Simulink.

En la página de inicio, en la sección Stateflow, haga clic en la plantilla Blank Chart.
Simulink Editor se abre y muestra un modelo que contiene un bloque Chart.

Haga doble clic en el bloque Chart. Stateflow Editor se abre.
Stateflow Editor tiene estos componentes:
Área de diseño: el entorno gráfico en el que se colocan estados y transiciones. De forma predeterminada, el área de diseño tiene un fondo de color crema.
Barra de navegación: una zona rectangular, situada encima del área de diseño, que muestra la ruta al gráfico o elemento gráfico abierto. Puede moverse entre Stateflow Editor y Simulink Editor haciendo clic en los botones de flecha o los elementos del modelo.
Paleta: un menú, situado a la izquierda del área de diseño, desde el que se añaden objetos al área de diseño. Contiene iconos para estados
y otros elementos de gráficos.Para mostrar los nombres de objeto, haga clic con el botón secundario en la paleta y haga clic en Show Names. Para ocultar los nombres, haga clic con el botón secundario y seleccione Hide Names.
Panel Symbols: un panel, situado de forma predeterminada a la derecha del área de diseño, en el que se crean y gestionan datos, eventos y mensajes que permiten que el gráfico se comunique con el resto del modelo de Simulink.
Para abrir o cerrar el panel Symbols, en la pestaña Modeling, haga clic en Symbols Pane.

Añadir estados
El sistema de baterías requiere dos estados, uno para la carga y otro para la descarga. Utilice la paleta para añadir los dos estados al área de diseño.
En la paleta, haga clic en el icono de estado
. Para colocar el estado, apunte a una sección en blanco del área de diseño y haga clic.
Cuando coloca un estado, el editor solicita que introduzca un nombre de estado en la esquina superior izquierda del estado. Introduzca
Charge.Para finalizar el nombre del estado, haga clic en una sección en blanco del área de diseño. Para editar un nombre de estado existente, haga clic en el texto dentro del estado.
Nota
Los nombres de los estados no pueden contener espacios ni empezar por un número. Cada nombre de estado debe ser único.
Añada un segundo estado y asígnele el nombre
Discharge.
Nota
Los bordes de los estados no deben superponerse.

Conectar estados
Las transiciones determinan cómo y cuándo un gráfico pasa de un estado a otro.
Utilizar transiciones predeterminadas para indicar el primer estado activo
Un círculo azul
indica una transición predeterminada, que determina qué estado se activa cuando se inicia la simulación.
El gráfico coloca una transición predeterminada en el primer estado que se añade al área de diseño. En este ejemplo, la transición predeterminada se conecta al estado Charge. Puede añadir otras transiciones predeterminadas de la paleta haciendo clic en el icono de transición predeterminada
y haciendo clic en el borde de un estado.
Dado que los requisitos establecen que la batería debe iniciarse en el modo de carga, no es necesario mover la transición predeterminada.
Añadir transiciones entre estados
Las transiciones entre estados permiten al gráfico pasar de un estado a otro.
Para crear la primera transición, apunte al borde del estado
Chargehasta que el cursor se convierta en un símbolo más. Haga clic y arrástrelo hasta el borde del estadoDischarge.
Sugerencia
Para mover una transición existente, haga clic en la flecha y arrástrela.
Cree una transición de
DischargeaCharge.
Simule el modelo. En la pestaña Simulation, haga clic en Run.
Cuando un estado se activa, el gráfico resalta los bordes del estado. Cuando el gráfico avanza por una transición, la transición se resalta brevemente. Durante la simulación, el gráfico cambia entre los estados
ChargeyDischargeen cada paso.

Sugerencia
Para cambiar la velocidad de la animación, en la pestaña Debug, haga clic en el menú desplegable Animation Speed y seleccione una opción.
Añadir etiquetas de transición
Para cambiar el comportamiento de las transiciones, puede añadir etiquetas de transición. Las etiquetas de transición tienen tres componentes opcionales:
Un activador de evento o activador de mensaje que evita que el gráfico avance por la transición hasta que la transición reciba una transmisión de evento o mensaje de otro objeto del gráfico o modelo.
Una condición que debe cumplirse antes de que el gráfico pueda avanzar por la transición. Para especificar una condición, utilice corchetes.
Una acción que se ejecuta cuando el gráfico avanza por la transición. Para especificar una acción, utilice llaves.

Cuando se crea la primera transición, el editor solicita que introduzca una etiqueta. Alternativamente, puede añadir una etiqueta de transición haciendo doble clic en la transición.
Añada condiciones a las transiciones entre los estados.
Para pasar de
ChargeaDischargesolo cuando el modelo no se está cargando, haga doble clic en la transición e introduzca la etiqueta[~isCharging].Para finalizar la etiqueta, haga clic en el área de diseño. Para mover la etiqueta, haga clic y arrástrela.

Para pasar de
DischargeaChargesolo cuando el modelo se está cargando, introduzca la etiqueta[isCharging].
Añadir código ejecutable
Puede ejecutar código en los estados activos añadiendo acciones de estado a la etiqueta de estado. Las acciones de estado contienen una palabra clave, seguida de dos puntos y un bloque de código ejecutable.
En este ejemplo, se usan tres tipos de acciones de estado.
| Acción de estado | Comportamiento |
|---|---|
entry | Se ejecuta cuando el estado se activa. |
during | Se ejecuta en cada paso que un estado está activo. No se ejecuta en un paso cuando el estado se activa o se desactiva. |
exit | Se ejecuta cuando el estado se desactiva. |
Añada acciones de estado que cambien la salida y la carga de la batería según el modo de funcionamiento.
En el estado
Charge, edite la etiqueta de estado haciendo clic en el nombre del estado. Añada una línea nueva y, después, introduzca el texto que aparece a continuación. Puede añadir líneas nuevas pulsando Enter.La acciónentry:sentPower=0;during:charge=charge+4;entryestablece una variable denominadasentPoweren0. La acciónduringaumenta una variable denominadachargeen4.Sugerencia
Para cambiar manualmente el tamaño de un estado, haga clic en cualquier esquina y arrástrela. Para cambiar automáticamente el formato de todos los objetos del área de diseño, desmarque cualquier objeto haciendo clic en una sección en blanco del área de diseño. Después, pulse Ctrl+Mayús+A.

En el estado
Discharge, añada una acciónentryque establezcasentPoweren3.5y una acciónduringque disminuyachargeen3.
Definir datos de gráficos y compartirlos con un modelo de Simulink
Cuando utiliza una variable en una transición o estado, debe definir la variable como datos de entrada, datos de salida o datos locales. En el panel Symbols, el indicador de advertencia
marca datos no definidos.
| Icono | Tipo | Comportamiento |
|---|---|---|
![]() | Datos de entrada | Durante la simulación, estos datos reciben el valor de la señal de entrada. Definir datos de entrada añade un puerto de entrada al bloque Chart de Simulink. No puede asignar manualmente valores a los datos de entrada. |
![]() | Datos de salida | Durante la simulación, el gráfico envía el valor de estos datos a Simulink. Definir datos de salida añade un puerto de salida al bloque Chart de Simulink. |
![]() | Datos locales | Durante la simulación, estos datos almacenan información a la que solo se puede acceder en el gráfico. |
El gráfico infiere el tipo de cada dato según el contexto. Por ejemplo, el gráfico infiere que isCharging son datos de entrada, sentPower son datos de salida y charge son datos locales.

Defina el tipo y valor de los datos del gráfico.
Para aceptar los tipos de datos inferidos, en el panel Symbols, haga clic en el botón para resolver símbolos no definidos
. Los indicadores de advertencia situados junto a los datos no definidos desaparecen.Establezca la carga inicial de la batería. En el panel Symbols, en la fila
charge, haga clic en la columna Value e introduzca50.
Nota
Durante la simulación, los datos con un valor no definido se establecen en
0de forma predeterminada.Para volver al nivel superior del modelo de Simulink, en la barra de navegación, haga clic en botón para ir al elemento principal
.El bloque Chart tiene un puerto de entrada y uno de salida. Para ver los nombres de los puertos, expanda el bloque Chart haciendo clic en una esquina y arrastrándola hacia afuera.

Conectar bloques de Simulink a un gráfico
Para completar el modelo, conecte los bloques de origen y sumidero a los puertos de entrada y salida del bloque Chart.
Para representar el sistema de baterías que se conecta o desconecta de una fuente de potencia externa, añada un bloque Manual Switch al área de diseño de Simulink. Conecte la salida a la entrada del bloque Chart.
Añada un bloque Constant con un valor de
1. Conecte la salida al primer puerto de entrada del bloque Manual Switch.Añada un bloque Constant con un valor de
0. Conecte la salida al segundo puerto de entrada del bloque Manual Switch.Añada un bloque Scope. Conecte el puerto de salida del bloque Chart al puerto de entrada del bloque Scope.
Asigne al bloque Chart el nombre
Battery.
Simular el modelo
Simule el modelo completado.
En la pestaña Simulation, establezca Stop Time en
Inf.Haga doble clic para entrar en el bloque Chart.
Para simular el modelo, en la pestaña Modeling, haga clic en Run. Observe el resaltado azul alrededor del estado
Charge.Vuelva a Simulink Editor.
Para alternar el bloque Manual Switch, haga doble clic en el bloque.
Abra Stateflow Editor. Observe el resaltado azul alrededor del estado
Discharge.Para finalizar la simulación, en la pestaña Modeling, haga clic en Stop.
Alterne el bloque Manual Switch a
1.
En el siguiente paso del tutorial, se utiliza la salida de estado activo, el registro y los puntos de interrupción para verificar y depurar el modelo de batería.


