Смоделируйте медиаплеер при помощи перечислимых данных в трех графиках Stateflow®.

| Компонент модели | Описание |
|---|---|
| График UserRequest | Чтения и вводы данных пользователем хранилищ от пользовательского интерфейса |
| График CdPlayerModeManager | Определяет, действует ли медиаплеер в радио AM, радио FM или режиме проигрывателя компакт-дисков |
| График CdPlayerBehaviorModel | Описывает поведение компонента проигрывателя компакт-дисков |
Эта модель использует два перечислимых типа данных: RadioRequestMode и CdRequestMode. Путем группировки связанных значений в отдельные типы данных:
Вы улучшаете удобочитаемость значений данных в каждом графике.
Вы стараетесь не задавать длинный список констант и уменьшаете объем данных в своей модели.
| Перечислимый тип данных | Перечисляемые значения |
|---|---|
RadioRequestMode |
|
CdRequestMode |
|
Запустите симуляцию модели. Помощник Проигрывателя компакт-дисков появляется.

В модели блоки Отображения показывают настройки по умолчанию медиаплеера.

В разделе Radio Request нажмите CD. Отображение блокирует для перечислимых данных RR и изменение CurrentRadioMode от OFF до CD.
Нажмите Insert Disc. Блок Display для перечислимых данных CdStatus изменяется от EMPTY до DISCINSERT к STOP.
В разделе CD Request нажмите PLAY. Отображение блокирует для перечислимых данных CR, MechCmd и изменение CdStatus от STOP до PLAY.
Чтобы видеть другие изменения в блоках Отображения, используйте Помощника Проигрывателя компакт-дисков, чтобы выбрать другие рабочие режимы для медиаплеера.
Этот график читает вводы данных пользователем от Помощника Проигрывателя компакт-дисков и хранит информацию как выходные данные.

Перечислимые данные RR и CR
Оператор пространства имен ml, чтобы получить доступ к MATLAB® функционирует sfcdplayerhelper
График вызывает функциональный sfcdplayerhelper на пути MATLAB, читает ваше взаимодействие с пользовательским интерфейсом и хранит его как выходные данные.
| Имя выходных данных | Тип данных | Выбор кнопки | Описание |
|---|---|---|---|
RR | Перечислимый | Кнопки в разделе Radio Request | Субкомпонент медиаплеера, чтобы активироваться |
CR | Перечислимый | Кнопки в разделе CD Request | Рабочий режим проигрывателя компакт-дисков |
DiscInsert | Булевская переменная | Insert Disc | Установка для вставки CD |
DiscEject | Булевская переменная | Eject Disc | Установка для извлечения CD |
Этот график активирует соответствующий субкомпонент медиаплеера в зависимости от входных параметров, полученных от графика UserRequest.

Перечислимые данные RadioReq, CdReq, CurrentRadioMode и MechCmd
Оператор hasChanged, чтобы обнаружить изменения в значении RadioReq
Подграфики CdMode, AMMode и FMMode
В начале симуляции состояние ModeManager становится активным. Если булевы данные, DiscEject равняется 1 (или true), переход к состоянию Eject, происходят, сопровождаемые переходом назад к состоянию ModeManager.
Когда ModeManager активен, ранее активное подсостояние (Standby или ON), как зарегистрировано соединением истории становится активным. Последующие переходы между Standby и подсостояниями ON зависят от перечислимых данных RadioReq:
Если RadioReq является OFF, подсостояние Standby активируется.
Если RadioReq не является OFF, подсостояние ON активируется.
В подсостоянии ON три подграфика представляют рабочие режимы медиаплеера: Проигрыватель компакт-дисков, радио AM и радио FM. Каждый подграфик соответствует различному значению перечислимых данных RadioReq. Внутренний переход в состоянии ON постоянно сканирует для изменений в значении RadioReq.
Значение перечислимых данных RadioReq | Активный подграфик | Цель подграфика |
|---|---|---|
CD | CDMode | Устанавливает медиаплеер на режим проигрывателя компакт-дисков. Выходные параметры PLAY, REW, FF и команды STOP к графику CdPlayerBehaviorModel. |
AM | AMMode | Устанавливает медиаплеер на режим радио AM. Выводит команду STOP к графику CdPlayerBehaviorModel. |
FM | FMMode | Устанавливает медиаплеер на режим радио FM. Выводит команду STOP к графику CdPlayerBehaviorModel. |
Этот график активирует соответствующий рабочий режим для проигрывателя компакт-дисков в зависимости от входа, полученного от графика CdPlayerBehaviorModel.

Перечислимые данные CMD и CdStatus
after временный логический оператор, чтобы управлять синхронизацией переходов во время вставки диска и извлечения
В начале симуляции активируется состояние Empty.
Если булевы данные, DiscInsert равняется 1 (или true), переход к состоянию Inserting, происходят. После кратковременной задержки происходит переход к состоянию DiscPresent.
Состояние DiscPresent остается активным до данных, CMD становится EJECT. В той точке происходит переход к состоянию Ejecting. После кратковременной задержки происходит переход к состоянию Empty.
Каждый раз, когда изменение состояния происходит, перечислимые данные значение изменений CdStatus, чтобы отразить состояние проигрывателя компакт-дисков.
| Активное состояние | Значение перечислимых данных CdStatus | Поведение проигрывателя компакт-дисков |
|---|---|---|
Empty | EMPTY | Проигрыватель компакт-дисков пуст. |
Inserting | DISCINSERT | CD вставляется в проигрыватель. |
Ejecting | EJECT | CD извлекается от игрока. |
DiscPresent.STOP | STOP | CD присутствует и остановился. |
DiscPresent.PLAY | PLAY | CD присутствует и проигрывание. |
DiscPresent.REW | REW | CD присутствует и перемотка. |
DiscPresent.FF | FF | CD является существующей и быстрой передачей. |