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

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

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

Модель Simulink

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

emldemo_led_switch

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

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

Step

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

Data Type Conversion от double к int32

Преобразует Step сигнал типа double вводить int32.

Data Type Conversion от int32 к перечислимому типу switchmode

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

Параметры блоков Data Type Conversion имеют эти настройки:

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

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

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

Блок MATLAB Function checkState

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

Display

Отображает значение 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.

Похожие темы