Я не понимаю неотъемлемую часть ПИД-регулятора


12

Я не понимаю неотъемлемую часть ПИД-регулятора. Давайте предположим этот псевдокод из Википедии:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

Интеграл устанавливается в ноль в начале. И затем в цикле интегрируется ошибка с течением времени. Когда я произвожу (положительное) изменение уставки, ошибка станет положительной, и интеграл «съест» значения с течением времени (с начала). Но что я не понимаю, так это то, что, когда ошибка стабилизируется обратно в ноль, интегральная часть все еще будет иметь некоторое значение (интегрированные ошибки во времени) и все равно будет вносить вклад в выходное значение контроллера, но это не должно происходить, потому что, если ошибка равна нулю, вывод PID также должен быть нулевым, верно?

Может кто-нибудь объяснить мне это, пожалуйста?

Ответы:


16

Основное назначение интегрального члена - устранить ошибку установившегося состояния. В нормальном случае будет небольшая ошибка стационарного состояния, и интеграл в основном используется для устранения этой ошибки. Однако верно, что когда ошибка достигнет 0, интеграл все равно будет положительным и заставит вас перескочить. Затем после перерегулирования интеграл снова начнет снижаться. Это отрицательный эффект интегрального члена. Таким образом, всегда есть компромисс, и вы должны настроить ПИД-регулятор, чтобы убедиться, что превышение минимально и ошибка установившегося состояния сведена к минимуму. Вот где вступает в действие производный термин. Производный термин помогает минимизировать выбросы в системе.


8
И хорошим примером ошибки стационарного состояния является трение в суставе. Допустим, ваш контроллер PD располагается близко к целевому углу сустава, но не может его достичь из-за трения. Термин «я» будет медленно накапливаться и в конечном итоге будет генерировать достаточно большой вклад для преодоления трения.
Бен

2
Другой пример - смещение в рулевом управлении. Если окажется, что в рулевом управлении есть небольшое смещение, или, для роботов в стиле протектора, один протектор поворачивается немного медленнее, чем другой, несмотря на то, что контроллер установил им одинаковое значение, будет смещение. Интегральный термин, установленный правильно, исправляет это.
ВенаМайк

8

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

  • Пропорциональный элемент будет контролировать силу вашей руки относительно слишком высокой или низкой позиции вашей руки.
  • Производный элемент будет регулировать эту силу в зависимости от того, насколько быстро вы уже двигались, чтобы вы не промахнулись по своей цели.
  • Интегральный элемент будет компенсировать влияние гравитации; без этого чаша остановилась бы там, где пропорциональная сила равнялась силе гравитации.

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


2
+1. «если ошибка равна нулю, выходной сигнал PID также должен быть равен нулю, верно?» Как объясняет Йен, даже когда кофейная чашка находится в идеальном положении и ошибка равна нулю, выходной сигнал ПИД-регулятора должен иметь некоторую направленную вверх силу, чтобы удерживать эту чашку в этом положении.
Дэвид Кэри

0

Вот видео, которое дает «интуитивное» понимание петель PID. Он содержит объяснение интегрального термина, а также пропорционального и производного членов.

https://www.youtube.com/watch?v=l03SioQ9ySg

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

https://www.youtube.com/watch?v=sDd4VOpOnnA

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.