Добавьте структуру к модели по одному подкомпоненту за раз путем создания hierarchy вложенных состояний. Затем можно управлять несколькими уровнями сложности в Stateflow® график. Для получения дополнительной информации см. Model Finite State Machines.
Чтобы создать иерархию состояний, поместите одно или несколько состояний в контуры другого состояния. Внутренние состояния являются дочерними состояниями (или подсостояниями) внешнего состояния. Внешнее состояние является родительским элементом (или суперштатом) внутренних состояний.
Содержимое родительского состояния ведет себя как меньший график. Когда родительское состояние становится активным, одно из его дочерних состояний также становится активным. Когда родительское состояние становится неактивным, все его дочерние состояния становятся неактивными.
Этот пример моделирует стереосистему, состоящую из AM-радио, FM-радио и CD-проигрывателя. Во время симуляции вы управляете стереосистемой, нажимая кнопки на пользовательском интерфейсе Media Player Helper.
Стерео первоначально находится в режиме ожидания (OFF). Когда вы выбираете одну из кнопок Radio Request, стерео включает соответствующий подкомпонент. Если вы выбираете проигрыватель компакт-дисков, можно нажать одну из кнопок Запроса компакт-дисков, чтобы выбрать «Воспроизведение», «Перемотка», «Быстрое продвижение» или «Стоп». Вставить или извлечь диск можно в любой точке во время симуляции.
Изначально полная реализация этой стереосистемы выглядит довольно сложной. Однако, ориентируясь на один уровень активности за раз, можно пошагово проектировать общую разработку системы. Например, эти условия необходимы проигрывателю компакт-дисков для перехода в режим Fast-Forward Play:
Включите стерео.
Включите проигрыватель компакт-дисков.
Ты играешь диск.
Вы нажимаете кнопку FF в пользовательском интерфейсе.
Можно создать иерархическую модель, которая рассматривает каждое из этих условий по одному. Например, самый внешний уровень может определять переходы между включением и выключением стерео. Средние уровни определяют переход между различными стерео подкомпонентами, и между режимами остановки и воспроизведения CD-проигрывателя. Самый нижний уровень определяет ответ на кнопки CD Request, когда вы удовлетворяете всем остальным условиям для игры диска.
Чтобы реализовать поведение стереосистемы, sf_mediaplayer
использует иерархию вложенных состояний, перечисленных в Model Explorer под Mode Manager
график. Чтобы открыть Model Explorer, на вкладке Modeling, выберите Model Explorer.
В этой таблице перечислены роли каждого состояния в иерархии.
Уровень иерархии | Государство | Описание |
---|---|---|
Верхний уровень (Mode Manager график) | Eject | Режим выброса диска (прерывает все другие стереофункции) |
NormalOperation | Нормальный режим работы для стереосистемы | |
Активность стереосистемы (дочерние состояния | Standby | Стереосистема находится в режиме ожидания (OFF) |
ON | Стереосистема активна (включена) | |
Стерео-подкомпоненты (дочерние состояния | CDMode | Подкомпонент CD-проигрывателя активен |
AMMode | Активен подкомпонент AM radio | |
FMMode | Активен подкомпонент FM-радио | |
Активность проигрывателя компакт-дисков (дочерние состояния | Stop | Проигрыватель CD остановлен |
Play | Проигрыватель CD воспроизводит диск | |
Режимы воспроизведения дисков (дочерние состояния | Normal | Режим нормального воспроизведения |
Rewind | Режим обратного воспроизведения | |
FastForward | Быстрый режим воспроизведения вперед |
Этот рисунок показывает полное размещение состояний на графике.
Исторические соединения внутри NormalOperation
и ON
состояния записи рабочего режима (Standby или ON) и активного подкомпонента медиаплеера (CD-проигрыватель, AM-радио или FM-радио) перед извлечением диска или выключением системы.
Пример sf_mediaplayer
содержит две другие диаграммы Stateflow:
App Interface
управляет интерфейсом с UI и передает входы в Mode Manager
и CD Player
чарты.
CD Player
получает выход от App Interface
и Mode Manager
графики и имитация механического поведения CD-проигрывателя.
Во время симуляции можно исследовать, как каждый график реагирует на взаимодействия с приложением Media Player Helper. Чтобы быстро переключаться между графиками, используйте вкладки в верхней части редактора Stateflow.