Перечисление

Чтобы сгенерировать тип перечисленных данных, задайте класс перечисления в файле MATLAB. Затем используйте класс перечисления как тип данных сигналов, параметров блоков и состояний в вашей модели.

Конструкция C

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' */
}

См. также

Похожие темы