ПІД-регулятор: від дрона до термостата
ПІД-регулятор — пропорційно-інтегрально-диференціальний — це найпоширеніший алгоритм керування зі зворотним зв'язком із усіх наявних; за оцінками, він працює у 90% промислових контурів керування та в кожному квадрокоптері. Три складові, кожна з яких усуває окремий режим відмови наївного керування зі зворотним зв'язком.
1. Основи керування зі зворотним зв'язком
Система керування зі зворотним зв'язком порівнює виміряний вихід (керовану величину, PV) із бажаною ціллю (уставкою, SP). Різниця — це похибка e(t) = SP − PV. Регулятор використовує цю похибку, щоб обчислити сигнал керування (вихід), який приводить виконавчий механізм у дію для зменшення похибки.
Приклад: термостат. Уставка = 22°C. Температура в кімнаті = 18°C. Похибка = +4°C. Нагрівач вмикається. Температура зростає. Похибка зменшується. Нагрівач знижує потужність. У стаціонарному стані температура ≈ уставці.
Саме лише наївне пропорційне керування має проблеми: перерегулювання, осциляції та стала похибка в усталеному режимі. Складові I та D усувають їх.
2. Три складові ПІД
3. Рівняння ПІД
де:
u(t) = вихід регулятора (0–100%)
e(t) = уставка − виміряне_значення
Kp = пропорційний коефіцієнт
Ki = інтегральний коефіцієнт
Kd = диференціальний коефіцієнт
Інший запис, через Ti (час інтегрування) і Td (час диференціювання):
4. Що робить кожна складова
Пропорційна (P)
Дає вихід, пропорційний поточній похибці. Якщо Kp замалий, відгук млявий. Якщо Kp завеликий, система осцилює. Сама по собі лише пропорційна (P) ланка завжди має залишкову похибку усталеного режиму: щоб підтримувати теплову віддачу, температура має лишатися нижчою за уставку («зміщення»).
Інтегральна (I)
Накопичує похибку з часом. Навіть невелика стала похибка зростає в інтегральній складовій, збільшуючи керувальну дію, доки похибка не сягне нуля. Це усуває зміщення усталеного режиму. Недолік: інтегральне насичення (windup) — якщо виконавчий механізм насичується (наприклад, нагрівач на 100%), інтеграл продовжує зростати. Коли уставку досягнуто, накопичений інтеграл сильно перерегульовує. Антинасичення обмежує інтеграл.
Диференціальна (D)
Реагує на швидкість зміни похибки, діючи як «гальмо», що передбачає перерегулювання. Якщо похибка швидко зменшується, D знижує керувальну дію. Це різко покращує час встановлення. Проте D підсилює високочастотний шум у вимірюванні — на практиці диференціюйте лише керовану величину (а не похибку), щоб уникнути диференціального стрибка під час змін уставки, і застосовуйте фільтр нижніх частот.
5. Цифрова реалізація
class PIDController {
constructor(kp, ki, kd, dt) {
this.kp = kp; this.ki = ki; this.kd = kd; this.dt = dt;
this.integral = 0;
this.prevError = 0;
this.outMin = -Infinity;
this.outMax = Infinity;
}
update(setpoint, measurement) {
const error = setpoint - measurement;
// Пропорційна
const P = this.kp * error;
// Інтегральна з обмеженням від насичення (anti-windup)
this.integral += error * this.dt;
const I = this.ki * this.integral;
// Диференціальна по вимірюванню (уникає диференціального стрибка)
const D = this.kd * (this.prevError - error) / this.dt;
this.prevError = error;
const output = Math.min(this.outMax,
Math.max(this.outMin, P + I + D));
// Зворотний розрахунок anti-windup: прибираємо надлишок з інтеграла
if (output !== P + I + D) {
this.integral -= error * this.dt; // відкочуємо останній крок інтегрування
}
return output;
}
}6. Методи налаштування
Ціглер-Нікольс
Класичний емпіричний метод: установіть Ki = Kd = 0, збільшуйте Kp, доки система не почне осцилювати зі сталою амплітудою (критичний коефіцієнт Ku, критичний період Tu). Потім задайте: Kp = 0.6Ku, Ki = 2Kp/Tu, Kd = KpTu/8. Часто дає агресивне налаштування — далі доналаштовуйте від цього.
Ручне налаштування
- Установіть Ki = Kd = 0; збільшуйте Kp, доки не отримаєте швидкий відгук із прийнятним перерегулюванням (~10–20%).
- Повільно збільшуйте Ki, доки не усунете похибку усталеного режиму без надмірних осциляцій.
- Додайте Kd, щоб зменшити перерегулювання; тримайте малим, щоб уникнути підсилення шуму.
7. Застосування на практиці
- Дрон (квадрокоптер): 4 незалежні ПІД-контури керують креном, тангажем, рисканням і висотою. Частота оновлення 500–2000 Гц зі зворотним зв'язком від IMU. Типові Kp для кута: 4–8, Ki: 0.02, Kd: 0.1.
- Керування температурою: промислові печі, гарячі кінці 3D-принтерів, ферментери для пивоваріння. Часто лише PI, частота оновлення 0,1–10 Гц.
- Круїз-контроль: вимірює фактичну швидкість автомобіля (з енкодерів коліс), керує дроселем і гальмами для підтримання уставки. Сучасний ACC додає зовнішній контур дотримання дистанції.
- Верстати з ЧПК: кожна вісь має ПІД-сервоконтур, що працює на 1–10 кГц для точного відстеження команд позиціонування.
- Наведення ракет: TVC (керування вектором тяги) регулює кут сопла двигуна за допомогою ПІД-подібних регуляторів для підтримання орієнтації.