Пид регулятор

Содержание

Три коэффициента ПИД регулятора и принцип работы

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

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

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

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

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

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

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

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

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

Настройка ПИД-регулятора осуществляется 2 методами:

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

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

Современные автоматизированные процессы реализуются как специализированные модули под управлением программ для настройки коэффициентов регулятора.

Назначение ПИД регулятора

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

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

Пример схемы регулирования температуры

Часто ПИД регуляторы используются при регулировке температуры, давайте на простом примере подогрева воды в ёмкости рассмотрим данный автоматический процесс.

В емкости налита жидкость, которую нужно подогреть до нужной температуры и поддерживать её на заданном уровне. Внутри бака установлен датчик измерения температуры – термопара или термометр сопротивления и напрямую связан с ПИД-регулятором.

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

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

Общие сведения

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

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

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

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

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

Интегрирующая составляющая пропорциональна интегралу по времени от отклонения регулируемой величины. Её используют для устранения статической ошибки. Она позволяет регулятору со временем учесть статическую ошибку.

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

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

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

Теория

Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его.

Система управления с обратной связью с участием ПИД-регулятора. Система управляет величиной y(t), то есть выводит величину y(t) на заданное извне значение r(t). На вход ПИД-регулятора подаётся ошибка e(t), выход ПИД-регулятора является управляющим воздействием для некоторого процесса (для объекта управления), управляющего величиной y(t).Влияние изменения параметров PID (Kp,Ki,Kd) на переходную характеристику системы.

Назначение ПИД-регулятора — в поддержании заданного значения x0 некоторой величины x с помощью изменения другой величины u. Значение x0 называется заданным значением (или уставкой, в технике), а разность e = (x0 − x) — невязкой (или ошибкой , в технике), рассогласованием или отклонением величины от заданной. Приведённые ниже формулы справедливы в случае линейности и стационарности системы, что редко выполняется на практике.

Выходной сигнал регулятора u определяется тремя слагаемыми:

u ( t ) = P + I + D = K p e ( t ) + K i ∫ 0 t e ( τ ) d τ + K d d e d t {\displaystyle u(t)=P+I+D=K_{p}\,{e(t)}+K_{i}\int \limits _{0}^{t}{e(\tau )}\,{d\tau }+K_{d}{\frac {de}{dt}}} ,

где Кp, Кi, Кd — коэффициенты усиления пропорциональной, интегрирующей и дифференцирующей составляющих регулятора соответственно.

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

u ( t ) = K p ( e ( t ) + K i p ∫ 0 t e ( τ ) d τ + K d p d e d t ) {\displaystyle u(t)=K_{p}\left(\,{e(t)}+K_{ip}\int \limits _{0}^{t}{e(\tau )}\,{d\tau }+K_{dp}{\frac {de}{dt}}\right)}

В дискретной реализации метода расчета выходного сигнала уравнение принимает следующую форму:

U ( n ) = K p E ( n ) + K p K i p T ∑ k = 0 n E ( k ) + K p K d p T ( E ( n ) − E ( n − 1 ) ) {\displaystyle U(n)=K_{p}E(n)+K_{p}K_{ip}T\sum _{k=0}^{n}{E(k)}+{\frac {K_{p}K_{dp}}{T}}(E(n)-E(n-1))} ,

где T {\displaystyle T} — время дискретизации. Используя замену K i d i s c r = K p K i p T , K d d i s c r = K p K d p T {\displaystyle K_{i}^{discr}=K_{p}K_{ip}T,K_{d}^{discr}={\frac {K_{p}K_{dp}}{T}}} можно записать:

U ( n ) = K p E ( n ) + K i d i s c r ∑ k = 0 n E ( k ) + K d d i s c r ( E ( n ) − E ( n − 1 ) ) {\displaystyle U(n)=K_{p}E(n)+K_{i}^{discr}\sum _{k=0}^{n}{E(k)}+K_{d}^{discr}(E(n)-E(n-1))}

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

U ( n ) = U ( n − 1 ) + K p ( E ( n ) − E ( n − 1 ) ) + K i d i s c r E ( n ) + K d d i s c r ( E ( n ) − 2 E ( n − 1 ) + E ( n − 2 ) ) {\displaystyle U(n)=U(n-1)+K_{p}(E(n)-E(n-1))+K_{i}^{discr}{E(n)}+K_{d}^{discr}(E(n)-2E(n-1)+E(n-2))}

Часто в качестве параметров ПИД-регулятора используются:

  • относительный диапазон

P b = 1 K p {\displaystyle P_{b}={\frac {1}{K_{p}}}}

  • постоянные интегрирования и дифференцирования, имеющие размерность времени

T i = 1 K i p {\displaystyle T_{i}={\frac {1}{K_{ip}}}} T d = K d p {\displaystyle T_{d}={K_{dp}}\;}

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

Практика применения

Возможно, этот раздел содержит оригинальное исследование. Добавьте , в противном случае он может быть удалён.
Дополнительные сведения могут быть на странице обсуждения. (6 апреля 2016)

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

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

> Ссылки

  • Принципы работы ПИД-регуляторов
  • Перевод статьи «Просто о ПИД-алгоритмах»

См. также

  • АРУ

Регуляторы процесса

Регуляторы процесса (Process Controllers) – это параметрируемые цифровые контроллеры со встроенным набором стандартных функций для регулирования технологических переменных (температуры, давления и т.п.).

В качестве сигналов задания (Reference) могут использоваться как фиксированные уставки (Fixed Setpoints), так и внешние (External).

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

Дискретные входы используются для задания фиксированных уставок и переключения между режимами.

Дискретные выходы используются для сигнализации: готовности, аварий, состояния.

Релейные выходы используются для дискретного управления, а аналоговые выходы – для непрерывного управления.

Дискретное управление

  • 2-х позиционный регулятор использует только 2 состояния:
    • включено (открыто)
    • выключено (закрыто)
    • Пример: управление нагреванием или охлаждением.

  • 3-х позиционный регулятор использует 3 состояния:
    • выключено
    • вращение по часовой стрелке
    • вращение против часовой стрелки (реверс)
    • Пример: управление реверсивным электродвигателем.

  • 5-и позиционный регулятор использует 5 состояний:
    • выключено
    • вращение на первой скорости по часовой стрелке
    • вращение на второй скорости по часовой стрелке
    • вращение на первой скорости против часовой стрелки
    • вращение на второй скорости против часовой стрелки
    • Пример: управление 2-скоростным реверсивным двигателем.

Непрерывное управление

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

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

Переходный процесс

Переходный процесс – это реакция системы на внешнее воздействие (задание, возмущение).

Неустойчивый (расходящийся) переходный процесс

Устойчивый (сходящийся) переходный процесс

Колебательный Апериодический Монотонный

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

Хзад – заданное (желаемое) значение выходной переменной
Xmax – верхний допустимый предел выходной переменной
Xmin – нижний допустимый предел выходной переменной
Т – период колебаний
Тн – время нарастания
Тр – время переходного процесса (последняя точка пересечения кривой с Xmin или Xmax)
А1 – первое перерегулирование
А2 – второе перерегулирование
d=А1/A2 — степень (декремент) затухания переходного процесса (отношение первого перерегулирования ко второму)

Рассогласование, перерегулирование, время нарастания, время переходного процесса, степень затухания характеризуют качество регулирования.

Пример

