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

Получилось как-то очень кратко, могу позже уточнить в неясных местах.
Динамические системы и модели
Нам понадобится как-то описывать системы которые будут подвергнуты управлению, обычно это может быть сделано с помощью дифференциальных уравнений (по крайней мере для механичейкой системы, да и для аэродинамики тоже). Для задач ТУ эти уравнения надо переписать в форму модели в пространстве состояний, это более удобный и простой способ описания системы с множеством входов и выходов, в отличии от передаточных функций. Каждый элемент пространства состояний соответствует некоторому состоянию системы. Для примера такая механическая система как ротор двигателя имеет угловое положение и скорость которые и составляют состояние системы. Уравнения для двигателя задают действующий момент сил и это приводит к ОДУ второго порядка.
Простой заменой переменных и введением новых оно может быть преобразовано к системе уравнений первого порядка.
Это уже уравния в пространстве состояний. Следующее, что мы сделаем, запишем уравнений в такой матричной форме.
Где,
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
Вспомнились пары по ТАУ. Жаль что в то время совершенно не осознавал ничего(( лишь бы сдать экз с зачетом, ща бы совершенно по другому все воспринималось. Да и курс преподавался как то без привязки к реальности — все уравнения да уравнения — имхо самая большая ошибка преподавания. Пару раз упомянули про связь с RC-цепью, но тогда курс электроники тока начался, поэтому ТАУ все равно больше математикой казалась, чем методами управления реальными вещами.
По теме: а почему в управляющее воздействие получилось с «просадкой» вначале? Не логично же совсем, такая неустойчивая система и еще теряет драгоценное время.
По теме: а почему в управляющее воздействие получилось с «просадкой» вначале? Не логично же совсем, такая неустойчивая система и еще теряет драгоценное время.
Вполне логично если бы я показал хотябы визуализацию модели (которая у меня где-то была). В начальный момент платформа откланяется в противоположную сторону для того, чтобы маятник наклонился в сторону движения. А когда начнется движение то маятник обратно выравнивается. Иначе он сразу начал бы падать.
Вполне логично если бы я показал хотябы визуализацию моделиКонечно же надо было. Больше бы людей заинтересовалось, это точно. И наглядней было бы. А то тут все та же голая математика без красивых картинок и видосов(
В начальный момент платформа откланяется в противоположную сторону для того, чтобы маятник наклонился в сторону движения.Ааа, это получается в задании уже заложено чтобы ее изначально отклонять. Я то думал нужно удерживать маятник ровно. Ну да, какой он тогда маятник если он стоит прямо и не маячит))
Отличная статья! Пожалуйста, не останавливайтесь только на одной. И еще просьба, как можно тщательней разжевывайте материал именно так, как Вы понимаете. Очень бы хотелось, чтобы статьи носили более «популярный» характер, а не «академический».Не забывайте о примерах! Пусть даже не связанных с электроникой. Глядишь, и ТАУ перейдет из разряда «тайных знаний» и будет полезным инструментом.
OMG, что-то вы, батенька, слишком суровы. Вопрос об устойчивости линейной системы решается НАМНОГО проще (скажу вам как человек, когда-то читавший лекции по ТАУ)
для этого совершенно достаточно рассчитать характеристический полином матрицы системы A
det(sI-A), где I единичная матрица порядка A, s — переменная полинома. А там Гурвиц, Раус и т.д. или просто
roots[коэф. полинома]
Если все корни характеристического полинома имеют отриц. вещественную часть — то линейная система устойчива.
Вот пример кода в Matlab, который сразу построит график переходного процесса (по нему сразу можно судить об устойчивости)
sys=ss(A, B, C, 0)
step(sys)
Синтез регуляторов — отдельная тема. Мне нравится метод Соколова :) Хотя тысячи их!
А можно все операции делать в Simulink, и наблюдать реакцию системы в блоке Scope. Тема обширная, в общем…
для этого совершенно достаточно рассчитать характеристический полином матрицы системы A
det(sI-A), где I единичная матрица порядка A, s — переменная полинома. А там Гурвиц, Раус и т.д. или просто
roots[коэф. полинома]
Если все корни характеристического полинома имеют отриц. вещественную часть — то линейная система устойчива.
Вот пример кода в Matlab, который сразу построит график переходного процесса (по нему сразу можно судить об устойчивости)
sys=ss(A, B, C, 0)
step(sys)
Синтез регуляторов — отдельная тема. Мне нравится метод Соколова :) Хотя тысячи их!
А можно все операции делать в Simulink, и наблюдать реакцию системы в блоке Scope. Тема обширная, в общем…
- DeusExMachina
- 20 марта 2012, 07:34
- ↓
кстати всем советую отличную методичку К.Ю. Поляков «Теория автоматического управления для „Чайников“». Доходчиво, просто и с примерами. Вот бы мне эту методу когда я читал лекции :)
- DeusExMachina
- 20 марта 2012, 07:41
- ↑
- ↓
Чем вам не нравится так передаточные ф-ции? в некоторых случая, они нагляднее для синтеза чем метод пространств состояний
В добавок вопрос: что за вектор ( -1 0 0 0 0 ) в последней формуле, если это управляющее воздействие то оно должно быть по идее (1 0 ...)
В добавок вопрос: что за вектор ( -1 0 0 0 0 ) в последней формуле, если это управляющее воздействие то оно должно быть по идее (1 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].
Вектор получается исходя из того, что в разрыв между выходом системы и входом регулятора ставиться сумматор, который корректирует вектора выхода перед подачей его в регулятор. Без управления регулятор стабилизирует систему в ноль по всему вектору. А для того чтобы стабилизировать систему в состояние [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].
Комментарии (25)
RSS свернуть / развернуть