Подсистемы Simulink как состояния

При помощи 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 остается существенно неизменной, но определенные усиления или параметры переключаются между различными моделями, используйте логику Simulink вне Stateflow. Примером этого типа алгоритма является табличное управление. Смотрите Модель Gain-Scheduled Control Systems в Simulink (Simulink Control Design).

Моделируйте сводник полюсов при помощи состояний, основанных на Simulink

Эта диаграмма 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, не поддерживают отладку.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте