Каковы хорошие стратегии для настройки петель PID?


55

Настройка усиления контроллера может быть трудной, какие общие стратегии работают хорошо, чтобы получить стабильную систему, которая сходится к правильному решению?


1
Вопрос, нацеленный на более конкретный вопрос, был бы более полезным. В противном случае, вы просто должны посмотреть на статью PID , с разделом о настройке
ronalchn

2
Я всегда считал, что настройка PID очень зависит от характеристик системы, поэтому я никогда не находил системы автонастройки чрезвычайно полезными. Они подходят для первого прохода, набора параметров с низкой производительностью, но они далеки от оптимальных, и у вас будет та же проблема с любой общей стратегией, которая не оптимизирована для механических, электрических и управляющих аспектов данной системы.
Марк Бут

Ответы:


66

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

Для настройки PID выполните следующие действия:

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

Какие помехи вы используете, зависит от механизма, к которому подключен контроллер. Обычно достаточно отвести механизм вручную от заданного значения и отпустить. Если колебания растут все больше и больше, вам нужно уменьшить усиление P.

Если вы установите слишком высокое усиление D, система начнет болтать (вибрировать с большей частотой, чем колебания усиления P). Если это произойдет, уменьшите усиление D, пока оно не остановится.

Я считаю, что у этой техники есть имя. Я положу здесь, когда найду.


2
Похоже на Циглера-Николса: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
Throwback1986

1
@ Throwback1986, Это определенно не Циглер-Николс, который использует только коэффициент усиления P, и где коэффициент I и D рассчитывается соответственно из коэффициента осциллирующего P и периода
колебаний

Есть ли у вас дополнительные советы по настройке, в частности, роботизированной руки, которая имеет несколько суставов, которые нуждаются в настройке? Вы начинаете с базы и работаете наружу до конечного эффектора, или наоборот, или это вообще имеет значение?
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 раза.

Метод Циглера-Николса является более точным, если вы можете получить точное число для периода колебаний. Обычно он вызывает колебания с использованием приведенных «классических ПИД» чисел, поэтому он не всегда оптимален.

Общие правила о влиянии каждого члена на время нарастания, перерегулирование, время установления, погрешность установившегося состояния и стабильность см. В таблице 1 «Анализ и проектирование системы ПИД-управления» , Li, Ang и Chong в IEEE Control Systems. Журнал.


2
Кд первый? Я всегда думал, что лучше начать с КП.
Ракетный магнит

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

1
Это алгоритм, который я отстаиваю для тюнинга "сиденье из штанов". Он подберет вас как можно ближе без моделирования системы или измерения ее реакции. (Моделирование и / или измерение - единственный путь, если вам действительно нужна правильная настройка).
Тим Уэскотт

Первая настройка Kd не имеет для меня никакого смысла, так как в каждом реализованном мной PID знак Kd отрицательный. Он используется для уменьшения управляющего сигнала, когда происходят очень большие изменения в ошибках, по сути подавляя систему. Если у вас есть только Kd, система будет двигаться в противоположном направлении, увеличивая ошибку и усугубляя проблему. Если Kd положителен, то всякий раз, когда в правильном направлении происходит большое изменение ошибки, вы будете делать это изменение еще быстрее и выходить за пределы цели.
Эндрю Каподиечи

На самом деле, настройка усиления D сначала имеет некоторый смысл, но я предполагаю, что «увеличение» усиления D означает увеличение абсолютного значения, а это только увеличение демпфирования. Самая большая проблема с усилением D состоит в том, что он усиливает высокочастотный шум, и приятно видеть этот эффект без усиления P. Итак, вы, по сути, начинаете с поиска коэффициентов усиления, при которых он перестает вести себя как демпфирование и начинает усиливать шум и сигналы с задержкой ошибок. Я предполагаю, что для шага 2, вы должны ткнуть свое растение, чтобы увидеть, если оно колеблется.
DrRobotNinja

7

Embedded.com снова переместил мою статью, но сейчас она здесь. Это показывает вам, как написать цикл PID (выяснение того, как сделать это в чем-то ином, чем плавающая точка, оставлено в качестве упражнения для читателя) и как его настроить.

ПИД без докторской степени

Лучший способ во многом зависит от ваших способностей. Способ получить лучшую настройку , при условии, что вы опытная рука системы управления, обычно состоит в том, чтобы измерить реакцию установки («установка» == «вещь, которую вы контролируете»), затем в зависимости от того, как вы это сделали. измерения извлекают модель завода и проектируют к этому, или просто проектируют непосредственно к измерениям.

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


5

Себастьян Трун представил простой алгоритм настройки PID в своем классе «Как программировать роботизированную машину». Это называется «тиддл», он описывает это здесь .

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


4

В отличие от двух других ответов, я бы сказал, что хорошим ручным способом настройки PID является игнорирование Kd. Поэтому начните с 0 и увеличивайте Kp, пока не достигнете цели, затем увеличьте Ki, чтобы избавиться от ошибки установившегося состояния.

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

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


4

Системное моделирование

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

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

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

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

Проблемы реального мира

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

Заключение

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


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

3

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

стабильность

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

