Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Definir tipos de datos enumerados

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.

Antes de poder añadir datos enumerados a un gráfico de Stateflow, debe definir un tipo de datos enumerados en un archivo de definición de clase de MATLAB®. Cree un archivo diferente para cada tipo enumerado.

Elementos de una definición de tipo de datos enumerados

La definición de tipo de datos enumerados consta de tres secciones de código.

Sección de código¿Obligatorio?Finalidad
classdef

Proporciona el nombre del tipo de datos enumerados

enumeration

Muestra los valores enumerados que el tipo de datos permite

methods

No

Proporciona métodos que personalizan el tipo de datos

Definir un tipo de datos enumerados

  1. Abra un archivo nuevo en el que dese almacenar la definición del tipo de datos. En la pestaña Home de la barra de herramientas de MATLAB, seleccione New > Class.

  2. Complete la sección classdef de la definición.

    classdef BasicColors < Simulink.IntEnumType
      ...
    end

    La sección classdef define un tipo de datos enumerados con el nombre BasicColors. Stateflow deriva el tipo de datos del tipo integrado Simulink.IntEnumType. El nombre del tipo de datos enumerados debe ser único entre los nombres de los tipos de datos y los nombres de variables del área de trabajo.

  3. Defina valores enumerados en una sección enumeration.

    classdef BasicColors < Simulink.IntEnumType
      enumeration
        Red(0)
        Yellow(1)
        Green(2)
      end
    end

    Un tipo enumerado puede definir cualquier número de valores. La sección enumeration muestra el conjunto de valores enumerados que permite este tipo de datos. Cada valor enumerado consta de un nombre y de un valor entero subyacente. Cada nombre debe ser único dentro de su tipo, pero también puede aparecer en otros tipos enumerados. El valor predeterminado es el primero de la lista, a menos que especifique lo contrario en la sección methods de la definición.

  4. (Opcional) Personalice el tipo de datos utilizando una sección methods. La sección puede contener estos métodos:

    • getDefaultValue especifica un valor enumerado predeterminado diferente al primero de la lista de valores permitidos.

    • getDescription especifica una descripción del tipo de datos para código generado por Simulink Coder™.

    • getHeaderFile especifica un archivo de encabezado personalizado que contiene la definición del tipo enumerado en código generado por Simulink Coder.

    • getDataScope activa la exportación o importación de la definición del tipo enumerado a o a partir de un archivo de encabezado en código generado por Simulink Coder.

    • addClassNameToEnumNames mejora la legibilidad y evita conflictos de nombres con identificadores en código generado por Simulink Coder.

    Por ejemplo, este archivo de MATLAB presenta una definición personalizada para el tipo de datos enumerados BasicColors que:

    • Especifica que el valor enumerado predeterminado es el último de la lista de valores permitidos.

    • Incluye una breve descripción del tipo de datos para código generado por Simulink Coder.

    • Importa la definición del tipo de datos a partir de un archivo de encabezado personalizado para evitar que Simulink Coder genere la definición.

    • Añade el nombre del tipo de datos como un prefijo al nombre de cada miembro de la enumeración en código generado por Simulink Coder.

    classdef BasicColors < Simulink.IntEnumType
      enumeration
        Red(0)
        Yellow(1)
        Green(2)
      end
    
      methods (Static = true)
        function retVal = getDefaultValue()
          % GETDEFAULTVALUE Specifies the default enumeration member.
          % Return a valid member of this enumeration class to specify the default.
          % If you do not define this method, Simulink uses the first member.
          retVal = BasicColors.Green;
        end
    
        function retVal = getDescription()
          % GETDESCRIPTION Specifies a string to describe this enumerated type.
          retVal = 'This defines an enumerated type for colors';
        end
    
        function retVal = getHeaderFile()
          % GETHEADERFILE Specifies the file that defines this type in generated code.
          % The method getDataScope determines the significance of the specified file.
          retVal = 'imported_enum_type.h';
        end
    
        function retVal = getDataScope()
          % GETDATASCOPE Specifies whether generated code imports or exports this type.
          % Return one of these strings:
          % 'Auto':     define type in model_types.h, or import if header file specified
          % 'Exported': define type in a generated header file
          % 'Imported': import type definition from specified header file
          % If you do not define this method, DataScope is 'Auto' by default.
          retVal = 'Imported';
        end
    
        function retVal = addClassNameToEnumNames()
          % ADDCLASSNAMETOENUMNAMES Specifies whether to add the class name
          % as a prefix to enumeration member names in generated code.
          % Return true or false.
          % If you do not define this method, no prefix is added.
          retVal = true;
        end % function
      end % methods
    end % classdef

  5. Guarde el archivo en la ruta de MATLAB. El nombre del archivo debe coincidir exactamente con el nombre del tipo de datos. Por ejemplo, la definición del tipo de datos BasicColors debe residir en un archivo llamado BasicColors.m.

    Sugerencia

    Para añadir una carpeta a la ruta de búsqueda de MATLAB, escriba addpath pathname en la línea de comandos.

Especificar el tipo de datos en Property Inspector

Cuando añada datos enumerados al gráfico, especifique su tipo en Property Inspector.

  1. En el campo Type, seleccione Enum: <class name>.

  2. Reemplace <class name> con el nombre del tipo de datos. Por ejemplo, puede introducir Enum: BasicColors en el campo Type.

  3. (Opcional) Introduzca un valor inicial para los datos enumerados utilizando un identificador con prefijo. El valor inicial debe evaluarse como una expresión de MATLAB válida. Para obtener más información sobre identificadores con prefijo y sin prefijo, consulte Notation for Enumerated Values.

Temas relacionados