Медиаплеер модели при помощи перечислимых данных

В этом примере показано, как смоделировать медиаплеер при помощи перечислимых данных в Stateflow®. Медиаплеер состоит из модели Simulink® и пользовательского интерфейса (UI) MATLAB®. Модель имеет эти компоненты:

  • Пользовательским Запросом является диаграмма Stateflow, которая читает и хранит вводы данных пользователем от пользовательского интерфейса.

  • Менеджером по Режиму Медиаплеера является диаграмма Stateflow, которая определяет, действует ли медиаплеер в радио AM, радио FM или режиме проигрывателя компакт-дисков.

  • Моделью Поведения Проигрывателя компакт-дисков является диаграмма Stateflow, которая описывает поведение компонента проигрывателя компакт-дисков.

Эти графики использование перечисленные данные к связанным с группой значениям в отдельные типы данных, уменьшайте объем данных и улучшите удобочитаемость. Для получения дополнительной информации смотрите Ссылочные Значения по наименованию при помощи Перечислимых Данных.

Создайте группы связанных значений данных

Модель использует два перечислимых типа данных, чтобы сгруппировать возможные рабочие режимы для медиаплеера и для его компонента проигрывателя компакт-дисков. Помощник Медиаплеера пользовательский интерфейс разделяет эти режимы на две группы кнопок.

Раздел Radio Request содержит кнопки для выбора рабочего режима для медиаплеера. Перечисляемые значения для типа данных RadioRequestMode соответствуйте этим рабочим режимам медиаплеера:

  • OFF(0)

  • CD(1)

  • FM(2)

  • AM(3)

Раздел CD Request содержит кнопки для выбора рабочего режима для компонента проигрывателя компакт-дисков. Кнопки Insert Disc и Eject Disc также влияют на этот рабочий режим. Перечисляемые значения для типа данных CdRequestMode соответствуйте этим рабочим режимам проигрывателя компакт-дисков:

  • EMPTY(-2)

  • DISCINSERT(-1)

  • STOP(0)

  • PLAY(1)

  • REW(3)

  • FF(4)

  • EJECT(5)

В начале симуляции модели блоки Отображения показывают настройки по умолчанию медиаплеера. Чтобы изменить перечисляемые значения в блоках Отображения, используйте Помощника Медиаплеера, чтобы выбрать другие рабочие режимы. Например:

  1. В разделе Radio Request нажмите CD. Отображение блокирует для перечислимых данных RR и CurrentRadioMode изменитесь от OFF к CD.

  2. Нажмите Insert Disc. Блок Display для перечислимых данных CdStatus изменения от EMPTY к DISCINSERT к STOP.

  3. В разделе CD Request нажмите PLAY. Отображение блокирует для перечислимых данных CR, MechCmd, и CdStatus изменитесь от STOP к PLAY.

Считайте вход из пользовательского интерфейса

Пользовательский график Запроса читает запросы от Помощника Медиаплеера пользовательский интерфейс и хранит информацию как эти выходные параметры:

  • RR: Перечислимые данные, представляющие кнопку Radio Request.

  • CR: Перечислимые данные, представляющие кнопку CD Request.

  • DiscInsert: Булевы данные, представляющие кнопку Insert Disc.

  • DiscEject: Булевы данные, представляющие кнопку Eject Disc.

Чтобы считать вход из пользовательского интерфейса, график использует ml оператор пространства имен, чтобы вызвать функциональный sfcdplayerhelper на пути MATLAB. Для получения дополнительной информации смотрите доступ к функциям MATLAB и Данным о Рабочей области в Графиках C.

Выберите Mode Based on Changes in Enumerated Data

Менеджер по Режиму Медиаплеера график активирует субкомпонент медиаплеера в зависимости от входа из Пользовательского графика Запроса.

В начале симуляции модели, ModeManager состояние активно. Если булевы входные данные DiscEject становится true, переход к Eject состояние происходит, сопровождаемое переходом назад к ModeManager состояние.

Когда ModeManager активно, ранее активное подсостояние (Standby или ON, как зарегистрировано соединением истории), становится активным. Последующие переходы между Standby и ON подсостояния зависят от перечислимых входных данных RadioReq:

  • Если RadioReq OFF, Standby подсостояние активируется.

  • Если RadioReq не OFF, ON подсостояние активируется.

В ON подсостояние, три субдиаграммы представляют рабочие режимы медиаплеера: Проигрыватель компакт-дисков, радио AM и радио FM. Каждая субдиаграмма соответствует различному значению перечислимых входных данных RadioReq:

  • Если RadioReq CD, CDMode субдиаграмма активируется. Субдиаграмма выходные параметры PLAY, REW, FF, и STOP команды к графику Модели Поведения Проигрывателя компакт-дисков.

  • Если RadioReq AM, AMMode субдиаграмма активируется. Субдиаграмма выводит STOP команда к графику Модели Поведения Проигрывателя компакт-дисков.

  • Если RadioReq FM, FMMode субдиаграмма активируется. Субдиаграмма выводит STOP команда к графику Модели Поведения Проигрывателя компакт-дисков.

Отсканировать для изменений в значении RadioReq, внутренний переход в ON утвердите вызывает оператор обнаружения изменения hasChanged на каждом временном шаге.

Управляйте синхронизацией переходов

График Модели Поведения Проигрывателя компакт-дисков реализует поведение механизма проигрывателя компакт-дисков в зависимости от входа от Пользовательского менеджера по Режиму Запроса и Медиаплеера графики. Чтобы смоделировать механические задержки проигрывателя компакт-дисков, график использует абсолютно-разовый временный логический оператор after. Например:

  • В начале симуляции модели, Empty состояние активируется. Если булевы входные данные DiscInsert true, переход к Inserting состояние происходит. После одной второй задержки, перехода к DiscPresent состояние происходит.

  • DiscPresent состояние остается активным до входных данных CMD становится EJECT. В той точке, переходе к Ejecting состояние происходит. После одной второй задержки, перехода к Empty состояние происходит.

Каждый раз, когда изменение состояния происходит, перечислимые выходные данные CdStatus значение изменений, чтобы отразить состояние проигрывателя компакт-дисков:

  • CdStatus = EMPTY когда активным подсостоянием является Empty (Проигрыватель компакт-дисков пуст).

  • CdStatus = DISCINSERT когда активным подсостоянием является Inserting (Проигрыватель компакт-дисков загружает диск).

  • CdStatus = EJECT когда активным подсостоянием является Ejecting (Проигрыватель компакт-дисков извлекает диск).

  • CdStatus = STOP когда активным подсостоянием является DiscPresent.STOP (Проигрыватель компакт-дисков останавливается).

  • CdStatus = PLAY когда активным подсостоянием является DiscPresent.PLAY (Проигрыватель компакт-дисков вопроизводит).

  • CdStatus = REW когда активным подсостоянием является DiscPresent.REW (Проигрыватель компакт-дисков перематывается).

  • CdStatus = FF когда активным подсостоянием является DiscPresent.FF (Проигрыватель компакт-дисков является быстрой передачей).

Смотрите также

|

Похожие темы