exponenta event banner

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

Перечисления в функциональном блоке MATLAB

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

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

  • Минимальный выходной сигнал: []

  • Максимальная выходная мощность: []

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

Функциональный блок MATLAB 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

Функция checkState использует перечисления для активации светодиодного дисплея в зависимости от состояния устройства. Он загорается зеленым светодиодным индикатором для индикации состояния ВКЛ. Он загорается красным светодиодным индикатором для индикации состояния OFF.

function ledval = checkState(state)
%#codegen

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

Моделирование

При моделировании модели в блоке Дисплей (Display) отображается состояние светодиодного дисплея. При моделировании модели в течение менее 10 секунд отображается состояние. RED. При моделировании модели более 10 секунд состояние включено. Отображается блок «Отображение» GREEN.

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