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

Чтобы сгенерировать перечислимый тип данных, задайте класс перечисления в файле 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 и Многопортовый блок switch.

2. В Model Data Editor выберите вкладку Parameters.

3. В модели кликните по блоку Enumerated Constant.

4. В Model Data Editor используйте Столбец значений, чтобы установить постоянное значение к myChoice. Рядом с myChoice, кликните по кнопке действий (с тремя вертикальными точками) и выберите Create.

5. В диалоговом окне Create New Data, установленном Значении к Simulink.Parameter(ex_myEnumType.Choice1) и нажмите Create. Simulink.Parameter возразите названному myChoice появляется в базовом рабочем пространстве. Объектно-ориентированная память перечисляемое значение Choice1 из типа ex_myEnumType.

6. В диалоговом окне свойства для myChoice, установите Класс памяти на ExportedGlobal. С этой установкой объект появляется в сгенерированном коде как глобальная переменная.

7. В Model Data Editor выберите вкладку Signals.

8. В модели выберите выходной сигнал блока Enumerated Constant.

9. В Model Data Editor используйте столбец Типа данных, чтобы установить тип данных сигнала на Enum: ex_myEnumType.

10. Выберите Многопортовый блок 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' */
}

Смотрите также

Похожие темы