box является графическим объектом, который организует другие объекты, такие как функции и состояния на графике. Можно использовать прямоугольник, чтобы инкапсулировать состояния и функции в отдельное пространство имен. Коробки поддерживаются только в Stateflow® графики в Simulink® модели.
Для примера, в этом графике, коробка Heater
группирует вместе связанные состояния Off
и On
.
Для получения дополнительной информации об этом примере см. Модель системы управления температурой релейного взрыва.
Поля добавляют уровень иерархии к диаграммам Stateflow. Это свойство влияет на видимость функций и состояний внутри коробки для объектов, которые находятся вне коробки. Если вы ссылаетесь на функцию или состояние, помеченное коробкой, из расположения вне рамки, необходимо включить имя коробки в путь. См. раздел «Группирование функций с использованием ящика».
Поля влияют на неявный порядок активации параллельных состояний на графике. Если ваш график использует неявное упорядоченное расположение, параллельные состояния внутри коробки просыпаются перед другими параллельными состояниями, которые ниже или справа на этом графике. Внутри коробки параллельные состояния просыпаются в порядке сверху вниз, влево-вправо. См. раздел «Состояние группы, использующей прямоугольник».
Примечание
Чтобы явно задать порядок активации на базис состояния по состояниям, выберите User-specified state/transition execution order в диалоговом окне свойств Графика. Эта опция выбирается по умолчанию при создании нового графика. Для получения дополнительной информации смотрите Явное упорядоченное расположение параллельных состояний.
Когда вы используете поле, применяются следующие правила:
Включите имя ящика в путь, когда вы используете запись через точку для ссылки на функцию или состояние, помеченные как коробка, из расположения вне рамки.
Можно перемещать или рисовать графические объекты внутри рамки, такие как функции и состояния.
Можно добавить данные в поле, чтобы все элементы в поле могли совместно использовать одни и те же данные.
Можно сгруппировать прямоугольник и его содержимое в один графический элемент. См. раздел «Состояния группы».
Можно подграфикировать прямоугольник, чтобы скрыть его элементы. См. Инкапсуляция модальной логики при помощи субдиаграмм.
Вы не можете задать операторы действия для прямоугольника, такого как entry
, during
, и exit
действия.
Вы не можете задать переход в или из прямоугольника. Однако можно задать переход в или из состояния внутри коробки.
Вы создаете рамки на графике с помощью прямоугольного инструмента, показанного ниже.
Выберите инструмент Box.
Переместите указатель мыши в область рисования.
Щелкните в любом месте, чтобы создать окно.
Появится новое поле с вопросительным знаком (?)
имя в верхнем левом углу.
Щелкните метку вопросительного знака.
Введите имя поля и щелкните за его пределами.
Чтобы удалить поле, щелкните его и нажмите клавишу Delete.
На этом графике показан прямоугольник с именем Status
который группирует вместе MATLAB® функций.
Выполнение графика происходит следующим образом:
Состояние Cold
сначала активируется.
При входе состояние Cold
вызывает функцию Status.msgCold
.
Эта функция отображает сообщение о том, что температура холодная.
Примечание
Поскольку функция MATLAB находится внутри коробки, путь вызова функции должен включать имя коробки Status
. Если вы опускаете этот префикс, появляется сообщение об ошибке.
Если значение входных данных temp
превышает 80, переход в состояние Warm
происходит.
При входе состояние Warm
вызывает функцию Status.msgWarm
.
Эта функция отображает сообщение о том, что температура теплая.
Примечание
Поскольку функция MATLAB находится внутри коробки, путь вызова функции должен включать имя коробки Status
. Если вы опускаете этот префикс, появляется сообщение об ошибке.
Если значение входных данных temp
опускается ниже 60, переход в состояние Cold
происходит.
Шаги 2-5 повторяются до окончания симуляции.
На этом графике показан прямоугольник с именем Status
который группирует вместе связанные состояния. График использует неявное упорядоченное расположение для параллельных состояний вместо явного режима по умолчанию. (Для получения дополнительной информации смотрите Неявное упорядоченное расположение параллельных состояний.)
Основными идеями этого графика являются:
Состояние Temp
сначала просыпается, далее следует состояние Wind_Chill
. Затем состояние Monitor
просыпается.
Примечание
Этот неявный порядок активации происходит из-за Temp
и Wind_Chill
находиться в кубе. Если вы снимаете рамку, неявный порядок активации изменяется, как показано на: Temp
, Monitor
, Wind_Chill
.
На основе входных данных temp
переходы между подсостояниями происходят в параллельных состояниях Status.Temp
и Status.Wind_Chill
.
Когда переход от Status.Temp.Cold
на Status.Temp.Warm
происходит, условие перехода in(Status.Temp.Warm)
становится истинным.
Когда переход от Status.Temp.Warm
на Status.Temp.Cold
происходит, условие перехода in(Status.Temp.Cold)
становится истинным.
Примечание
Потому что подсостояния Status.Temp.Cold
и Status.Temp.Warm
находится в поле, аргумент in
оператор должен включать имя коробки Status
. Если вы опускаете этот префикс, появляется сообщение об ошибке. Для получения информации о in
, см. «Проверяйте активность состояния при помощи оператора in».