Используйте перечисления для управления светодиодным отображением

Перечисления в блоке MATLAB function

Этот пример показывает, как блоки MATLAB Function обмениваются перечисленными данными с другими блоками Simulink ®. Модель использует перечисления, чтобы представлять режимы устройства, которое управляет цветами светодиодного отображения. Блок MATLAB Function получает перечисленный входной сигнал, который представляет режим. Перечисленный выходной сигнал представляет цвет, отображаемый светодиодом.

В этой модели Step блок обеспечивает источник сигнала включения/выключения. Этот блок выводит начальное значение 0 (off) и, через 10 секунд, переходит к значению 1 (on). Пара блоков преобразования типа данных преобразует этот сигнал, сначала из типа double для ввода int32а затем от int32 к нумерованному типу switchmode. Параметры во втором блоке Data Type Conversion имеют следующие настройки:

  • Выходной минимум: []

  • Выходной максимум: []

  • Выход данных: Enum:switchmode

Блок MATLAB Function checkState вычисляет перечисленные входные state для определения значения перечисляемого выхода ledval. state наследует его перечисленный тип switchmode от входного сигнала Simulink, в то время как ledval имеет тип Enum:led. Наконец, блок Display отображает значение ledval.

Определения классов перечисления

The switchmode перечисление представляет допустимые режимы для входа в checkstate блок.

classdef switchmode < Simulink.IntEnumType
  enumeration
    OFF(0)
    ON(1)
  end
end

The led перечисление представляет цвета, которые checkstate блок может выводить.

classdef led < Simulink.IntEnumType
    enumeration
        GREEN(1),
        RED(8)
    end
end
Оба класса перечисления наследуются от встроенного типа Simulink.IntEnumType и проживайте в MATLAB® путь.

MATLAB Function функции блока

Функция checkState использует перечисления для активации светодиодного отображения основе состояния устройства. Он освещает зелёное светодиодное отображение, чтобы указать на состояние ON. Он освещает красное светодиодное отображение для индикации состояния OFF.

function ledval = checkState(state)
%#codegen

if state == switchmode.ON
    ledval = led.GREEN;
else
    ledval = led.RED;
end

Симуляция

Когда вы моделируете модель, блок Display отображает состояние светодиодного отображения. Если вы симулируете модель менее 10 секунд, состояние отключено. Блок Display отображается RED. Если вы моделируете модель более 10 секунд, состояние включено. Блок Display отображает GREEN.

Похожие темы