Меню

Реализация цифрового пид регулятора

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

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

Выходной сигнал регулятора u(t) определяется по следующей формуле:

  • P — пропорциональная составляющая;
  • I — интегрирующая составляющая;
  • D — дифференцирующая составляющая;
  • Kp — пропорциональный коэффициент;
  • Ki — интегральный коэффициент;
  • Kd — дифференциальный коэффициент;
  • e(t) — ошибка рассогласования.

Задачи ПИД-регулятора в системах АСУ ТП

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

Сравнение ПИД —регулятора с позиционным регулированием

В системах АСУ ТП наибольшее распространение получили два типа регуляторов — двухпозиционный и ПИД.

Двухпозиционный регулятор наиболее простой в использовании и широко распространенный. Он сравнивает значение входной величины с заданным параметром уставки. Если значение измеренной величины ниже заданного значения уставки, регулятор включает исполнительное устройство; при превышении заданного значения, исполнительное устройство выключается. Для предотвращения слишком частого срабатывания устройства вследствие колебаний системы и, следовательно, изменении значений, задается минимальный и максимальный порог срабатывания — гистерезис, или по-другому — зона нечувствительности, мертвая зона, дифференциал. Например, нам необходимо поддерживать температуру в 15 °С. Если гистерезис задан 2°, то регулятор будет включать нагрев при 14 и отключать соответственно при 16.

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

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

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

  • фактическая величина,
  • заданное значение,
  • разность,
  • скорость.

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

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

Составляющие ПИД-регулятора

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

Пропорциональная P(t)=Kp*e(t)

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

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

Интегральная I(t)=Ki ∫e(t)dt

Интегральная составляющая используется для устранения статической ошибки. Она складывает значение предыдущих ошибок рассогласования и компенсирует их. Можно сказать — учится на предыдущих ошибках. То есть, ошибка рассогласования умножается на коэффициент интегрирования и прибавляется к предыдущему значению интегрирующего звена. При выходе системы на заданный режим, интегральная составляющая перестает изменяться и не оказывает какого-либо серьезного воздействия на систему. Физически интегральная составляющая представляет задержку реакции регулятора на изменение величины рассогласования, внося в систему некоторую инерционность, что может быть полезно для управления объектами c большой чувствительностью.

Дифференциальная D(t)=Kd de(t)/dt

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

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

Методика настройки ПИД-регулятора

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

Объект регулирования — камерная электрическая печь. Число зон регулирования от 24 до 40. Каждая зона есть набор электронагревателей. Материал нагревателей нихром. Тип — проволочные, навитые на керамические трубки. Требование: поддержание температуры по зонам печи ±5 °C.

Настройка пропорциональной компоненты (X p)

Перед настройкой зоны пропорциональности интегральная и дифференциальная компоненты отключаются:

  • Постоянная интегрирования устанавливается минимально возможной (Т и=0).
  • Постоянная дифференцирования минимально возможной (Т д=0).
  • Т ο — начальная температура в системе;
  • Т sp — заданная температура (уставка);
  • ∆T — размах колебаний температуры;
  • ∆t — период колебаний температуры.

Меняем значение пропорциональной составляющей X p от минимума (0) до момента, пока не появятся устойчивые колебания системы с периодом ∆t. Система должна находится в постоянном колебательном процессе, притом колебательный процесс незатухающий, где ∆T — характеристика колебания, равная значению величины рассогласования (±10 °C, или как по заданию). Колебания должны быть одинаковы от Т sp.

После получения данной кривой на нашем объекте, засекаем время периода колебаний ∆t — полный период. Данное время — характеристика системы, оборудования.

Источник



ПИД регулятор

ПИД регулятор – один из самых распространенных автоматических регуляторов. Он настолько универсален, что применяется практически везде, где нужно автоматическое управление. Например температурой: специальные печи, холодильники, инкубаторы, паяльники, сопло и стол 3D принтера, ИК паяльные станции и прочее. Поддержание частоты оборотов мотора, например для станков. Всевозможные балансирующие штуки, гироскутеры, сигвеи, левитирующие магнитные платформы, и конечно же квадрокоптеры и самолёты с автопилотом. Это всё ПИД регулятор. Почему именно ПИД? Существуют и другие регуляторы, превосходящие ПИД по адаптивности к управляемой системе и стабильности, например линейно квадратичный. Но, чтобы грамотно синтезировать такой регулятор, нужно быть гораздо больше чем “семи пядей” во лбу, а настройка ПИД регулятора дело хоть и неприятное, но фактически очень простое и под силу любому, а сам ПИД регулятор универсален для почти любого процесса.

