ПИД-регулятор. Принцип работы.

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


Итак, что у нас имеется?

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

Принцип работы ПИД-регулятора

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

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

Пропорциональная составляющая.

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

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

Для решения первой используется дифференциальная составляющая. Она противодействует предполагаемым отклонениям регулируемой величины, которые могут произойти в будущем. Каким образом? Сейчас разберемся!

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

А с ней нам поможет справиться интегральная составляющая. Как нам в программе получить интеграл? А легко — просто суммированием (накоплением) значений невязки, на то он и интеграл ) Возвращаемся к нашему примеру. Температура ниже значения уставки, начинаем подогревать. Пока мы нагреваем, значение невязки положительное и накапливается в интегральной составляющей. Когда температура «дошла» до нужного нам значения, пропорциональная и дифференциальная составляющая стали равны нулю, а интегральная перестала изменяться, но ее значение не стало равным нулю. Таким образом, благодаря накопленному интегралу мы продолжаем выдавать мощность и нагреватель поддерживает нужную нам температуру, не давая объекту охлаждаться. Вот так вот просто и эффективно =)

В итоге мы получаем следующую формулу ПИД-регулятора:

Формула 1

Тут  u(t) — искомое выходное воздействие, а e(t) — значение невязки.

Частенько формулу преображают к следующему виду, но суть от этого не меняется:

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

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

Понравилась статья? Поделись с друзьями!

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

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

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

  3. Классно изложили суть всех составляющих объяснив как они себя ведут в процессе, это самое ценное. Спасибо

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *