Создайте иерархию, чтобы управлять сложностью системы

Добавьте структуру в свою модель один субкомпонент за один раз путем создания иерархии вложенных состояний. Можно затем управлять несколькими уровнями сложности в графике Stateflow®. Для получения дополнительной информации смотрите Образцовые Конечные автоматы.

Иерархия состояния

Чтобы создать иерархию состояний, поместите одно или несколько состояний в контурах другого состояния. Внутренние состояния являются дочерними состояниями (или подсостояниями) внешнего состояния. Внешнее состояние является родительским элементом (или сверхдержава) внутренних состояний.

Содержимое метрополии ведет себя как меньший график. Когда метрополия становится активной, одно из ее дочерних состояний также становится активным. Когда метрополия становится неактивной, все ее дочерние состояния становятся неактивными.

Пример иерархии

Модели sf_cdplayer Stateflow в качестве примера система стерео, состоящая из радио AM, радио FM и проигрывателя компакт-дисков. Во время симуляции вы управляете системой стерео путем нажатия кнопок на Помощнике Проигрывателя компакт-дисков.

Стерео находится первоначально в дежурном режиме (OFF). Когда вы нажимаете одну из кнопок Radio Request, стерео включает соответствующий субкомпонент. Если вы выбираете проигрыватель компакт-дисков, можно нажать одну из кнопок CD Request, чтобы выбрать Play, Rewind, Fast-Forward или Stop. Можно вставить или извлечь диск в любой точке во время симуляции.

Первоначально, полноценное внедрение этой системы стерео кажется скорее сложным. Однако путем фокусировки на одном уровне активности за один раз, можно разработать полную разработку системы инкрементно. Например, эти условия необходимы для проигрывателя компакт-дисков, чтобы ввести режим воспроизведения Ускоренной перемотки вперед:

  1. Вы включили стерео.

  2. Вы включили проигрыватель компакт-дисков.

  3. Вы проигрываете диск.

  4. Вы нажали кнопку FF в пользовательском интерфейсе.

Можно создать иерархическую модель, которая рассматривает каждое из этих условий по одному. Например, наиболее удаленный уровень может задать переходы между включением и выключением стерео. Средние уровни задают переход между различными субкомпонентами стерео, и между остановкой и режимами воспроизведения проигрывателя компакт-дисков. Самый нижний уровень задает ответ на кнопки CD Request, если вы удовлетворили всем другим условиям для того, чтобы проигрывать диск.

Чтобы реализовать поведение системы стерео, sf_cdplayer использует иерархию вложенных состояний, перечисленных Model Explorer в соответствии с графиком CdPlayerModeManager. Чтобы открыть Model Explorer, выберите View> Model Explorer> Model Explorer.

Эта таблица приводит роль каждого состояния в иерархии.

Уровень иерархииСостояниеОписание
Верхний уровень (Диаграмма Stateflow CdPlayerModeManager)ModeManagerНормальный рабочий режим для системы стерео
EjectРежим извлечения диска (прерывает все другие функции стерео),

Системное действие стерео (дочерние состояния ModeManager)

StandbyСистема стерео находится в дежурном режиме (OFF)
ONСистема стерео активна (ON)

Субкомпоненты стерео (дочерние состояния On)

AMModeСубкомпонент радио AM активен
FMModeСубкомпонент радио FM активен
CDModeСубкомпонент проигрывателя компакт-дисков активен

Действие проигрывателя компакт-дисков (дочерние состояния CDMode)

StopПроигрыватель компакт-дисков останавливается
PlayПроигрыватель компакт-дисков проигрывает диск

Режимы воспроизведения диска (дочерние состояния Play)

NormalНормальный режим воспроизведения
RewПротивоположный режим воспроизведения
FastForwardРежим воспроизведения ускоренной перемотки вперед

Эти данные показывают полный макет состояний в графике.

Упростите вид диаграммы при помощи подграфиков

Можно упростить полный внешний вид графика с комплексной иерархией путем сокрытия низкоуровневых деталей в подграфиках, которые появляются как непрозрачные поля. Использование подграфиков не изменяет поведение графика. Например, в sf_cdplayer, субкомпоненты стерео AMMode, FMMode и CDMode реализованы как подграфики. Когда вы открываете график CdPlayerModeManager, вы видите только три уровня иерархии состояния. Чтобы видеть детали в одном из подграфиков, дважды кликните подграфик.

Исследуйте пример

Пример sf_cdplayer содержит две других диаграммы Stateflow:

  • UserRequest управляет интерфейсом с пользовательским интерфейсом и передает входные параметры графику CdPlayerModeManager.

  • CdPlayerBehaviorModel получает вывод от CdPlayerModeManager и подражает механическому поведению проигрывателя компакт-дисков.

Во время симуляции можно заняться расследованиями, как каждый график отвечает на взаимодействия с Помощником Проигрывателя компакт-дисков. Чтобы переключиться быстро между графиками, используйте вкладки наверху редактора Stateflow.

Связанные примеры

Больше о