Семь секунд из жизни ПИД регулятора.

Пид – регулятор довольно древняя разработка, когда о транзисторах еще ничего не знали, не то, что о контролерах. На кафедре автоматики видел механический ПИД — регулятор, в котором вместо, электрических сигналов использовался воздух.
Сам принцип работы регулятора очень простой и реализовать программно его тоже не сложно, вот несколько ссылок, где обсуждается эта тема.
ПИД — регулятор описывается выражением:
pid_1
К – коэффициент пропорциональности,
Ti – постоянная интегрирования,
Td – постоянная дифференцирования, t – время,
е – сигнал рассогласования (ошибка),
U(t) – выходная переменная с регулятора на исполнительный механизм.
Рассмотрим  принцип его работы. Так как у нас микроконтроллерная система, то программа ПИД – регулятора у нас выполняется  циклически, пусть один цикл равен одной секунде.
Перейдем к практике, на рисунке представлена простейшая схема использования ПИД – регулятора в регулировании оборотов двигателя
pid_2
Разберем его по порядку.
Задание —  это, какое- то число вами заданное, которое означает, сколько оборотов должен делать двигатель в секунду. Назовем её SP.
Сравнивающее устройство – это устройство, которое сравнивает заданное вами количество оборотов, которые должен делать двигатель, с количеством оборотов которые делает двигатель в текущий момент,  и выдает разницу. Количество оборотов мы получаем от датчика, это в регулировании называется обратная связь.
Через уравнение сравнения находим ошибку рассогласования E.   
E = SP – V
Где V – сколько делает двигатель оборотов в секунду.
 
Пример: 
если здание SP = 70 об./сек., а  текущий момент двигатель делает  V =  50 об./мин., то получаем на выходе сравнивающего устройства  E = 70 – 50 = 20. Число 20 – будет ошибкой рассогласования E. 
 
Базовые регуляторы (ЗВЕНЬЯ). 
 
ПИД – регулятор состоит из трех базовых регуляторов(звеньев) включенных параллельно, это пропорциональный, интегральный, дифференциальный регулятор. Из начальных букв названия регуляторов получается ПИД. 
Каждый регулятор можно настроить или совсем выключить из процесса регулирования, соответствующим коэффициентом. 
Встречаются разные регуляторы различной комбинацией базовых регуляторов, это ПД, ПИ, П. 
 
Пропорциональный регулятор  — это обычный усилитель у которого вход связан с выходом обычным линейным уравнением Y=KЕ,  где Y – выходная переменная с этого регулятора, K – коэффициент пропорциональности ( усиления), а Е  — ошибка рассогласования, входная переменная. 
В таблице приведены результаты решения этого уравнения при различных значениях переменных Е, K. 
tab_1

 

pid_3

Обратите внимание, выходная переменная с этого регулятора пропорциональна входной переменной.
Рассмотрим на примере:
Для этого возьмем кусок времени (момент) равный семи секундам и заполним таблицу.
Задает задание регулятору переменная Sp равная 30 об./сек..
K, коэффициент пропорциональности пусть будет равен 2.
Входная переменная V – количество оборотов в секунду.
Через сравнение находим ошибку рассогласования.
     E = SP — V
     Sp = 30 об./сек.
     К = 2
