PID lek na wszystko

Regulator PID – fundament automatyki przemysłowej

Regulator PID (Proporcjonalno-Całkująco-Różniczkujący) to najbardziej popularny algorytm sterowania w automatyce przemysłowej i budynkowej. Stosowany od lat 40. XX wieku, wciąż stanowi podstawę ponad 95% pętli regulacyjnych na świecie.

Thank you for reading this post, don't forget to subscribe!

Czym jest regulator PID?

Regulator PID to algorytm, który ciągle koryguje wartość sterującą na podstawie różnicy między wartością zadaną (setpoint) a wartością rzeczywistą (process value). Składa się z trzech członów:

  • P (Proporcjonalny) – reaguje proporcjonalnie do aktualnego błędu
  • I (Całkujący) – eliminuje błąd ustalony, uwzględnia historię błędu
  • D (Różniczkujący) – przewiduje przyszłe zmiany, reaguje na tempo zmian

Matematyczny opis regulatora PID

Wyjście regulatora PID w postaci ciągłej opisuje wzór:

 u(t) = K_p \cdot e(t) + K_i \cdot \int_0^t e(\tau) \, d\tau + K_d \cdot \frac{de(t)}{dt} gdzie: u(t) – sygnał sterujący e(t) – uchyb regulacji (setpoint – process value) K_p – wzmocnienie proporcjonalne K_i – wzmocnienie całkujące K_d – wzmocnienie różniczkujące

W praktyce, w sterownikach cyfrowych (PLC) wykorzystuje się postać dyskretną:

 u_n = K_p \cdot e_n + K_i \cdot T_s \sum_{k=0}^{n} e_k + K_d \cdot \frac{e_n - e_{n-1}}{T_s} gdzie T_s to czas próbkowania

Działanie poszczególnych członów

Człon P (Proporcjonalny)

  • Wzór: u_P = K_p × e
  • Charakterystyka: Szybka reakcja, ale pozostawia błąd ustalony
  • Zastosowanie: Podstawa każdego regulatora
  • Wady: Nie eliminuje błędu ustalonego całkowicie

Człon I (Całkujący)

  • Wzór: u_I = K_i × ∫e dt
  • Charakterystyka: Eliminuje błąd ustalony, „pamięta” przeszłość
  • Zastosowanie: Niezbędny przy regulacji procesów z dryftem
  • Wady: Może powodować przeregulowanie (overshoot), windup

Człon D (Różniczkujący)

  • Wzór: u_D = K_d × de/dt
  • Charakterystyka: „Przewiduje” zmiany, tłumi oscylacje
  • Zastosowanie: Poprawia stabilność, skraca czas regulacji
  • Wady: Wrażliwy na szumy pomiarowe

Praktyczne zastosowania PID

1. Regulacja temperatury (HVAC)

Przykład: Regulacja temperatury w pomieszczeniu

Setpoint: 22°C
Czujnik: PT1000 (0.1°C rozdzielczość)
Aktuator: Siłownik zaworu 0-10V

Nastawy PID:
Kp = 5.0
Ti = 180s (czas zdwojenia)
Td = 30s (czas wyprzedzenia)

Wynik: 
- Czas regulacji: ~10 minut
- Przeregulowanie: <0.5°C
- Błąd ustalony: 0°C

2. Regulacja ciśnienia w instalacji wody

  • Przetwornik ciśnienia 0-10 bar (4-20mA)
  • Przemiennik częstotliwości (VFD) sterujący pompą
  • Regulator PID utrzymuje stałe ciśnienie niezależnie od poboru

3. Regulacja poziomu w zbiorniku

  • Czujnik ultradźwiękowy lub hydrostatyczny
  • Zawór regulacyjny lub pompa dozująca
  • Utrzymanie zadanego poziomu cieczy

Strojenie regulatora PID

Strojenie (tuning) PID to proces doboru optymalnych wartości K_p, K_i, K_d. Najpopularniejsze metody:

Metoda Zieglera-Nicholsa (oscylacyjna)

  1. Wyłącz człony I i D (zostaw tylko P)
  2. Zwiększaj K_p aż układ zacznie oscylować ze stałą amplitudą
  3. Odczytaj K_kr (wzmocnienie krytyczne) i T_kr (okres oscylacji)
  4. Oblicz nastawy według tabeli:
Typ regulatoraK_pT_iT_d
P0.5 × K_kr--
PI0.45 × K_kr0.83 × T_kr-
PID0.6 × K_kr0.5 × T_kr0.125 × T_kr

Metoda odpowiedzi skokowej

  1. Przełącz regulator w tryb ręczny
  2. Wprowadź skok sterowania (np. 50%)
  3. Zapisz odpowiedź procesu (krzywą reakcji)
  4. Wyznacz parametry: opóźnienie, stałą czasową, wzmocnienie
  5. Użyj wzorów Cohen-Coon lub CHR

Problemy i ich rozwiązania

Integrator windup

Problem: Przy długotrwałym błędzie człon całkujący "nabiera" dużej wartości, powodując przeregulowanie.

Rozwiązanie: Anti-windup – ograniczenie całki lub Back-calculation

if (u > u_max) {
    integral = integral_previous; // zamrożenie całki
    u = u_max;
}

Derivative kick

Problem: Nagła zmiana setpoint powoduje skok członu D.

Rozwiązanie: Różniczkowanie wyjścia zamiast błędu:

// Zamiast: u_D = Kd * d(error)/dt
// Użyj: u_D = -Kd * d(PV)/dt

Implementacja PID w PLC (SCL/Structured Text)

FUNCTION_BLOCK FB_PID
VAR_INPUT
    setpoint : REAL;
    process_value : REAL;
    Kp : REAL := 1.0;
    Ti : REAL := 10.0;  // czas zdwojenia [s]
    Td : REAL := 0.0;   // czas wyprzedzenia [s]
    Ts : REAL := 0.1;   // czas cyklu [s]
END_VAR

VAR
    error : REAL;
    integral : REAL := 0.0;
    derivative : REAL;
    error_prev : REAL := 0.0;
END_VAR

VAR_OUTPUT
    output : REAL;
END_VAR

// Oblicz błąd
error := setpoint - process_value;

// Człon P
output := Kp * error;

// Człon I (z anti-windup)
IF Ti > 0 THEN
    integral := integral + error * Ts;
    output := output + (Kp / Ti) * integral;
END_IF;

// Człon D (filtrowany)
IF Td > 0 THEN
    derivative := (error - error_prev) / Ts;
    output := output + Kp * Td * derivative;
END_IF;

// Ograniczenie wyjścia
IF output > 100.0 THEN output := 100.0; END_IF;
IF output < 0.0 THEN output := 0.0; END_IF;

// Zapisz poprzednią wartość
error_prev := error;

Kiedy NIE używać PID?

PID nie jest lekiem na wszystko. W niektórych przypadkach lepsze są inne algorytmy:

  • Procesy nieliniowe → Regulacja adaptacyjna, Gain Scheduling
  • Duże opóźnienia → Smith Predictor, MPC (Model Predictive Control)
  • Procesy niestacjonarne → Regulacja rozmyta (Fuzzy Logic)
  • Układy wielowymiarowe (MIMO) → MPC, LQR

Podsumowanie

Regulator PID to najprostszy i najskuteczniejszy algorytm sterowania dla większości procesów przemysłowych. Kluczem do sukcesu jest:

  • Właściwe strojenie nastaw
  • Zrozumienie dynamiki procesu
  • Implementacja zabezpieczeń (anti-windup, ograniczenia)
  • Dobór odpowiedniego czasu próbkowania

Mimo rozwoju zaawansowanych metod sterowania (MPC, AI), PID pozostaje fundamentem automatyki i będzie stosowany jeszcze przez kolejne dekady.