Для повышения читаемости Stateflow® график, используйте перечисленные данные. С помощью перечисленных данных можно:
Создайте ограниченное множество значений и обратитесь к этим значениям по имени.
Сгруппировать связанные значения в отдельные типы данных.
Избегайте определения длинного списка констант.
Перечисленные данные поддерживаются в диаграммах Stateflow в Simulink® модели. Для получения дополнительной информации смотрите Ссылку значений по Имени при помощи перечисленных данных.
Прежде чем вы сможете добавить перечисленные данные к диаграмме Stateflow, необходимо задать тип перечисленных данных в MATLAB® файл определения класса. Создайте другой файл для каждого перечисляемого типа.
Перечисленное определение типов состоит из трех разделов кода.
Раздел кода | Требуется? | Цель |
---|---|---|
classdef | Да | Задает имя перечисляемого типа данных |
enumeration | Да | Список перечисленных значений, которые позволяет тип данных |
methods | Нет | Предоставляет методы, которые настраивают тип данных |
Откройте новый файл, в котором будет храниться определение типов. На вкладке Home на панели инструментов MATLAB выберите New > Class.
Заполните classdef
раздел определения.
classdef BasicColors < Simulink.IntEnumType ... end
The classdef
раздел задает тип перечисляемых данных с именем BasicColors
. Stateflow выводит тип данных из встроенного типа Simulink.IntEnumType
. Имя перечисленного типа данных должно быть уникальным среди имен типов данных и имен переменных рабочей области.
Задайте перечисленные значения в enumeration
раздел.
classdef BasicColors < Simulink.IntEnumType enumeration Red(0) Yellow(1) Green(2) end end
Перечисленный тип может задать любое количество значений. The enumeration
В разделе приведен набор перечисленных значений, разрешенных этим типом данных. Каждое перечисленное значение состоит из имени и базового целого значения. Каждое имя должно быть уникальным в пределах его типа, но может также находиться в других перечисленных типах. Значение по умолчанию является первым в списке, если вы не задаете обратное в methods
раздел определения.
(Необязательно) Настройка типа данных с помощью 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
Сохраните файл в пути MATLAB. Имя файла должно точно совпадать с именем типа данных. Для примера - определение типа данных BasicColors
должен находиться в файле с именем BasicColors.m
.
Совет
Чтобы добавить папку в путь поиска файлов MATLAB, введите addpath
в командной строке.pathname
Когда вы добавляете перечисленные данные к графику, задайте его тип в Property Inspector.
В Type поле выберите Enum: <class name>
.
Замените <class name>
с именем типа данных. Для примера можно ввести Enum: BasicColors
в поле Type.
(Необязательно) Введите начальное значение для перечисленных данных с помощью префиксного идентификатора. Начальное значение должно быть рассчитано на допустимое выражение MATLAB.