Для моделирования систем, которые переключаются между периодическими или непрерывными динамиками времени, используйте состояния на базе Simulink ®. Состояния на основе Simulink поддерживаются только в диаграммах Stateflow ® в модели Simulink. Дополнительные сведения см. в разделе Подсистемы симулятора как состояния.
Состояние блоков в состояниях на основе Simulink можно читать и записывать в действиях перехода диаграммы Stateflow. Состояние блоков можно читать и записывать текстуально на переходах диаграммы или с помощью блоков Simulink State Reader и State Writer.
Этот график Stateflow моделирует человека, проходящего через этапы прыжков с шестом. Первый этап - прогон подхода сводника, который моделируется состоянием на основе Simulink Run_up. На втором этапе сводник сажает столб и взлетает, что моделируется состоянием на базе Simulink Take_off. Заключительный этап происходит, когда сводник очищает штангу и освобождает столб, который моделируется состоянием на основе Simulink Fly.
Государства Run_up и Fly проще моделировать с помощью декартовых координат. Государство Take_off легче моделировать с помощью полярных координат. Функции Simulink InitTakeOff и InitFly используются для переключения с одной системы координат на другую. Дополнительные сведения об этой диаграмме см. в разделе Моделирование полюсного манипулятора с использованием состояний на основе симулинков.

Эта подсистема находится в состоянии на основе Simulink Run_up. Для перехода от Run_up кому Take_off положение прыгуна с шестом вдоль оси x, p(1), должно быть больше, чем -4.

Путем установки имени состояния блока интегратора Position кому 'p', можно получить текстовый доступ к состоянию этого блока из диаграммы Stateflow. Для доступа к состоянию блока интегратора в условиях перехода введите [Run_up.p(1)> -4]. Когда это условие становится верным, переход принимается, и активное состояние становится Take_off.

На панели «Символы» видно, что состояние 'p' появляется под состоянием Run_up.

Stateflow использует блоки чтения состояний и записи состояний для соединения подсистем в состоянии на основе Simulink с другими подсистемами Simulink в модели. Блоки чтения и записи состояния отображают имя блока владельца состояния, к которому они подключены. И наоборот, блок владельца состояния отображает тег
, указывающий ссылку на блок чтения состояния или блок записи состояния. Если щелкнуть метку над тегом, откроется список со ссылкой на блок записи состояния.
Следующая подсистема содержится в функции Simulink InitTakeOff. Функция использует блоки чтения состояний для подключения к состоянию Run_up и читает p и v. Затем функция преобразует декартовы значения положения прыгуна с шестом и скорости в полярные координаты. r и theta и rdot и theta_dotсоответственно. Затем доступ к этим полярным координатам осуществляется с помощью блоков владельца состояния в состоянии. Take_off.
Когда происходит действие перехода, устройство чтения состояний блокирует InitTakeOff прочтите состояние блоков их государственных владельцев. После завершения выполнения функции Simulink устройство записи состояния блокирует запись в блоки владельца состояния в состоянии на основе Simulink. Take_off.

Чтобы подключить блок чтения состояния или блок записи состояния к блоку владельца в подсистеме Simulink, выполните следующие действия.
Чтобы открыть свойства, дважды щелкните программу чтения состояний.
В дереве выбора владельца состояния перейдите к блоку, который должен быть блоком владельца состояния. В этом примере путем выбора Position, вы подключаете блок State Reader к интегратору Position в состоянии Run_up.

Путем подключения блока чтения состояния к Position блок интегратора, эта функция Simulink может использовать состояние интегратора Position для выполнения.