Методы синтеза регуляторов

Помню здесь многие хотели увидеть публикации на тему теории управления и ПИД регуляторов. Я попытаюсь не ограничиваться ПИД и показать как работать с произвольными регуляторами. Для начала на простом примере перевернутого маятника. Предлагаю использовать это для коптеров, сам я до этого не скоро доберусь.

Получилось как-то очень кратко, могу позже уточнить в неясных местах.


Динамические системы и модели

Нам понадобится как-то описывать системы которые будут подвергнуты управлению, обычно это может быть сделано с помощью дифференциальных уравнений (по крайней мере для механичейкой системы, да и для аэродинамики тоже). Для задач ТУ эти уравнения надо переписать в форму модели в пространстве состояний, это более удобный и простой способ описания системы с множеством входов и выходов, в отличии от передаточных функций. Каждый элемент пространства состояний соответствует некоторому состоянию системы. Для примера такая механическая система как ротор двигателя имеет угловое положение и скорость которые и составляют состояние системы. Уравнения для двигателя задают действующий момент сил и это приводит к ОДУ второго порядка.



Простой заменой переменных и введением новых оно может быть преобразовано к системе уравнений первого порядка.



Это уже уравния в пространстве состояний. Следующее, что мы сделаем, запишем уравнений в такой матричной форме.



Где,
x — состояние системы
u — управление или вход
z — выход системы

Будем считать, что момент это и есть управление, а выражение для выхода оставим пока в покое, тогда.



Этот простой пример уже имеет постоянные и независящие от времени матрицы. На деле обычно надо производить лиеаризацию в той точке в которой планируется стабилизировать систему. Это делается в основном из-за того, что для линейных систем задачи синтеза и анализа упрощаются и есть много хороших методов. Последствие линеаризации в том, что если мы сделали регулятор для линеаризованной системы, то теория гарантирует стабильность реальной системы только в некоторой окрестности точки линеаризации. Но не будем уходить слишком глубоко, на самом деле если предполагается использование цифровых регуляторов (АЦП -> МК -> ЦАП) то надо использовать модель с дискретным временем.



Переход от модели с постоянным временем к модели с дискретным временем это не то, что можно здесь так просто объяснить. Более того, можно сразу получить дискретную модель. Как это сделать наверно отдельный вопрос. У меня есть некоторые мысли применительно к коптерам о том как не сильно напрягаясь получить модель, хотя бы линейную. Но об этом наверно в другой раз.

Устойчивость

Условие устойчивости дискретной системы состоит в том, что отображение производимое матрицей А должно быть сжимающим. То есть все расстояния в пространстве состояний с каждым шагом системы становятся меньше. Это обеспечивается если собственные значения А по абсолютной величине не превосходят единицы. Это же условие можно выразить как отрицательность приращения функции Ляпунова.




Последнее эквивалентно такому линейному матричному неравенству.



В котором H это положительно определенная матрица, и А переходная матрица дискретной системы.

Покажем как это можно использовать.

Scilab

Для численных и особенно матричных вычислений хорошо подходит scilab. Это язык, интерпретатор, и много готовых функций. У него есть аналоги, scilab выбран только потому что в нем уже есть решатель ЛМН. В остальных случаях я использую octave.

www.gnu.org/software/octave/
www.scilab.org/
www.mathworks.com/

Он полезен даже как замена калькулятору или рисовалка графиков.

Синтез регулятора

Будем использовать систему из [2] перевернутого маятника с подвижным основанием как пример неустойчивой системы. Переход к дискретной модели будет сделан численно с помощью scilab, поэтому будем полагать, что уже имеем линейную дискретную модель системы. Для упрощения будем синтезировать регулятор по состоянию (надо заметить, что иначе статический регулятор и не сможет стабилизировать эту систему).



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

Подставляя регулятор в уравнение дискретной системы находим.



То есть, переходная матрица замкнутой системы A + BF. Используем условие устойчивости для нее.



Здесь надо заметить, что это не единственный возможный способ. Можно использовать любые методы оптимизации, например `лобовой` способ это генетический алгоритм который свободен от сложностей приведения неравенств к решабельному виду. Это ещё одна отдельная тема.

(стал я сомневаться, что это ещё кому-то интересно и до этой строки кто-то доберется :))

Делаем замену,



и домножаем на X справа и слева.



Используем дополнение Шура.


(Ошибка, условие надо инвертировать, извините но картинку перерисовыввать не буду)

Коэффициенты регулятора выражаются так.



С эти можно идти в scilab и пытаться решать неравенство относительно X и Y.

Моделирование

Надо перестроить матрицы для замкнутой системы и вытащить новое управление.


(Ошибка, в столбце должно быть -1 а не 1)

Теперь подаем на вход `ступеньку` (переключаем с 0 на 1 (или любое другое значение отличное от нуля) и удерживаем). И смотрим что получается на выходе. Это преходный процесс по пложению платформы.



Как это делается в scilab можно увидеть в коде примера.

Ссылки

[1] www.unn.ru/pages/issues/aids/2006/36.pdf
[2] www.math.uwaterloo.ca/~sacampbe/preprints/invpend.pdf

Upadate1:
Видео

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

ompldr.org/vZDNobA
  • +5
  • 19 марта 2012, 18:25
  • amaora
  • 1
Файлы в топике: scilmi.tar.gz

Комментарии (25)

RSS свернуть / развернуть
Спасибо за статью.

Но, для моего уровня, такое резкое погружении в данную область это слишком круто. Ничего, попробую разобраться.

