Активные данные состояния могут упростить проект некоторых графиков Stateflow®, потому что вы не должны обеспечивать данные, которые высоко сопоставляются к иерархии графика. Когда вы включаете активные данные состояния, действие состояния отчетов Stateflow через выходной порт к Simulink® или как локальные данные в вашем графике. Используя активные данные состояния, вы можете:
Избегайте ручных обновлений данных, отражающих действие графика.
Просмотрите действие графика при помощи осциллографа или Инспектора Данных моделирования.
Регистрируйте действие графика для диагностики.
Управляйте другими Подсистемами Simulink.
Когда вы включаете активные данные состояния, Stateflow создает булевскую переменную или перечисленный объект данных совпадать с типом действия.
Тип действия | Активный тип данных состояния | Описание |
---|---|---|
Сам действие | Булевская переменная | Действительно ли состояние активно? |
Дочернее действие | Перечисление | Какой дочерний элемент активен? |
Листовое действие состояния | Перечисление | Какое листовое состояние активно? |
Для самостоятельных действий графика или состояния, значением данных является true
когда активный и false
когда неактивный. Для дочернего элемента и листового действия состояния, данные являются перечислимым типом. Stateflow может задать класс перечисления, или можно создать определение вручную. Для получения дополнительной информации смотрите, Задают Перечисляемый тип Действия состояния.
Можно включить активные данные состояния для диаграммы Stateflow, состояния, таблицы изменения состояния или атомарного подграфика. Эта таблица приводит типы действия, поддержанные каждым видом объекта Stateflow.
Объект Stateflow | Самостоятельные действия | Дочернее действие | Листовое действие состояния |
---|---|---|---|
Графики | Не поддерживаемый | Поддерживаемый | Поддерживаемый |
Состояния с исключительным (OR) разложение | Поддерживаемый | Поддерживаемый | Поддерживаемый |
Состояния с параллелью (AND) разложение | Поддерживаемый | Не поддерживаемый | Не поддерживаемый |
Атомарные подграфики | Поддерживаемый на контейнерном уровне | Поддерживаемый в подграфике | Поддерживаемый в подграфике |
Таблицы переходов состояний | Не поддерживаемый | Поддерживаемый | Поддерживаемый |
Можно включить активные данные состояния или в Property Inspector или в Model Explorer.
Инспектор свойств
Чтобы открыть Property Inspector, во вкладке Modeling, нажимают Property Inspector.
В холсте редактора Stateflow выберите объект Stateflow контролировать.
В разделе Monitoring Property Inspector установите флажок Create output for monitoring и отредактируйте активные свойства данных состояния.
Model Explorer
Чтобы открыть Model Explorer, во вкладке Modeling, нажимают Model Explorer.
В панели Model Hierarchy дважды кликните объект Stateflow контролировать.
В панели объекта Stateflow установите флажок Create output for monitoring и отредактируйте активные свойства данных состояния.
Тип действия состояния, чтобы контролировать. Выберите из этих опций:
Self activity
Child activity
Leaf state activity
Имя активного объекта данных состояния. Для получения дополнительной информации см. Правила для Именования Объектов Stateflow.
Имя перечислимого типа данных для активного объекта данных состояния. Это свойство применяется только к дочернему элементу и листовому действию состояния.
Задает, задаете ли вы перечислимый тип данных вручную. Это свойство применяется только к дочернему элементу и листовому действию состояния. Для получения дополнительной информации смотрите, Задают Перечисляемый тип Действия состояния.
По умолчанию активные данные состояния имеют осциллограф Output
. Stateflow создает выходной порт на блоке графика в модели Simulink.
Чтобы получить доступ к активным данным состояния в диаграмме Stateflow, измените осциллограф в Local
в панели Символов или в Model Explorer. Для получения дополнительной информации смотрите Set Data Properties.
Можно указать информацию для генерации кода путем привязки локальных активных данных состояния с Simulink.Signal
объект. Измените свойства объекта через CoderInfo
свойство. Для получения дополнительной информации смотрите Simulink.CoderInfo
.
По умолчанию Stateflow задает тип данных перечисления для листового действия и дочернего элемента. Если вы устанавливаете флажок Define enumerated type manually, и никакое определение типа данных перечисления не существует, то Stateflow обеспечивает ссылку, чтобы создать определение. Щелчок по ссылке Create enum definition from template генерирует настраиваемое определение.
Определение типа данных перечисления содержит один литерал для каждого имени состояния плюс дополнительный литерал, чтобы указать, что никакое подсостояние не активно. Например, в модели sf_car
, gear_state
состояния содержит четыре дочерних состояния, которые соответствуют механизмам в автомобиле:
first
второй
, third
, fourth
. Модель задает дочерний тип данных действия с этим определением класса перечисления:
classdef gearType < Simulink.IntEnumType enumeration None(0), first(1), second(2), third(3), fourth(4) end ... end
Основной тип хранения для автоматически созданных значений по умолчанию перечислений к Native Integer
. Для меньшего объема потребляемой памяти, в панели Optimization диалогового окна Configuration Parameters, изменяют значение поля Base storage type for automatically created enumerations. Для получения дополнительной информации смотрите Основной тип хранения для автоматически созданных перечислений (Simulink Coder).
В состояниях с параллелью (AND) разложение, дочернее действие и листовое действие состояния не доступны, потому что параллельные подсостояния активны одновременно.
Когда вы включаете листовое действие состояния в графике или состоянии, подсостоянии с параллелью (AND), разложение обработано как листовое состояние. Например, предположите, что вы включаете листовое действие состояния для этого графика. Поскольку B
состояния имеет параллельное разложение, его подсостояния
B1
и B2
активны одновременно так B
обработан как листовое состояние графика.
В процессе моделирования осциллограф, соединенный с активными выходными данными состояния, показывает, что перечисляемые значения для листа утверждают A1
, A2
, и B
.
Включение дочернего действия выхода для состояний, которые не имеют никаких дочерних результатов по ошибке во время компиляции и время выполнения.
Вы не можете включить дочернему элементу или листовому действию состояния в графиках или состояниях с параллельным разложением. Чтобы проверять действие состояния в подсостояния параллельных состояний, используйте in
оператор. Для получения дополнительной информации смотрите Действие состояния Проверки при помощи в Операторе.
Не выбирайте свойство диаграммы Initialize Outputs Every Time Chart Wakes Up на графиках, которые используют активные выходные данные состояния. С этой установкой поведение выходных данных непредсказуемо.
Simulink.CoderInfo
| Simulink.Signal