Читайте также:  Регулятор для коляски roan kortina

Система управления

Прежде чем переходить непосредственно к пиду, очень важно понять и запомнить несколько базовых понятий, из которых состоит автоматическая система. В первую очередь это регулятор, который всем заправляет и находится в центре системы. Регулятор в данном понимании – математический алгоритм или часть программы, которая крутится на микроконтроллере. Регулятор, как алгоритм, работает с обычными числами. Объект управления – это девайс, которым мы управляем, например печка или мотор. Для этого у нас есть управляющее устройство, например диммируемый тен или драйвер мотора. Управляющее устройство получает от регулятора управляющий сигнал, то есть конкретное число. Это может быть заполнение шим сигнала, от 0 до 255, а может быть угол поворота сервомашинки от 0 до 180, потому что регулятору без разницы чем управлять. В объекте управления у нас стоит датчик, с которого регулятор получает управляемую величину, то есть текущий сигнал с датчика. Это – обратная связь, которая и даёт возможность системе ирчно поддержать заданное значение. В случае с печкой это температура, а с мотором – частота оборотов. Ну и наконец регулятор получает установку (уставку), то есть число, к которому он должен привести текущее значение с датчика. Установка может задаваться каким угодно образом: крутилкой, ползунком, энкодером, кнопками, да хоть смской или голосовым вводом. Регулятору это неважно, для него это просто цифра. Задача регулятора состоит в том, чтобы сравнивать текущее значение с установкой и выдавать управляющий сигнал на управляющее устройство. То есть в программе это будет выглядеть условно так: регулятор получил установку, регулятор получил значение с датчика, регулятор выполнил вычисления и выдал нам управляющий сигнал, опять же число. Если это шим – мы его подаём через функцию генерации шим. Есть ещё один момент – регулятор должен делать расчёты и применять управляющий сигнал через равные промежутки времени, то есть с равным периодом или частотой. Эта частота называется частотой дискретизации системы, а период обозначается как dt, прямо как период интегрирования.

Под капотом у ПИД регулятора

ПИД регулятор состоит из трёх составляющих: пропорциональной P, интегрирующей I и дифференциирующей D, формируется просто как сумма трёх значений, умноженных каждая на свой коэффициент. Эта сумма после вычислений становится управляющим сигналом, который подаётся на управляющее устройство, обозначим его как out.

kP, kI и kD это и есть те самые коэффициенты, которые нужно настроить для работы ПИДа. Значения тут могут быть самые разные, от 0.001 то десятков и тысяч, это зависит от конкретной системы. Тут есть ещё один момент: любой коэффициент может быть равен нулю, и в таком случае обнуляется вся его компонента. То есть регулятор можно превратить в П, ПИ, ПД, и прочие сочетания. Разные системы требуют разного подхода, именно поэтому ПИД регулятор такой универсальный.

В дальнейшем будем пользоваться следующими названиями переменных:

  • out – выход с регулятора (управляющий сигнал)
  • setpoint – установка (заданное значение)
  • input – вход (значение с датчика)
  • err – ошибка регулирования
  • dt – период вычисления и регулирования

P составляющая

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

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

P составляющая исправляет ошибку в текущий момент времени.

I составляющая

Интегральная составляющая просто суммирует в саму себя ту же самую ошибку, разность текущего и заданного значения, умноженную на период дискретизации системы, то есть на время, прошедшее с предыдущего расчёта dt – фактически берёт интеграл от ошибки по времени.

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

I составляющая исправляет прошлые, накопившиеся ошибки.

D составляющая

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

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

D составляющая исправляет возможные будущие ошибки, анализируя скорость.

Настройка регулятора

Для настройки регулятора нужно варьировать коэффициенты:

  • При увеличении kP увеличивается скорость выхода на установленное значение, увеличивается управляющий сигнал. Чисто математически система не может прийти ровно к заданному значению, так как при приближении к установке П составляющая пропорционально уменьшается. При дальнейшем увеличении kP реальная система теряет устойчивость и начинаются колебания.
  • При увеличении kI растёт скорость компенсации накопившейся ошибки, что позволяет вывести систему точно к заданному значению с течением времени. Если система медленная, а kI слишком большой – интегральная сумма сильно вырастет и произойдёт перерегулирование, которое может иметь характер незатухающих колебаний с большим периодом. Поэтому интегральную сумму в алгоритме регулятора часто ограничивают, чтобы она не могла увеличиваться и уменьшаться до бесконечности.
  • При увеличении kD растёт стабильность системы, она не даёт системе меняться слишком быстро. В то же время kD может стать причиной неадекватного поведения системы и постоянных скачков управляющего сигнала, если значение с датчика шумит. На каждое резкое изменение сигнала с датчика Д составляющая будет реагировать изменением управляющего сигнала, поэтому сигнал с датчика нужно фильтровать (читай урок по фильтрам).

