При помощи подсистемы Simulink® в состоянии Stateflow® можно смоделировать гибридные динамические системы или системы, которые переключаются между периодической и непрерывной динамикой времени. В вашей диаграмме Stateflow можно использовать основанные на Simulink состояния, чтобы смоделировать периодическую или непрерывную динамическую систему, объединенную с переключением логики, которая использует переходы. Можно получить доступ к вводам и выводам из графика в каждом основанном на Simulink состоянии. Основанные на Simulink состояния поддерживаются только в диаграммах Stateflow в модели Simulink.
Чтобы инициализировать блоки Simulink при переключении между основанными на Simulink состояниями, используйте Stateflow текстовое обозначение или Читатель состояния Simulink и блоки Средства записи состояния.
Чтобы создать соединенные основанные на Simulink состояния, пользуйтесь библиотеками, чтобы сохранить подсистемы действия. Когда вы копируете подсистему действия с модели библиотеки в диаграмму Stateflow, это появляется как соединенное основанное на Simulink состояние. Когда вы обновляете библиотечный блок, изменения отражаются во всех диаграммах Stateflow, содержащих блок.
Используя основанные на Simulink средние значения состояний, что вы не должны использовать комплексный текстовый синтаксис в Stateflow, чтобы смоделировать гибридные системы.
Используйте основанные на Simulink состояния когда:
Вы хотите смоделировать гибридные динамические системы, которые включают непрерывную или периодическую динамику.
Структура системной динамики изменяется существенно между различными режимами работы, например, моделируя ПИД-регуляторы.
Для систем, где вы вызываете логику периодически, используйте функции Simulink.
Когда структура алгоритма Simulink останется существенно неизменный, но определенный переключатель усилений или параметров между различными моделями, используйте логику Simulink за пределами Stateflow. Примером этого типа алгоритма является табличное управление. Смотрите Запланированные на усиление Системы управления Модели в Simulink (Simulink Control Design).
Эта диаграмма Stateflow моделирует человека, перемещающегося через этапы полюса, изгибающегося при помощи основанных на Simulink состояний. Первая стадия является запуском подхода прыгуна, который моделируется в основанном на Simulink Run_up
состояния. На втором этапе прыгун сажает полюс и взлетает, который моделируется основанным на Simulink
Take_off
состояния. Заключительный этап происходит, когда прыгун берет планку и выпускает полюс, который моделируется основанным на Simulink
Fly
состояния.
Диаграмма Stateflow содержит эту логику:
Состояния Run_up
и Fly
легче к модели при помощи Декартовых координат. Take_off
состояния легче к модели при помощи полярных координат. Чтобы переключиться от одной системы координат до другого, используйте функции Simulink
InitTakeOff
и InitFly
.
Основанный на Simulink Run_up
состояния содержит эту логику:
Состояние по умолчанию в графике PoleVaulter
Run_up
. Этот модели состояния прыгун с шестом, перемещающийся вдоль земли к скачку. Прыгун с шестом запускает в-10 на оси X и запускается к нулю. Когда прыгун с шестом проходит земля, положение прыгуна с шестом в xy-плоскости постоянно изменяется, но состояние выполнения остается то же самое. В этой модели интегратор блокирует Position
и Velocity
блоки владельца состояния для блоков State Reader в функции Simulink InitTakeOff
. Эта подсистема выводит Декартовы координаты прыгуна с шестом.
Функция Simulink InitTakeOff
содержит эту логику:
Однажды положение прыгуна с шестом вдоль оси X, Run_up.p(1)
, становится больше, чем -4
, переход от Run_up
к Take_off
происходит. Во время перехода InitTakeOff
инициализируется, подключения блока State Reader к его блоку владельца, и функция выполняется. Эта функция преобразует Декартовы координаты от Position
и Velocity
к полярным координатам, r
, theta
, rdot
, и theta_dot
. Эти координаты выводятся, когда State Writer блокируется, которые соединяются с блоками владельца в Take_off
состояния.
Основанный на Simulink Take_off
состояния содержит эту логику:
Однажды положение прыгуна с шестом вдоль оси X, Run_up.p(1)
, становится больше, чем -4
, активное состояние становится Take_off
. Эта Подсистема Simulink моделирует прыгуна с шестом во время взятия от фазы скачка. Подсистема выводит Декартовы координаты прыгуна с шестом.
Функция Simulink InitFly
содержит эту логику:
Однажды угол прыгуна с шестом, theta
, становится меньше, чем pi/2
, переход от Take_off
к Fly
происходит. Во время перехода InitFly
инициализируется, подключения блока State Reader к его блоку владельца, и функция выполняется. Эта функция преобразует полярные координаты от r
, theta
, и theta_dot
к Декартовым координатам, xy_integ
и xydot
. Эти координаты выводятся, когда State Writer блокируется, которые соединяются с блоками владельца в Fly
состояния.
Основанный на Simulink Fly
состояния содержит эту логику:
Однажды угол прыгуна с шестом, theta
, меньше pi/2
, активное состояние становится Fly
. Этот модели состояния прыгун с шестом после скачка очистился, и прыгун с шестом падает на землю. Когда прыгун с шестом падает, положение прыгуна с шестом в x-y плоскости постоянно изменяется, но состояние падения остается то же самое. В этой модели интегратор блокирует xydot
и xy_integ
блоки владельца состояния для блоков State Writer в функции Simulink InitFly
. Эта подсистема выводит Декартовы координаты прыгуна с шестом.
Результаты этой симуляции замечены в Графике XY.
Вы не можете использовать основанные на Simulink состояния с:
Диаграммы Мура
Дискретные Схемы событий
HDL Coder
Кодер PLC
Simulink Code Inspector
Супер переходы шага
Основанные на Simulink состояния не поддерживают отладку.