Пропорциональная часть 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-регулятор всегда оставляет статическую ошибку — её устраняет интегральная составляющая.