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