Настройка коэффициентов и перерегулирование

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

Перерегулирование (overshoot) — превышение выходом уставки перед тем, как он на ней установится; ключевой показатель качества переходного процесса.

Настройка ПИД — компромисс между скоростью и плавностью. Качественные эффекты коэффициентов:

УвеличитьЭффект
$K_p$быстрее реакция, но больше перерегулирование и колебания
$K_i$убирает остаточную ошибку, но замедляет и может раскачать
$K_d$гасит колебания и перерегулирование, но усиливает шум

Сравним две настройки

Возьмём систему «масса» (двойной интегратор) и сравним «агрессивный» П-регулятор (большой $K_p$, нет $D$) против сбалансированного ПД. Считаем максимальное значение $y$ — индикатор перерегулирования.

def simulate(Kp, Kd, steps=60):
    sp = 1.0
    y, v, prev = 0.0, 0.0, 1.0
    dt = 0.05
    ymax = 0.0
    for _ in range(steps):
        e = sp - y
        deriv = (e - prev) / dt
        u = Kp*e + Kd*deriv
        v += u * dt        # масса: ускорение = u
        y += v * dt
        prev = e
        ymax = max(ymax, y)
    return round(y, 3), round(ymax, 3)

y1, peak1 = simulate(Kp=5.0, Kd=0.0)   # только P, агрессивно
y2, peak2 = simulate(Kp=5.0, Kd=3.0)   # P + D, демпфировано
print("только P:  итог y =", y1, " пик =", peak1)
print("P + D:     итог y =", y2, " пик =", peak2)

Вывод:

только P:  итог y = 0.114  пик = 2.0
P + D:     итог y = 1.004  пик = 1.047

Чистый П-регулятор без демпфирования раскачивает массу — пик $2.0$ (100% перерегулирования), и система не успокаивается, болтаясь вокруг уставки. Добавление $D$ гасит колебания: пик всего $1.047$, выход аккуратно встаёт на $\approx 1.0$.

Как работает под капотом

Для «массы» (нет естественного трения) пропорциональный регулятор ведёт себя как пружина без амортизатора — система превращается в незатухающий осциллятор. Дифференциальный член добавляет «вязкое трение», пропорциональное скорости ошибки, и колебания затухают. Это иллюстрирует, почему для инерционных приводов $D$-член часто обязателен.

Правила настройки

  • Начни с $K_i = K_d = 0$, поднимай $K_p$ до появления лёгких колебаний.
  • Добавь $K_d$, чтобы погасить перерегулирование.
  • Введи $K_i$, чтобы убрать остаточную ошибку, — небольшим, иначе раскачает.
  • Есть и формальные методы (Циглера-Никольса), но «вручную» по этим шагам работает в большинстве учебных задач.

Частые ошибки

  • Гнаться за скоростью большим $K_p$ — получишь звон и перерегулирование.
  • Ставить большой $K_d$ при шумном датчике — управление задёргается.
  • Настраивать на одной рабочей точке и ждать, что подойдёт везде (нелинейные системы).

Итог

  • Перерегулирование — превышение уставки в переходном процессе.
  • $K_p$ ускоряет, но раскачивает; $K_d$ демпфирует; $K_i$ убирает статическую ошибку.
  • Для инерционных систем $D$-член часто необходим, иначе незатухающие колебания.
  • Настройка — пошаговый компромисс между быстротой и устойчивостью.
Проверьте себя
1. Что обычно происходит при чрезмерном увеличении Kp?
AСистема замедляется
BРастёт перерегулирование и появляются колебания
CИсчезает шум
DОшибка перестаёт устраняться
2. Зачем добавляют дифференциальный член D для инерционной (массовой) системы?
AЧтобы ускорить
BЧтобы добавить демпфирование и погасить колебания/перерегулирование
CЧтобы убрать статическую ошибку
DЧтобы усилить шум