Задайте перечисленные типы данных

Для повышения читаемости Stateflow® график, используйте перечисленные данные. С помощью перечисленных данных можно:

  • Создайте ограниченное множество значений и обратитесь к этим значениям по имени.

  • Сгруппировать связанные значения в отдельные типы данных.

  • Избегайте определения длинного списка констант.

Перечисленные данные поддерживаются в диаграммах Stateflow в Simulink® модели. Для получения дополнительной информации смотрите Ссылку значений по Имени при помощи перечисленных данных.

Прежде чем вы сможете добавить перечисленные данные к диаграмме Stateflow, необходимо задать тип перечисленных данных в MATLAB® файл определения класса. Создайте другой файл для каждого перечисляемого типа.

Элементы перечисляемого Определения типов

Перечисленное определение типов состоит из трех разделов кода.

Раздел кодаТребуется?Цель
classdef

Да

Задает имя перечисляемого типа данных

enumeration

Да

Список перечисленных значений, которые позволяет тип данных

methods

Нет

Предоставляет методы, которые настраивают тип данных

Задайте тип перечисленных данных

  1. Откройте новый файл, в котором будет храниться определение типов. На вкладке Home на панели инструментов MATLAB выберите New > Class.

  2. Заполните classdef раздел определения.

    classdef BasicColors < Simulink.IntEnumType
      ...
    end

    The classdef раздел задает тип перечисляемых данных с именем BasicColors. Stateflow выводит тип данных из встроенного типа Simulink.IntEnumType. Имя перечисленного типа данных должно быть уникальным среди имен типов данных и имен переменных рабочей области.

  3. Задайте перечисленные значения в enumeration раздел.

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

    Перечисленный тип может задать любое количество значений. The enumeration В разделе приведен набор перечисленных значений, разрешенных этим типом данных. Каждое перечисленное значение состоит из имени и базового целого значения. Каждое имя должно быть уникальным в пределах его типа, но может также находиться в других перечисленных типах. Значение по умолчанию является первым в списке, если вы не задаете обратное в methods раздел определения.

  4. (Необязательно) Настройка типа данных с помощью methods раздел. Раздел может содержать следующие методы:

    • getDefaultValue задает перечисляемое значение по умолчанию, отличное от первого в списке допустимых значений.

    • getDescription задает описание типа данных для кода, сгенерированного Simulink Coder™.

    • getHeaderFile задает пользовательский файл заголовка, содержащий определение перечисляемого типа в коде, сгенерированном Simulink Coder.

    • getDataScope позволяет экспортировать или импортировать определение перечисленного типа в заголовочный файл или из него в коде, сгенерированном Simulink Coder.

    • addClassNameToEnumNames повышает читаемость и предотвращает конфликты по совпадению имен с идентификаторами в коде, сгенерированном Simulink Coder.

    Для примера в этом файле MATLAB представлено настраиваемое определение для перечисляемого типа данных BasicColors что:

    • Указывает, что перечисляемое значение по умолчанию является последним в списке допустимых значений.

    • Включает краткое описание типа данных для кода, сгенерированного Simulink Coder.

    • Импортирует определение типа данных из пользовательского файла заголовка, чтобы предотвратить генерацию определения Simulink Coder.

    • Добавляет имя типа данных в виде префикса к каждому имени представителя перечисления в коде, сгенерированном 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. Сохраните файл в пути MATLAB. Имя файла должно точно совпадать с именем типа данных. Для примера - определение типа данных BasicColors должен находиться в файле с именем BasicColors.m.

    Совет

    Чтобы добавить папку в путь поиска файлов MATLAB, введите addpath pathname в командной строке.

Задайте тип данных в Property Inspector

Когда вы добавляете перечисленные данные к графику, задайте его тип в Property Inspector.

  1. В Type поле выберите Enum: <class name>.

  2. Замените <class name> с именем типа данных. Для примера можно ввести Enum: BasicColors в поле Type.

  3. (Необязательно) Введите начальное значение для перечисленных данных с помощью префиксного идентификатора. Начальное значение должно быть рассчитано на допустимое выражение MATLAB.

Похожие темы