Этот пример показывает моделирование примера муфты Simulink ® с использованием состояний, основанных на Simulink, внутри графика Stateflow ®. Подробное объяснение физической системы смотрите в Создание модели блокировки сцепления (Simulink).
Эта модель показывает рекомендуемый способ моделирования гибридных систем с помощью Simulink и Stateflow. Эта модель также охватывает, когда использовать Simulink или инструменты физического моделирования, если непрерывная динамика сложна в сочетании с изменениями режима.
Моделирование гибридной системы включает в себя решение следующих проблем:
Моделирование непрерывной динамики
Моделирование логики режима
Инициализация состояний при переключении между режимами
Гибридные системы имеют несколько режимов работы, где каждый режим задан непрерывной динамикой. Когда непрерывная динамика комплексна, моделируйте их с помощью состояний, основанных на Simulink. В этой модели Locked
и Slipping
состояния представляют два режима работы муфты. Блоки Simulink в состоянии, основанном на Simulink, представляют логику состояния. Эти блоки включают непрерывные временные блоки, такие как интеграторы. В каждом состоянии, основанном на Simulink, можно получить доступ к входам и выходам графика путем создания входных и выходных портов с таким же именем. Каждое основанное на Simulink состояние читается из подмножества графика входов и записывается во все графики выходов.
Логика Mode относится к условиям, при которых модель переключается с одного режима работы на другой. В этом примере логика режима описывается логикой перехода между двумя состояниями, основанными на Simulink. Условия, необходимые для переключения из одного состояния на основе Simulink в другое, зависят от внутреннего состояния интеграторов в текущем активном режиме. Для примера при переключении с Slipping
на Locked
Stateflow должен считать внутреннее состояние интегратора в Slipping
режим.
Это возможно с помощью двух различных механизмов:
1. Использование блоков State Reader и State Writer в функциях Simulink: Stateflow может вызвать функции Simulink на логике перехода между двумя режимами. Внутри функции Simulink используйте блоки State Reader для обращения к внутреннему состоянию интегратора. Для примера - функция Simulink detectLockup
использует блок State Reader EngineSpeed
считать состояние блока интегратора sf_clutch/Clutch/Slipping/xe
.
2. Использование квалифицированной записи через точку на условиях перехода: Если логика перехода проста и может быть выражена текстуально, возможно использовать синтаксис, подобный Slipping.we == ...
см. состояние интегратора sf_clutch/Clutch/Slipping/xe
. Чтобы этот синтаксис работал, State Name
параметр интегратора должен быть установлен на «мы».
При переходе от одного режима операции к другому интеграторы в вновь активированной подсистеме должны быть инициализированы правильно, порядок получить плавный выход. Это может быть сделано с помощью блоков Simulink State Reader и State Writer в функциях Simulink или текстово с использованием квалифицированной записи через точку. Для примера, на переходе от Slipping
на Locked
, инициализируйте состояние одного интегратора в Locked
при помощи состояния одного из интеграторов в Slipping
. Инициализируйте состояние с помощью синтаксиса:
Locked.w = Slipping.we;
Когда система моделируется, скорости двигателя и транспортного средства такие, как показано на следующем графике. Пластины фиксируются примерно на 4 секундах и начинают скользить снова примерно на 6,25 секундах.