FLProg

Визуальное программирование для не программистов

Яндекс.Метрика
Блок PID регулятора



Блок предназначен для реализации функции PID регулирования.


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



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


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


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

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


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


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


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


Дифференциальная составляющая


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

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


Интегральная составляющая


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

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




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

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




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

Наиболее часто использующимся методом настройки коэффициентов является метод Циглера-Никольса. Заключается он в следующем…


Метод Циглера-Никольса.


Для начала обнуляем все коэффициенты регулятора (пропорциональный, интегральный и дифференциальный)

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

Фиксируем коэффициент K, при котором это произошло. Кроме того, замеряем период колебаний системы T.


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




А из него получаем и остальные:




Метод довольно прост, но применить его можно далеко не всегда. Если честно, мне еще ни разу не приходилось настраивать регулятор таким образом Но тем не менее, этот метод является основным и, по большому счету, единственным широко известным. Просто подходит не всем и не всегда.

Что же делать, если метод Циглера-Никольса не сработал? Тут придет на помощь “аналитический” метод настройки =)

Опять же обнуляем все коэффициенты и начинаем увеличивать пропорциональный. Но теперь не ждем появления колебаний, а просто фиксируем поведение системы для каждого значения коэффициента (отличным вариантом будет построение графика величины, которую необходимо стабилизировать, для каждого значения коэффициента). Если видим, что, например, система очень медленно выходит на нужное значение, увеличиваем пропорциональный коэффициент. Система начинает сильно колебаться относительно нужной величины? Значит, коэффициент слишком велик, уменьшаем и переходим к настройке других составляющих.

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

Вот некоторые правила, которые могут помочь при настройке:


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

Увеличение дифференциальной составляющей также приводит к значительному увеличению быстродействия

Дифференциальная составляющая призвана устранить затухающие колебания, возникающие при использовании только пропорциональной составляющей

Интегральная составляющая должна устранять остаточное рассогласование системы при настроенных пропорциональной и дифференциальной составляющих


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


Источник


Параметры регулятора задаются в настройках блока




“Вход En” – При установке данного чек бокса у блока создаётся вход “En”. При наличии на этом входе высокого логического уровня блок работает в нормальном режиме, при отсутствии – на выходе блока значение соответствующее поданному на вход “SDV”.


Направление регулирования


“Прямое регулирование” – при выборе этого режима реализуется режим, при котором если значение параметра больше уставки – происходит уменьшение сигнала на выходе, а если значение параметра меньше сигнала – увеличение сигнала на выходе. Наиболее частое применение – регулирование температуры при нагреве – управление нагревателем.

“Обратное регулирование” – при выборе этого режима реализуется режим, при котором если значение параметра больше уставки – происходит увеличение сигнала на выходе, а если значение параметра меньше сигнала – уменьшение сигнала на выходе. Наиболее частое применение – регулирование температуры при охлаждении – управление охладителем (например, кондиционером).

“Вход” - при выборе этого пункта у блока будет сформирован вход “Dir”. Высокий логический уровень на нём инициирует прямой режим регулирования, низкий – обратный.


Параметры.


При выборе пункта “Вход” у блока сформируются входы:

“Time” – на этот вход подаётся время регулирования (в миллисекундах).
“Кр” – пропорциональный коэффициент.
“Ki” – интегральный коэффициент.
“Kd” – дифференциальный коэффициент.

При выборе пункта “Константы” вышеописанные параметры задаются в виде констант.


Выход – “Аналоговое управление”


При выборе этого режима выход блока имеет цифровой тип и на нем присутствует аналоговое значение регулирования. В настройках выходного значения в этом случае задается:

“От:” - значение на выходе при 0% регулирования.
“До” - значение на выходе при 100% регулирования.


Выход – “Релейное управление”


При выборе этого режима выход блока имеет боолевый тип и на нем реализуется “Длинный ШИМ”. В настройках выходного значения в этом случае задается:

“От:” - длительность импульса при 0% регулирования в миллисекундах.
“До” – Общая длительность периода ШИМ в миллисекундах.