Если вы посмотрите на путь управления, у вас есть уставка, ваш ПИД-регулятор, ваша система (также известная как «Завод»), а затем ваш датчик. Представьте себе фиксированную уставку и синусоидальную волну от вашего датчика (это равносильно действительному возмущению на датчике с обратной связью). В нестабильной системе ваша обратная связь заставляет контур управления усиливать ошибку, а не уменьшать ее, так что со временем амплитуда увеличивается. Причина, по которой это происходит, связана с задержкой или для этой конкретной частоты фазовым сдвигом между входом и выходом. Для заданной частоты мы можем посмотреть на это смещение по разомкнутому контуру (т.е. без обратной связи) и амплитуду выходного сигнала, и когда мы рисуем все это на графике, мы получаем что-то вроде графика Боде, Если у нас есть ситуация на этом графике с разомкнутым контуром, где ошибка продолжает усиливаться, то у нас нестабильная система. Если задержка меньше 1/2 длины волны или усиления меньше x1, система будет стабильной . На практике мы хотим получить некоторую маржу от этой точки (маржу усиления и фазовую маржу), поэтому вы увидите это «отступление» во многих ручных / эвристических методах.

Основная проблема с этими ручными методами заключается в том, что вы летите вслепую и гарантированно получаете плохую систему управления.

Также имейте в виду, что значения P, I и D связаны с тем, что измеряет ваш датчик, и какое управление вы применяете. Распространенная ошибка в домашних контроллерах - люди думают, что они применяют P, хотя на самом деле это не так. Контроллеры двигателя часто имеют контур положения, проходящий через контур скорости, проходящий через контур крутящего момента. ( Каскад )

Хорошо, но как это поможет нам?

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

Если вы просто настраиваете элементы управления, не понимая, что происходит под капотом, вы не сможете оптимизировать свою систему. Построить некоторую интуицию об этих системах не так сложно. Например, пропорциональное усиление не влияет на фазу, а просто увеличивает усиление в разомкнутом контуре на всех частотах. То, что вы делаете, когда увеличиваете пропорциональный коэффициент усиления всеми этими методами ручной настройки, - это находите частоту, с которой фаза переходит в -180. Смотрите это, чтобы получить больше представления о влиянии различных элементов управления на вашу частотную характеристику.

Довольно часто для достижения наилучшей производительности в замкнутом контуре требуется настройка системы, а не только усиление контроллера. То, что вы хотите, - это сделать систему как можно более жесткой. Это позволит вам увеличить параметры управления и получить наилучшую пропускную способность в разомкнутом и замкнутом контуре. По моему опыту в приложениях управления двигателем пропорциональное усиление - это то, что должно выполнять большую часть «работы», а интегратор - «остальное». Я не думаю, что вам нужен термин D вообще. Наличие фильтра нижних частот и режекторного фильтра очень помогает в ситуациях, когда у вас может быть некоторый механический резонанс, но установить их без графика Боде очень сложно (частота колебаний, которую вы наблюдаете в замкнутом контуре, может отличаться от частоты разомкнутого контура).

Если вас беспокоит безопасность (очень мощные двигатели или система, которая может быть разрушена из-за выхода двигателя из-под контроля), вам необходимо установить некоторые ограничения перед началом настройки (например, ограничение тока, ошибка максимального положения) для защиты системы. Затем вам нужно почувствовать диапазон параметров. Если ваша обратная связь имеет 40 отсчетов за оборот или 4000 отсчетов за оборот, ваши параметры будут иметь коэффициент 100 для данной системы. Мой подход заключается в том, чтобы сначала найти диапазон, в котором у вас есть плохая управляемость, а затем увеличивать оттуда, начиная с P и затем с I (хотя опять вы летите вслепую). Отступление создает этот запас стабильности.

За пределами замкнутого цикла

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


«По моему опыту в приложениях управления двигателем пропорциональное усиление - это то, что должно выполнять большую часть« работы », а интегратор -« отдых ». Я не думаю, что вам вообще нужен термин D». Я согласен с этим для типичного применения управления двигателем. P выполняет основную работу, а I компенсирует долгосрочные отклонения / ошибки. Но здесь, квадрокоптер будет подвергаться сильной внешней турбулентности, поэтому термин D важен для быстрого реагирования. Что касается термина I, если квад не находится в автономном режиме навигации, это не так уж важно.
dm76

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

1
@ dm76: И действительно, эти «эмпирические правила» настройки ПИД приводят к очень посредственным характеристикам двигателей и, по-видимому, к квадрокоптерам. Иногда хорошо установленный режекторный фильтр может иметь значение на порядок ...
Гай Сиртон

0

Циглер-Николс - это простой ручной метод. Существуют и более надежные методы - обычно они основаны на математических решениях (аналитическая, итеративная оптимизация и т. Д.).

Кроме того, Google "самонастраивающийся PID" для некоторых автоматизированных методов. Мое любимое приложение нейронных сетей для настройки PID.


0

Если вы хотите иметь точный коэффициент PID:

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

Или быстрым и простым способом:

Существует более быстрый подход под названием Циглер-Николс : введите описание изображения здесь

И на этом изображении демонстрируются эффекты параметров PID :
Эффекты параметров ПИД

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