tab_2
В нулевую секунду двигатель вращался со скоростью 20 об./сек.,  задание регулятору  30 об./сек. ошибка рассогласования будет равна 10
E = Sp – 20 = 30 – 20 = 10
Так как коэффициент пропорциональности K  равен 2, то Y=K *Е = 2 * 10 = 20
K , коэффициент пропорциональности умножается на ошибку рассогласования  Е, и выход с регулятора будет 20.
В первую секунду количество оборотов увеличилось до 25 об./сек. 
Е – ошибка рассогласования равна 5. 
Также находим Y, умножив Е на K.
Y=K *Е = 2 * 5 = 10
И так с каждой секундой. Ниже представлены графики изменения переменной Y от E
pid_4
Зеленый график – как менялись обороты двигателя в течение семи секунд.
Черный график – как течение этого же времени менялась ошибка рассогласования.
Синий график —  как менялась  переменная Y на выходе пропорционального регулятора(звена).
Пропорциональный регулятор не может ошибку рассогласования вывести на ноль.
Интегральное регулятор – это регулятор, который не имеет установившегося режима и является астатическим. Выход с этого регулятора пропорционален ошибке рассогласования и времени.
Благодаря этому регулятору, регулируемый параметр, в нашем случае это обороты двигателя, выходит на задание, а ошибка рассогласования устанавливается в ноль.
Алгоритм интегрального регулятора.
S = 0 // включение регулятора.
Начало цикла:
S = S +E   // к переменной S прибавляется E ошибка рассогласования
Y=Ki * S   // Ki, коэффициент интегрирования умножается на переменную S
Конец цикла.
Рассмотрим алгоритм интегрального регулятора. S – интегральная сумма.
При включении регулятора, переменная S = 0, далее к ней при каждом цикле, раз в секунду прибавляется переменная Е – ошибка рассогласования и умножается на Ki, коэффициент интегрирования и в итоге получаем выходную переменную Y, которая растет если Е положительная и убывает если отрицательная.
pid_5
Выход с интегрального регулятора зависит от времени и Е — ошибки рассогласования.
Рассмотрим на примере:
Для этого, как и в предыдущем примере с пропорциональным звеном, возьмем кусок времени (момент) равный семи секундам и заполним таблицу.
Задание регулятору тоже  Sp = 30. Ki — коэффициент интегрирования пусть будет равен 2. Входная переменная V – количество оборотов в секунду.
Также, через сравнение находим ошибку рассогласования.
E = SP — V
Sp = 30 об./сек.
Ki =2  //  коэффициент интегрирования
tab_3
В нулевую секунду двигатель вращался со скоростью 20 об./сек.,
задание регулятору  30 об./сек. ошибка рассогласования будет равна 10
E = Sp – 20 = 30 – 20 = 10
Интегральная сумма стала равна 10.
S = 0 // включение регулятора.
S = S +E = 0 + 10 = 10   // к переменной S прибавляется E ошибка рассогласования
Так как коэффициент интегрирования Ki равен 2, то выход с регулятора будет 20.
Y=Ki * S = 2 * 10 = 20   // Ki, коэффициент интегрирования умножается на переменную S
В первую секунду количество оборотов увеличилось до 25 об./сек.
Е – ошибка рассогласования равна 5. Прибавляем её к переменной S = 10.
S = S + E = 10 + 5 = 15
Находим Y, умножив интегральную сумму на Ki.
Y=Ki * S = 2 * 15 = 30
И так с каждой секундой. Ниже представлены графики изменения переменных: V, E, S, Y.
pid_6
Зеленый график – как менялись обороты двигателя в течении семи секунд.
Черный график – как течение этого же времени менялась ошибка рассогласования.
Сиреневый график — как менялась интегральная сумма S.
Синий график —  как менялась  переменная Y на выходе интегрального регулятора.
На сиреневом графике видно как меняется интегральная сумма.
Пока обороты двигателя были ниже Sp – задания, сумма росла, только обороты превысили Sp, сумма стала убывать.
Выход с интегрального регулятора есть интегральная сумма, умноженная на коэффициент Ki.
 Дифференциальный регулятор – представляет собой устройство, которое отслеживает, резкие изменения ошибки рассогласования и
