Как стать автором
Обновить

Управление обратным маятником в MATLAB Simulink без формул. Настройка PID регуляторов

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3K

Простой и популярной реализацией закона управления обратным маятником является PID регулятор. Современные средства настройки коэффициентов PID регулятора позволяют решать подобные задачи нажатием пары кнопок даже без знания математики, физики и вообще без каких-либо технических знаний. Рассмотрим пример настройки PID регуляторов в Simulink для классического обратного маятника.

Объект управления (Plant)

Модель перевернутого маятника соберем в библиотеке Multibody. Для этого нам не понадобится знание физики и математики. Библиотека Multibody предоставляет нам готовые блоки степеней свободы, твердых тел, преобразований координат, которые нужно только верно соединить. Собираем подсистемы отдельно для маятника и отдельно для тележки, и собираем все вместе. Результат на рисунке, модель в прикрепленных файлах.

Объект управления
Объект управления

Сборка отдельных элементов в подсистемы придает более красивый и структурированный вид модели.

Зададим следующие параметры модели: масса тележки – 5 кг, масса маятника – 1 кг, длинна маятника – 2 м, коэффициент трения для тележки – 0.1/10 N/(m/s), коэффициент трения для маятника – 0.1/10 N*m/(deg/s).

Промоделируем и заценим результаты:

Состояния системы
Состояния системы

Результат в виде анимации:

Система управления

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

В библиотеки Simulink находим блок PID Controller включаем его в систему в соответствие с классическим управлением с отрицательной обратной связью и тут же настраиваем его. Открываем блок, и жмем кнопку Tune как на рисунке:

Происходит автоматическая линеаризация нашего Объекта Управления и автоматическая настройка PID регулятора.

Можем бегунками поднастроить робастность и скорость регулятора, после чего не забываем обновить коэффициенты кнопкой Update Block.

Собираем контур положения тележки и таким же образом, нажав две кнопки, его настраиваем.

Так же добавим отдельный контур для угловой скорости маятника, можно обойтись без него, но по ощущениям он хорошо добавляет устойчивости. В итоге имеем следующую систему управления:

Добавим в выходные сигналы шумов, чтобы сделать модель более правдоподобной:

Добавим в модель фильтр Калмана, чтобы сгладить помехи и иметь доступ ко всем состояниям ОУ:

Полная модель обратного маятника

Так, как в своем обычном состоянии маятник имеет положение «вниз», добавим специальный блок и назовем Swing, в котором на глаз запрограммируем сигнал на раскачку системы и в момент, когда маятник достигнет положения «вверх», включим контроллер. Так же добавим внешнее возмущение – импульс в 0.5 сек амплитудой 1 Н, приложенный к маятнику. И ограничим силу, которую может развивать тележка 25 Н.

В итоге вся модель имеет следующий вид:

Промоделируем систему:

Состояния системы
Состояния системы

В течении примерно 10 сек идет раскачка маятника, пока он не достигнет нулевого значения угла, потом контроллер отрабатывает ошибку и приводит тележку к координате 0, в самом конце маятник «толкают».

Создадим анимацию:

Модель получилась довольно устойчивой. Можно ее еще более упростить, оставить только два PID контроллера для угла и координаты.

Для разработки этой модели не было использовано ни одной формулы и ни одного расчета в ручную не было сделано. За нас всю эту рутину сделал Simulink и Multibody.

Ссылка на проект

Теги:
Хабы:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Публикации

Ближайшие события