В этом примере показано, как смоделировать медиаплеер при помощи перечислимых данных в 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)
В начале симуляции модели блоки Отображения показывают настройки по умолчанию медиаплеера.
Чтобы изменить перечисляемые значения в блоках Отображения, используйте Помощника Медиаплеера, чтобы выбрать другие рабочие режимы. Например:
В разделе Radio Request нажмите CD. Отображение блокирует для перечислимых данных RR
и CurrentRadioMode
изменитесь от OFF
к CD
.
Нажмите Insert Disc. Блок Display для перечислимых данных CdStatus
изменения от EMPTY
к DISCINSERT
к STOP
.
В разделе 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.
Менеджер по Режиму Медиаплеера график активирует субкомпонент медиаплеера в зависимости от входа из Пользовательского графика Запроса.
В начале симуляции модели, 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
значение изменений, чтобы отразить состояние проигрывателя компакт-дисков:
Активным подсостоянием является Empty
(Проигрыватель компакт-дисков пуст): CdStatus = EMPTY
.
Активным подсостоянием является Inserting
(Проигрыватель компакт-дисков загружает диск): CdStatus = DISCINSERT
.
Активным подсостоянием является Ejecting
(Проигрыватель компакт-дисков извлекает диск): CdStatus = EJECT
.
Активным подсостоянием является DiscPresent.STOP
(Проигрыватель компакт-дисков останавливается): CdStatus = STOP
.
Активным подсостоянием является DiscPresent.PLAY
(Проигрыватель компакт-дисков вопроизводит): CdStatus = PLAY
.
Активным подсостоянием является DiscPresent.REW
(Проигрыватель компакт-дисков перематывается): CdStatus = REW
.
Активным подсостоянием является DiscPresent.FF
(Проигрыватель компакт-дисков является быстрой передачей): CdStatus = FF
.