Чтобы сгенерировать перечислимый тип данных, задайте класс перечисления в файле 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 и Многопортовый блок switch.
2. Модель открывает в Редакторе Simulink перспективный режим кода. Если это не делает, выберите Code> C/C ++ Code> Configure Model in Code Perspective.
3. В Model Data Editor выберите вкладку Parameters.
4. В модели кликните по блоку Enumerated Constant.
5. В Model Data Editor используйте Столбец значений, чтобы установить постоянное значение к myChoice
. Рядом с myChoice
кликните по кнопке действий (с тремя вертикальными точками) и выберите Create.
6. В диалоговом окне Create New Data, установленном Значении к Simulink.Parameter(ex_myEnumType.Choice1)
и нажимают Create. Объект Simulink.Parameter
под названием myChoice
появляется в базовом рабочем пространстве. Объектно-ориентированная память перечисляемое значение Choice1
типа ex_myEnumType
.
7. В диалоговом окне свойства для myChoice
, Класса памяти набора к ExportedGlobal
. С этой установкой объект появляется в сгенерированном коде как глобальная переменная.
8. В Model Data Editor выберите вкладку Signals.
9. В модели выберите выходной сигнал блока Enumerated Constant.
10. В Model Data Editor используйте столбец Типа данных, чтобы установить тип данных сигнала на Enum: ex_myEnumType
.
11. В модели выберите View> Property Inspector. Затем выберите Multiport Switch block.
12. В Property Inspector, наборе:
Порядок порта данных к Specify indices
.
Индексы порта данных к enumeration('ex_myEnumType')
. Это выражение возвращает всех участников перечисления ex_myEnumType
.
13. Установите Параметры конфигурации> Файл упаковочный формат к Modular
. С этой установкой, в сгенерированном коде, определение ex_myEnumType
может появиться в заданном заголовочном файле, myEnumHdr.h
.
14. Сгенерируйте код из модели.
Просмотрите сгенерированный заголовочный файл 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' */ }