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

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

  • User Request является диаграммой Stateflow, которая читает и хранит входы от UI.

  • Media Player Mode Manager является диаграммой Stateflow, которая определяет, работает ли медиаплеер в режиме AM-радио, FM-радио или CD-проигрывателя.

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

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

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

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

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

  • OFF(0)

  • CD(1)

  • FM(2)

  • AM(3)

Раздел «Запрос компакт-диска» содержит кнопки для выбора рабочего режима для компонента проигрывателя компакт-дисков. Кнопки «Вставить диск» и «Извлечь диск» также влияют на этот режим работы. Перечисленные значения для типа данных CdRequestMode соответствуют этим режимам работы проигрывателя компакт-дисков:

  • EMPTY(-2)

  • DISCINSERT(-1)

  • STOP(0)

  • PLAY(1)

  • REW(3)

  • FF(4)

  • EJECT(5)

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

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

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

  3. В разделе Запрос компакт-диска нажмите кнопку ВОСПРОИЗВЕДЕНИЕ. Блоки Display для перечисленных данных CR, MechCmd, и CdStatus изменение с STOP на PLAY.

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

График User Request считывает запросы от пользовательского интерфейса помощника медиаплеера и сохраняет информацию следующими выходами:

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

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

  • DiscInsert: Логические данные, представляющие кнопку «Вставить диск».

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

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

Выберите режим на основе изменений в перечисленных данных

Media Player Mode Manager графика активирует подкомпонент медиаплеера в зависимости от входа из графика User Request.

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

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

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

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

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

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

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

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

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

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

График модели поведения проигрывателя компакт-дисков реализует поведение механизма проигрывателя компакт-дисков в зависимости от входов графиков Запрос и Media Mode Mode Manager. Чтобы смоделировать механические задержки в проигрывателе CD, график использует оператор временной логики в абсолютное время after. Для образца:

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

  • The 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 (проигрыватель компакт-дисков обеспечивает быструю переадресацию).

См. также

|

Похожие темы