Вот так выглядит процесс стабилизации при изменении коэффициентов:

Настройка регулятора – дело не очень простое. Начальные коэффициенты для подбора можно получить по следующему алгоритму: сначала выставляем все коэффициенты в . Плавно увеличиваем kP до появления незатухающих колебаний. Значение kP, при котором они появились, запишем и обозначим как kP1. Далее замеряем период колебаний системы в секундах, обозначим как T. Итоговые коэффициенты получим так:

  • kP = 0.6 * kP1
  • kI = kP / T * 2 * dt
  • kD = kP * T / 8 / dt
Читайте также:  Аудио регулятор громкости для пк

Например, незатухающие колебания появились при kP 20, период колебаний составил 3 секунды. Период dt в системе будет 50 мс (0.05 с). Считаем:

  • kP: 0.6*20=12
  • kI: 12/3*2*0.05=0.4
  • kD: 12*2/8/0.05=60

На полученных коэффициентах должны более-менее работать большинство систем, но не все.

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

Реализация на C++

Соединяя все рассмотренные выше уравнения, получим:

Это готовая функция, которая принимает значение с датчика, установку, три коэффициента и время, а также ограничение выхода с регулятора. Как пользоваться этой функцией: функция должна вызываться с некоторым периодом, причем длительность этого периода нужно будет передать в функцию в секундах. Если попроще, можно использовать задержку. Но делать так не рекомендуется, лучше сделать таймер на миллис и работать с ним. Функция возвращает управляющий сигнал, то есть можно подать его например как ШИМ. Период dt имеет такой смысл: чем инерционнее у нас система, тем реже можно вычислять пид. Например для обогрева комнаты период можно поставить 1 секунду или больше, а для контроля за оборотами двигателя надо будет поставить пару десятков миллисекунд, то есть около сотни раз в секунду.

Видео

Источник

Реализация цифрового пид регулятора

Здесь приведен перевод апноута AVR221: Discrete PID controller on tinyAVR and megaAVR devices [1] (дискретный контроллер PID на микроконтроллерах серий tinyAVR и megaAVR).

Возможности описанного контроллера:

• Простой дискретный (цифровой) алгоритм PID-контроллера
• Можно реализовать на всех моделях микроконтроллеров AVR
• Функция управления PID использует 534 байта памяти программ (FLASH) и требует 877 циклов CPU (применен компилятор IAR, включена оптимизация по размеру кода)

[1 Для чего нужен PID-регулятор?]

Этот апноут описывает простую реализацию дискретного пропорционально-интегрально-дифференциального (дословный перевод Proportional-Integral-Derivative, PID) контроллера.

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

За все время использовалось много решений для управления, но в сравнении со всеми PID-контроллер получил репутацию «индустриального стандарта» из-за своей простоты и хорошего быстродействия. Чтобы получить больше информации по контроллерам PID их применению, обратитесь к другим источникам, например к книге «PID Controllers» K. J. Astrom & T. Hagglund (1995).

AVR221-Typical-PID-regulator-response-fig1-1

Рис. 1-1. Типичный отклик PID-регулятора на скачкообразное изменение входной опорной величины.

Примечание к рис. 1-1: ref — входное отслеживаемое воздействие, pi — отклик пропорционально-интегрального регулятора, p — отклик пропорционального регулятора, pid — отклик PID-регулятора.

[2 PID-регулятор]

На рис. 2-1 схематично показана система с PID-регулятором. PID-контроллер сравнивает измеренную отслеживаемую величину y с опорным значение y0. Разность (или ошибка) e обрабатывается для вычисления нового входного значения для системы u. Это входное значение пытается подстроить измеряемую отслеживаемую величину так, чтобы она вернулась в нужное значение, соответствующее опорному. Получается схема с замкнутым циклом управления (управление с обратной связью).

