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

Этот пример показывает, как использовать перечисления в блоке MATLAB function. Пример показывает, как блоки MATLAB function обмениваются перечисленными данными с другими блоками Simulink®.

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

Модель Simulink

Открыть модель, в командной строке, введите:

emldemo_led_switch

Модель содержит блоки, перечисленные в этой таблице.

Блок SimulinkОписание

Шаг

Обеспечивает источник сигнала включения - выключения. Выводит начальное значение 0 (прочь), и в 10 секунд подходит к значению 1 (на).

Преобразование типа данных от double до int32

Преобразовывает сигнал Step типа double, чтобы ввести int32.

Преобразование типа данных от int32 до перечислимого типа switchmode

Преобразовывает значение типа int32 к перечислимому типу switchmode.

Параметры блоков Преобразования типа данных имеют эти настройки:

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

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

  • Тип выходных данных: Enum:switchmode

Блок MATLAB function checkState

Оценивает перечислимый вход state, чтобы определить значение перечислимого вывода ledval. state наследовал свой перечислимый тип switchmode от сигнала шага Simulink. ledval имеет тип Enum:led.

Отображение

Отображает значение ledval.

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

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

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

Перечисление 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.

Похожие темы