|
И снова про ПИД-регулятор..., Мысли вслух. |
|
|
|
Mar 6 2006, 12:55
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Возникли несколько вопросов про цифровой ПИД-регулятор... Два разных источника по-разному описывают конечные формулы для расчета выходного воздействия по методу приращений: http://atm.h1.ru/index.htmlhttp://www.rlda.ru/PID_Control_Tutor.htmХод рассуждений в обоих случаях вроде бы один и тот же, но в итоговой формуле : U(n)= U(n-1)+dU(n) , где dU(n) = Kp*[Q0*e(n)+Q1*e(n-1)+Q2*e(n-2)] коэффициенты Q0 и Q1 сильно отличаются. Собственные выкладки дали результат совпадающий с результатом первого источника. Его и было взято за основу. Используем алгоритм приращений для ПИ-регулятора по следующей формуле: U(n)= U(n-1)+ Kp*(e(n)-e(n-1)+T*e(n)/Ti) и дополнительно результат выхода U(n) ограничен снизу нулём и сверху значением максимума (255). Так вот при отключении интегральной части (большое значение Ti) и установке достаточно большого усиления Kp теоретически регулятор должен вырождаться в позиционный,т.е. при значениях ошибки е > 0 имеем на выходе 255 и в остальных случаях - 0. Но.... Всё было бы именно так если бы не было ограничений выхода. Так как выход ограничен и в качестве аргумента выходной функции используется изменение ошибки...то получается что, допустим при текущем состоянии позиционного регулятора в максимуме, небольшой дрейф регулируемого параметра вверх(несколько едениц) вызовет кратковременный провал результирующего сигнала. Этого эффекта не будет наблюдаться при использовании прямой зависимости : U(n)= Kp*e(n), где аргументом является сама ошибка. Также вызвал ряд вопросов метод автонастройки ПИДа по процессу двухпозиционного регулирования, который описано в следующем источнике: http://members.vicard.net/sensor/main1_10.htmЗдесь как-то не сходится задачка с ответом.. Если предположим , что в системе с диапазоном изменения параметра = 180 у.е. , устанавливаются колебания с размахом, например 5 у.е. , то по формуле имеем Кр = 0.45/А (А-размах).. Приводя к процентам, получаем что Кр = 0.09*100 = 9[%/у.е.]. Теоретически значение значение Кр должно быть близко к расчитанному из соотношения Y=Kр·(U-X) для П-регулятора, где Y -выходная величина сигнала регулятора и входная Е = U-X (невязка). Отношение максимального Y к максимальному Е дает результат в тех же процентах - 100/180 = 0.555[%/у.е.] . Далеко не близкие результаты получились.. Где я ошибаюсь ????
|
|
|
|
|
Mar 6 2006, 14:51
|
Знающий
   
Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686

|
Цитата dU(n) = Kp*[Q0*e(n)+Q1*e(n-1)+Q2*e(n-2)] эту формулу не следует использовать для получения П-регулятора. "разверните" её и увидите, что в такой записи П-регулятор превратится в ПИ- с некоторой "неуправляемой" постоянной времени. меж нами говоря, я бы вообще не советовал использовать такую запись для численного воплощения регулятора, т.к. в ней очень быстро накапливается вычислительная ошибка (шум). да и ведет себя такой регулятор "неправильно". прямая запись ведет себя более "корректно", допускает всякие фокусы с отдельными составляющими - например можно слегка фильтрануть дифф-часть, прежде чем загнать её в регулятор, да и сам дифференциал можно брать по разному. интеграл тоже - его можно тупо брать методом прямоугольников, а можно легко перейти к трапеции или к какому другому методу... в общем, типа резюме, работа регулятора по приращению мне очень не понравилась в работе на реальных объектах.
Сообщение отредактировал LordN - Mar 6 2006, 14:52
--------------------
|
|
|
|
|
Mar 6 2006, 15:28
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(LordN @ Mar 6 2006, 18:51)  Цитата dU(n) = Kp*[Q0*e(n)+Q1*e(n-1)+Q2*e(n-2)] эту формулу не следует использовать для получения П-регулятора. "разверните" её и увидите, что в такой записи П-регулятор превратится в ПИ- с некоторой "неуправляемой" постоянной времени. меж нами говоря, я бы вообще не советовал использовать такую запись для численного воплощения регулятора, т.к. в ней очень быстро накапливается вычислительная ошибка (шум). да и ведет себя такой регулятор "неправильно". прямая запись ведет себя более "корректно", допускает всякие фокусы с отдельными составляющими - например можно слегка фильтрануть дифф-часть, прежде чем загнать её в регулятор, да и сам дифференциал можно брать по разному. интеграл тоже - его можно тупо брать методом прямоугольников, а можно легко перейти к трапеции или к какому другому методу... в общем, типа резюме, работа регулятора по приращению мне очень не понравилась в работе на реальных объектах. Метод этот вроде бы широко рекомендуется для реализации цифрового варианта ПИД . Один из его плюсов - отсутсвие насышения интеграла.. А "неправильная" работа такого регулятора что связана именно с накопленным выч.шумом ? Хотя мне думалось что вычислительная ошибка не сильно скажется при 8-битном выходном сигнале.
|
|
|
|
|
Mar 6 2006, 16:40
|
Знающий
   
Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686

|
да, действительно в таком варианте нет необходимости вычислять интеграл отдельно, т.к. сама запись и есть, по сути, интеграл со всеми своими недостатками. кроме того, я обращал внимание на тот факт, что ПИД-регулятор в такой записи ведет себя если не совершенно, то значительно иначе чем при прямой записи. насчет выч.шума - так же по наблюдению - чем меньше разрядность, тем он выше и тем быстрее накапливается ошибка. и чем выше частота дискретизации, тем быстрее, т.к. шум будет зависить только от частоты суммирования. и мой скромный опыт в этом деле говорит, что чем выше разрядность чисел - тем "лучше"(более "предсказуемо" и "правильно") ведет себя ПИД. если исходная вх/вых разрядность мала, то, буде есть такая возможность, имеет смысл искусственным образом её увеличить, хотя бы простым экспоненциальным фильтром.
--------------------
|
|
|
|
|
Mar 7 2006, 03:27
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726

|
Цитата Метод этот вроде бы широко рекомендуется для реализации цифрового варианта ПИД . Один из его плюсов - отсутсвие насышения интеграла.. А "неправильная" работа такого регулятора что связана именно с накопленным выч.шумом ? Хотя мне думалось что вычислительная ошибка не сильно скажется при 8-битном выходном сигнале. А про отсутствие насыщения интеграла можно подробнее? При реализации такого метода после ограничения выходного сигнала регулятор вел себя некорректно. При реализации "в лоб" (отдельно П и И ветви) - все отлично.
|
|
|
|
|
Mar 7 2006, 04:03
|
Знающий
   
Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686

|
Цитата А про отсутствие насыщения интеграла можно подробнее? ну, приращение и есть по сути интеграл сам в себе. в такой записи интегральная составляющая присутсвует неявно, потому и нет насыщения. при реализации "в лоб" нужно отдельно накапливать интегральную составляющую, ограничивать её сверху и снизу и на полный сигнал тоже надо накладывать ограничение сверху/снизу.
--------------------
|
|
|
|
|
Mar 7 2006, 07:01
|
Знающий
   
Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686

|
?) Цитата Что мешает завести обратную связь по предыдущему значению не с выхода ПИД-регулятора а о какой ОС речь? об ограничении? если да, то так и делается, сумма ограничивается непосредственно при вычислении... Цитата А выход пусть себе ограничивается как ему угодно... это не всегда годится. (а может я просто не понял о чем речь)
--------------------
|
|
|
|
|
Mar 7 2006, 12:11
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(NickNich @ Mar 7 2006, 11:43)  2 LordN
В корневом сообщении написано, что ограничивается только выход ПИ-регулятора. О промежуточных ограничениях и насыщениях речи не идёт. Т.е. у автора реализован следующий способ получения выхода (обратная связь в интегратор заводится с выхода регулятора):
Uout(k) = SAT(Uout(k-1) + Kp*(...)).
Предлагается делать так (обратная связь в интегратор заводится с выхода сумматора):
U1(k) = U1(k-1) + Kp*(...) Uout(k) = SAT(U1(k)) Да , действительно использована первая запись... Может быть и имеет смысл попробовать второй вариант. А по поводу автонастройки коэффициетна усиления у кого-нить есть какие-то рекомендации ?
|
|
|
|
|
Mar 7 2006, 12:17
|
Знающий
   
Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686

|
Цитата(NickNich @ Mar 7 2006, 13:51)  SAT = SATURATION, насыщение или ограничение результата ага, теперь понятно. т.е. имеет ввиду такая запись: Код SAT(х, Min, Max) { temp = x;
if(x > Max) temp = Max else if(x < Min) temp = Min; return temp; } ? если да, то нет, так: Цитата U1(k) = U1(k-1) + Kp*(...) Uout(k) = SAT(U1(k)) делать нельзя, т.к. ограничивать нужно именно само U1(k), т.е. U1(k) = SAT(U1(k-1) + Kp*(...)) только так, иначе U1(k) может легко "уйти" далеко за пределы и перестанет реагировать на ошибку e(k)
--------------------
|
|
|
|
|
Mar 7 2006, 16:57
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(LordN @ Mar 7 2006, 16:17)  Цитата(NickNich @ Mar 7 2006, 13:51)  SAT = SATURATION, насыщение или ограничение результата ага, теперь понятно. т.е. имеет ввиду такая запись: Код SAT(х, Min, Max) { temp = x;
if(x > Max) temp = Max else if(x < Min) temp = Min; return temp; } ? если да, то нет, так: Цитата U1(k) = U1(k-1) + Kp*(...) Uout(k) = SAT(U1(k)) делать нельзя, т.к. ограничивать нужно именно само U1(k), т.е. U1(k) = SAT(U1(k-1) + Kp*(...)) только так, иначе U1(k) может легко "уйти" далеко за пределы и перестанет реагировать на ошибку e(k) Согласен, при достаточно большом коэффициенте усиления регулятор может быстро "улететь" в никуда, особенно если разрядность вычисляемых значений невысока...
|
|
|
|
|
Mar 7 2006, 17:20
|
Знающий
   
Группа: Свой
Сообщений: 704
Регистрация: 15-10-05
Из: г.Томск
Пользователь №: 9 686

|
Цитата А по поводу автонастройки коэффициетна усиления у кого-нить есть какие-то рекомендации ? практических - у меня нету  на сайте owen.ru что-то про это было, они для своих регуляторов полуавтоматическую настройку пользуют. на уровне слухов - вроде успешно используют нечеткие алгоритмы для автопоиска параметров ПИДа... вот, пожалуй, и все, что по этой теме знаю..
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|