Чтобы сгенерировать тип перечисленных данных, задайте класс перечисления в файле 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
который имеет блок Enumerated Constant и блок Multiport Switch.
2. В Model Data Editor выберите вкладку Параметры.
3. В модели щелкните Перечисленная константа (Enumerated Constant).
4. В Model Data Editor используйте столбец Value, чтобы задать постоянное значение myChoice
. Рядом с myChoice
, нажмите кнопку действия (с тремя вертикальными точками) и выберите Create.
5. В диалоговом окне «Создание новых данных» установите значение Simulink.Parameter(ex_myEnumType.Choice1)
и нажмите «Создать». A Simulink.Parameter
объект с именем myChoice
появляется в базовом рабочем пространстве. Объект хранит перечисленное значение Choice1
типа ex_myEnumType
.
6. На вкладке Генерации кода установите Класс памяти равным ExportedGlobal
. С этой настройкой объект появляется в сгенерированном коде как глобальная переменная.
7. В Model Data Editor выберите вкладку Сигналы.
8. В модели выберите выходной сигнал блока Enumerated Constant.
9. В Model Data Editor используйте столбец Data Type, чтобы задать тип данных сигнала Enum: ex_myEnumType
.
10. Выберите блок Multiport Switch.
11. В Property Inspector установите:
Порядок портов данных для 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' */ }