Які хороші стратегії налаштування циклів PID?


55

Налаштування виграшів контролера може бути важким, які загальні стратегії добре працюють, щоб отримати стабільну систему, яка наближається до правильного рішення?


1
Питання, націлене на більш конкретне питання, було б кориснішим. В іншому випадку слід просто переглянути статтю PID із розділом про налаштування
ronalchn

2
Я завжди вважав, що настройка PID дуже залежить від характеристик системи, тому я ніколи не вважаю, що автоматична настройка систем була дуже корисною. Вони чудово підходять для першого проходу, низького набору параметрів, але вони далеко не оптимальні, і ви матимете ту ж проблему з будь-якою загальною стратегією, не оптимізованою для механічних, електричних та керуючих аспектів даної системи.
Марк Бут

Відповіді:


66

Для невеликих двигунів з низьким крутним моментом з малою передачею або без передач одна процедура, яку ви можете використати, щоб отримати гарну базову мелодію, - це зондувати її реакцію на порушення.

Щоб настроїти PID, виконайте такі дії:

  1. Встановіть всі посилення на нуль.
  2. Збільшуйте коефіцієнт підсилення Р до тих пір, поки реакція на порушення не буде постійною коливанням.
  3. Збільшуйте коефіцієнт підсилення D до тих пір, коли коливання не зникнуть (тобто воно критично зменшено).
  4. Повторюйте кроки 2 і 3, поки збільшення коефіцієнта посилення D не зупинить коливання.
  5. Встановіть P і D на останні стабільні значення.
  6. Збільшуйте коефіцієнт підсилення, доки він не приведе вас до встановленої точки з потрібною кількістю коливань (як правило, нульова, але швидша відповідь може бути, якщо ви не заперечуєте пару коливань перебігу)

Яке порушення ви використовуєте, залежить від механізму, до якого приєднаний контролер. Зазвичай достатньо переміщення механізму вручну від заданої точки і відпускання його. Якщо коливання зростають і збільшуються, то вам потрібно зменшити посилення Р.

Якщо встановити коефіцієнт посилення D занадто високий, система почне балаканини (вібрувати на більш високій частоті, ніж коливання посилення P). Якщо це трапиться, зменшіть коефіцієнт посилення D, поки він не припиниться.

Я вважаю, що ця методика має свою назву. Я покладу його сюди, коли знайду.



1
@ Throwback1986, Це, безумовно, не Зіглер-Ніколс, який використовує тільки коефіцієнт посилення P, і де коефіцієнт посилення I і D потім розраховується відповідно з коливальним коефіцієнтом посилення P і періодом коливань
dm76

Чи є у вас додаткові поради щодо налаштування конкретно руки-робота, яка має кілька суглобів, які потребують налаштування? Ви починаєте з основи і працюєте назовні до кінця-ефектора, або навпаки, або це навіть має значення?
adamconkey

1
В академічній чи промисловій обстановці вам потрібен більш складний метод управління. Для хобі; гравітація справляє демпфуючий ефект, тому налаштовуйте кожен шарнір під кутом, де гравітація впливає на двигуни найменше. Наприклад, при руці, спрямованій прямо вгору, так що сила тяжіння діє на підшипники, а не на мотор. Порядок не має значення. Додавання терміну компенсації сили тяжіння до вашого контролю, мабуть, є найпростішим поліпшенням (використовуйте рекурсивний Ньютон-Ейлер для послідовної руки), якщо ви не зможете отримати бажану продуктивність.
hauptmech

Інструмент pidtuner.com дав мені кращі результати, ніж метод Циглера-Ніколса, який має кілька відомих недоліків; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Хуан Гонсалес Бургос

13

