Пропорциональная часть P и остаточная ошибка
Самый простой регулятор: реакция, пропорциональная ошибке.
Пропорциональная составляющая (P) выдаёт воздействие, пропорциональное текущей ошибке: $u = K_p e$. Чем дальше от цели — тем сильнее давим.
Идея пропорционального управления
Мы уже интуитивно пользовались P-регулятором в первых уроках. Его правило проще некуда: воздействие пропорционально ошибке. Уставка 60, выход 20 — ошибка 40, давим сильно. Выход подошёл к 58 — ошибка 2, давим слабо. Коэффициент $K_p$ (пропорциональный коэффициент усиления) задаёт, насколько резко регулятор реагирует. Это «рефлекс» системы: увидел отклонение — тут же толкнул в обратную сторону, с силой, пропорциональной отклонению.
u(t) = Kp * e(t), где e(t) = setpoint - outputВлияние коэффициента Kp
Маленький $K_p$ — регулятор «вялый»: реагирует слабо, выходит на режим медленно, большая остаточная ошибка. Большой $K_p$ — «агрессивный»: быстро подходит, но склонен перелетать цель и колебаться, а за определённой гранью теряет устойчивость (мы это видели в разделе про устойчивость). Поиск хорошего $K_p$ — первый шаг настройки любого регулятора.
# 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 = K_p e$ даёт ненулевое $u$ только при ненулевой ошибке $e$. Если ошибка станет нулём, воздействие тоже обнулится, нагрев прекратится, температура упадёт. Поэтому система застывает в точке, где маленькая ошибка как раз порождает нужное воздействие.
Как работает под капотом: формула остаточной ошибки
В равновесии нагрев равен потерям: $K_p e = k (T - T_{amb})$, и одновременно $T = \text{setpoint} - e$. Решая, получаем $e = \dfrac{k (\text{setpoint} - T_{amb})}{K_p + k}$. Видно: ошибка падает с ростом $K_p$, но обращается в ноль только при $K_p \to \infty$, что невозможно (устойчивость не позволит). Проверим формулу численно.
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-составляющую часто задают не коэффициентом $K_p$, а зоной пропорциональности (proportional band) в процентах — это обратная величина усиления. Зона 20% означает, что привод проходит от 0 до 100% при изменении ошибки на 20% диапазона; это эквивалентно $K_p = 100/20 = 5$. Узкая зона = большое усиление = резкий регулятор; широкая зона = мягкий. Знать оба языка полезно: учебники и теория говорят на языке $K_p$, а наладчики у реальных контроллеров и панелей операторов — на языке процентов зоны. Это одна и та же физика, записанная по-разному, и путаница между ними — частый источник недоразумений при настройке промышленного оборудования.
Частые ошибки
- Лечить остаточную ошибку ростом $K_p$. Это лишь уменьшает её, но не убирает, зато добавляет перерегулирование и риск неустойчивости.
- Забыть про насыщение привода. При большом $K_p$ воздействие упирается в максимум привода, и реальное поведение отличается от расчётного.
- Перепутать знак. Если $u = -K_p e$, регулятор будет усиливать отклонение — система пойдёт вразнос.
Итоги
- P-регулятор: $u = K_p e$, воздействие пропорционально текущей ошибке.
- Больший $K_p$ ускоряет реакцию, но увеличивает перерегулирование и приближает к неустойчивости.
- P-регулятор всегда оставляет статическую ошибку — её устраняет интегральная составляющая.