Пид регулирование

Содержание

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

Регуляторы процесса (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 утра.

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

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

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

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

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

Что это будет в данном случае?
Мы хотим управлять оборотами двигателя в состоянии холостого хода. Для этого у нас есть шаговый двигатель, который открывает/закрывает заслонку для регулировки подачи воздуха. Также у нас есть таблица, которая указывает желаемую частоту двигателя в зависимости от текущей температуры. Управление объектом тут у нас выполняется шаговым двигателем. Состояние объекта определяется 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, которое может быть весьма напряженным — когда я использую сий девайс как логгер событий).

Общие сведения о ПИД-регуляторе

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

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

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

  • Первый – с сигналом рассогласования.
  • Второй – с интегралом сигнала рассогласования.
  • Третий – с производной сигнала рассогласования.

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

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

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

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

Три составляющих рабочего процесса ПИД-регулятора

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

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

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

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

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

Теория и практика использования ПИД-устройств

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

1.

2.

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

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

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

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

Символы P&ID и их использование

P&ID диаграммы используют специальные фигуры для представления различных видах оборудования, арматуры, приборов и трубопроводов.

Узнайте, почему Edraw является лучшим выбором программ для создания P & ID: попробуйте БЕСПЛАТНО.

P&ID более сложна, чем схема технологического процесса. Edraw включает в себя более 2000 векторных символов P&ID, используемых для описания механического оборудования, трубопроводов, компонентов трубопроводов, клапанов, драйверов оборудования и контрольно-измерительных приборов. Получите наиболее полную коллекцию символов P&ID из нашей встроенной библиотеки.

Символы P&ID — оборудование

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

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

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

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

Масляный насос широко используется для удаления накопленной воды из колодца или другого места.

Вакуумный насос применяется для повышения эффективности систем парового отопления различными способами. Самое важное соображение — быстрое и эффективное удаление.

Винтовой насос — это винтовой насос Archimedes, который до сих пор используется в оросительных и сельскохозяйственных целях.

Резервуар предназначен для хранения технологических жидкостей различного типа в различных технологических условиях.

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

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

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

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

Роторный компрессор — это тип газового компрессора, который использует механизм позитивного перемещения роторного типа.

Смешивание — это устройство, которое объединяет некоторые материалы в одно вещество.

Смесительный сосуд — это контейнер, который используется для смешивания нескольких компонентов вместе.

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

Охладительные башни передают тепловую энергию наружному воздуху по принципу испарения.

Охладитель — это устройство, контейнер или помещение, которое охлаждает воздух через испарених вод или поддерживает охлаждение воздуха.

Турбинный привод используется для привода насосов и вентиляторов на нефтехимических заводах.

Печь — это устройство для нагрева непрерывного тока воздуха посредством огня.

Котел — это закрытый сосуд, в котором вода или другая жидкость нагреваются.

Масляная горелка разработана с нуля исключительно для сжигания отработанных масел.

Автоматическая кочегарка применяется для подачи горячей воды в системы центрального отопления.

Пластинчатая башня широко используется во многих процессах и в промышленности.

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

Лифт используется для управления положения носа самолета и угла атаки крыла.

Реактор смешения широко используется в химической промышленности для обеспечения перемешивания.

Символы процесса и контрольно-измерительных приборов — Клапаны

Задвижка — устройство, используемое для управления потока жидкостей и газов.

Обратный клапан, также известный как односторонний клапан, предназначен для предотвращения обратной линии среды.

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

Шаровой кран — это клапан со сферическим диском.

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

Угловой клапан ориентирован под углом 90 ° задвижки.

Символы процесса и контрольно-измерительных приборов — Трубопроводы

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

Все линии должны быть точными по отношению к трубопроводам технологического трубопровода.

Основной трубопровод используется для подключения оборудования в любом положении.

Основная прямая линия используется для подключения оборудования в том же горизонтальном или вертикальном положении.

Технологическое соединение помогает создать поток процесса между оборудованием. 2 раза нажмите на процессное соединение для редактирования описания.

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

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

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

Больше P&ID символов — Моделирование изображений

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

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

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

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

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

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

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

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

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

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

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

Теория

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

Система управления с обратной связью с участием ПИД-регулятора. Система управляет величиной 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 ПИД-регуляторы реализуются либо как специализированные аппаратные модули, включаемые в состав управляющего контроллера, либо программными методами, с применением специализированных библиотек. Производители контроллеров часто разрабатывают специализированное ПО (тюнеры) для настройки коэффициентов регулятора.

> Ссылки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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