В этом примере показано, как смоделировать медиаплеер с помощью перечисленных данных в 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, чтобы выбрать другие рабочие режимы. Для примера:
В разделе Radio Request нажмите CD. Блоки Display для перечисленных данных RR
и CurrentRadioMode
изменение с OFF
на CD
.
Нажмите Insert Disc. Отображение блока для перечисленных данных CdStatus
изменения от EMPTY
на DISCINSERT
на STOP
.
В разделе Запрос компакт-диска нажмите кнопку ВОСПРОИЗВЕДЕНИЕ. Блоки 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
(проигрыватель компакт-дисков обеспечивает быструю переадресацию).