компенсирует выходной сигнал на выходе регулятора.
Математически – она является производной от ошибки, то есть показывает скорость изменения ошибки рассогласования.
Более подробно как оно работает, рассмотрим дальше.
Алгоритм дифференциального звена:
En = E // включение регулятора.
Начало цикла:
Y=Kd * (E — En)   // Kd, коэффициент дифференцирования умножается на разность E ,En.
En = E
Конец цикла.
Рассмотрим алгоритм дифференциального регулятора.
En – ошибка рассогласования секунду назад. При включении регулятора, в переменную En записываем переменную
Е – ошибка рассогласования. Далее в каждом цикле из Е – ошибки рассогласования вычитаем переменную En и умножаем на Kd, коэффициент дифференцирования  и получаем выходную переменную Y.
pid_7
Выход с дифференциального регулятора зависит от скорости изменения Е — ошибки рассогласования.
Рассмотрим на примере:
Для этого, как и в предыдущих примерах,  возьмем момент времени равный семи секундам и заполним таблицу.
Задание регулятору тоже  Sp = 30.
Kd – коэффициент дифференцирования пусть будет равен 2.
V – количество оборотов в секунду(входная переменная).
Также, через сравнение находим ошибку рассогласования.
E = SP — V
Sp = 30 об./сек.
Kd =2  // коэффициент дифференцирования
tab_4
En повторяет  E со смещением во времени в одну секунду.
1. Нулевая секунда Y= Kd * (E — En) = 2*(10 – 10) = 0
2. Первая секунда   Y= 2 * (5 – 10 ) = -10
3. Вторая секунда    Y= 2 * (- 2 – 5 ) = — 14
4. Третья секунда    Y= 2 * (-15 –(-2)) = -26
И так далее.
Ниже представлены графики изменения переменных: V, E, En, Y.
pid_8
Зеленый график – как менялись обороты двигателя в течение семи секунд.
Черный график – как течение этого же времени менялась ошибка рассогласования.
Малиновый график  – как менялась ошибка рассогласования секунду назад.
Синий график —  как менялась  переменная Y на выходе дифференциального регулятора.
На синем графике видно как менялся выход с дифференциального регулятора в зависимости от оборотов двигателя. Как только обороты двигателя начали расти, выходная переменная Y стала резко падать, и наоборот, когда обороты упали, Y выросла.
ПИД
 
Как говорилось выше, ПИД – регулятор состоит из трех регуляторов(звеньев) включенных параллельно, это пропорциональный, интегральный, дифференциальный регуляторы.
То есть сумма выходов этих регуляторов Y и будет выходом с ПИД – регулятора.
Составим таблицу.

tab_5

Построим по ней графики.
pid_9
Работу ПИД – регулятора можно изучить с помощью программы « Регулятор Fuzzy PID».
pid_10
Программа использовалась для управления реальной лабораторной установкой « Калорифер», и переделана в математическую модель
для изучения свойств регуляторов. Установка «Калорифер» представляет из себя нагреватель с датчиком температуры, подключенными к компьютеру, и программы, которая с помощью ШИМ  поддерживаем нужную температуру, подробно в статье «Калорифер». Эта аппаратная часть установки заменена звеном запаздывания, регулятор запаздывания выведен слева внизу, рядом в окне отображается его значение.
Ниже находиться кнопка «Очистка графиков» и кнопка «Новое измерение». Первая просто очищает графики без прерывания регулирование, вторая и очищает и прерывает регулирование.
Что бы начать снова, нажмите кнопку «Старт».  Выход с регулятора через звено запаздывания подключен к устройству сравнения, куда раньше подавалась температура. В программе не предусмотрены возмущающие воздействия, но какие то из них можно компенсировать изменением запаздывания. На графике видно, красный – выход с регулятора, а зеленый – это выход с регулятора пропущенный через звено запаздывания и фильтр низкой частоты.
Справа вверху добавился регулятор для изменения задания, и три графика с выходов звеньев регулятора. Все остальное осталось по старому, так что привожу выдержку из руководства на установку «Калорифер», с небольшими исправлениями. Система регуляторов
работает по приведенной схеме №1. Программа позволяет задействовать любой регулятор, установкой галочки в панели регулятора,
а также установкой соответствующих коэффициентов.
Чтобы выключить пропорциональное звено, нужно установить его в единицу, а интегральное и дифференциальное – в ноль.
pid_11
Схема №1. САР.
Описание интерфейса компьютера лабораторной установки
Программное обеспечение  лабораторной установки позволяет изучить принцип работы и настройку программных ПИД- и FUZZY – регуляторов.
На рис. 1 приведено главное окно САР температуры.
    Описание главного окна САР температуры