ПИД-регулятор открывает и закрывает регулирующий вентиль на горячей трубе так, чтобы из крана текла вода с температурой +40°С с погрешностью плюс-минус 2 градуса. Регулятор вычисляет рассогласование (ошибку) — отклонение реальной температуры (например, +20°С) от заданного значения (+40°С) и решает – когда и насколько необходимо приоткрыть горячий вентиль, чтобы температура повысилась на 20С. Реальную (фактическую) температуру регулятор узнаёт с помощью датчика температуры (обратная связь), а заданную температуру (уставку) ему сообщает оператор, например, набирая число «40» на своём ПК.

Чтобы настроить ПИД-регулятор, необходимо подобрать правильную комбинацию трёх коэффициентов:

  • Пропорционального – Kp
  • Интегрального – Ki
  • Дифференциального – Kd

Могут использоваться и более простые — П и ПИ-регуляторы.

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

где e(t) — ошибка (рассогласование), u(t) — выходной сигнал регулятора (управляющее воздействие).

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

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

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

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

Настройка ПИД-регулятора по методу Циглера-Николса

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

  • Обнуляем Ki и Kd
  • Постепенно увеличиваем Kp до критического значения Kc, при котором возникают автоколебания
  • Измеряем период автоколебаний Т
  • Вычисляем значения Kp, Ki и Kd по разным формулам для разных регуляторов:
    • для П-регулятора: Kp=0,50*Kc
    • для ПИ-регулятора: Kp=0,45*Kc, Ki=1,2*Kp/T
    • для ПИД-регулятора: Kp=0,60*Kc, Ki=2,0*Kp/T, Kd=Kp*T/8

Каскадный регулятор (подчинённое управление)

Продолжение примера

Теперь нам захотелось добавить комфорта и сделать так, чтобы уставка задания температуры воды менялась в зависимости от температуры воздуха на улице (на улице мороз – вода горячая, на улице жара – вода прохладная). Можно установить ещё один регулятор комфортной температуры, который по показаниям термометра узнаёт фактическую температура наружного воздуха и решает, что комфортная температура воды должна быть, например, +40°С, поэтому он выдаёт задание регулятору температуры воды – поддерживать температуру на уровне +40С (см. пример выше). Здесь мы имеем каскадное регулирование: контур регулирования температуры воды подчинён контуру регулирования комфортной температуры воды.

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

Упреждающее регулирование (Feedforward Control)

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

Если мы доверяем прогнозу погоды, то вместо каскадного управления мы можем реализовать упреждающее регулирование без измерения уличной температуры: читаем прогноз на завтра, задаём уставку +40°С по таймеру времени на завтра на 7 утра.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПИД-регуляторы – для чайников-практиков

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

Что мы делаем?

Итак, мы делаем регулятор холостого хода.
В данном случае однозначно просится к реализации система управления с обратной связью. В своей статье про «Датчики и АЦП» я рассказывал про систему управления с обратной связью, подробности ищите там. Также там была неплохая картинка на эту тему:

Что это будет в данном случае?
Мы хотим управлять оборотами двигателя в состоянии холостого хода. Для этого у нас есть шаговый двигатель, который открывает/закрывает заслонку для регулировки подачи воздуха. Также у нас есть таблица, которая указывает желаемую частоту двигателя в зависимости от текущей температуры. Управление объектом тут у нас выполняется шаговым двигателем. Состояние объекта определяется 1) оборотами двигателя и 2) текущей температурой.
Для данной картинки получаем следующее:

  • Объект — двигатель автомобиля;
  • Измерение производится для 1) оборотов двигателя (в нашем случае – промежуток времени между соседними импульсами тахометра, которых два на один оборот) и 2) температуры двигателя (сопротивление терморезистора);
  • Воздействие направлено на обороты двигателя, для чего регулируется заслонка воздуха. Регулируется она шаговым двигателем. Значит, мы задаем степень смещения для шагового двигателя;
  • Расчет — вычисление требуемого смещения в зависимости от 1) оборотов двигателя, 2) температуры двигателя, 3) текущего состояния шагового двигателя;
  • Общение в данном случае отсутствует (впрочем, я выведу наружу COM-порт для настройки/диагностики устройства).

Итак, мы измерили все, что надо, и получили Обороты (t) — текущие обороты двигателя (текущего момента времени t), Температуру (t) — текущую температуру. Также у нас есть Шаг (t) — текущий шаг заслонки и Обороты (t+1) — новое значение оборотов двигателя, которое зависит от температуры. Получить нам в итоге надо Шаг (t+1) — новое положение заслонки.
Немного математики:
Шаг (t+1) = Функция { Шаг (t), Обороты (t), Температура (t), Обороты (t+1)}.
Что это за функция? Она выдает нам текущее значение шага, которое зависит от всего вышеперечисленного. Как она это делает?
Вся собака зарылась в том, что мы хотели на данный шаг получить одни обороты, а они в реальности совсем другие! Значит, нам нужно знать значение текущей ошибки (невязки), и она может быть вычислена как разность предполагаемых оборотов в будущем и текущих:
Ошибка (t) = Обороты (t+1) — Обороты (t).
В случае, когда обороты четко соответствуют требуемому значению (к чему мы и стремимся), ошибка будет равна нулю. Эта ошибка нам показывает насколько сильным должно быть воздействие.
Формула для следующего шага теперь может быть записана следующим образом:
Шаг (t+1) = Функция { Шаг (t), Ошибка (t)}.
Теперь можно вынести значение предыдущего шага за скобки:
Шаг (t+1) = Шаг (t) + Функция {Ошибка (t)}.
Все понятно? Мы на каждом шаге работы регулятора должны задавать текущее положение шагового двигателя. Он зависит, понятное дело, от предыдущего шага и от ошибки. Шаговый двигатель управляется смещениями, поэтому нам не так уж и важен текущий шаг (проигнорируем тему выхода за пределы допустимого количества шагов – моему другу электрику это знать не обязательно). В итоге можно перейти к такой записи:
ИзменениеШага (t+1) = Функция {Ошибка (t)}.
Во как все упростилось! В итоге мы пришли к загадочной функции, которая зависит от текущей ошибки. Что это за функция? Думаю, все уже догадались – это пропорционально-интегрально-дифференциальный регулятор.
Справедливости ради надо указать темы, которые мы проигнорировали (опять же – эти тонкости не для электриков!):

  • дискретность t или размер шага. С какой частотой мы делаем воздействие? Я не знаю – я еще только разрабатываю сие чудо техники. Думаю, что шага в 50 мсек хватит за глаза. В моей программе это будет настраиваемый из EEPROM параметр. Впрочем, эту тему игнорировать нельзя и мы к ней еще вернемся;
  • управление шаговым двигателем. Там своя масса нюансов. Читайте Интернет, googl-ите – тема широко освещена;
  • связь функции с шагом и оборотами. Ошибку-то мы вычислили, ее размерность совпадает с размерностью оборотов двигателя (в моем случае это время, мсек). Как она преобразуется в размерность шага? Эту тему мы тоже оставим за бортом, т. к. это не имеет отношения к теме, собственно, ПИД-регуляторов. Для особо любопытных – я буду брать % от максимально возможной ошибки (задается максимально/минимально допустимыми оборотами) и пропорционально его превращать в % от максимально возможного одиночного изменения шага (задается полным диапазоном шагов двигателя).

Как я и обещал, формул тут не будет… ну, почти не будет. И этот раздел – как раз и будет формулой. Обещаю – больше формул не будет! Так что потерпите!
Итак, формула ПИД-регулятора:

(навеяно Википедией)
Тут у нас следующие буковки (разъясним чуть ниже):

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

