Чтобы создать перечисляемый тип данных, определите класс перечисления в файле MATLAB. Затем используйте класс перечисления в качестве типа данных сигналов, параметров блоков и состояний в модели.
typedef enum {
Choice1 = 0,
Choice2
} myEnumType;
В текущей папке создайте файл MATLAB ex_myEnumType.m. Файл определяет класс перечисления ex_myEnumType.
classdef ex_myEnumType < Simulink.IntEnumType enumeration Choice1(0) Choice2(1) end %enumeration methods (Static) function retVal = getHeaderFile() retVal = 'myEnumHdr.h'; end %function function retVal = getDataScope() retVal = 'Exported'; end %function end %methods end %classdef
1. Открытие модели ex_pattern_enum имеет блок перечисляемой константы и блок многопортового коммутатора.

2. В Редакторе данных модели (Model Data Editor) выберите вкладку Параметры (Parameters).
3. В модели щелкните блок «Перечисляемая константа».
4. В редакторе данных модели используйте столбец Значение (Value), чтобы задать значение константы равным myChoice. Рядом с myChoiceнажмите кнопку действия (с тремя вертикальными точками) и выберите «Создать».
5. В диалоговом окне «Создание новых данных» задайте для параметра «Значение» значение Simulink.Parameter(ex_myEnumType.Choice1) и нажмите кнопку «Создать». A Simulink.Parameter объект с именем myChoice отображается в базовой рабочей области. Объект сохраняет перечисленное значение Choice1 типа ex_myEnumType.
6. На вкладке Создание кода установите для класса хранения значение ExportedGlobal. При этом параметре объект отображается в созданном коде как глобальная переменная.
7. В Редакторе данных модели (Model Data Editor) выберите вкладку Сигналы (Signals).
8. В модели выберите выходной сигнал блока «Перечисленная константа».
9. В редакторе данных модели используйте столбец Тип данных (Data Type), чтобы задать тип данных сигнала как Enum: ex_myEnumType.
10. Выберите блок многопортового коммутатора.
11. В инспекторе свойств задайте:
Порядок портов данных для Specify indices.
Индексы портов данных для enumeration('ex_myEnumType'). Это выражение возвращает все члены перечисления ex_myEnumType.
12. Задайте для параметра конфигурации модели Формат упаковки файлов значение Modular. С помощью этого параметра в сгенерированном коде определяется ex_myEnumType может отображаться в указанном файле заголовка, myEnumHdr.h.
13. Чтобы создать модель и создать код, нажмите клавиши CTRL + B.
Просмотр созданного файла заголовка myEnumHdr.h. Файл определяет перечисляемый тип данных.
typedef enum {
Choice1 = 0, /* Default value */
Choice2
} ex_myEnumType;
Просмотр исходного файла ex_pattern_enum.c. Файл определяет переменную myChoice. Алгоритм в step функции использует myChoice для направления одного из входных сигналов к выходному сигналу.
ex_myEnumType myChoice = Choice1; /* Variable: myChoice
/* Model step function */
void ex_pattern_enum_step(void)
{
/* MultiPortSwitch: '<Root>/Multiport Switch' incorporates:
* Constant: '<S1>/Constant'
*/
if (myChoice == Choice1) {
/* Outport: '<Root>/Data Out' incorporates:
* Inport: '<Root>/Data In 1'
*/
rtY.DataOut = rtU.DataIn1;
} else {
/* Outport: '<Root>/Data Out' incorporates:
* Inport: '<Root>/Data In 2'
*/
rtY.DataOut = rtU.DataIn2;
}
/* End of MultiPortSwitch: '<Root>/Multiport Switch' */
}