Активные данные состояния могут упростить проект некоторых графиков Stateflow®, потому что вы не должны обеспечивать данные, которые высоко сопоставляются к иерархии графика. Когда вы включаете активные данные состояния, действие состояния отчетов Stateflow через выходной порт к Simulink® или как локальные данные в вашем графике. В этом примере показано, как упростить проект диаграммы Stateflow путем добавления активных выходных данных состояния. Для получения дополнительной информации смотрите Действие Состояния монитора Через Активные Данные состояния.
В устаревшей модели old_sf_car
, диаграмма Stateflow shift_logic отслеживает дочернее действие состояния в gear_state
путем обновления значения выходных данных gear
.
Путем слияния активных данных состояния, модели sf_car
избегает ручных обновлений данных, отражающих действие графика. Вместо этого график выходной дочерний элемент утверждает действие автоматически через активный выходной механизм состояния.
Упростить проект old_sf_car
модель, устраните данные, которые высоко сопоставляются к иерархии графика, и включите автоматический контроль дочернего действия состояния в gear_state
.
Шаг 1: устраните ручное отслеживание действия состояния
В модели old_sf_car
, откройте график shift_logic
.
Откройте панель Символов. Во вкладке Modeling выберите Symbols Pane.
В каждом подсостоянии gear_state
, удалите действие входа, присваивающее значение переменной gear
выходных данных.
В панели Символов щелкните правой кнопкой по выходной переменной gear
и выберите Delete
.
Шаг 2: включите активный Выход состояния
Откройте Property Inspector. Во вкладке Modeling выберите Property Inspector.
В редакторе Stateflow выберите gear_state
состояния.
В Property Inspector выберите Create выход для контроля флажка и выберите Child activity
.
В поле имени Данных введите имя gear
из активных данных состояния.
В Перечислимом поле имени введите имя gearType
из типа данных перечисления для активных данных состояния.
Шаг 3: сигнал подключения к блокам Simulink
В модели Simulink добавьте блок Cast To Double. Этот блок преобразует перечислимый выход от диаграммы Stateflow до сигнала типа double
. Для получения дополнительной информации смотрите Преобразование типа данных (Simulink).
Соедините выходной сигнал gear
от shift_logic
стройте диаграмму с блоком Cast To Double.
Соедините выходной сигнал от блока Cast To Double до подсистемы Передачи.
Добавьте блок Memory (Simulink). Этот блок предотвращает алгебраический цикл между диаграммой Stateflow и Пороговой подсистемой Вычисления.
Установите вторую связь от выходного сигнала от блока Cast To Double до Блока памяти.
Соедините выход Блока памяти к Пороговой подсистеме Вычисления.
Выходной сигнал gear
перечислимый тип, управляемый Stateflow. Можно просмотреть активный механизм выходного сигнала состояния в процессе моделирования путем соединения графика с блоком Scope. Имена перечисляемых значений совпадают с именами подсостояний в gear_state
. Дополнительное перечисляемое значение None
указывает на временные шаги, когда никакой дочерний элемент не активен.
Data Type Conversion (Simulink) | Memory (Simulink)