Управление обратным маятником в 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).

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

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

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

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

d58c70bb8316bcb5dea641496e29b960.gif

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

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

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

2a95f10379d11ea1a376ecae1685d642.jpg

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

e3652b8d38c31854cc407eac84fbc14b.jpg

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

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

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

4dc252938c2bed24857eacb7aba56241.jpg

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

893feec9621e4fbe23677bc702abf8c0.JPG

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

1e4e220cd5529db5cea9174c0aa2df67.JPG

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

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

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

231d6dfc30bb70b0bd7d75e149214354.jpg

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

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

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

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

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

201536ef1ac15dd92b4b6120015178df.gif

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

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

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

© Habrahabr.ru