Управление обратным маятником в MATLAB Simulink без формул. Настройка PID регуляторов
Простой и популярной реализацией закона управления обратным маятником является 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.
Ссылка на проект