Аналогічний експериментальний метод до відповіді Хауптмеха про те, що мене навчали в коледжі:

  1. Встановіть всі посилення на 0.
  2. Збільшуйте K d, поки система не коливається.
  3. Зменшіть K d на коефіцієнт 2-4.
  4. Встановіть для K p приблизно 1% від K d .
  5. Збільшуйте K p, поки не почнуться коливання.
  6. Зменшіть K p на коефіцієнт 2-4.
  7. Встановіть K i приблизно на 1% від K p .
  8. Збільшуйте K i до початку коливань.
  9. Зменшіть K i на коефіцієнт 2-4.

Метод Циглера-Ніколса є більш точним, якщо ви можете отримати точне число за період коливань. Це, як правило, викликає коливання, використовуючи наведені "класичні PID" номери, тому це не завжди оптимально.

Загальні правила впливу кожного терміна на час підйому, прокручування, час відстоювання, помилки в стаціонарному стані та стабільність див. У таблиці 1 "Аналіз та проектування системи управління PID" , Li, Ang та Chong в системах управління IEEE Журнал.


2
Kd спочатку? Я завжди думав, що найкраще почати з Кп.
Rocketmagnet

Я переписую зі старих слайдів лекцій, якщо є вагома причина цього не робити, мені було б цікаво це почути.
Джо Бейкер

1
Це алгоритм, який я прихильник налаштування "сидіння штанів". Це зблизить вас якнайближче, не моделюючи систему чи вимірюючи її реакцію. (Моделювання та / або вимірювання - єдиний шлях, якщо вам справді потрібна правильна настройка).
TimWescott

Перша настройка Kd не має для мене ніякого сенсу, так як у кожному застосованому нами PID знак Kd є негативним. Він використовується для зменшення керуючого сигналу, коли трапляються дуже великі зміни помилок, по суті демпфіруючи систему вниз. Якщо у вас є лише Kd, система рухатиметься у зворотному напрямку, збільшуючи помилку та ускладнюючи проблему. Якщо Kd є позитивним, тоді, коли велика зміна помилки відбудеться в правильному напрямку, ви збираєтесь змусити її змінюватися ще швидше і перевищувати ціль.
Ендрю Каподієці

Насправді налаштування посилення D спочатку має певний сенс, але я припускаю, що "збільшення" коефіцієнта посилення D означає збільшення абсолютного значення і це лише збільшення демпфування. Найбільша проблема посилення D полягає в тому, що він підсилює високочастотний шум і приємно бачити цей ефект без посилення P. Отже, ви по суті починаєте з пошуку вигоди, при якій він перестає поводитись як демпфірування і починає посилювати шум та відсталі сигнали про помилки. Я припускаю, що для кроку 2 вам потрібно ткнути своє рослина, щоб побачити, чи воно коливається.
DrRobotNinja

7