Альтернативой схеме управления с замкнутой петлей управления является схема открытого цикла управления (без обратной связи). Такая схема проще, но во многих случаях является неудовлетворительной, и её часто невозможно реализовать из-за свойств самой системы. Путем добавления обратной связи по входу системы можно улучшить качество регулирования и даже быстродействие.

AVR221-Closed-Loop-System-with-PID-controller-fig2-1

Рис. 2-1. Управление с обратной связью, с применением PID-регулятора.

Кроме того, в отличие от простых алгоритмов управления, PID-контроллер может управлять входным параметром u, основываясь на истории и скорости изменения опорного сигнала y0. Это дает повышение точности и стабильности в методе управления (см. рис. 1-1, где видно, что PID-регулятор дает меньше колебаний при отслеживании выходной величины).

Основная идея состоит в том, контроллер читает состояние какого-то сенсора. Затем он вычитает измеренное значение из опорного, и из этого получается значение ошибки. Эта ошибка может быть обработана тремя способами:

• отслеживание текущего значения, используя пропорциональное регулирование
• восстановление на основе предыдущего значения, используя интегрирование
• предсказывая будущее значение на основе дифференцирования.

На рис. 2-2 показана более подробная схема PID-контроллера, где Tp, Ti, и Td обозначают константы времени для пропорционального, интегрального и дифференциального условий соответственно.

AVR221-PID-controller-schematic-fig2-2

Рис. 2-2. Схема внутреннего устройства PID-регулятора.

2.1 Пропорциональная составляющая PID-регулятора

Пропорциональное условие (P) подает на вход системы значение, пропорциональное ошибке. Использование только P-управления дает постоянную ошибку во всех случаях кроме тех, когда управляющий вход системы равен 0, и выходное отслеживаемое значение равно требуемому. На рисунке 2-3 статическая ошибка появляется после того, как изменилось требуемое (опорное, reference, ref) значение. Использование слишком большого коэффициента P-регулирования (Tp) в PID-регуляторе делает систему управления нестабильной.

AVR221-P-controller-response-fig2-3

Рис. 2-3. Отклик P-регулятора на скачкообразное изменение опорного параметра.

2.2 Интегральная составляющая PID-регулятора

Интегральное условие (I) выдает на вход системы значение управления, зависящее от суммы предыдущих ошибок. Суммирование ошибок будет продолжаться, пока выходное обрабатываемое системой значение не станет равным требуемому, и когда опорное значение стабильно, то статическая ошибка будет нулевой. Чаще всего составляющая регулирования I нормально используется вместе с составляющей регулирования P, в результате чего получается PI-контроллер. Использование только I-составляющей приведет к медленному регулированию и часто к самовозбуждению системы. На рис. 2-4 показаны отклики системы с применением I и PI управления. Как можно видеть, отклик PI-контроллера не имеет статической ошибки, и отклик I-контроллера очень медленный.

AVR221-I-and-PI-controller-response-fig2-4

Рис. 2-4. Отклик I- и PI-регуляторов на скачкообразное изменение опорного параметра.

2.3 Дифференциальная составляющая PID-регулятора

Дифференциальное условие (D) добавляет к входному сигналу системы (u) информацию о скорости изменения опорного сигнала (насколько быстро изменяется ошибка e). Это улучшает отклик на быстрое случайное изменение в состоянии системы или в опорном отслеживаемом значении. Составляющая D обычно используется совместно с P или PI, в результате чего получаются PD- или PID-контроллер. Слишком большая составляющая D обычно приводит к нестабильности системы. Рис. 2-5 показывает результаты работы D-контроллера и PD-контроллера. Ответ от PD-контроллера дает ускоренное возрастание обрабатываемого системой значения по сравнению с P-контроллером. Имейте в виду, что D-составляющая по сути работает как фильтр высокой частоты (ФВЧ), стоящий на сигнале ошибки, и этот факт очень просто может привести к нестабильности системы и делает её более чувствительной к шуму и помехам.

Читайте также:  Crdi датчик давления регулятор давления

AVR221-D-and-PD-controller-response-fig2-5

Рис. 2-5. Отклик D- и PD-регуляторов на скачкообразное изменение опорного параметра.

Если объединить все три составляющие управления, то получится PID-контроллер, который обычно дает наилучшие результаты в управлении. Рис. 1-1 сравнивает между собой контроллеры P, PI и PID. PI улучшает P удалением статической ошибки, и PID улучшает PI ускорением ответа и отсутствием при этом перерегулирования.

