Пропорциональная часть P и остаточная ошибка

Самый простой регулятор: реакция, пропорциональная ошибке.

Пропорциональная составляющая (P) выдаёт воздействие, пропорциональное текущей ошибке: u = Kp·e. Чем дальше от цели — тем сильнее давим.

Идея пропорционального управления

Мы уже интуитивно пользовались P-регулятором в первых уроках. Его правило проще некуда: воздействие пропорционально ошибке. Уставка 60, выход 20 — ошибка 40, давим сильно. Выход подошёл к 58 — ошибка 2, давим слабо. Коэффициент Kp (пропорциональный коэффициент усиления) задаёт, насколько резко регулятор реагирует. Это «рефлекс» системы: увидел отклонение — тут же толкнул в обратную сторону, с силой, пропорциональной отклонению.

u(t) = Kp * e(t),   где e(t) = setpoint - output

Влияние коэффициента Kp

Маленький Kp — регулятор «вялый»: реагирует слабо, выходит на режим медленно, большая остаточная ошибка. Большой Kp — «агрессивный»: быстро подходит, но склонен перелетать цель и колебаться, а за определённой гранью теряет устойчивость (мы это видели в разделе про устойчивость). Поиск хорошего Kp — первый шаг настройки любого регулятора.

# P-регулятор управляет нагревом. Смотрим, как Kp влияет на итог.
def run(Kp):
    C, k, Tamb, dt = 50.0, 2.0, 20.0, 1.0
    setpoint, T = 60.0, 20.0
    for _ in range(80):
        err = setpoint - T
        u = Kp * err
        u = max(0.0, min(400.0, u))    # привод: 0..400 Вт
        T += ((u - k*(T-Tamb))/C)*dt
    return T, setpoint - T

print("Kp    итог.T   остат.ошибка")
for Kp in (1.0, 3.0, 8.0, 20.0):
    T, e = run(Kp)
    print(f"{Kp:4.1f}   {T:6.2f}   {e:8.2f}")

Вывод:

Kp    итог.T   остат.ошибка
 1.0    33.24      26.76
 3.0    43.99      16.01
 8.0    52.00       8.00
20.0    56.36       3.64

Главная беда P-регулятора: остаточная ошибка

Посмотрите на таблицу: даже при большом Kp=20 температура не доходит до 60 — остаётся ошибка 0.8 градуса. Это статическая (остаточная) ошибка, и она неизбежна для чистого P-регулятора. Причина проста и важна: чтобы держать нагреватель включённым (компенсировать потери тепла), регулятору нужно ненулевое воздействие. Но u = Kp·e даёт ненулевое u только при ненулевой ошибке e. Если ошибка станет нулём, воздействие тоже обнулится, нагрев прекратится, температура упадёт. Поэтому система застывает в точке, где маленькая ошибка как раз порождает нужное воздействие.

Как работает под капотом: формула остаточной ошибки

В равновесии нагрев равен потерям: Kp·e = k·(T - Tamb), и одновременно T = setpoint - e. Решая, получаем e = k·(setpoint - Tamb) / (Kp + k). Видно: ошибка падает с ростом Kp, но обращается в ноль только при Kp → бесконечность, что невозможно (устойчивость не позволит). Проверим формулу численно.

k, setpoint, Tamb = 2.0, 60.0, 20.0
print("Kp    ошибка по формуле")
for Kp in (1.0, 3.0, 8.0, 20.0, 100.0):
    e = k*(setpoint - Tamb)/(Kp + k)
    print(f"{Kp:5.0f}   {e:8.3f}")
print("при Kp->inf ошибка -> 0, но это недостижимо")

Вывод:

Kp    ошибка по формуле
    1     26.667
    3     16.000
    8      8.000
   20      3.636
  100      0.784
при Kp->inf ошибка -> 0, но это недостижимо

Формула подтверждает: P-регулятор принципиально не может полностью устранить статическую ошибку. Это фундаментальное ограничение и главная причина, по которой в следующем уроке мы добавим интегральную составляющую.

Пропорциональная зона

В промышленных приборах P-составляющую часто задают не коэффициентом Kp, а зоной пропорциональности (proportional band) в процентах — это обратная величина усиления. Зона 20% означает, что привод проходит от 0 до 100% при изменении ошибки на 20% диапазона; это эквивалентно Kp = 100/20 = 5. Узкая зона = большое усиление = резкий регулятор; широкая зона = мягкий. Знать оба языка полезно: учебники и теория говорят на языке Kp, а наладчики у реальных контроллеров и панелей операторов — на языке процентов зоны. Это одна и та же физика, записанная по-разному, и путаница между ними — частый источник недоразумений при настройке промышленного оборудования.

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

  • Лечить остаточную ошибку ростом Kp. Это лишь уменьшает её, но не убирает, зато добавляет перерегулирование и риск неустойчивости.
  • Забыть про насыщение привода. При большом Kp воздействие упирается в максимум привода, и реальное поведение отличается от расчётного.
  • Перепутать знак. Если u = -Kp·e, регулятор будет усиливать отклонение — система пойдёт вразнос.

Итоги

  • P-регулятор: u = Kp·e, воздействие пропорционально текущей ошибке.
  • Больший Kp ускоряет реакцию, но увеличивает перерегулирование и приближает к неустойчивости.
  • P-регулятор всегда оставляет статическую ошибку — её устраняет интегральная составляющая.
Проверьте себя
1. Какова формула пропорциональной составляющей?
Au = Kp / e
Bu = Kp · e (воздействие пропорционально ошибке)
Cu = Kp · de/dt
Du = Kp · сумма e
2. Почему чистый P-регулятор оставляет статическую ошибку?
AИз-за шума датчика
BЧтобы держать ненулевое воздействие, нужна ненулевая ошибка (u=Kp·e)
CИз-за слишком малого Kp всегда
DИз-за насыщения привода
3. Что произойдёт при чрезмерном увеличении Kp?
AОшибка станет ровно нулём
BРеакция ускорится, но вырастет перерегулирование и появится риск неустойчивости
CПривод выключится
DСистема станет идеальной