Embedded.com ще раз перемістив мою статтю, але ось де вона зараз. Це показує вам, як писати цикл PID (з'ясування того, як це зробити в чомусь іншому, як плаваюча точка, залишається як вправа для читача), і як їх настроїти.

PID Без кандидата наук

Кращий спосіб у чому залежить від ваших здібностей. Спосіб отримання найкращої настройки , якщо ви вважаєте, що ви досвідчена система управління, - це звичайно виміряти реакцію рослини ("завод" == "річ, якою ви керуєте"), то залежно від того, як ви зробили вимірювання витягують модель установки і проектують до цього, або просто проектують безпосередньо на вимірюваннях.

Для деяких складних рослин ви виявите, що ви ніколи не зможете зробити задовільних вимірювань, і в цьому випадку вам доведеться їхати по моделях. Вони рідкісні, але задовольняють, коли ти змушуєш їх працювати.


5

Себастьян Трун представив простий алгоритм налаштування PID у своєму класі "Як програмувати робототехнічний автомобіль". Це називається "twiddle", він описує це тут .

Twiddle дуже схильний до пошуку місцевих мінімумів - це означає, що ви можете придумати набір з трьох констант, які добре, але не оптимальні для ситуації. Проблема налаштування констант PID - це підмножина більш загальної проблеми пошуку для пошуку певних параметрів для максимальної корисності (у цьому випадку мінімізація помилок алгоритму PID). Ви можете вивчити інші загальні рішення цієї проблеми, як сходження на гірку, імітований відпал, генетичні алгоритми тощо, які можуть в кінцевому підсумку знайти більш оптимальні рішення.


4

На відміну від двох інших відповідей, я б сказав, що гарний ручний спосіб налаштування PID - це ігнорування Kd. Тож починайте з 0 і збільшуйте Kp до досягнення цілі, а потім збільшуйте Ki, щоб позбутися стійкої помилки.

Kd може переплутати проблему, оскільки вона погано реагує на шум, тоді ви починаєте додавати фільтри на свій аналоговий вхід, а потім ставите питання про те, що це робить, крім того, щоб уповільнити ваш контроль і зробити все це складніше для роботи ...

Інша річ, яка мене збиває з пантелику, полягає в тому, якщо рівняння PID знаходиться у стандартній формі або в незалежній (паралельній у вікіпедії) формі. Ефект Кі здається зворотним, коли форма - це неправильний шлях до того, що ти думаєш. Обидва типи використовуються в автоматизації, іноді з можливістю перемикання між ними.


4

Моделювання системи

Звичайно, експериментальну настройку можна виконати, як зазначено в інших відповідях, але якщо ви зможете визначити розумну динамічну модель для того, що ви хочете контролювати, і зможете визначити її параметри , ви повинні мати можливість спроектувати свій контролер на основі добре -визначення критерії , такі як перерегулирование , час наростання , час встановлення , стаціонарні помилок і так далі.

У MATLAB є навіть інструменти , які здатні налаштувати ваш контролер, щоб оптимізувати комбінацію цих критеріїв, що робить його ще краще використовувати.

Знайте свого контролера

Вивчення того, що робить кожен параметр у PID-контролері, також дуже корисно. Усі експериментальні алгоритми якимось чином базуються на такому знанні. Якщо ви не тільки слідуєте інструкціям, але зможете самі відчути це, вам може бути легше налаштувати контролер вручну.

Проблеми реального світу

Є ймовірність, що одна з цих речей, серед інших, стане на шляху вашого налаштування під час налаштування контролера: windup , неадекватна швидкість вибірки , насиченість .

Висновок

Зрештою, все залежить від того, що ви насправді можете зробити зі своєю системою, щоб отримати певні знання про те, як вона працює та який тип експериментів можна зробити. Найкраще - насправді дізнатися більше про PID-контролери та теорію управління загалом ІМО, але я упереджений :)


Я не розумію, чому люди продовжують пропонувати евристику для налаштування PID, в той час як нам сьогодні надано безліч автоматичних інструментів для ідентифікації рослин та дизайну контролерів, які не потребують глибокого теоретичного підґрунтя. Потім натисніть на цю відповідь.
Уго Паттачіні

3

Я спробую трохи розширити свій досвід для тих, хто може зацікавити. Я думаю, що проблема полягає в тому, що у нас є багато теорії управління, яка є дещо недоступною (а іноді і не корисною), і тоді ми маємо правила, які роблять припущення щодо систем, які часто є неточними.

Стабільність

Давайте спочатку поговоримо про те, чому петлі управління стають нестабільними. Для цього обговорення я припускаю лінійну систему. Неофіційно це означає, що якщо ваш керуючий сигнал є синусоїдальною хвилею на заданій частоті, то спостережуваний вихід на тій же частоті, і якщо ви змінюєте амплітуду вашої системи управління, ваш вихід відповідає в тому ж співвідношенні. Це припущення є гарним наближенням для багатьох реальних систем і дозволяє нам дивитись на різні частоти поодиноко.

