Зворотний контроль в одне речення
Кожен закритий контур виконує одну й ту ж роботу: вимірює змінну процесу (ZP), порівнює її з заданим значенням (ЗВ) і перетворює отриману помилку e(t) = ЗВ − ZP на сигнал керування, який приводить актуатор до нуля помилки. Термостат, встановлений на 22°C у кімнаті на 18°C, бачить e = +4°C, вмикає обігрів, спостерігає, як помилка зменшується, і відключається, коли вона наближається до нуля. PID-керівник — Пропорційно-Зростаючий-Розрахунковий — є просто найперевіренішим способом перетворення цієї помилки на вихід, який оцінюється приблизно в 90% промислових контурів керування та кожного споживчого квадрокоптика.
Рівняння та що кожний член виправляє
Вихід контролера є зваженою сумою поточної помилки, її накопищеної історії та її швидкості зміни:
u(t) = Kp·e(t) + Ki·∫e(τ)dτ + Kd·(de/dt) u(t) = вихід контролера Kp = пропорційна константа e(t) = задане значення – виміряне значення Ki = інтегральна константа Kd = похідна константа Пропорційне (P) реагує на помилку, як вона є зараз — більша помилка, більший коригування. Занадто низький Kp призводить до повільної реакції; занадто високий Kp призводить до перекосу та коливань циклу. Використовується самостійно, P-контроль завжди залишає залишковий постійний збіг: нагрівач повинен перебувати на певному невеликому виході лише для протидії постійним втратам тепла, і єдиний спосіб, щоб чиста P-закон підтримував невеликий постійний збіг, це підтримувати невелику постійну помилку в житті.
Інтегральне (I) сумує помилку з часом, тому навіть невелика постійна відхилення робить виправлення більшим до нуля — це те, що повністю видаляє відхилення лише P-закону. Вартість - роздуття: якщо виконавчий механізм перевантажений (нагрівач закріплений на 100%), інтеграл продовжує накопичувати помилку, і рослина не може діяти, і коли змінна процесу нарешті наздоганяє, цей надмірний інтегральний перекос сильно перевищує перед тим, як він розмотається.
Похідне (D) дивиться на те, як швидко змінюється помилка, і застосовує гальма до того, як досягнуто задане значення — якщо помилка швидко зменшується, D витягує вихід назад вниз проактивно, зменшуючи перекос та час встановлення. Його слабкість полягає в тому, що диференціювання посилює шум: неточний датчик створює величезний миттєвий нахил, тому D зазвичай обчислюється для виміряної змінної процесу (щоб уникнути "диференційного удару" при зміні заданих значень) і проходить через низькочастотний фільтр.
u(t) = Kp·e(t) + Ki·∫e(τ)dτ + Kd·(de/dt)
u(t) = controller output Kp = proportional gain
e(t) = setpoint − measured_value Ki = integral gain
Kd = derivative gain
Мінімальна цифрова реалізація
Розділяючи час на фіксований крок dt, з використанням анти-віндлуп клапанного механізму та похідної з вимірювання, PID цикл займає всього близько двадцять рядків JavaScript:
update(setpoint, measurement) {
const error = setpoint - measurement;
const P = this.kp * error;
this.integral += error * this.dt; // accumulate
const I = this.ki * this.integral;
const D = this.kd * (this.prevError - error) / this.dt;
this.prevError = error;
const raw = P + I + D;
const output = clamp(raw, this.outMin, this.outMax);
if (output !== raw) this.integral -= error * this.dt; // anti-windup
return output;
}
Налаштування: Метод Ziegler-Nichols та ручний метод
Класична емпірична формула, опублікована Зіглер і Нікольсом у 1942 році, встановлює Ki = Kd = 0 і підвищує Kp доти, поки петля не підтримуватиме постійну амплітуду коливання — граничний коефіцієнт зворотного зв’язку Ku з відповідним періодом Tu. З цих двох чисел:
Kp = 0.6 · Ku Ki = 2 · Kp / Tu Kd = Kp · Tu / 8 Цей метод часто агресивний, тому більшість інженерів використовують його як відправну точку, а не як остаточну відповідь. Ручний альтернативний метод також дуже поширений: підвищуйте Kp доти, поки реакція буде швидкою з прийнятним перебільшенням (приблизно 10–20%), поступово додавайте Ki доти, поки відхилення у стазійному режимі зникне без надмірного гуртування, а потім додайте невелике Kd лише якщо перебільшення ще потребує коригування. Багато промислових кіл — печі, кінцеві частини 3D-принтерів, ферментери — працюють тільки на основі PI, оскільки шумні датчики роблять похідний член більш проблематичним, ніж корисним; дрони та петлі керування сервомоторами CNC, які працюють з частотою 500–2000 Гц із чистою IMU або зворотним зв’язком енкодера, використовують усі три терміни.
Kp = 0.6 · Ku Ki = 2 · Kp / Tu Kd = Kp · Tu / 8
Frequently asked questions
Чому лише пропорційний контроль завжди залишає сталу похибку?
Вихід лише пропорційного контролера дорівнює u = Kp·e, тому що коли помилка досягає нуля, вихід також падає до нуля — але багато процесів (наприклад, нагрівач, який бореться з тепловтратами, або двигун, який бореться з тертям) потребують невід’ємного постійного виходу лише для утримання положення. Єдиний спосіб пропорційному контролеру забезпечити такий вихід — підтримувати невелику постійну похибку, оскільки вихід повинен залишатися вище нуля. Збільшення Kp зменшує цей зсув, але ніколи його не усуває і наближає ланцюг до коливань.
Що таке інтегральний обдув та чому він небезпечний?
Інтегральний член накопичує помилку навіть після того, як виконавчий механізм наситився (нагрівач вже на 100%, двигун вже на повній тязі), оскільки фізичний вихід більше не може збільшуватися, навіть якщо математична помилка продовжує сумуватися. Коли процес нарешті досягає заданого значення, надмірно накопичена інтегральна похибка змушує додатково збільшувати вихід, спричиняючи великий перекос перед тим, як вона розмотається. Анти-обдув обмежує інтегральний член (або зворотньо обчислює його), коли вихід насичується, щоб він не ростав, коли виконавчий механізм вже не може діяти на ньому.
Чому термін похідної посилює шум датчика та як він фільтрується в практиці?
Похідний ефект дорівнює Kd·(de/dt), а диференціювання посилює високочастотний вміст — коли датчик коливається на міліметр між зразками, це створює величезний миттєвий нахил після ділення на малий dt. На практиці інженери диференціюють вимірювану змінну процесу замість помилки (видаляючи "поштовх від точки установки", який інакше спричинив би б ступінчасте перемикання точки установки), а потім пропускають її через низькочастотний фільтр або просто встановлюють Kd = 0 для шумних промислових датчиків і приймають трохи повільніший час сходитися.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію the simulation