Все, расслабились – больше эта формула нам в работе не понадобится, она для пояснения сути.
А суть тут такая.
У нас есть воздействие, наша Функция (u (t) ). Она состоит из трех составляющих – Пропорциональной, Интегральной и Дифференциальной (отсюда и ПИД-регулятор).
Формула в вышеприведенном виде хороша для изучения, но неудобна для расчетов (хотя бы потому, что в вычислительной технике надо переходить к численным методам). В программной реализации, если верить этой статье, переходят к дискретной реализации:
u(t) = P (t) + I (t) + D (t);
P (t) = Kp * e (t);
I (t) = I (t — 1) + Ki * e (t);
D (t) = Kd * {e (t) — e (t — 1)};
Вот это уже выглядит куда реальнее и понятнее! Мы вычисляем сумму трех составляющих. Каждая из них определяется своими коэффициентами. Если данный коэффициент нулевой, то составляющая в вычислении не участвует. С этой формулой мы и будем работать далее, ее я и реализую.
Впрочем, есть еще и другая, рекуррентная реализация:
u(t) = u(t — 1) + P (t) + I (t) + D (t);
P (t) = Kp * {e (t) — e (t — 1)};
I (t) = I * e (t);
D (t) = Kd * {e (t) — 2 * e (t — 1) + e (t — 2)};
Какая из них лучше/правильней? Математика, в общем-то, одинаковая. Коэффициенты тоже. Говорят, что есть разные подводные булыжники при реализации.
Обратите внимание! Коэффициенты тут – обязательно дробные числа! В языке программирования Си – как минимум float, а лучше бы и double.
Вся магия ПИД-регуляторов – именно в этих коэффициентах. Как их подбирать – посмотрим в конце. А сейчас переведем дух от математики и поедем к изучению поведения этой формулы.
Все расчеты и моделирование я проводил на модели в Excel. Он – файл – приложен внизу, с ним можно поиграться самостоятельно. Модель – сугубо для ознакомления с идеей! Т. е. не надо ее стараться привести к какому-то реальному процессу, искать в ней научный смысл и т. п. Там все цифры слегка «отфонарные». Но зато и файл простенький и несложный. И моделируется быстро. И дает возможность понять суть ПИД-регулятора. Пару слов по файлу я дам в конце.

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

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

«Ожидаемое» – это то, что мы хотим получить. Вначале оно равно какому-то низкому значению (в нашем примере – это те обороты двигателя, которые создает стартер). Далее, в момент времени 3, оно вдруг стало равно 2000 (завели мотор и, исходя из текущей температуры, мы должны получить 2000 оборотов в минуту).
(Небольшая ремарка – в автомобилях частоту измеряют в кол-во оборотов в минуту!)
Сделаем первый вариант: Kp = 2. Посмотрим на красную линию. Что мы видим? По ходу дела обороты начали расти – ошибка стала снижаться – значение коррекции постепенно растет — красная линия растет (обороты двигателя увеличиваются). В какой-то момент (почему-то 13-ый) обороты достигают требуемой величины. Класс? Супер! Да вот только медленно как-то…
Попробуем другой коэффициент: Kp = 5. Что видим? Зеленая линия. Достигла результата шустро – на 6-ом шаге. Класс! Да вот – ой! – перелет (по науке перерегулирование). Потом, правда, вернулись назад – порядок.
А что если коэффициент сделать еще больше? Kp = 20. Синяя линия – бух! За один шаг! Но – сразу перелет. Потом падаем вниз – ошибка стала отрицательной. Опять сильно вниз! Рывок вверх! Опять вниз! Что видим? Пошли колебания. Они, слава Богу, затухающие.
Если увеличивать коэффициент больше, то такие колебания могут стать незатухающими. Система начнет колебаться все больше и больше, пока не … ну-у, тут уже все зависит от конкретной системы.
Какова природа колебаний? Система, на которую воздействуют, всегда (в реальной жизни) инерционна. Обороты повышаются – коэффициент падает к нулю. И вот – достигли нужной точки. Коэффициент ошибки (и регулирования) достиг нуля. Но ведь процесс поднятия оборотов инерционен! Движёк раскочегарен, обороты продолжают по инерции расти. И тогда будем двигать заслону назад – опускать обороты. Опять достигли нуля – а обороты продолжают падать… И так, в общем-то, до бесконечности.
Особенно это очевидно в системах поддержания температуры. Нагрев надо выключать до нужной температуры – чтобы сам нагреватель перестал разогреваться и греть объект.
Для решения этой проблемы используется следующая –

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

Эта составляющая накапливает ошибку (как и любой интегратор). Т. е. постепенно накапливается эта самая ошибка, интегратор «наполняется» и его воздействие увеличивается. Эффект от такого накопления не мгновенен — ибо ошибка должна накопиться, на что уходит некоторое количество шагов алгоритма.
Рассмотрим случай, когда Kp = 5, а Ki будем менять:
Вариант 1 (красный) – Ki = 0.
Вариант 2 (зеленый) – Ki = 0.2.
Вариант 3 (синий) – Ki = -0.3.
Использование положительного коэффициента (зеленая линия) в данном случае, пожалуй, ничего нам не дало. А вот отрицательный коэффициент (синяя линия) очень даже неплохо помог! Но вот только линяя пошла вниз, и потом она приведет к раскачиванию системы… (но на практике раскачивания системы, как правило, не происходит, т. к. постоянно будут коррекции текущего состояния)
Итак, интегральная составляющая позволила нам сгладить резкий эффект пропорциональной составляющей. Это неплохо!
Но вы погодите – сейчас нам покажет всю свою мощь

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

Эта составляющая пропорциональна темпу изменений. Как подсказали в комментариях, она «придает ускорение».
Как и ранее, Kp = 5, а Kd будем менять:
Вариант 1 (красный) – Kd = 0.
Вариант 2 (зеленый) – Kd = 0.2.
Вариант 3 (синий) – Kd = -0.2.
Каково? И сглаживает, и не дает раскачиваться в будущем!

Реакция на помехи

Надо еще не забывать об одной такой малоприятной вещи – о помехах. Они будут раскачивать лодку нашей системы.
Вот картинка, когда у нас стоит задача поддерживать одно и то же значение оборотов:
Шумовое (случайное) воздействие – одинаковое для всех вариантов.
Вариант 1 (красный) – Kp = 10, Ki = 0, Kd = 10.
Вариант 2 (зеленый) – Kp = 10, Ki = 2, Kd = 0.
Вариант 3 (синий) – Kp = 10, Ki = 2, Kd = 6.
Как видно, с добавлением составляющих стабильность (немного) увеличивается.

Настройка

