exponenta event banner

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

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

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

См. также

Связанные темы