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

При помощи Simulink® подсистема в рамках Stateflow® состояние, можно смоделировать гибридные динамические системы или системы, которые переключаются между периодической и непрерывной динамикой времени. В вашей диаграмме Stateflow можно использовать основанные на Simulink состояния, чтобы смоделировать периодическую или непрерывную динамическую систему, объединенную с переключением логики, которая использует переходы. Можно получить доступ к вводам и выводам из графика в каждом основанном на Simulink состоянии. Основанные на Simulink состояния не поддерживаются в автономных диаграммах Stateflow в MATLAB®.

Чтобы инициализировать блоки Simulink при переключении между основанными на Simulink состояниями, используйте Stateflow текстовое обозначение или Читатель состояния Simulink и блоки Средства записи состояния.

Чтобы создать соединенные основанные на Simulink состояния, пользуйтесь библиотеками, чтобы сохранить подсистемы действия. Когда вы копируете подсистему действия с модели библиотеки в диаграмму Stateflow, это появляется как соединенное основанное на Simulink состояние. Когда вы обновляете библиотечный блок, изменения отражаются во всех диаграммах Stateflow, содержащих блок.

Используя основанные на Simulink средние значения состояний, что вы не должны использовать комплексный текстовый синтаксис в Stateflow, чтобы смоделировать гибридные системы.

Когда использовать основанные на Simulink состояния

Используйте основанные на Simulink состояния когда:

  • Вы хотите смоделировать гибридные динамические системы, которые включают непрерывную или периодическую динамику.

  • Структура системной динамики изменяется существенно между различными режимами работы, например, моделируя ПИД-регуляторы.

Для систем, где вы вызываете логику периодически, используйте функции Simulink.

Когда структура алгоритма Simulink останется существенно неизменный, но определенный переключатель усилений или параметров между различными моделями, используйте логику Simulink за пределами Stateflow. Примером этого типа алгоритма является табличное управление. Смотрите Запланированные на усиление Системы управления Модели в Simulink (Simulink Control Design).

Смоделируйте прыгуна с шестом при помощи основанных на Simulink состояний

Эта диаграмма 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 блоки владельца состояния для блоков 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 моделирует прыгуна с шестом во время взятия от фазы скачка. Подсистема выводит Декартовы координаты прыгуна с шестом.

Преобразуйте полярные координаты в декартовы координаты

Функция 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. Эта подсистема выводит Декартовы координаты прыгуна с шестом.

Результаты этой симуляции замечены в блоке Record.

Ограничения

Вы не можете использовать основанные на Simulink состояния с:

  • Диаграммы Мура

  • Дискретные Схемы событий

  • HDL Coder

  • Кодер PLC

  • Simulink Code Inspector

  • Супер переходы шага

Основанные на Simulink состояния не поддерживают отладку.

Похожие темы