2.4 Настройка параметров PID-регулятора

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

Есть несколько методов для настройки петли регулирования PID. Выбор метода зависит от того, может ли процесс регулирования быть отключенным для настройки, или нет. Метод Ziegler-Nichols хорошо известен как стратегия настройки, не требующая отключения системы. На первом шаге этой методики устанавливают усиление I и D составляющих в 0, увеличивают усиление P, пока не выходе не будут получены установившиеся и стабильные колебания (при этом выходной сигнал должен как можно меньше отличаться от опорного). Затем записывают критическое усиление Kc и период генерации Pc, и значения P, I и D подстраиваются по таблице 2-1.

Таблица 2-1. Параметры методики Ziegler-Nichols для настройки PID.

контроллер Kp Ti Td
P 0.5 * Kc
PD 0.65 * Kc 0.12 * Pc
PI 0.45 * Kc 0.85 * Pc
PID 0.65 * Kc 0.5 * Pc 0.12 * Pc

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

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

2.5 Дискретный PID-регулятор

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

2.5.1 Основа алгоритма PID-регулятора

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

На рис. 2-2 показана схема PID-регулятора, где Tp, Ti и Tp обозначают константы времени для составляющих пропорционального, интегрального и дифференциального регулирования соответственно.

Передаточная функция системы на рис. 2-2:

AVR221-PID-transfer-function

Это дает зависимость u от e по оси времени:

AVR221-PID-u-equation

Аппроксимация составляющих I и D:

AVR221-PID-approx-integral-and-derivative

Здесь n — дискретный шаг времени t. Это дает выражение для регулятора:

AVR221-PID-equation01

AVR221-PID-Ki-Kd

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

AVR221-PID-equation02

[3 Реализация PID-регулятора]

Этот апноут поставляется с готовой реализацией PID-регулятора на языке C [2]. Полную документацию по исходному коду можно найти, если открыть файл readme.html, который имеется в пакете архива.

AVR221-PID-block-app-diagram

Рис. 3-1. Блок-схема демонстрационного приложения PID-регулятора.

На рис. 3-1 показана упрощенная схема демо-приложения [2]. PID-регулятор использует структуру (struct) для сохранения своего состояния и параметров. Эта структура инициализируется в теле функции main, и функциям Init_PID() и PID() передается только указатель на структуру.

Функция PID() должна быть вызвана на каждом интервале времени T. Это реализовано с помощью таймера, который устанавливает флаг PID_timer, когда проходит интервал времени T. Когда флаг PID_timer установлен, подпрограмма в цикле main читает требуемое значение процесса (опорное отслеживаемое значение setPoint) и текущее значение процесса системы, вызывается PID(), и выводит результат на управляющий вход.

Чтобы увеличить точность, множители p_factor, i_factor и d_factor смасштабированы с коэффициентом 1:128. Результат алгоритма PID затем масштабируется обратно делением на 128. Число 128 выбрано для того, чтобы задействовать оптимизацию компилятора (умножение на 128 заменяется сдвигом на 1 бит младшего байта и копированием результата в старший байт).

В дальнейшем эффект от множителей IFactor и DFactor будут зависеть от интервала выборки T.

3.1 Свертка для интеграла

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

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

Проблему целочисленного переполнения можно обойти несколькими способами. В этой реализации максимальная сумма в интеграле ограничена, но ей не позволено превысить значение MAX_I_TERM. Корректное значение MAX_I_TERM будет зависеть от самой системы и используемого времени выборки T.

Прим. переводчика: похожие проблемы есть и в алгоритмах ЦОС (цифровая обработка сигналов, DSP), когда применяется целочисленная арифметика для ускорения работы [3]. другие методы устранения проблемы переполнения — повышение разрядности переменных в вычислениях, и даже переход на арифметику с плавающей запятой. К сожалению, это часто связано с увеличением объема вычислений и усложнением оптимизации и разработки, так что имеет ограниченную область применения. В любом случае для вычислений старайтесь задействовать аппаратные ресурсы ядра AVR [4].

[4 Дополнительные замечания]

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

В вычисление множителей IFactor и DFactor время выборки T является частью выражения. Если T выбрано слишком маленьким, или сделано больше 1 секунды, то будет нарушена точность вычисления либо множителя IFactor, либо множителя DFactor. Примите решение по доработке алгоритма PID при масштабировании, чтобы сохранить точность вычисления I-составляющией (интеграл) и D-составляющей (производная).

Источник