Contenido principal

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.

Stateflow chart with states called A and B.

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ón entry asignando el valor RED a los datos enumerados color.

  • 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 estado B.

Ejecución del estado B

  • Cuando se produce la transición desde el estado A, se accede al estado B.

  • El estado B ejecuta la acción entry asignando el valor GREEN a los datos enumerados color.

  • 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 estado A.

Crear el gráfico

Añadir estados y transiciones al gráfico

  1. Para crear un modelo de Simulink con un gráfico vacío, en la línea de comandos de MATLAB®, introduzca sfnew.

  2. En el gráfico vacío, añada los estados A y B. En el comando de texto, introduzca las instrucciones de acción adecuadas.

  3. Añada una transición predeterminada al estado A y transiciones entre los estados A y B.

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

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

  2. En el editor de MATLAB, introduzca:

    classdef TrafficColors < Simulink.IntEnumType
      enumeration
        RED(0)
        GREEN(10)
      end
    end  
    La sección classdef define un tipo de datos enumerados basado en enteros denominado TrafficColors. La sección enumeration contiene los valores enumerados que permite este tipo de datos, seguidos de su valor numérico subyacente.

  3. Guarde el archivo como TrafficColors.m en una carpeta de la ruta de búsqueda de MATLAB.

Definir datos de gráficos

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

  2. Para especificar color como datos enumerados, en Property Inspector:

    • En el campo Type, seleccione Enum: <class name>. Reemplace <class name> con TrafficColors, el nombre del tipo de datos que ha definido previamente.

    • En Logging, seleccione la casilla Log signal data.

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

  4. En el panel Symbols, elimine los símbolos GREEN y RED. El editor de Stateflow ha identificado estos símbolos como parámetros incorrectamente antes de que especificara color como datos enumerados.

Ver salida registrada

  1. Simule el modelo.

  2. En la pestaña Simulation, en Review Results, seleccione Data Inspector .

  3. En Simulation Data Inspector (Simulink), en el panel Inspect, seleccione las señales color e y. Puede mostrar las señales registradas juntas o en ejes separados. Para obtener más información, consulte Inspect Simulation Data (Simulink).

    Simulation Data Inspector showing simulation results for color and y.

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

(Simulink)

Temas