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
оператор, смотрите Действие состояния Проверки при помощи в Операторе.