Перейти к содержанию
    

Интегральная часть ПИД регулятора

Добрый день, товарищи!

Вопрос очень конечно смешной, но я пока для себя ответа не нашел нигде, хотя прочитал кучу всего под ПИДам.

Собственно в интегральной составляющей копиться ошибка, т.е. отличие текущего от целевого значения

Но представим случай сигнал стоит в целевом, и тут ему целевое меняется на бОльшее значение, регулятор отрабатывает и копит ошибку до тех пор пока он не достигнет нового целевого. А теперь представим, что мы отлично подобрали коэффициенты и наш сигнал очень плавно подходит к целевому, практически без перерегулирования или с малым.  Т.е. у нас в интеграле накоплена огромная ошибка допустим плюсовая, которая не сможет обнулиться т.к. сигнал очень малое время находится выше целевого значения, т.е. в зоне отрицательного роста интегральной части.... В итоге у нас сигнал в целевом значении, а интеграл совсем еще не ноль... Как он обнуляется? Ведь все три составляющие ПИДа должны стремиться к нулю, при достижении целевого значения?

Простите за смешной вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, Quantum1 said:

Ведь все три составляющие ПИДа должны стремиться к нулю, при достижении целевого значения?

Интегральная - нет. Потому что она компенсирует DC-составляющую ошибки. Представьте себе груз, поднимаемый двигателем до нужной точки. Вот когда все придет в устойчивое состояние, то в интеграторе будет значение, соответствующее весу груза. Чем больше вес, тем больше нужен мотору момент, чтобы груз не съехал, тем больше будет значение в интеграторе. А ошибка уже да, будет равна нулю, как и P-звено. И D-звено будет равно 0, потому что никто никуда уже не едет, просто удерживает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 минут назад, Quantum1 сказал:

Собственно в интегральной составляющей копиться ошибка, т.е. отличие текущего от целевого значения

В интегральной составляющей копится не ошибка, а интегральная "поправка" к управляющему сигналу.

Ошибка (сигнал рассогласования) - это разность между задающим сигналом (так называемой, "уставкой") и реальным значением регулируемой величины, получаемым через обратную связь. Задающий сигнал, реальное значение, сигнал рассогласования  и управляющий сигнал - разные вещи.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/23/2022 at 1:35 PM, Rst7 said:

Интегральная - нет. Потому что она компенсирует DC-составляющую ошибки. Представьте себе груз, поднимаемый двигателем до нужной точки. Вот когда все придет в устойчивое состояние, то в интеграторе будет значение, соответствующее весу груза. Чем больше вес, тем больше нужен мотору момент, чтобы груз не съехал, тем больше будет значение в интеграторе. А ошибка уже да, будет равна нулю, как и P-звено. И D-звено будет равно 0, потому что никто никуда уже не едет, просто удерживает.

Ой... вей... благодарю, теперь все понятно! Я просто был уверен что ПИД выдает из себя поправку к сигналу управления, а он же выдает сам сигнал управления! Ну т.е. этот интеграл это просто грубо говоря сам сигнал. Для вашего примера - этот интеграл(ну т.е. управляющий сигнал в покое) должен быть одинаков хоть ПИД у нас удерживает груз, хоть дядя вася примерно ручку подкрутил подобрав значение, что бы груз не падал...

On 12/23/2022 at 2:04 PM, quark said:

В интегральной составляющей копится не ошибка, а интегральная "поправка" к управляющему сигналу.

Ошибка (сигнал рассогласования) - это разность между задающим сигналом (так называемой, "уставкой") и реальным значением регулируемой величины, получаемым через обратную связь. Задающий сигнал, реальное значение, сигнал рассогласования  и управляющий сигнал - разные вещи.

 

Но ведь ... поправка = Ki*ошибку...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, Quantum1 said:

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

Ну если дядя Вася заменяет собой интегральное звено (т.е. на выход суммируются не P, D и I звенья, а P, D и ручка, которую крутят), то именно так.

Но если на выходе у нас сумма P, D, I и дяди Васи, то в установившемся режиме в интеграторе будет разность между требуемым воздействием для равновесия груза и ручкой. Т.е. то, что дядя Вася недокомпенсирует, возьмет на себе I-звено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/23/2022 at 4:53 PM, Rst7 said:

Ну если дядя Вася заменяет собой интегральное звено (т.е. на выход суммируются не P, D и I звенья, а P, D и ручка, которую крутят), то именно так.

Я имею ввиду интегральное звено в установившимся режиме, т.е. в статике, когда P и D = 0

 