Я думаю, общее представление о формуле ПИД-регулирования вы получили. Программируется легко, эффект красивый. И следующий вопрос у вас будет – «а как получит коэффициенты»? И вот тут все становится кисло… Потому что, если до этих пор шла строгая математика, то дальше начинаются танцы с бубнами, шаманство и шайтанство. Нет, все-таки есть какие-то точные методы, но мне становится плохо при мысли, что я должен это проделать для своего двигателя в автомобиле!
В комментариях мой метод (и мое понимание) настройки разгромили, закопали и затоптали. И порекомендовали прочитать хорошую книгу«ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ ДЛЯ «ЧАЙНИКОВ»» К.Ю. Полякова(созвучное название, не находите?). Согласен, тема (настройки) сложная, для меня неоднозначная, поэтому соглашусь с комментирующими — надо прочитать эту книгу и глубже вникать в тему. Но… это уже будет не для уровня чайников, не так ли? В книге Полякова формул более чем достаточно, а это уже уровень электро-чайника! Так что позвольте мне изложить свой подход. Неидеальный, но достаточный для старта и более детального изучения темы.
Прежде всего, вы должны иметь четкое представление о своей системе регулирования – насколько она инерционна? какие шумы на нее могут воздействовать? какие воздействия (результаты функции ПИД-регулятора) для нее недопустимы?
Следующий вопрос – насколько вашу систему можно погонять туды-сюды? Все методы, что я нашел, базируются на тестовых воздействиях на систему и анализе результатов. Нужно пробовать, пробовать, считать, считать, считать (ну или по науке — строить модель)… А температура двигателя-то растет, и воздействие через полчаса работы уже будет совсем не таким, как при начале. А как вы в один и тот же день проверите работу при -30оС и +30оС???
Вот несколько полезных советов оттуда же:

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

Впрочем, несколько обнадеживает информация из другой статьи: «ПИД-регуляторы замечательны тем, что для их хорошей настройки не требуется отличного понимания формальной теории управления системами. При этом они позволяют решить около 90% всех задач управления простыми системами замкнутого цикла.»
Там же описана процедура настройки. Рекомендую почитать — просто и со вкусом.
Мой же подход базируется на следующем.

Частота опроса/воздействия

Есть очень важный момент работы при разработке ПИД-регулятора: воздействие должно быть строго периодичным, т. е. производиться через равные промежутки времени! Аналогично, ошибка должна вычисляться также периодически.
Какой должен быть период измерений/воздействий? Для начала определите время стабилизации системы – за сколько должно быть достигнуто устойчивое состояние (в случае регулятора холостого хода хватит периода 0.5 секунды). Потом разделите это время на 10 … 100 – и вы получите длительность шага (в моем случае хватит и 10 мсек). А вообще – чем выше частота, тем лучше! Но надо помнить, что операции с дробными числами весьма медленны. Фактически, они и зададут вам период работы.
Посмотрим, как период опроса (и воздействия) влияет на качество результата:
Коэффициенты ПИД-регулятора: – Kp = 10, Ki = 0, Kd = 0.
Вариант 1 (красный) – период опроса 0.5 у.е.
Вариант 2 (зеленый) – период опроса 0.35 у.е.
Вариант 3 (синий) – период опроса 0.15 у.е.
Как видим, в первом случае есть мощные выбросы. Во втором случае (70% от первого периода) они стали слабее, а в третьем (30%) – преобразование вообще получилось гладким! Т. е. для первых двух вариантов нужны дополнительно интегральная или дифференциальная составляющие, а для последнего мы обошлись только пропорциональной. А это существенная разница в вычислениях!
Так что вопросу выбора периода надо уделить первостепенное внимание.
Итак, время выбрали, все коэффициенты сбросили в ноль. Начинаем управлять системой.
Идеально, если вы сможете собрать статистику – записывать воздействие/результат/сопутствующую информацию в текстовый файл. Потом его можно открыть в том же Excel и проанализировать.

Настройка пропорционального коэффициента Kp

Для начала я устанавливаю коэффициент Kp в 1 и смотрю, что будет. Растет слишком медленно – увеличиваю. В какой-то момент начнутся перелеты и колебания. Значит, многовато – уменьшаем. Исчезли – немного увеличиваем. Начались – немного уменьшаем. Исчезли — … И так далее, пока не надоест. В итоге получили достаточно устойчивый пропорциональный регулятор, который надо немного скорректировать (надо ли? Если все работает вполне качественно, то не морочим себе голову и считаем, что все настроено)

Настройка дифференциального коэффициента Kd

Понемногу наращиваю коэффициент Kd — 0.5, 1,… Колебания системы уменьшаются, все работает красивее… Пока не происходит обратное – начинаются мощные выбросы. Все, перерегулировали, уменьшаем.
Итак, имеем выбросы – уже меньше, но все равно имеем. Самое то сгладить, притормозить воздействие!

Настройка интегрально го коэффициента Ki

Шаманим дальше. Берем совсем немного – 0.1 для начала. Можно попробовать и небольшое отрицательное значение. Смотрим, пробуем, крутим…
Процесс этот – настройки – итерационный. Стоит пробовать разные варианты, начинать сначала. Для меня он по-прежнему туманен и шайтанен.

Дополнительные модули?

Построили, сделали — и увидели, что все равно есть какие-то биения, ненужные колебания. Ну-с, а что вы хотели??? Серьезный подход изобилует формулами, сложными расчетами!
И Бог с ними — вот что я скажу! Можно вполне на выходе добавить усреднение нескольких последних тактов — дешево (в плане расчетов) и сердито (в плане стабильности воздействий). Можно поставить еще какие-нибудь фильтры.
Не будем догматичными! Кто сказал, что нужно ограничиться одним лишь ПИД-регулятором?

Информация по модели

А теперь – обещанная пара слов по Excel-файлу. В нем реализована модель, схожая с перемещением по линии. Не очень корректная, возможно, но вполне достаточная для старта (может, по результатам обсуждения сделаю более точную модель — возьму для примера модель электродвигателя из статьи Полякова). Есть предыдущее положение, скорость и ускорение. Скорость рассчитывается как разница предыдущих перемещений. Ускорение определяется как П-И-Д – воздействие, умноженное на коэффициент усиления (в верхней части таблицы).
В таблице представлены 3 варианта. Они настраиваются сверху:

  • Коэффициент усиления задает множитель для ускорения. Меньше единицы – воздействие будет «тормозить», больше – раскачивать систему;
  • Начальное значение — стартовое значение оборотов двигателя;
  • Шаг времени используется в формуле расчета новых значений. Его увеличение «ускоряет» моделирование (и исчезают все мелкие шаги);
  • Шум — диапазон изменения случайного числа. Ставите 0 – и его воздействие на моделирование исчезает;
  • Воздействие — три коэффициента для расчета. Меняете, смотрите;
  • Колонка желаемое — то значение, к которому стремится ПИД-регулятор. Его можно менять в любой клетке по высоте. Там сейчас заложено несколько ступенек

Результат моделирования – 2 графика. Первый – маленький – показывает несколько значений вначале. Второй показывает всю таблицу.
Попробуйте поменять в этом файле коэффициенты – результат будет сразу виден. По ходу дела вы сами заметите закономерности, о которых тут написано (и выведете свои новые).

В заключение – о реализации