Для начала, просьба: добавьте к формулам список обозначений. Типа
A – матрица системы
B – матрица управления
C – матрица выхода
и т. д.
0
Вспомнились пары по ТАУ. Жаль что в то время совершенно не осознавал ничего(( лишь бы сдать экз с зачетом, ща бы совершенно по другому все воспринималось. Да и курс преподавался как то без привязки к реальности — все уравнения да уравнения — имхо самая большая ошибка преподавания. Пару раз упомянули про связь с RC-цепью, но тогда курс электроники тока начался, поэтому ТАУ все равно больше математикой казалась, чем методами управления реальными вещами.

По теме: а почему в управляющее воздействие получилось с «просадкой» вначале? Не логично же совсем, такая неустойчивая система и еще теряет драгоценное время.
0
Вполне логично если бы я показал хотябы визуализацию модели (которая у меня где-то была). В начальный момент платформа откланяется в противоположную сторону для того, чтобы маятник наклонился в сторону движения. А когда начнется движение то маятник обратно выравнивается. Иначе он сразу начал бы падать.
0
Вполне логично если бы я показал хотябы визуализацию модели
Конечно же надо было. Больше бы людей заинтересовалось, это точно. И наглядней было бы. А то тут все та же голая математика без красивых картинок и видосов(
В начальный момент платформа откланяется в противоположную сторону для того, чтобы маятник наклонился в сторону движения.
Ааа, это получается в задании уже заложено чтобы ее изначально отклонять. Я то думал нужно удерживать маятник ровно. Ну да, какой он тогда маятник если он стоит прямо и не маячит))
0
Да и это не управляющее воздействие а состояние самой системы, или выход. А на входе еденица.
0
ТАУ наше все!
0
Отличная статья! Пожалуйста, не останавливайтесь только на одной. И еще просьба, как можно тщательней разжевывайте материал именно так, как Вы понимаете. Очень бы хотелось, чтобы статьи носили более «популярный» характер, а не «академический».Не забывайте о примерах! Пусть даже не связанных с электроникой. Глядишь, и ТАУ перейдет из разряда «тайных знаний» и будет полезным инструментом.
0
OMG, что-то вы, батенька, слишком суровы. Вопрос об устойчивости линейной системы решается НАМНОГО проще (скажу вам как человек, когда-то читавший лекции по ТАУ)
для этого совершенно достаточно рассчитать характеристический полином матрицы системы A
det(sI-A), где I единичная матрица порядка A, s — переменная полинома. А там Гурвиц, Раус и т.д. или просто
roots[коэф. полинома]
Если все корни характеристического полинома имеют отриц. вещественную часть — то линейная система устойчива.
Вот пример кода в Matlab, который сразу построит график переходного процесса (по нему сразу можно судить об устойчивости)
sys=ss(A, B, C, 0)
step(sys)
Синтез регуляторов — отдельная тема. Мне нравится метод Соколова :) Хотя тысячи их!
А можно все операции делать в Simulink, и наблюдать реакцию системы в блоке Scope. Тема обширная, в общем…
0
кстати всем советую отличную методичку К.Ю. Поляков «Теория автоматического управления для „Чайников“». Доходчиво, просто и с примерами. Вот бы мне эту методу когда я читал лекции :)
0
Спасибо за методичку. Скачал
0
А линк можно?
0
0
Спасибо, действительно толково.

P.S. Эпиграф гениальный.
+2
Методичка хорошая, но я предпочитаю не связываться с передаточными функциями и полиномами.
0
Чем вам не нравится так передаточные ф-ции? в некоторых случая, они нагляднее для синтеза чем метод пространств состояний
В добавок вопрос: что за вектор ( -1 0 0 0 0 ) в последней формуле, если это управляющее воздействие то оно должно быть по идее (1 0 ...)
0
Мне гораздо проще мысленно перемножать матрицы и интегрировать диф.уры (а в дискретном случае ещё проще, интегировать не надо) чем интерпретировать поведение звена описанного передаточной функцией (уже и не помню как это можно сделать). А без мысленных экспериментов плохо.

Вектор получается исходя из того, что в разрыв между выходом системы и входом регулятора ставиться сумматор, который корректирует вектора выхода перед подачей его в регулятор. Без управления регулятор стабилизирует систему в ноль по всему вектору. А для того чтобы стабилизировать систему в состояние [1; 0; 0; 0] (платформа смещена на 1 еденицу в положительном направлении) надо чтобы регулятор получал при этом [0; 0; 0; 0], это делается умножением на тот столбец с минус еденицей.

x_{n+1} = A x_n + B F (x_n — [1; 0; 0; 0] u_n)
x_{n+1} = A x_n + B F x_n + B F [-1; 0; 0; 0] u_n

Здесь есть интересный вопрос о том в каких состояних система может быть стабилизирована. Для примера этот превернутый маятник нелзя заставить остановится в состоянии [0; 1; 0; 0].
0
на сумматор я так понял вы обратную связь подаете? тогда получается что из воздействия u_n вы должны вычитать выходное x_n и подавать на регулятор F
0
Наоборот, из выхода x_n надо вычитать управление, и разность на регулятор.
0
я так понимаю x_n это положение по горизонтали?
0
Это вектор состояния системы на n-том шаге, состоящий из следующих скаляров [положение по горизонатали, угол откленнеия маятника, скорость по горизонтали, скорость изменения угла].
0
Люди… в таких случаях надо пользоватся схемами с функциональными блоками… описывающими ПФ!!!
Просто и наглядно!!!
0
Ну так корни характеристического полинома это и есть собственные значения матрицы A.
0
Хорошая статья. Осталось только вспомнить все то что в ней упоминается (я про дифуры и прочее)… Давно это было… :D
0
Добавил видео.
0
Картинки сломались.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.