К системам модели, которые переключаются между периодической или непрерывной динамикой времени, используйте основанные на 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 использует State Reader и блоки State Writer, чтобы соединить подсистемы в основанном на Simulink состоянии к другим Подсистемам Simulink в вашей модели. State Reader и блоки State Writer отображают имя блока владельца состояния, с которым они соединяются. С другой стороны блок владельца состояния отображает тег, указывающий на ссылку на State Reader или блок State Writer. Если вы кликаете по метке выше тега, список открывается ссылкой для навигации с блоком State Writer.
Следующая подсистема содержится в функции Simulink InitTakeOff
. Функция использует блоки State Reader, чтобы соединиться с Run_up
состояния и чтения
p
и v
. Функция затем преобразует Декартовы значения для положения прыгуна с шестом и скорости в полярные координаты, r
и theta
и rdot
и theta_dot
, соответственно. К этим полярным координатам затем получают доступ при помощи блоков владельца состояния в Take_off
состояния.
Когда действие перехода происходит, блоки State Reader в InitTakeOff
считайте состояние их блоков владельца состояния. Если функция Simulink закончила выполняться, блоки State Writer пишут в блоки владельца состояния в основанном на Simulink Take_off
состояния.
Чтобы соединить State Reader или блок State Writer владельцу блокируются в Подсистеме Simulink:
Чтобы открыть свойства, дважды кликните State Reader.
В State Owner Selector Tree перейдите с блоком, что вы хотите быть блоком владельца состояния. В этом примере, путем выбора Position
, вы соединяете блок State Reader с интегратором Position
в Run_up
состояния.
Путем соединения блока State Reader с Position
блок интегратора, эта функция Simulink может использовать состояние интегратора Position
выполниться.