aeshnik


Уменьшая скорость роста энтропии вселенной


Previous Entry Share Next Entry
Моделирование механических систем в SimMechanics
aeshnik
Посты, описывающие работу с другими подсистемами, в соответствии с жизненным циклом системы:
1. этот пост;
2. определение требований к подсистеме;
3. выбор варианта структурной реализации исполнительного устройства;
4. настройка модели Simulink для симуляции в реальном времени.

Для того, чтобы создать этот материал, использовалась среда МАТЛАБ версии 2013b.
===

Рубрика "ликбез" всплывала довольно давно. И, несмотря на то, что на Хабре посты собирают гораздо больше просмотров (и даже находятся настолько заинтересованные, что комментируют и уточняют), я таки продолжу публиковать свои заметки здесь.

Напомню, "ликбезы" - это про то, как что-то делать в MATLAB/Simulink. Предыдущие посты (доступны по тегу) были действительно ликбезными, но руками в них делалось не так много, как мне хотелось бы. Исправлю это.

Из этого поста мы узнаем, как создать механическую модель элерона. В конце поста можно найти видеоролик, в котором показано всё то, о чем говорится в посте. Сам же пост подойдет в качестве инструкции к действию: используя его, можно не спеша повторить всё, о чем говорится в ролике. Для этого потребуются следующие материалы:
- модель элерона в SimMechanics.
Рекомендую исследовать пост по физическому (акаузальному) моделированию.

Моделируемая система выглядит так, как показано на рис. 1.
Рис. 1. Элерон.
Рис. 1. Моделируемая система.

Элерон должен поворачиваться на определенный угол. Чтобы поворачивать элерон, механическое соединение может сжиматься и расширяться. Система должна вращаться относительно двух точек, чтобы такое движение было возможным. Мы планируем создать модель механической системы в Simulink, используя продукт SimMechanics.

Модель которую мы хотим создать, представлена на рис. 2.
Рис. 2. Модель элерона в SimMechanics.
Рис. 2. Модель элерона в SimMechanics.

В результате работы мы должны получить трехмерную анимацию движения элерона по желаемой траектории.

SimMechanics находится в разделе Simscape в библиотеке блоков Simulink.
Рис. 3. Библиотека SimMechanics.
Рис. 3. Библиотека SimMechanics.

Мы будем создавать модель заново, начав с пустого окна Simulink. Во-первых, я должен определить гравитацию.
[Simulink->Simscape->SimMechanics->SimMechanics 2nd generation->Utilities add Mechanism Configuration block]
В блоке Mechanism Configuration я задам вектор силы тяжести, направленный против оси Y. [0 -9,81 0]'.
Рис. 4. Добавлен блок Mechanism Configuration.
Рис. 4. Добавлен блок Mechanism Configuration.

После этого нужно определить точку в пространстве, к которой будет крепиться один из концов цилиндра элерона.
[SimMechanics 2nd Generation -> Frames and Transforms -> World Frame]
Для этого пригодится блок World Frame.
Рис. 5. Добавлен блок World Frame.
Рис. 5. Добавлен блок World Frame.

Цилиндр может вращаться относительно одного из концов. Чтобы определить эту степень свободы, я использую блок Revolute Joint.
[SimMechanics 2nd Generation -> Joints -> Revolute Joint]
Рис. 6. Добавлен блок Revolute Joint.

Чтобы описать цилиндр, шток и другие компоненты мы используем библиотеку заранее созданных и параметризованных компонентов.
Рис. 7. Используемая библиотека блоков.
Рис. 7. Используемая библиотека блоков.

Блок, описывающий цилиндр, создан из базовых блоков SimMechanics. Мы можем определять точки соединения, геометрическую форму, задавать форму тела в MATLAB. Здесь же задается масса тела, визуальные свойства.
Рис. 08. Внутри блока, описывающего цилиндр.
Рис. 08. Внутри блока, описывающего цилиндр.

SimMechanics использует более сложную технологию моделирования, чем в обычный Simulink. Чтобы получить доступ к необходимым настройкам, я использую блок Solver Configuration.
[library -> SimMechanics -> Utilities, add block 'Solver Configuration']
Рис. 9. Добавлен блок Solver Configuration.

Обновим диаграмму и запустим исполнение модели. Видно, что цилиндр качается, как математический маятник. (Ссылка на видео с момента, когда это видно).