С теорией вроде бы разобрались. Теперь – о реализации.
Сердце регулятора – формула. Она оперирует с дробными числами. Учтите, что такие операции и на 32-хбитным контроллерах выполняются не моментально, что тут говорить о 8-битках! Вычисление отдельных частей формулы – П-, И-, Д- — лучше написать не одной строкой на Cи, а разбить на части. И делать между ними что-нибудь полезное.
(ну… все не так трагично. У меня на ATMega в Cv AVR2 с 8 МГц кварцем формула просчиталась за 0.18мсек. Для моих нужд — с головой!)
И еще не забываем ограничивать воздействие допустимыми пределами! Иначе можно что-нибудь угробить!
И учитываем периодичность измерения/воздействия.
UPD: кстати, насчет «периодичности» и временнЫх режимов.
Если вы реализуете свой алгоритм с помощью операционной системы реального времени, то там разумное учесть следующее:

  • чтение текущего состояния (измерение ошибки) и воздействие должны быть вынесены в отдельный поток с максимально высоким приоритетом, т. к. весьма критична периодичность чтения/воздействия. Причем, эти потоки должны быть синхронны, но сдвинуты по фазе (другими словами, эти потоки должны вызываться с одинаковой периодичностью, но в разные моменты времени).
  • расчет воздействия должен вестись в потоке с относительно низким приоритетом. Нет, ну он вообще-то может быть и весьма высоким, но однозначно ниже приоритета обработчиков прерываний и функций, непосредственно с ними — обработчиками прерываниями — связанными.
  • также разумно поток вычисления воздействия сделать «спящим», а будить его должен поток измерения ошибки (после ее вычисления, конечно).
  • возможна ситуация, что время воздействия пришло, а воздействие еще не рассчитано (т. к. разные приоритеты). Поэтому переменная с воздействием должна изменяться атомарно, да и считываться тоже: 1) меняться только в конце вычисления, 2) считываться только в одном месте потока воздействия. На худой конец повторится старое воздействие. Немного подпортит картинку, конечно, но потом, я думаю, система восстановится. Ну и нельзя забывать, что это в Си действия с float атомарные, на Ассемблере отнюдь! Похоже, что не обойтись без средств синхронизации/блокировки.

Я использую такой алгоритм:
enum PIDstep {ReceivingE, ComputeP, ComputeI, ComputeD, MakeAction}; // тип данных «итерация вычислений» struct Timer {…}; // структура для часов реального времени struct difTimer {…}; // структура для разницы времени void PIDregulating (void) { static char is_first_call = 1; static float U, I, Kp, Ki, Kd, E, Eprev; static PIDstep PID_step; static struct Timer next_measuring, next_action; static struct difTimer next_PID_step; // . инициализация if (is_first_call) { is_first_call = 0; I = 0; Eprev = 0; PID_step = ReceivingE; // … инициализация коэффициентов Kp, Ki, Kd SetCurrentTime (&next_measuring); SetCurrentTime (&next_action); // … задание смещения next_PID_step } switch (PID_step) { case ReceivingE: // получение текущей ошибки if (TimeIsLower (&next_measuring)) break; // время для измерения не подошло AddTime (&next_measuring, &next_PID_step); E = ReceivingE (); U = 0; case ComputeI: // вычисление интегрального коэф. PID_step = ComputeP; if (Ki) { U = I + Ki * E; I = U; break; } case ComputeP: // вычисление пропорционального коэф. PID_step = ComputeD; if (Kp) { U += Kp * E; break; } case ComputeD: // вычисление дифференциального коэф. PID_step = MakeAction; if (Kd) { U += Kd * (E — Eprev); Eprev = E; break; } case MakeAction: // воздействие CheckU (&U); // проверка корректности U if (TimeIsLower (&next_action)) break; // время для воздействия не подошло AddTime (&next_action, &next_PID_step); MakeAction (U); // воздействие U PID_step = ReceivingE; break; } }
Как видите – ничего революционного!
Прежде всего, все радости происходят в отдельной функции, которая вызывается периодически.
Первый вызов – инициализация из EEPROM или откуда-нибудь еще коэффициенты, обнуляем переменные для рекурсивных вызовов. Потом начинаем пошагово 1) измерять, 2) вычислять, 3) воздействовать, и так по кругу. Заодно производится привязка к реальному времени. Если текущее время меньше требуемого (функция TimeIsLower), то действие не производится.
В комментариях поинтересовались — зачем такие сложности с машиной состояний? С недетерминированным алгоритмом? Отвечаю: благодаря такому подходу я реализую простенький «параллелизм». Т. е. в промежутке между этапами вычислений я делаю какие-то другие действия (в моем случае общение по UART, которое может быть весьма напряженным — когда я использую сий девайс как логгер событий).

Значительно улучшить точность регулирования можно применением ПИД-закона (Пропорционально-Интегрально-Дифференциальный закон регулирования).
Для реализации ПИД-закона используются три основные переменные:
P – зона пропорциональности, %;
I – время интегрирования, с;
D – время дифференцирования, с.
Ручная настройка ПИД-регулятора (определение значений параметров Р, I, D), обеспечивающая требуемое качество регулирования, достаточно сложна и на практике редко используется. ПИД-регуляторы серии UT/UP обеспечивают автоматическую настройку ПИД-параметров под конкретный процесс регулирования, сохраняя при этом возможность их ручной корректировки.

Пропорциональная составляющая
В зоне пропорциональности, определяемой коэффициентом Р, сигнал управления будет изменяться пропорционально разнице между уставкой и действительным значением параметра (рассогласованию):

сигнал управления = 100/P E,

где E – рассогласование.
Коэффициент пропорциональности (усиления) К является величиной обратнопропорциональной Р:

Зона пропорциональности определяется относительно заданной уставки регулирования, и внутри этой зоны сигнал регулирования изменяется от 0 до 100%, т. е. при равенстве действительного значения и уставки выходной сигнал будет иметь значение 50%.

где Р – зона пропорциональности;
ST – уставка регулирования.
Например:
диапазон измерения 0…1000 °С;
уставка регулирования ST = 500 °С;
зона пропорциональности P = 5%, что составляет 50 °С (5% от 1000 °С);
при значении температуры 475 °С и ниже управляющий сигнал будет иметь величину 100%; при 525 °С и выше – 0%. В диапазоне 475…525 °С (в зоне пропорциональности) управляющий сигнал будет изменяться пропорционально величине рассогласования с коэффициентом усиления К = 100/Р = 20.
Уменьшение значения зоны пропорциональности Р увеличивает реакцию регулятора на рассогласование, т. е. малому рассогласованию будет соответствовать большее значение управляющего сигнала. Но при этом, из-за большого усиления, процесс принимает колебательный характер около значения уставки, и точного регулирования добиться не удастся. При излишнем увеличении зоны пропорциональности регулятор будет слишком медленно реагировать на образующееся рассогла­сование и не сможет успевать отслеживать динамику процесса. Для того, чтобы компенсировать эти недостатки пропорционального регулирования, вводится дополнительная временная характеристика – интегральная составляющая.

Интегральная составляющая
Определяется постоянной времени интегрирования I, является функцией времени и обеспечивает изменение коэффициента усиления (сдвиг зоны пропорциональности) на заданном промежутке времени.

сигнал управления = 100/P E + 1/I ∫ E dt.

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

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

сигнал управ. = 100/P E + 1/I ∫ E dt + D d/dt E.

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

5. Передаточная функция какого звена представлена: К(р) = К/Тр

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

ПИД-регулирование

Значительно улучшить точность регулирования можно применением ПИД-закона (Пропорционально-Интегрально-Дифференциальный закон регулирования).
Для реализации ПИД-закона используются три основные переменные:
P – зона пропорциональности, %;
I – время интегрирования, с;
D – время дифференцирования, с.
Ручная настройка ПИД-регулятора (определение значений параметров Р, I, D), обеспечивающая требуемое качество регулирования, достаточно сложна и на практике редко используется. ПИД-регуляторы серии UT/UP обеспечивают автоматическую настройку ПИД-параметров под конкретный процесс регулирования, сохраняя при этом возможность их ручной корректировки.

Пропорциональная составляющая
В зоне пропорциональности, определяемой коэффициентом Р, сигнал управления будет изменяться пропорционально разнице между уставкой и действительным значением параметра (рассогласованию):

сигнал управления = 100/P E,

где E – рассогласование.
Коэффициент пропорциональности (усиления) К является величиной обратнопропорциональной Р:

