При помощи Simulink® подсистема в Stateflow® состояние, можно смоделировать гибридные динамические системы или системы, которые переключаются между периодической и непрерывной динамикой времени. На вашей диаграмме Stateflow можно использовать состояния на основе Simulink, чтобы смоделировать периодическую или непрерывную динамическую систему в сочетании с логикой переключения, которая использует переходы. Вы можете получить доступ к входам и выходам из графика в каждом состоянии, основанном на Simulink. Состояния, основанные на Simulink, поддерживаются только в диаграммах Stateflow в модели Simulink.
Чтобы инициализировать блоки Simulink при переключении между состояниями на основе Simulink, используйте блоки Stateflow textual notation или Simulink State Reader и State Writer.
Чтобы создать связанные состояния на основе Simulink, используйте библиотеки для сохранения подсистем действий. Когда вы копируете подсистему действий из библиотечной модели в диаграмму Stateflow, она появляется как связанное состояние на основе Simulink. Когда вы обновляете библиотечный блок, изменения отражаются на всех диаграммах Stateflow, содержащих блок.
Использование состояний, основанных на Simulink, означает, что вам не нужно использовать сложный текстовый синтаксис в Stateflow для модели гибридных систем.
Используйте состояния на основе Simulink, когда:
Вы хотите смоделировать гибридные динамические системы, которые включают непрерывную или периодическую динамику.
Структура динамики системы изменяется существенно между различными режимами операции, для примера, ПИД-регуляторов моделирования.
Для систем, где вы вызываете логику периодически, используйте функции Simulink.
Когда структура алгоритма Simulink остается существенно неизменной, но определенные усиления или параметры переключаются между различными моделями, используйте логику Simulink вне Stateflow. Примером этого типа алгоритма является табличное управление. Смотрите Модель Gain-Scheduled Control Systems в Simulink (Simulink Control Design).
Эта диаграмма Stateflow моделирует человека, перемещающегося через стадии сводирования полюсов, используя состояния, основанные на Simulink. Первый этап является подходом к запуску vaulter, который моделируется в состоянии, основанном на 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 моделирует прыгун с шестом во время фазы взятия off перехода. Подсистема выводит Декартовы координаты сводчика полюсов.
Функция 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 Graph.
Вы не можете использовать состояния на основе Simulink с:
Диаграммы Мура
Дискретные графики событий
HDL Coder
ПЛК-кодер
Simulink Code Inspector
Супершаговые переходы
Состояния, основанные на Simulink, не поддерживают отладку.