Asignar valores enumerados en un gráfico
Para mejorar la legibilidad de un gráfico de Stateflow®, use datos enumerados. Con datos enumerados, puede hacer lo siguiente:
Crear un conjunto restringido de valores y hacer referencia a esos valores por nombre.
Agrupar los valores relacionados en tipos de datos separados.
Evitar definir una lista de constantes larga.
Los datos enumerados se admiten en gráficos de Stateflow en modelos de Simulink®. Para obtener más información, consulte Reference Values by Name by Using Enumerated Data.
Comportamiento de un gráfico
Este ejemplo muestra cómo crear un gráfico que use valores enumerados para generar una palabra clave de estado.
Durante la simulación, la acción del gráfico alterna entre los estados A
y B
.
Ejecución del estado A
Al comienzo de la simulación, se accede al estado
A
.El estado
A
ejecuta la acciónentry
asignando el valorRED
a los datos enumeradoscolor
.Los datos
y
aumentan una vez por unidad de tiempo (cada 0,2 segundos) hasta que la condición[y > 6]
sea verdadera.El gráfico realiza la transición del estado
A
al estadoB
.
Ejecución del estado B
Cuando se produce la transición desde el estado
A
, se accede al estadoB
.El estado
B
ejecuta la acciónentry
asignando el valorGREEN
a los datos enumeradoscolor
.Los datos
y
disminuyen una vez por unidad de tiempo (cada 0,2 segundos) hasta que la condición[y < 3]
sea verdadera.El gráfico realiza la transición del estado
B
de vuelta al estadoA
.
Crear el gráfico
Añadir estados y transiciones al gráfico
Para crear un modelo de Simulink con un gráfico vacío, en la línea de comandos de MATLAB®, introduzca
sfnew
.En el gráfico vacío, añada los estados
A
yB
. En el comando de texto, introduzca las instrucciones de acción adecuadas.Añada una transición predeterminada al estado
A
y transiciones entre los estadosA
yB
.Haga doble clic en cada transición. En el comando de texto, introduzca la condición adecuada.
Definir un tipo de datos enumerados para el gráfico
Para crear un archivo en el que almacenar la definición de tipo de datos, desde la pestaña Home de la barra de herramientas de MATLAB, seleccione New > Class.
En el editor de MATLAB, introduzca:
La secciónclassdef TrafficColors < Simulink.IntEnumType enumeration RED(0) GREEN(10) end end
classdef
define un tipo de datos enumerados basado en enteros denominadoTrafficColors
. La secciónenumeration
contiene los valores enumerados que permite este tipo de datos, seguidos de su valor numérico subyacente.Guarde el archivo como
TrafficColors.m
en una carpeta de la ruta de búsqueda de MATLAB.
Definir datos de gráficos
Para resolver los datos no definidos, en el panel Symbols, haga clic en el icono Resolve undefined symbols
. El editor de Stateflow asigna un ámbito adecuado a cada símbolo del gráfico.
Símbolo Ámbito color
Datos de salida y
Datos locales GREEN
Datos de parámetros RED
Datos de parámetros Para especificar
color
como datos enumerados, en Property Inspector:En el campo Type, seleccione
Enum: <class name>
. Reemplace<class name>
conTrafficColors
, el nombre del tipo de datos que ha definido previamente.En Logging, seleccione la casilla Log signal data.
Para establecer el ámbito y el tipo de
y
, en Property Inspector:En el campo Scope, seleccione
Output
.En el campo Type, seleccione
uint8
.En Logging, seleccione la casilla Log signal data.
En el panel Symbols, elimine los símbolos
GREEN
yRED
. El editor de Stateflow ha identificado estos símbolos como parámetros incorrectamente antes de que especificaracolor
como datos enumerados.
Ver salida registrada
Simule el modelo.
En la pestaña Simulation, en Review Results, seleccione Data Inspector
.
En Simulation Data Inspector (Simulink), en el panel Inspect, seleccione las señales
color
ey
. Puede mostrar las señales registradas juntas o en ejes separados. Para obtener más información, consulte Inspect Simulation Data (Simulink).Para acceder a los datos registrados en el área de trabajo de MATLAB, llame al objeto de registro de señales
logsout
. Por ejemplo, en la línea de comandos, introduzca:losgout = out.logsout; colorLog = logsout.getElement("color"); Tbl = table(colorLog.Values.Time,colorLog.Values.Data); Tbl.Properties.VariableNames = ["SimulationTime","Color"]
Tbl = 9×2 table SimulationTime Color ______________ _____ 0 RED 1.6 GREEN 2.8 RED 4 GREEN 5.2 RED 6.4 GREEN 7.6 RED 8.8 GREEN 10 RED
Consulte también
Simulation Data Inspector (Simulink)