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
Aejecuta la acciónentryasignando el valorREDa los datos enumeradoscolor.Los datos
yaumentan 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
Aal estadoB.
Ejecución del estado B
Cuando se produce la transición desde el estado
A, se accede al estadoB.El estado
Bejecuta la acciónentryasignando el valorGREENa los datos enumeradoscolor.Los datos
ydisminuyen 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
Bde 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
AyB. En el comando de texto, introduzca las instrucciones de acción adecuadas.Añada una transición predeterminada al estado
Ay transiciones entre los estadosAyB.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
classdefdefine un tipo de datos enumerados basado en enteros denominadoTrafficColors. La secciónenumerationcontiene los valores enumerados que permite este tipo de datos, seguidos de su valor numérico subyacente.Guarde el archivo como
TrafficColors.men 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 colorDatos de salida yDatos locales GREENDatos de parámetros REDDatos de parámetros Para especificar
colorcomo 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
GREENyRED. El editor de Stateflow ha identificado estos símbolos como parámetros incorrectamente antes de que especificaracolorcomo 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
colorey. 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)