Якщо ви подивитеся на шлях управління, у вас є задана точка, ваш PID-контролер, ваша система (він же "завод"), а потім ваш датчик. Уявіть фіксовану задану точку та синусоїду від свого датчика (це дорівнює реальному порушенню світу на датчику, поданому назад). У нестабільній системі ваш зворотний зв'язок призводить до того, що контур управління посилює помилку, а не зменшує її, так що з часом збільшується ваша амплітуда. Причина цього відбувається через затримку або для цієї конкретної частоти фазовий зсув між входом і виходом. Для заданої частоти ми можемо подивитися на цей зсув та амплітуду виходу з відкритого циклу (тобто відсутність зворотного зв'язку), і коли ми намалюємо всі ті графіки, ми отримуємо щось на зразок Bode Plot. Якщо у нас є ситуація на цьому графіку відкритого циклу, де помилка продовжує посилюватися, то у нас є нестабільна система. Якщо затримка менше 1/2 довжини хвилі або коефіцієнт посилення менше x1, система буде стабільною . На практиці ми хочемо з цього моменту деякий запас (коефіцієнт коефіцієнта посилення та запас фази), тому ви побачите це «відступ» у багатьох ручних / евристичних методах.

Основна проблема цих ручних методів полягає в тому, що ви летите сліпими, і ви майже гарантовано отримаєте погану систему управління.

Також пам’ятайте, що значення P, I і D пов'язане з тим, що вимірює ваш датчик, і яке управління ви застосовуєте. Поширеною помилкою в домашніх контролерах є те, що люди думають, що вони застосовують P, коли насправді це не так. Контролери двигуна часто мають петлю положення, що працює над контуром швидкості, що працює над петлею крутного моменту. ( Каскад )

Добре, але як це нам допомагає?

Перший момент, який я хотів би зробити, це те, що якщо ви будуєте свій власний PID-контролер, ви також повинні побудувати спосіб вимірювання реакції відкритого циклу. Зробити частоту розгортки на вході до контролера і виміряти вихід датчика з відключеним зворотним зв'язком. Тоді ви можете намалювати схему Bode з відкритим циклом і побачити, чому ваша система стабільна і мати можливість торгувати різними елементами управління. Також корисно вимірювати відповідь замкнутого циклу, і ви можете це зробити з будь-якою системою, виконуючи частотну зміну встановленої точки, поки цикл закритий. І те й інше не так складно і не вимагає багато теоретичних знань.

Якщо ви просто налаштовуєте елементи керування, не розуміючи, що відбувається під кришкою, ви не зможете оптимізувати вашу систему. Побудувати деяку інтуїцію щодо цих систем не так складно. Наприклад, пропорційний коефіцієнт посилення не впливає на фазу, а просто збільшує коефіцієнт посилення відкритого циклу на всіх частотах. Тож те, що ти робиш, збільшуючи пропорційний коефіцієнт посилення у всіх цих методах ручної настройки, - це знаходження частоти, де фаза переходить до -180. Дивіться це, щоб отримати більше уявлення про вплив різних елементів управління на вашу частотну характеристику.

Досить часто досягнення найкращої роботи в закритому циклі передбачає налаштування системи, а не тільки отримання контролера. Те, що ви хочете - зробити систему максимально жорсткою. Це дозволить вам збільшити параметри керування та отримати найкращу пропускну здатність відкритого та закритого циклу. З мого досвіду в застосуванні управління двигуном, пропорційний коефіцієнт посилення - це той, який повинен виконувати більшу частину "роботи", а інтегратор - "відпочинок". Я не думаю, що тобі взагалі потрібен термін D. Маючи фільтр низьких частот та фільтр для висічок дуже допомагає в ситуаціях, коли у вас можуть бути механічні резонанси, але встановити їх без діаграми Bode дуже складно (частота коливань, яку ви спостерігаєте в закритому циклі, може відрізнятися від відкритої петлі).