ну т.е. грубо говоря если к примеру для удержания груза нужно подать ШИМ с заполнением 45%. То к этим 45% придет и ПИД регулятор(в котором I =45%, P и D =0) и просто дядя вася с ручкой(без всякого P и D) 

Изменено пользователем Quantum1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Rst7 сказал:

Ну если дядя Вася заменяет собой интегральное звено (т.е. на выход суммируются не P, D и I звенья, а P, D и ручка, которую крутят), то именно так.

Но если на выходе у нас сумма P, D, I и дяди Васи, то в установившемся режиме в интеграторе будет разность между требуемым воздействием для равновесия груза и ручкой. Т.е. то, что дядя Вася недокомпенсирует, возьмет на себе I-звено.

В классическом случае, дядя Вася только уставку крутит - задает желаемое значение. А управляющий сигнал вычисляется по сигналу рассогласования в виде суммы P+I+D. Но можно в эту сумму и уставку еще добавать (дядю Васю) со своим коэффициентом. В некоторых случаях, результат получается лучше - быстрее реакция регулятора на изменение уставки.
Ну а по хорошему, нужно ограничивать скорость изменения уставки. То есть уставка, которую непосредственно крутит дядя Вася, прежде чем попасть в регулятор фильтруется. И для вычисления рассогласования используется уже отфильтрованное значение. В этом случае, резкие изменения уставки и, связанные с этим, большие значения сигнала рассогласования, становятся невозможны. И регулятор успевает плавно вывести регулируемую величину к новому значению.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, quark said:

В классическом случае, дядя Вася только уставку крутит - задает желаемое значение.

Ну мы сейчас про дядю Васю, заменяющего ПИД.

 

18 minutes ago, quark said:

Но можно в эту сумму и уставку еще добавать (дядю Васю)

 

18 minutes ago, quark said:

Ну а по хорошему, нужно ограничивать скорость изменения уставки.

Это уже все последующие улучшения. Как и, например, разнообразные способы ограничения I-звена. И много всяких других костылей есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, yamantau said:

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

А зачем? PID-регулятор для того и устроен, чтобы не париться с этой самой статической только не ошибкой, а воздействием. Нужно оно - будет не ноль в I-звене, не нужно - в I-звене будет 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, Rst7 сказал:

А зачем? PID-регулятор для того и устроен, чтобы не париться с этой самой статической только не ошибкой, а воздействием. Нужно оно - будет не ноль в I-звене, не нужно - в I-звене будет 0.

Простите если ввел в заблуждение, ответ был ТСу на вот это " Ведь все три составляющие ПИДа должны стремиться к нулю, при достижении целевого значения? "

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня вообще задача следующая - нужно прецизионно поддерживать температуру тела с малой теплоёмкостью, при не самой стабильной сети питания нагревателя. В итоге думаю каскадировать  два ПИДа, в первом уставка это температура, а выход с ПИДа это мощность нагрева. Во втором ПИДе уставка это мощность нагрева от первого, а выход это управление нагревателем. Т.е. при изменении сети питания сначала отработает второй ПИД, подтянув мощность по сути ещё до того как это с кажется на изменении температуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, Quantum1 said:

В итоге думаю каскадировать  два ПИДа

Не надо так делать. Будете мучаться со стабильностью.

Сделайте лучше вот что. Оцените примерно вид функции PWM=f(Uпитания). Это может быть линейная функция, может быть набор табличных значений. И сделайте управление PWM=PID(Tтекущая,Tуставки)+f(Uпитания)

Будет куда веселее работать.

Ну и дальше напрашивается классика самообучения - если f(U) сделана таблицей, то можно подобучить на ходу, добавив после расчета PID коррекцию

	f[U]+=I*k
	

, где k - маленький коэффициент, определяющий скорость обучения, I - значение интегратора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Quantum1 сказал:

У меня вообще задача следующая - нужно прецизионно поддерживать температуру тела с малой теплоёмкостью, при не самой стабильной сети питания нагревателя. В итоге думаю каскадировать  два ПИДа, в первом уставка это температура, а выход с ПИДа это мощность нагрева. Во втором ПИДе уставка это мощность нагрева от первого, а выход это управление нагревателем. Т.е. при изменении сети питания сначала отработает второй ПИД, подтянув мощность по сути ещё до того как это с кажется на изменении температуры.

Зачем так сложно? Измеряйте сетевое напряжение и вычисляйте корректирующий коэффициент. На него потом умножите управляющий сигнал.

Да, зависимость может быть не точно линейной. Но остальное - ПИД-регулятор подправит...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...