К образцовым системам, которые переключаются между периодической или непрерывной динамикой времени, используйте основанные на Simulink® состояния. Основанные на Simulink состояния поддерживаются только в графиках Stateflow® в модели Simulink. Для получения дополнительной информации смотрите Подсистемы Simulink как состояния.
Можно считать и записать состояние блоков в основанных на Simulink состояниях в действиях перехода диаграммы Stateflow. Можно считать и записать состояние блоков дословно на переходах графика или при помощи Читателя состояния Simulink и блоков Средства записи состояния.
Эта диаграмма Stateflow моделирует человека, перемещающегося через этапы прыжков полюса. Первая стадия является выполнением подхода прыгуна, который моделируется основанным на Simulink Run_up
состояния. На втором этапе прыгун сажает полюс и взлетает, который моделируется основанным на Simulink Take_off
состояния. Заключительный этап происходит, когда прыгун берет планку и выпускает полюс, который моделируется основанным на Simulink Fly
состояния.
Состояния Run_up
и Fly
легче к модели при помощи Декартовых координат. Take_off
состояния является easer к модели при помощи полярных координат. Функции Simulink InitTakeOff
и InitFly
используются, чтобы переключиться от одной системы координат до другого. Для получения дополнительной информации на этом графике, см. Модель Прыгун с шестом при помощи основанных на Simulink состояний.
Эта подсистема содержится в основанном на Simulink Run_up
состояния. Для перехода from Run_up
к Take_off
, чтобы произойти, положение прыгуна с шестом вдоль оси X, p(1)
, должно быть больше, чем -4
.
Путем определения Имени состояния блока Position
интегратора к 'p'
можно дословно получить доступ к состоянию этого блока от диаграммы Stateflow. Чтобы получить доступ к состоянию блока интегратора в условии перехода, введите [Run_up.p(1)> -4]
. Когда это условие становится верным, переход взят, и активное состояние становится Take_off
.
В Окне Символов вы видите, что 'p'
состояния появляется под Run_up
состояния.
Stateflow использует Читателя состояния и блоки Средства записи состояния, чтобы соединить подсистемы в основанном на Simulink состоянии к другим Подсистемам Simulink в вашей модели. Читатель состояния и блоки Средства записи состояния отображают имя блока владельца состояния, с которым они соединяются. С другой стороны блок владельца состояния отображает тег, указывающий на ссылку на Читателя состояния или блок State Writer. Если вы кликаете по метке выше тега, список открывается ссылкой для навигации к блоку State Writer.
Следующая подсистема содержится в функции Simulink InitTakeOff
. Функция использует блоки Читателя состояния, чтобы соединиться с Run_up
состояния и читает p
и v
. Функция затем преобразовывает Декартовы значения для положения прыгуна с шестом и скорости в полярные координаты, r
и theta
и rdot
и theta_dot
, соответственно. К этим полярным координатам затем получают доступ при помощи блоков владельца состояния в Take_off
состояния.
Когда действие перехода происходит, блоки Читателя состояния в InitTakeOff
читают состояние своих блоков владельца состояния. Если функция Simulink закончила выполняться, блоки Средства записи состояния пишут в блоки владельца состояния в основанном на Simulink Take_off
состояния.
Чтобы соединить Читателя состояния или блок State Writer владельцу блокируются в Подсистеме Simulink:
Чтобы открыть свойства, дважды кликните Читателя состояния.
В State Owner Selector Tree перейдите к блоку, что вы хотите быть блоком владельца состояния. В этом примере, путем выбора Position
, вы соединяете блок State Reader с интегратором Position
в Run_up
состояния.
Путем соединения блока State Reader с блоком интегратора Position
эта функция Simulink может использовать состояние интегратора Position
, чтобы выполниться.