Зона пропорциональности определяется относительно заданной уставки регулирования, и внутри этой зоны сигнал регулирования изменяется от 0 до 100%, т. е. при равенстве действительного значения и уставки выходной сигнал будет иметь значение 50%.

где Р – зона пропорциональности;
ST – уставка регулирования.
Например:
диапазон измерения 0…1000 °С;
уставка регулирования ST = 500 °С;
зона пропорциональности P = 5%, что составляет 50 °С (5% от 1000 °С);
при значении температуры 475 °С и ниже управляющий сигнал будет иметь величину 100%; при 525 °С и выше – 0%. В диапазоне 475…525 °С (в зоне пропорциональности) управляющий сигнал будет изменяться пропорционально величине рассогласования с коэффициентом усиления К = 100/Р = 20.
Уменьшение значения зоны пропорциональности Р увеличивает реакцию регулятора на рассогласование, т. е. малому рассогласованию будет соответствовать большее значение управляющего сигнала. Но при этом, из-за большого усиления, процесс принимает колебательный характер около значения уставки, и точного регулирования добиться не удастся. При излишнем увеличении зоны пропорциональности регулятор будет слишком медленно реагировать на образующееся рассогла­сование и не сможет успевать отслеживать динамику процесса. Для того, чтобы компенсировать эти недостатки пропорционального регулирования, вводится дополнительная временная характеристика – интегральная составляющая.

Интегральная составляющая
Определяется постоянной времени интегрирования I, является функцией времени и обеспечивает изменение коэффициента усиления (сдвиг зоны пропорциональности) на заданном промежутке времени.

сигнал управления = 100/P E + 1/I ∫ E dt.

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

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

сигнал управ. = 100/P E + 1/I ∫ E dt + D d/dt E.

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

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

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

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

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

ПИД-регулятор — пропорционально-интергально-дифференциальный регулятор. ПИД-регулятор состоит соответственно из пропорционального (К п ), интегрального (К и / s ) и дифференциального (К д s ) звена, у каждого из них свой коэффициент усиления (рис. 1).

Рис. 1. Структурная схема системы управления с ПИД-регулятором.

Здесь: s — оператор Лапласа (иногда его обозначают, как p ). Если абстрагироваться от преобразований Лапласа, то записи К п, К и / s и К д s следует воспринимать лишь как обозначения соответствующего звена, а не как к математическое выражение. И уж точно не стоит искать значение s , потому что, как уже было сказано, это оператор, а не переменная.

В системе с ПИД-регулятором реальная скорость V(t) двигателя измеряется с помощью датчика .

На вход системы поступает заданное значение скорости V зад (t) в тех же единицах, что и реальная скорость.

Сумматор обратной связи вычитает из сигнала задания на скорость V зад (t) сигнал реальной скорости V(t) и формирует на выходе сигнал ошибки e (t):

Сигнал ошибки поступает на пропорциональное , интегральное и дифференциальное звенья ПИД-регулятора.

Пропорциональное звено производит умножение сигнала ошибки e на коэффициент K п и формирует выходной сигнал y п .

Интегральное звено производит интегрирование сигнала e (t) по времени, умножает на коэффициент K и и формирует выходной сигнал y и .

Дифференциальное звено производит дифференцирование сигнала ошибки по времени e (t) , умножения результата на число K д и формирование выходного сигнала y д .

Сумматор ПИД-регулятора суммирует сигналы y п (t) , y и (t) и y д (t) и формирует выходной сигнал y(t) :

ШИМ и силовой ключ предназначены для передачи на двигатель рассчитанного выходного сигнала y(t) .

Расчет коэффициентов ПИД-регулятора

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

Структура и параметры объекта управления

С точки зрения теории автоматического управления двигатель постоянного тока приближенно описывается: двумя апериодическими звеньями с электрической постоянной времени T э и механической постоянной времени Т м . Общий коэффициент усиления двигателя K дв (рис. 2). На самом деле, структурная схема двигателя намного сложнее, но нам это в данном случае не так важно.

Рис. 2. Структурная схема двигателя с точки зрения теории автоматического управления.

Передаточная функция двигателя , записанная через оператор Лапласа s , следующая:

Коэффициент усиления двигателя K дв определяет пропорциональность между скоростью вращения вала двигателя на холостых оборотах и поданным на вход напряжением. Проще говоря, коэффициент равен отношению скорости холостого хода V хх и номинального напряжения двигателя U н .

Напряжение на двигателе в микропроцессорной технике задается в условных единицах напряжения, а скорость снимается в условных единицах скорости.

Если для формирования напряжения на двигателе используется 7-битный ШИМ (см. ниже), то для расчета K дв величина номинального напряжения равна 128 условных единиц напряжения.

Скорость холостого хода w хх , заданную в паспортных данных двигателя, следует перечитать в условные единицы скорости V хх , определяемые способом реализации датчика скорости.

Например, пусть для измерения скорости используется инкрементный датчик, расположенный на валу двигателя, и имеющий 512 меток на оборот. Пусть скорость в условных единицах измеряется как количество меток за такт расчета D t . Пусть такт расчета, полученный путем оценки производительности алгоритма будет равен 0.001 сек. Пусть скорость холостого хода двигателя w хх =5000 об/ мин.

Переведем обороты двигателя в метки датчика, получаем: 5000×512 = 2560000 меток/ мин. Переведем минуты в такты расчета:

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

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

Для этого на двигатель при его номинальной нагрузки скачком подают максимальное напряжение и снимают переходной процесс изменения скорости V(t) .

Скорость снимается с датчика скорости в дискретные моменты времени, записывается в ОЗУ микропроцессора, после чего передается на персональный компьютер. Персональный компьютер восстанавливает график изменения скорости V(t) (рис. 3).

Рис. 3. Переходный процесс в двигателе постоянного тока.

По графику переходного процесса можно определить, во-первых, скорость холостого хода V хх , а во-вторых, время регулирования t р . Время регулирования определяется временем окончания переходного процесса (время, когда кривая переходного процесса отличается меньше чем на 1% от установившегося значения).

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

Известно, что время апериодического переходного процесса в пять раз длиннее его постоянной времени. Т.е.:

Отсюда для нашего случая получаем:

В нашем случае время регулирования t р , судя по графику, равно 1.5 сек. Тогда механическая постоянная времени T м = 1.5/5 = 0.3 сек.

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

Электрическая постоянная времени T э определяет инерционность намагничивания якоря двигателя и равняется отношению индуктивности якоря двигателя к сопротивлению его обмотки:

На практике параметры индуктивности якоря сложно измерить, и тогда принимают электрическую постоянную времени на порядок меньше, чем механическая постоянная времени:

Для большинства двигателей это справедливо.

Расчет коэффициентов ПИД-регулятора.

Чтобы рассчитать коэффициенты ПИД-регулятора следует решить обратную задачу динамики. Для этого абстрагируемся от ПИД-регулятора. Будем полагать, что структура регулятора, т.е. его передаточная функция W р (s) , нам неизвестна. За то известна передаточная функция объекта управления W дв (s) (рис. 4).

Рис. 4. Исходная схема для расчета регулятора для двигателя постоянного тока.

Запишем передаточную функцию замкнутой системы W з (s) :

Определим, какой переходной процесс в системе нас бы устроил? Нас вполне устраивает апериодический переходный процесс в системе. Именно так система должна реагировать на изменение скорости и нагрузки.

Пусть желаемая постоянная времени переходного процесса T ж будет примерно равна T м . Т.е. передаточная функция желаемой системы W ж (s ) равна:

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