Якщо безпека викликає занепокоєння (дуже потужні двигуни або система, яка могла бути зруйнована мотором, що виходить з-під контролю), перед тим, як почати налаштування (наприклад, обмеження струму, максимальна помилка положення), потрібно захистити систему. Тоді вам потрібно отримати певне відчуття для діапазону параметрів. Якщо ваш відгук має 40 підрахунків за обертання або 4000 підрахунків за обертання, то для даної системи параметри будуть коефіцієнтом 100. Мій підхід полягав у тому, щоб спершу знайти діапазон, де у вас погана керованість, а потім з’їхати звідти, починаючи з P, а потім я (хоча знову ж таки, ви летите сліпими). Резервне копіювання створює цей запас стабільності.

Поза закритою петлею

Закритий цикл намагається усунути помилку з системи. Це завжди матиме дещо обмежені показники. Що ви хочете зробити, це мінімізувати помилку, яку бачить ваш контролер замкнутого циклу, і один із способів зробити це через техніку, яку називають подачі вперед. Під час подачі вперед ви обходите контролер і керуєте командою безпосередньо до системи. Прикладом цього може бути подача прискорення. Якщо ви знаєте, що ви постійний крутний момент двигуна, і ви знаєте навантаження, ви можете майже сказати, скільки струму вам потрібно проїхати, щоб отримати певне прискорення навантаження. Ви просто приймаєте прискорення введення команди, помножуєте його на константу і додаєте це до команди приводу контролера. Ви в основному робите те, що знадобиться для управління системою, якщо не було контролера, і чим ближче ви можете отримати менше помилок, яких повинен вийняти ваш цикл, і тим краще буде працювати ваша система. Це робить величезну різницю на практиці.


"З мого досвіду в застосуванні управління двигуном пропорційний коефіцієнт посилення - це той, який повинен виконувати більшу частину" роботи ", а інтегратор -" відпочинок ". Я не думаю, що вам взагалі потрібен термін D". Я би погодився з цим для типового застосування управління двигуном. P виконує основну роботу, а я компенсую довгостроковий дрейф / помилки. Але тут квадрокоптер зазнає безлічі зовнішніх турбулентностей, тому термін D важливий для швидкої реакції. Що стосується I терміну, якщо квадроцикл не знаходиться в режимі автономної навігації, це не так важливо.
dm76

@ dm76: Більшість мого досвіду стосується управління двигуном, і я це відмовляю ;-) Моя інтуїція, однак, говорить про те, що в додатку для quadcopter все ще є місце, і я думаю, що якщо P дуже високий, він може мати справу із зовнішніми порушеннями (так само, як це робиться в руховому керуванні). Мені б дійсно потрібно детальніше ознайомитися з цими системами, щоб сказати щось певне про квадрокоптери ... Я думаю, що багато що з того, що я тут говорю, стосується дійсно (особливо це стосується вашої настройки в частотній області та відповіді системи з відкритим циклом ).
Гай Сіртон

1
@ dm76: І справді ці налаштування PID "великого правила" призводять до дуже посередньої продуктивності двигунів і, мабуть, однакових у квадрокоптерах. Іноді добре розміщений нарізний фільтр може зробити порядок різниці ...
Гай Сіртон

0

Циглер-Ніколс - це простий ручний метод. Існують і більш надійні методи - вони зазвичай покладаються на математичні рішення (аналітичні, ітеративні оптимізації тощо)

Крім того, Google "самонастроює PID" для деяких автоматизованих методів. Моїм улюбленим є застосування нейронних мереж для налаштування PID.


0

Якщо ви хочете мати точний коефіцієнт PID:

  • Отримайте ваші статистичні дані виконавчого механізму (тобто collecting input voltages+ encoder pulsesу const часто ( 0.01sec) час, 20secsяк матриця 3x 2000)
  • Отримайте функцію передачі (TF) вашого виконавчого механізму (використовуючи інструмент Ident в MATLAB).
  • Нарешті, використовуйте панель інструментів PIDTool в MATLAB та завантажте свою функцію перетворення.

Або швидко і просто:

Існує більш швидкий підхід під назвою Циглер – Ніколс : введіть тут опис зображення

І на цьому зображенні демонструються ефекти параметрів PID :
Ефекти параметрів PID

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.