Главное окно (см. рис.1) состоит из меню (1), панелей « Регулятор №1»(2), «Регулятор №2» (3),  «текущие измерения» (4), «управление» (5),  «ШИМ» (6), «вых. регул. №1», «вых. регул. №2», «таймер» (7).
Внизу отображаются графики изменения текущего параметра (температуры) и ее заданного значения (8).
pid_12
Рис 1. Главное окно САР температуры
Панель (2) «Регулятор №1» содержит регулирующее устройство типа «Fuzzy – регулятор». Фаззификатор «Fuzzy – регулятора» переводит
четкие значения лингвистических переменных «Отклонение» и «Скорость» в нечеткие значения с помощью трех терм, соответственно,
графики которых показаны в панели (2.1) с указанием  степеней принадлежности к термам. Ниже слева находится база знаний  и
продукционных правил (панель 2.2), в которой задаются девять терм дефаззификатора. В панели (2.3) задаются коэффициенты пропорциональный и интегральной составляющей отклонения и дифференциальный составляющей (скорости) входа базы знаний (см. рис. 1) , там же отображается выход  каждой составляющей и находится включатель каждой составляющей, а также можно произвести сброс накопленной интегральной составляющей отклонения.
Панель (3) «Регулятор №2» содержит регулятор типа «ПИД – регулятор».
В панели задаются коэффициенты пропорциональный, интегральной и дифференциальный составляющей ПИД- регулятора, там же отображается выход с каждой составляющей и находится включатель каждой составляющей, а также можно выполнить сброс
накопленной интегральной составляющей регулятора.
Панель (4) «текущие измерения» отображает численные значения текущей температуры, отклонения текущего значения от задания и
выход раздельно с регуляторов №1 и №2 (управляющее воздействие, которое идет на нагреватель калорифера) в текущий  момент времени
в процентах.
На панели (5) находятся кнопки управления. Кнопка «старт» запускает в работу выбранный регулятор в системе. Кнопкой «вкл.»
в панели «нагрев» включается нагреватель только для снятия кривой разгона.
При этом на объект подается максимальная мощность.
В панели «задание» указывается заданное значение температуры.
Ниже в виде таблицы выдаются текущие значения температуры, ошибки регулирования и время отсчета через равные интервалы времени.
В панели (7) «вых. регул. №1», «вых. регул. №2» цифровые индикаторы показывают по желанию выход  каждого регулятора.
Там же находятся выключатели, позволяющие включить нужный регулятор в схему регулирования (см. рис.1).
 В панели «таймер» задается интервал времени для снятия отсчетов при записи заданного и текущего значений.
— в  меню (1) во вкладке «настройка» выбрать «термы» или два раза щелкните левой мышкой на графике (2.1) входных терм. Откроется окно «Термы», где задаются  термы фаззификатора и дефаззификатора и диапазон их отображения. Любые проведенные изменения
предыдущей информации  нужно подтвердить кнопкой «OK»;
— выбрать регулятор, который хотите использовать в панели (7)  «вых.регул. №1» или «вых.регул. №2» и  задать нужные коэффициенты;
— в меню (1) во вкладке «скорость» задать скорость измерения в миллисекундах (например, 1000мс=1с);
— нажать кнопку «старт».
После нажатия кнопки «старт» начнётся регулирование по заданному Вами закону.
На рис.2 приведена панель настройки термов.
pid_13
Рис. 2. Панель настройки термов
pid_14
Подобная программа, только с одним ПИД регулятором.
Проведем эксперимент по настройке ПИ — регулятора, так как у нас достаточно  инерционный объект( медленно реагирует на изменение задание(ступенчатое воздействие),  дифференциальное звено выключим.
Установим пропорциональный коэффициент четырем, интегральный выключим, дифференциальный выключим, звено запаздывания поставим 26. ФНЧ (фильтр низких частот)=9.
При скорости 100 миллисекунд звено запаздывания будет задерживать входной сигнал на две с половиной секунды. Включим ПИД – регулятор и нажмем кнопку старт. У вас запуститься регулирование, кнопками «min», «max» создается ступенчатое воздействие.
pid_15

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

Установим интегральный коэффициент единице и включим интеграл.

pid_16

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

программа регулятора:

pid_fuzzi

Скачать статью в PDF по ссылке
Автор: Шакиров Марат Рифович.

Семь секунд из жизни ПИД регулятора.: 2 комментария

  1. С новым годом! Благодорю,все понятно и разжевано, добавить нечего, спосибо.

Добавить комментарий для Андриевский Олег Антонович Отменить ответ

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