Contenido principal

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.

  1. Inicie MATLAB®. En la barra de herramientas de MATLAB, en la pestaña Home, haga clic en Simulink.

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

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

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

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

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

  1. Para crear la primera transición, apunte al borde del estado Charge hasta que el cursor se convierta en un símbolo más. Haga clic y arrástrelo hasta el borde del estado Discharge.

    Sugerencia

    Para mover una transición existente, haga clic en la flecha y arrástrela.

  2. Cree una transición de Discharge a Charge.

  3. 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 Charge y Discharge en 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.

  1. Para pasar de Charge a Discharge solo 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.

  2. Para pasar de Discharge a Charge solo 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 estadoComportamiento
entrySe ejecuta cuando el estado se activa.
duringSe ejecuta en cada paso que un estado está activo. No se ejecuta en un paso cuando el estado se activa o se desactiva.
exitSe 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.

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

    entry:
    sentPower=0;
    during:
    charge=charge+4;
    La acción entry establece una variable denominada sentPower en 0. La acción during aumenta una variable denominada charge en 4.

    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.

  2. En el estado Discharge, añada una acción entry que establezca sentPower en 3.5 y una acción during que disminuya charge en 3.

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.

IconoTipoComportamiento
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 localesDurante 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.

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

  2. Establezca la carga inicial de la batería. En el panel Symbols, en la fila charge, haga clic en la columna Value e introduzca 50.

    Nota

    Durante la simulación, los datos con un valor no definido se establecen en 0 de forma predeterminada.

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

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

  2. Añada un bloque Constant con un valor de 1. Conecte la salida al primer puerto de entrada del bloque Manual Switch.

  3. Añada un bloque Constant con un valor de 0. Conecte la salida al segundo puerto de entrada del bloque Manual Switch.

  4. Añada un bloque Scope. Conecte el puerto de salida del bloque Chart al puerto de entrada del bloque Scope.

  5. Asigne al bloque Chart el nombre Battery.

Simular el modelo

Simule el modelo completado.

  1. En la pestaña Simulation, establezca Stop Time en Inf.

  2. Haga doble clic para entrar en el bloque Chart.

  3. Para simular el modelo, en la pestaña Modeling, haga clic en Run. Observe el resaltado azul alrededor del estado Charge.

  4. Vuelva a Simulink Editor.

  5. Para alternar el bloque Manual Switch, haga doble clic en el bloque.

  6. Abra Stateflow Editor. Observe el resaltado azul alrededor del estado Discharge.

  7. Para finalizar la simulación, en la pestaña Modeling, haga clic en Stop.

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

Consulte también

Temas