Используя подсистему 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 являются блоками владельцев состояний для блоков чтения состояний в функции Simulink InitTakeOff. Эта подсистема выводит декартовы координаты прыгуна с шестом.
Функция Simulink InitTakeOff содержит следующую логику:

Как только положение прыгуна с шестом вдоль оси x, Run_up.p(1), становится больше, чем -4, переход от Run_up кому Take_off происходит. Во время перехода InitTakeOff инициализируется, блок чтения состояния подключается к своему блоку владельца, и функция выполняется. Эта функция преобразует декартовы координаты из Position и Velocity до полярных координат, r, theta, rdot, и theta_dot. Эти координаты выводятся как блоки записи состояния, которые соединены с блоками владельца в состоянии Take_off.
Состояние на основе Simulink Take_off содержит следующую логику:

Как только положение прыгуна с шестом вдоль оси x, Run_up.p(1), становится больше, чем -4, активное состояние становится Take_off. Эта подсистема Simulink моделирует прыгуна с шестом во время фазы взлета прыжка. Подсистема выводит декартовы координаты прыгуна с шестом.
Функция Simulink InitFly содержит следующую логику:

Один раз угол прыгуна с шестом, theta, становится меньше, чем pi/2, переход от Take_off кому Fly происходит. Во время перехода InitFly инициализируется, блок чтения состояния подключается к своему блоку владельца, и функция выполняется. Эта функция преобразует полярные координаты из r, theta, и theta_dot по декартовым координатам, xy_integ и xydot. Эти координаты выводятся как блоки записи состояния, которые соединены с блоками владельца в состоянии Fly.
Состояние на основе Simulink Fly содержит следующую логику:

Один раз угол прыгуна с шестом, theta, меньше, чем pi/2, активное состояние становится Fly. Это состояние моделирует прыгуна с шестом после того, как прыжок очищен и прыгун с шестом падает на землю. По мере падения прыгуна с шестом положение прыгуна с шестом в плоскости x-y непрерывно меняется, но состояние падения остаётся прежним. В этой модели интегратор блокируется xydot и xy_integ являются блоками владельцев состояний для блоков записи состояний в функции Simulink InitFly. Эта подсистема выводит декартовы координаты прыгуна с шестом.
Результаты этого моделирования показаны на графике XY.

Нельзя использовать состояния на основе Simulink с:
Графики Мура
Дискретные диаграммы событий
Кодер HDL
Кодер ПЛК
Инспектор кода Simulink
Супершаговые переходы
Состояния на основе Simulink не поддерживают отладку.