Теперь добавим к модели шток с поршнем. Шток перемещается поступательно относительно цилиндра. Чтобы определить эту степень свободы я использую бок Prismatic Joint.
[SimMechanics 2nd generation -> Joints add Prismatic Joint between Cylinder and Rod blocks]
Рис. 10. Добавлен блок, описывающий шток с поршнем.
Рис. 10. Добавлен блок, описывающий шток с поршнем.

Элерон вращается относительно штока. Добавим блок, описывающий элерон. Скопируем блок Revolute Joint, чтобы определить еще одну степень свободы системы. Соединим эти блоки.
Рис. 11. Добавлен блок элерона.
Рис. 11. Добавлен блок элерона.

Чтобы задать форму элерона используется метод General Extrusion (принцип описания модели напоминает технологический процесс выдавливания; подробно описан в документации SimMechanics). Можно увидеть, как выглядят данные MATLAB, описывающие форму элерона. Эти данные используются для описания формы в нашем случае.
Рис. 12. Визуализация данных, используемых для описания формы элерона.
Рис. 12. Визуализация данных, используемых для описания формы элерона.

Известно, что элерон вращается относительно фиксированной в пространстве точки. Чтобы определить эту степень свободы, я снова использую блок Refolute Joint. Чтобы определить точку, относительно которой происходит вращение, я использую блок Rigid Transform. Это преобразование координат дает нам возможность определить связь между общей системой координат и системой координат, связанной с точкой, относительно которой вращается элерон.
Рис. 13. Описана структура модели.
Рис. 13. Описана структура модели.

Обновим диаграмму. Можно видеть (ссылка на момент в видео, в котором это можно видеть) три компонента, которые мы только что определили. Исполнив модель, мы заметим, что элерон снова качается как маятник. Видно, что элерон совершает одно колебание. Можно посмотреть на это под другим углом. Также можно изменить, например, цвет фона анимации, чтобы сделать ее нагляднее.

Итак, сейчас у нас есть механическая модель элерона. Было бы полезно наблюдать реакцию системы, например, на виртуальных осциллографах Simulink. Чтобы наблюдать угол, на который отклоняется элерон, откроем параметры блока соединения и активируем пункт position (положение - то, что мы хотим наблюдать). Теперь у блока появился дополнительный порт - выход, на который подается угол отклонения элерона. Нужно преобразовать этот физический сигнал в обычный сигнал Simulink, чтобы отобразить его на виртуальном осциллографе Simulink. [get Simscape->Utilities PS-Simulink Converter] Определим единицу измерения величины - градусы. Вернемся в библиотеку Simulink, найдем раздел Sinks, выберем блок виртуального осциллографа (Scope) и поместим его в модель.
Рис. 14. В модель добавлены блоки для измерения положения.
Рис. 14. В модель добавлены блоки для измерения положения.

Теперь, запуская модель, на осциллографе можно увидеть, что элерон качается как маятник, вокруг точки 0 градусов.

Чтобы влиять на эту систему, определим точку приложения входного воздействия - блок Prismatic Joint, описывающий перемещение штока относительно цилиндра. Мы будем подавать на этот порт значение силы. Найдем в библиотеке Sources блок Step. Этот сигнал будем использовать для воздействия на систему, применяя силовое воздействие в 20 Ньютонов на двадцатой секунде. Этот сигнал Simulink необходимо преобразовать в физический сигнал, используя еще один блок-преобразователь.
Рис. 15. Добавлены блоки для определения входного воздействия на механическую подсистему.
Рис. 15. Добавлены блоки для определения входного воздействия на механическую подсистему.

Теперь, когда мы запустим модель, заметим, что система ведет себя немного иначе. Вместо того, чтобы возвращаться к положению 0 градусов, элерон отклоняется выше горизонтальной оси. Визуализация представлена на графике и на трехмерной анимации модели (рис. 16).
Рис. 16. Визуализация результатов моделирования.

В этом посте показано, как создать модель механического компонента системы элерона, используя SimMechanics. Эта механическая модель пригодна для проведения экспериментов с подсистемой, в результате которых можно определить поведение подсистемы при тех или иных воздействиях окружающей среды, определить требования к исполнительным устройствам. Модель подсистемы можно использовать вместе с моделью окружающих подсистем, чтобы исследовать аспекты интеграции подсистем на виртуальной модели, оптимизировать работу всей системы. Виртуальная модель может использоваться и вне среды виртуального моделирования: например, для полунатурного моделирования, программно-аппаратного моделирования. Эти и другие применения среды я раскрою в следующих постах с меткой "ликбез".

Видео с записью демонстрации:

?

Log in

No account? Create an account