Путем простых математических преобразований, выразим отсюда выражение для передаточной функции регулятора W р (s) :

Подставим значение W дв (s):

Введем коэффициенты:

Получаем:

Не сложно заметить, что мы получили просто коэффициент C 1 , коэффициент перед интегральным звеном С 2 и коэффициент перед дифференцирующим звеном C 3 . Т.е. мы получили классическую структуру ПИД-регулятора с параметрами K п =С 1 , К и =C 2 и K д =C 3 :

Реализация ПИД-регулятора на цифровом микропроцессоре

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

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

Скорость может измеряться следующими датчиками:

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

Сумматор обратной связи вычитает из заданной скорости V зад реальную скорость V и получает, так называемый, сигнал ошибки e :

Учитывая, что скорость V зад и V являются целыми числами в пределах -127 до 127, на целочисленном микропроцессоре эта операция реализуется достаточно просто. Следует следить за тем, чтобы результат. Если e 12 7, то e =127.

Сигнал ошибки e поступает на вход ПИД-регулятора, т.е. на пропорциональное звено, интегральное и дифференциальное.

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

Коэффициент K п обычно представляет нецелое значение в диапазоне от 0.5 до 2. Поэтому для умножения целого однобайтного числа e на этот коэффициент используют таблицу K П, i , которую заранее рассчитывают:

для i =-127…127

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

Программистам следует понимать, что процессор рассматривает знакового число i как беззнаковый индекс таблицы, поэтому элементы таблицы с индексами от -128 до -1 реально будут находиться в диапазоне индексов от 128 от 255.

Тогда, умножение на коэффициент K п заменяется выбором элемента таблицы K П, i с индексом e :

Таблица обычно рассчитывается на персональном компьютере и прошивается в память микропроцессора.

Интегральное звено формирует выходной сигнал y и путем интегрирования сигнала ошибки e по времени и умножения на коэффициент K и .

Здесь: T — время от начала работы.

Цифровой микропроцессор вычисляет интеграл путем пошагового интегрирования с шагом, равному такту работы таймера D t . Таким образом, для дискретного случая формула заменяется на:

Здесь k — количество тактов вычисления, прошедших от начала работы.

Рассмотрим сумму всех e k . По сути, это просто сумма всех значений e , получаемых на каждом такте. Эту сумму называют интегральной суммой S (не путать с s — оператором Лапласа). Интегральную сумму реализуют в виде глобальной переменной и на каждом такте увеличивают на текущее значение сигнала ошибки e :

При расчете ПИД-регулятора коэффициент K и обычно составляет от 0.05 до 2. Такт расчета D t составляет от 0.0001 до 0.002 сек. Таким образом, коэффициент K и D t составляет от 5·10 -6 до 4·10 — 3 . Т.к. этот коэффициент на много меньше 1, то возникает проблема целочисленного умножения на него, т.к. после умножения всегда будет получаться ноль.

Для решения этой проблемы попробуем умножить коэффициент K и D t на какое-нибудь большое число A , а интегральную сумму поделим на это же число:

Обозначим произведение K и D t · A через коэффициент B :

Выберем такое число A , кратное 256 x , чтобы коэффициент B был в диапазоне от 0.05 до 5.

Для того чтобы вычислить отношение S/A , расширим знак числа S :

    реализуем 16-битный расчет S , если A =256;

    реализуем 24-битный расчет S , если A =256 2 ;

    реализуем 32-битный расчет S , если A =256 3 .

Не сложно реализовать добавление к 16, 24 или 32-битному знаковому числу S знаковое 8-битное число e . Не забывайте, что, если e положительное, то при расширении знака старшие биты заполняются нулями, а если отрицательное, то старшие биты заполняются единицами. Для ограничения накопления интегральной суммы, реализуем верхний и нижний предел. Обычно это делается следующим образом: если старший (знаковый) бит не равен предпоследнему биту, то рост интегральной суммы следует приостановить.

Вспомним, что деление любого числа на число 256 x эквивалентно правому сдвигу на x байт вправо. Воспользуемся этим правилом. Возьмем только старший байт интегральной суммы S : в случае 16-битного счета это эквивалентно сдвигу на один байт, в случае 24-битного счета — на два байта, в случае 32-битного счета — на три байта.

Таким образом:

Где: S старший — старший байт числа S .

Умножение на коэффициент B реализуем в виде таблицы B i , аналогично расчету коэффициента пропорционального звена:

Дифференциальное звено

Дифференциальное звено производит расчет выходного сигнала y д — e 0 реализуем в виде таблицы C i , как при расчете пропорционального звена:

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

Сумматор, стоящий после ПИД-регулятора складывает мгновенные значения сигналов y п , y и и y д и формирует выходной сигнал y :

При суммировании следует следить за тем, чтобы результат оказался в диапазон от -127 до +127, реализовав, например, 16-битное суммирование. Если результат больше 127, его нужно принять равным 127, а если меньше -127, то равным -127.

Сигнал ШИМ формируется микропроцессорами AVR автоматически. Один микропроцессор способен формировать до 3 аппаратных сигналов ШИМ. Кроме того, сигнал ШИМ можно формировать программно по таймеру.

Удобно формировать 7-битный ШИМ. В этом случае управляющий силовой ключ можно подключить по схеме, изображенной на рис. 4.

Рис. 4. Способ подключения силового ключа к выходу ШИМ.

Старший (знаковый) бит результата y выводится через любой I/O пин на один из входов силового ключа, а оставшиеся 7 бит (последний бит зануляется) безо всякого преобразования можно загружать в регистр формирования отсечки для ШИМ.

Докажем это.

Что и требовалось доказать.

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

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

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

Математическое выражение цифрового ПИД-регулятора

где:
Xp — полоса пропорциональности
Ei = (SP-PV) = (уставка-тек) = ошибка (рассогласование)
Тд — постоянная времени дифференцирования
∆Ei — разность ошибок соседних измерений (Ei — Ei-1)
∆tизм — время между соседними измерениями (ti — t i-1)
Ти — постоянная времени интегрирования
— Накопленная к i-ому шагу сумма рассогласований (интегральная сумма)
Легко заметить, что сигнал управления является суммой трех составляющих: пропорциональной (слагаемое 1), дифференциальной (слагаемое 2), и интегральной (слагаемое 3).
Пропорциональная составляющая зависит от текущей ошибки Ei и компенсирует текущую ошибку пропорционально ее величине.
Дифференциальная составляющая зависит от скорости изменения ошибки ∆Ei / ∆tизм и компенсирует резкие возмущения.
Интегральная составляющая накапливает ошибку регулирования, что позволяет ПИД-регулятору поддерживать нулевую ошибку в установившемся режиме (устраняет статическую ошибку управления).
Обычно ПИД-регулятор имеет дополнительные параметры помимо трех коэффициентов (Xp, Ти, Тд). Рассмотрим их более подробно на примере скриншота меню параметров ПИД-регулятора прибора “ПАРАГРАФ PL20”.

Рис. 1

