Блок PID регулятора
Відеоурок на каналі "Ключ до Ардуїно"
Блок призначений для реалізації функції регулювання PID.
ПІД-регулятор. Принцип роботи
За визначенням, пропорційно-інтегрально-диференціальний регулятор - пристрій у ланцюзі зворотного зв'язку, що використовується в системах автоматичного управління для підтримки заданого значення параметра, що вимірюється.
Найчастіше можна зустріти приклади, де ПІД-регулятор використовується для регулювання температури, і, мій погляд, цей приклад чудово підходить для вивчення теорії та розуміння принципу роботи регулятора.
Тому саме завдання регулювання температури і розглядатимемо.
Отже, що маємо?
По-перше, об'єкт, температуру якого необхідно підтримувати на заданому рівні, крім того цю температуру необхідно регулювати ззовні.
По-друге, наш пристрій на базі мікроконтролера, за допомогою якого ми вирішуватимемо поставлене завдання.
Крім того, у нас є вимірювач температури (він повідомить контролеру поточну температуру) і якийсь пристрій для управління потужністю нагрівача.
Ну і оскільки потрібно якось задавати температуру, підключимо мікроконтролер до ПК.
Таким чином, у нас є вхідні дані – поточна температура та температура, до якої необхідно нагріти/остудити об'єкт, а на виході ми маємо отримати значення потужності, яке необхідно передати на
нагріваючий елемент.
І для такого завдання, та й взагалі будь-якого схожого завдання, відмінним рішенням буде використання пропорційно-інтегрально-диференціального регулятора
І для такого завдання, та й взагалі будь-якого схожого завдання, відмінним рішенням буде використання пропорційно-інтегрально-диференціального регулятора
Пропорційна складова.
Тут все просто, беремо значення потрібної нам температури (уставку) та віднімаємо з нього значення поточної температури.
Отримуємо неузгодженість (нев'язку). Помножуємо отриману нев'язку на коефіцієнт і отримуємо значення потужності, яке передаємо на нагрівач.
Ось і все) Але при використанні тільки пропорційної складової є два великі мінуси – по-перше, ефект від нашої дії настає не миттєво, а із запізненням,
і, по-друге, пропорційна складова не враховує вплив довкілля на об'єкт.
Наприклад, коли ми домоглися того, щоб температури об'єкта дорівнювала потрібному нам значенню, нев'язка стала дорівнює нулю, а разом з нею і потужність, що видається, стала нульовою.
Але температура не може просто залишатися постійною, оскільки відбувається теплообмін з навколишнім середовищем і об'єкт охолоджується.
Таким чином, при використанні тільки пропорційної складової температура коливатиметься біля потрібного нам значення.
Давайте розбиратися, як ПІД-регулятор вирішує дві виявлені проблеми.
Диференційна складова
Для вирішення першої використовується диференційна складова. Вона протидіє ймовірним відхиленням регульованої величини, які можуть статися у майбутньому. Яким чином? Зараз розберемося!
Отже, нехай у нас поточна температура менша за потрібне нам значення. Пропорційна складова починає видавати потужність та нагрівати об'єкт. Диференціальна складова робить свій внесок у потужність і являє собою похідну нев'язки, взяту також з певним коефіцієнтом. Температура зростає і наближається до потрібного значення, а отже нев'язка в попередній момент більша за поточне значення нев'язки, а похідна негативна. Таким чином, диференціальна складова починає поступово знижувати потужність до того, як температура досягла необхідного значення. З цим начебто розібралися, згадуємо про другу проблему регулятора
Отже, нехай у нас поточна температура менша за потрібне нам значення. Пропорційна складова починає видавати потужність та нагрівати об'єкт. Диференціальна складова робить свій внесок у потужність і являє собою похідну нев'язки, взяту також з певним коефіцієнтом. Температура зростає і наближається до потрібного значення, а отже нев'язка в попередній момент більша за поточне значення нев'язки, а похідна негативна. Таким чином, диференціальна складова починає поступово знижувати потужність до того, як температура досягла необхідного значення. З цим начебто розібралися, згадуємо про другу проблему регулятора
Інтегральна складова
А з нею нам допоможе впоратися інтегральна складова. Як нам у програмі отримати інтеграл?
А легко – просто підсумовуванням (накопиченням) значень нев'язки, на те він і інтеграл) Повертаємось до нашого прикладу.
Температура нижче за значення уставки, починаємо підігрівати. Поки ми нагріваємо, значення нев'язки є позитивним і накопичується в інтегральній складовій.
Коли температура “дійшла” потрібного нам значення, пропорційна і диференціальна складова стали рівні нулю, а інтегральна перестала змінюватися, та її значення рівним нулю.
Таким чином, завдяки накопиченому інтегралу, ми продовжуємо видавати потужність і нагрівач підтримує потрібну нам температуру, не даючи об'єкту охолоджуватися. Ось так просто і ефективно =)
У результаті ми отримуємо таку формулу ПІД-регулятора:
У результаті ми отримуємо таку формулу ПІД-регулятора:
Тут u(t) – шуканий вихідний вплив, а e(t) – значення нев'язки.
Часто формулу перетворюють на такий вигляд, але суть від цього не змінюється:
Часто формулу перетворюють на такий вигляд, але суть від цього не змінюється:
Тепер, розглянемо основні методи налаштування та підбору його коефіцієнтів.
Взагалі, за великим рахунком, при використанні ПІД-регулятора необхідно побудувати модель усієї системи в цілому та математично обчислити необхідні значення коефіцієнтів.
Так робити правильно. Але, звичайно, так ніхто не робить. Насправді, математичний розрахунок коефіцієнтів завдання далеко не тривіальне, вимагає глибоких знань теорії автоматичного управління,
тому й використовуються інші, спрощені методи налаштування.
Найчастіше використовується методом налаштування коефіцієнтів є метод Циглера-Нікольса. Полягає він у наступному...
Найчастіше використовується методом налаштування коефіцієнтів є метод Циглера-Нікольса. Полягає він у наступному...
Метод Циглера-Нікольса.
Для початку обнулюємо всі коефіцієнти регулятора (пропорційний, інтегральний та диференціальний)
Поступово починаємо збільшувати пропорційний коефіцієнт і слідкуємо за реакцією системи. При певному значенні виникнуть незатухаючі коливання регульованої величини.
Фіксуємо коефіцієнт K, у якому це сталося. Крім того, вимірюємо період коливань системи T.
Поступово починаємо збільшувати пропорційний коефіцієнт і слідкуємо за реакцією системи. При певному значенні виникнуть незатухаючі коливання регульованої величини.
Фіксуємо коефіцієнт K, у якому це сталося. Крім того, вимірюємо період коливань системи T.
Власне, у цьому практична частина методу закінчується ) З отриманого коефіцієнта K розраховуємо пропорційний коефіцієнт ПІД-регулятора:
А з нього отримуємо й решту:
Метод досить простий, але застосувати його можна не завжди. Якщо чесно, мені ще жодного разу не доводилося налаштовувати регулятор таким чином
Проте, цей метод є основним і, за великим рахунком, єдиним широко відомим. Просто підходить не всім і не завжди.
Що ж робити, якщо метод Циглера-Нікольса не спрацював? Тут прийде на допомогу "аналітичний" спосіб налаштування =)
Знову ж таки обнуляємо всі коефіцієнти і починаємо збільшувати пропорційний. Але тепер не чекаємо появи коливань, а просто фіксуємо поведінку системи для кожного значення коефіцієнта (відмінним варіантом буде побудова графіка величини, яку необхідно стабілізувати, для кожного значення коефіцієнта). Якщо бачимо, що, наприклад, система дуже повільно виходить на потрібне значення, то збільшуємо пропорційний коефіцієнт. Чи система починає сильно коливатися щодо потрібної величини? Значить, коефіцієнт занадто великий, зменшуємо та переходимо до настроювання інших складових.
Розуміючи, як працює ПІД-регулятор в цілому, і уявляючи, як повинна працювати система, що настроюється, можна досить-таки швидко і точно налаштувати коефіцієнти регулятора. Особливо якщо є можливість побудувати графічні залежності і візуально стежити за поведінкою системи.
Ось деякі правила, які можуть допомогти при налаштуванні:
Що ж робити, якщо метод Циглера-Нікольса не спрацював? Тут прийде на допомогу "аналітичний" спосіб налаштування =)
Знову ж таки обнуляємо всі коефіцієнти і починаємо збільшувати пропорційний. Але тепер не чекаємо появи коливань, а просто фіксуємо поведінку системи для кожного значення коефіцієнта (відмінним варіантом буде побудова графіка величини, яку необхідно стабілізувати, для кожного значення коефіцієнта). Якщо бачимо, що, наприклад, система дуже повільно виходить на потрібне значення, то збільшуємо пропорційний коефіцієнт. Чи система починає сильно коливатися щодо потрібної величини? Значить, коефіцієнт занадто великий, зменшуємо та переходимо до настроювання інших складових.
Розуміючи, як працює ПІД-регулятор в цілому, і уявляючи, як повинна працювати система, що настроюється, можна досить-таки швидко і точно налаштувати коефіцієнти регулятора. Особливо якщо є можливість побудувати графічні залежності і візуально стежити за поведінкою системи.
Ось деякі правила, які можуть допомогти при налаштуванні:
Збільшення пропорційного коефіцієнта призводить до збільшення швидкодії, але зниження стійкості системи
Збільшення диференціальної складової також призводить до значного збільшення швидкодії
Диференціальна складова покликана усунути загасаючілебання, що виникають при використанні тільки пропорційної складової
Інтегральна складова повинна усувати залишкову неузгодженість системи при налаштованих пропорційній та диференціальній складових
Збільшення диференціальної складової також призводить до значного збільшення швидкодії
Диференціальна складова покликана усунути загасаючілебання, що виникають при використанні тільки пропорційної складової
Інтегральна складова повинна усувати залишкову неузгодженість системи при налаштованих пропорційній та диференціальній складових
До речі, варто додати, що не завжди необхідно використовувати всі три складові ПІД-регулятора, часом вистачає пропорційною та диференціальною, наприклад (ПД-регулятор).
Загалом все зводиться до того, що для кожної системи необхідний свій власний підхід при налаштуванні та використанні ПІД-регулятора.
Джерело
Параметри регулятора задаються у налаштуваннях блоку
“Вхід En” – При встановленні цього чек боксу у блоку створюється вхід “En”. За наявності на цьому вході високого логічного рівня блок працює у нормальному режимі,
за відсутності – на виході блоку значення, що відповідає поданому на вхід “SDV”.
Напрямок регулювання
“Пряме регулювання” – при виборі цього режиму реалізується режим, при якому якщо значення параметра більше уставки – відбувається зменшення сигналу на виході, а якщо значення параметра менше
сигналу - Збільшення сигналу на виході. Найчастіше застосування – регулювання температури під час нагрівання – управління нагрівачем.
“Зворотне регулювання” – при виборі цього режиму реалізується режим, коли значення параметра більше уставки – відбувається збільшення сигналу на виході, і якщо значення параметра менше сигналу - Зменшення сигналу на виході. Найчастіше застосування - регулювання температури при охолодженні - управління охолоджувачем (наприклад, кондиціонером).
"Вхід" - при виборі цього пункту блок буде сформований вхід "Dir". Високий логічний рівень на ньому ініціює прямий режим регулювання, низький зворотний.
“Зворотне регулювання” – при виборі цього режиму реалізується режим, коли значення параметра більше уставки – відбувається збільшення сигналу на виході, і якщо значення параметра менше сигналу - Зменшення сигналу на виході. Найчастіше застосування - регулювання температури при охолодженні - управління охолоджувачем (наприклад, кондиціонером).
"Вхід" - при виборі цього пункту блок буде сформований вхід "Dir". Високий логічний рівень на ньому ініціює прямий режим регулювання, низький зворотний.
Параметри.
При виборі пункту Вхід у блоку сформуються входи:
“Time” – цей вхід подається час регулювання (у мілісекундах).
"Кр" - пропорційний коефіцієнт.
"Ki" - інтегральний коефіцієнт.
"Kd" - Диференціальний коефіцієнт.
При виборі пункту “Константи” наведені вище параметри задаються у вигляді констант.
“Time” – цей вхід подається час регулювання (у мілісекундах).
"Кр" - пропорційний коефіцієнт.
"Ki" - інтегральний коефіцієнт.
"Kd" - Диференціальний коефіцієнт.
При виборі пункту “Константи” наведені вище параметри задаються у вигляді констант.
Вихід - "Аналогове управління"
При виборі цього режиму вихід блоку має цифровий тип і на ньому є аналогове значення регулювання. У налаштуваннях вихідного значення в цьому випадку визначається:
"Від:" - значення на виході при 0% регулювання.
"До" - значення на виході при 100% регулювання.
"Від:" - значення на виході при 0% регулювання.
"До" - значення на виході при 100% регулювання.
Вихід - "Релейне управління"
При виборі цього режиму вихід блоку має боолево тип і на ньому реалізується "Довгий ШИМ". У налаштуваннях вихідного значення в цьому випадку визначається:
"Від:" - тривалість імпульсу при 0% регулювання в мілісекундах.
"До" - Загальна тривалість періоду ШІМ в мілісекундах.
"Від:" - тривалість імпульсу при 0% регулювання в мілісекундах.
"До" - Загальна тривалість періоду ШІМ в мілісекундах.