В этом примере показано, как моделировать медиаплеер с помощью перечисляемых данных в Stateflow ®. Медиаплеер состоит из модели Simulink ® и пользовательского интерфейса MATLAB ®. Модель состоит из следующих компонентов:
Запрос пользователя - это диаграмма Stateflow, которая считывает и сохраняет пользовательские входные данные из интерфейса пользователя.
Диспетчер режимов медиаплеера - это диаграмма Stateflow, определяющая, работает ли медиаплеер в режиме AM-радио, FM-радио или CD-проигрывателя.
Модель поведения проигрывателя компакт-дисков - это диаграмма Stateflow, описывающая поведение компонента проигрывателя компакт-дисков.
Эти диаграммы используют перечисляемые данные для группирования связанных значений в отдельные типы данных, уменьшения объема данных и улучшения читаемости. Дополнительные сведения см. в разделе Ссылочные значения по имени с использованием перечисляемых данных.

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

Раздел Radio Request содержит кнопки для выбора режима работы медиаплеера. Перечисляемые значения для типа данных RadioRequestMode соответствуют следующим режимам работы медиаплеера:
OFF(0)
CD(1)
FM(2)
AM(3)
Раздел запроса компакт-диска содержит кнопки для выбора режима работы компонента проигрывателя компакт-диска. Кнопки «Вставить диск» и «Извлечь диск» также влияют на этот режим работы. Перечисляемые значения для типа данных CdRequestMode соответствуют следующим режимам работы проигрывателя CD:
EMPTY(-2)
DISCINSERT(-1)
STOP(0)
PLAY(1)
REW(3)
FF(4)
EJECT(5)
В начале моделирования модели в блоках отображения отображаются настройки медиаплеера по умолчанию. Чтобы изменить перечисляемые значения в блоках отображения, используйте помощник проигрывателя мультимедиа для выбора других режимов работы. Например:
В разделе Radio Request щелкните CD. Блоки отображения для перечисляемых данных RR и CurrentRadioMode изменение от OFF кому CD.
Щелкните Вставить диск. Отображаемый блок для перечисляемых данных CdStatus изменения из EMPTY кому DISCINSERT кому STOP.
В разделе Запрос компакт-диска нажмите кнопку ВОСПРОИЗВЕДЕНИЕ. Блоки отображения для перечисляемых данных CR, MechCmd, и CdStatus изменение от STOP кому PLAY.
Диаграмма запросов пользователей считывает запросы от пользовательского интерфейса помощника проигрывателя мультимедиа и сохраняет информацию в виде выходных данных:
RRПеречисляемые данные, представляющие кнопку запроса радиоблока.
CR: Перечисляемые данные, представляющие кнопку запроса компакт-диска.
DiscInsert: Логические данные, представляющие кнопку «Вставить диск».
DiscEject: Логические данные, представляющие кнопку извлечения диска.
Для считывания входных данных из пользовательского интерфейса диаграмма использует ml оператор пространства имен для вызова функции sfcdplayerhelper на пути MATLAB. Дополнительные сведения см. в разделе Доступ к функциям MATLAB и данным рабочей области в диаграммах C.

Диаграмма «Диспетчер режимов проигрывателя мультимедиа» активирует подкомпонент проигрывателя мультимедиа в зависимости от входных данных диаграммы запросов пользователей.

В начале моделирования модели 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 subchart активирован. Выходные данные подкадра PLAY, REW, FF, и STOP на диаграмму модели поведения проигрывателя компакт-дисков.
Если RadioReq является AM, AMMode subchart активирован. Подшаблон выводит STOP в диаграмму модели поведения проигрывателя компакт-дисков.
Если RadioReq является FM, FMMode subchart активирован. Подшаблон выводит STOP в диаграмму модели поведения проигрывателя компакт-дисков.
Поиск изменений в значении RadioReq, внутренний переход внутри ON состояние вызывает оператор обнаружения изменений hasChanged на каждом шаге времени.
Диаграмма модели поведения проигрывателя CD реализует поведение механизма проигрывателя CD в зависимости от входных данных из диаграмм User Request и Media Player Mode Manager. Для моделирования механических задержек в проигрывателе CD диаграмма использует оператор временной логики абсолютного времени after. Например:
В начале моделирования модели Empty состояние активировано. Если логические входные данные DiscInsert является true, переход к Inserting возникает состояние. После односекундной задержки переход к DiscPresent возникает состояние.
DiscPresent состояние остается активным до тех пор, пока входные данные CMD становится EJECT. В этот момент переход к Ejecting возникает состояние. После односекундной задержки переход к Empty возникает состояние.

При каждом переходе состояния перечисляемые выходные данные CdStatus изменяет значение, чтобы отразить состояние проигрывателя компакт-дисков:
CdStatus = EMPTY когда активное подсостояние Empty (проигрыватель компакт-дисков пуст).
CdStatus = DISCINSERT когда активное подсостояние Inserting (CD-проигрыватель загружает диск).
CdStatus = EJECT когда активное подсостояние Ejecting (CD-проигрыватель выбрасывает диск).
CdStatus = STOP когда активное подсостояние DiscPresent.STOP (проигрыватель компакт-дисков остановлен).
CdStatus = PLAY когда активное подсостояние DiscPresent.PLAY (проигрыватель компакт-дисков воспроизводится).
CdStatus = REW когда активное подсостояние DiscPresent.REW (проигрыватель компакт-дисков перемотан).
CdStatus = FF когда активное подсостояние DiscPresent.FF (проигрыватель компакт-дисков обеспечивает быструю пересылку).