Каналов (выходов) ПИД-регулирования в приборе может быть несколько и параметры для каждого из них свои собственные. Поэтому выберите желаемый канал в первой графе.
Источником обратной связи с объекта управления (текущая контролируемая величина) может быть любой измерительный канал прибора, поэтому необходимо выбрать желаемый измерительный канал в графе ВЛАДЕЛЕЦ.
ПИД-регулятор может управлять как по закону прямой логики (управление печью), так и по обратному закону (управление хладоустановкой). Выберите желаемую логику работы.
Уставка (SP) – это желаемая величина, на которую регулятор должен выйти в установившемся режиме.
Xp – зона пропорциональности. Задается в единицах контролируемой величины (для терморегулятора в градусах). Зона пропорциональности называется так, потому что только в ней ((SP — Xp)…(SP + Xp)) пропорциональная составляющая ПИД-регулятора может формировать мощность выходного сигнала управления пропорционально ошибке. А за ее пределами мощность будет равна либо 0%, либо 100%. Таким образом, чем уже эта зона, тем быстрее отклик регулятора, но слишком высокое быстродействие может ввести систему в автоколебательный режим.
Ти – постоянная времени интегрирования.
Тд – постоянная времени дифференцирования.
Текущая мощность – это информационный параметр.
Минимальная и максимальная мощность определяют границы мощности выхода ПИД-регулятора.
Аварийная мощность – это такая мощность, которая формируется регулятором при неисправности датчика или измерительного канала. Так можно обеспечить отрицательную температуру холодильной камеры или не дать остыть печи даже при аварийной ситуации.
Последним параметром идет период ШИМ. Этот параметр один для всех ПИД-регуляторов, т.к. каналы ШИМ синхронизированы между собой от одного таймера. ШИМ сигнал позволяет регулировать мощность посредством регулировки скважности сигнала (регулируется ширина импульса при постоянной частоте модуляции). Разрядность ШИМ (число позиций мощности) равна 8192 дискреты (13 бит). Период ШИМ (от 1 мс до 250 сек). Этот параметр зависит от типа и коммутационных способностей силовых исполнительных ключей (м.б. реле, пускатель, твердотельное реле, симистор). Чем выше частота коммутации (чем меньше период) тем больше тепловые потери в ключах (квадратичная зависимость потерь от частоты) и больше износ механических коммутаторов, но лучше качество регулирования. Важно найти золотую середину.
Настройка пропорциональной компоненты (Xp)
Перед настройкой зоны пропорциональности интегральная и дифференциальная компоненты отключаются, постоянная интегрирования устанавливается максимально возможной (Ти = макс), а постоянная дифференцирования минимально возможной (Тд = 0). Устанавливается безопасная величина уставки, равная (0,7…0,9)×SP, где SP – это реальная уставка настраиваемой системы. Зона пропорциональности устанавливается минимально возможной (Xp = 0).
В этом случае регулятор выполняет функции двухпозиционного релейного регулятора с гистерезисом равным нулю. Регистрируется переходная характеристика.

Рис. 2

Тο — начальная температура в системе;
Тsp — заданная температура (уставка);
∆T — размах колебаний температуры;
∆t — период колебаний температуры.
Установить зону пропорциональности равной размаху колебаний температуры: Xp = ∆T. Это значение служит
первым приближением для зоны пропорциональности.
Следует проанализировать переходную характеристики еще раз и при необходимости скорректировать значение зоны пропорциональности. Возможные варианты переходных характеристик показаны на рис. 3.

Рис. 3

Переходная характеристика типа 1: Значение зоны пропорциональности очень мало, переходная характеристика далека от оптимальной. Зону пропорциональности следует значительно увеличить.
Переходная характеристика типа 2: В переходной характеристике наблюдаются затухающие колебания (5 — 6 периодов). Если в дальнейшем предполагается использовать и дифференциальную компоненту ПИД-регулятора, то выбранное значение зоны пропорциональности является оптимальным. Для этого случая настройка зоны пропорциональности считается законченной.
Если в дальнейшем дифференциальная компоненты использоваться не будет, то рекомендуется еще увеличить зону пропорциональности так, чтобы получились переходные характеристики типа 3 или 4.
Переходная характеристика типа 3: В переходной характеристике наблюдаются небольшой выброс (перерегулирование) и быстро затухающие колебания (1 — 2 периода). Этот тип переходной характеристики обеспечивает хорошее быстродействие и быстрый выход на заданную температуру. В большинстве случаев его можно считать оптимальным, если в системе допускаются выбросы (перегревы) при переходе с одной температуры на другую.
Выбросы устраняются дополнительным увеличением зоны пропорциональности так, чтобы получилась переходная характеристика типа 4.
Переходная характеристика типа 4: Температура плавно подходит к установившемуся значению без выбросов и колебаний. Этот тип переходной характеристики также можно считать оптимальным, однако быстродействие регулятора несколько снижено.
Переходная характеристика типа 5: Сильно затянутый подход к установившемуся значению говорит о том, что зона пропорциональности чрезмерно велика. Динамическая и статическая точность регулирования здесь мала.
Следует обратить внимание на два обстоятельства. Во-первых, во всех рассмотренных выше случаях установившееся значение температуры в системе не совпадает со значением уставки. Чем больше зона пропорциональности, тем больше остаточное рассогласование. Во-вторых, длительность переходных процессов тем больше, чем больше зона пропорциональности. Таким образом, нужно стремиться выбирать зону пропорциональности как можно меньше. Вместе с тем, остаточное рассогласование, характерное для чисто пропорциональных регуляторов (П-регуляторов), убирается интегральной компонентой регулятора.
Настройка дифференциальной компоненты (Tд)
Этот этап присутствует только в том случае, если применяется полнофункциональный ПИД-регулятор. Если дифференциальная компонента применяться не будет (используется пропорционально-интегральный (ПИ) регулятор), то следует пропустить этот этап.
На предыдущем этапе была задана зона пропорциональности, соответствующая переходной характеристике типа 2, в которой присутствуют затухающие колебания (см. рис. 3, кривая 2, рис. 4, кривая 1.).

Рис. 4

Следует установить постоянную времени дифференцирования Тд так, чтобы переходная характеристика имела вид кривой 2 на рис. 4. В качестве первого приближения постоянная времени дифференцирования делается равной Тд = 0,2×∆t.
Примечательно то, что дифференциальная компонента устраняет затухающие колебания и делает переходную характеристику, похожей на тип 3 (см. рис. 3). При этом зона пропорциональности меньше, чем для типа 3. Это значит, что динамическая и статическая точность регулирования при наличии дифференциальной компоненты (ПД-регулятор) может быть выше, чем для П-регулятора.
Настройка интегральной компоненты (Ти )
После настройки пропорциональной компоненты (а при необходимости и дифференциальной компоненты) получается переходная характеристика, показанная на следующем рисунке, кривая 1.

Рис. 5

Интегральная компонента предназначена для того, чтобы убрать остаточное рассогласование между установившимся в системе значением температуры и уставкой. Начинать настраивать постоянную времени интегрирования следует с величины Ти = ∆t.
Переходная характеристика типа 2: Получается при чрезмерно большой величине постоянной времени интегрирования. Выход на уставку получается очень затянутым.
Переходная характеристика типа 4: Получается при слишком малой величине постоянной времени интегрирования. Если постоянную времени интегрирования уменьшить еще, то в системе могут возникнуть колебания.
Переходная характеристика типа 3: Оптимальная.
Использованные источники информации

  • Сабинин Ю.А. Ковчин С.А. “Теория электропривода”
  • Шрейнер Р. Т. “Системы подчиненного регулирования электроприводов”
  • Олссон, Пиани “Цифровые системы автоматизации и управления”
  • Материалы сайта www.asu-tp.org

This entry was posted in Ремонт. Bookmark the <a href="https://kabel-house.ru/remont/pid-regulyator/" title="Permalink to Пид регулятор" rel="bookmark">permalink</a>.

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

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