Powrót do strony głównej

Regulator PID: modelowanie części P I D

Artykuł demonstruje modelowanie regulatora PID za pomocą symulacji FDTD grzejnika i układu mechanicznego. Analizowane są efekty komponentów P, I, D z przykładami kodu Mathematica. Omówiono eliminację błędu statycznego i optymalizację odpowiedzi.

Jak działa PID: symulacja z kodem i wykresami
Advertisement 728x90

Modelowanie regulatora PID: od podstawowej części proporcjonalnej do pełnego cyklu

Regulator PID generuje sygnał sterujący na podstawie błędu e(t) = wartość zadana - wartość zmierzona. W najprostszym przypadku część proporcjonalna u(t) = K_p * e(t) służy do korygowania odchyleń. Przykładem może być kontrola poziomu wody w zbiorniku: gdy e(t) > 0, zawór otwiera się proporcjonalnie do błędu, ale sygnał jest ograniczony maksymalnym przepływem.

Systemy rzeczywiste charakteryzują się opóźnieniami. Dla grzałki ciepło rozprzestrzenia się zgodnie z równaniem przewodzenia cieplnego ∂w/∂t = Δw + f(x,y,t), gdzie f to źródło nagrzewania. Jest to proces dyfuzji z tłumieniem, podobny do fal z utratą energii.

Symulacja numeryczna przewodzenia cieplnego

Rozwiązanie analityczne równania przewodzenia cieplnego w Mathematica pokazuje ewolucję temperatury:

Google AdInline article slot
sol = NDSolveValue[
  {
    D[w[x, y, t], t] == Laplacian[w[x, y, t], {x, y}] + 
      If[(x + 2)^2 + y^2 < 0.1 && t > 0.0, 100.0, 0],
    w[x, y, 0] == 0
  },
  w,
  {x, y} ∈ Rectangle[{-2, -1}, {2, 1}],
  {t, 0, 10}
];

W punkcie oddalonym od źródła temperatura rośnie z opóźnieniem. Aby symulować sprzężenie zwrotne, przechodzimy do dyskretyzacji metodą FDTD (Finite-Difference Time-Domain).

Podstawowy krok dla równania 2D:

solveHeat[w_, f_, dt_: 0.0025, dx_: 0.1] := Table[
  If[i > 1 && i < 50 && j > 1 && j < 50,
    w[[i, j]] + dt (
      w[[i - 1, j]] + w[[i, j - 1]] - 4 w[[i, j]] + 
      w[[i, j + 1]] + w[[i + 1, j]]
    )/dx^2 + dt f[i, j],
    w[[i, j]]
  ],
  {i, 50}, {j, 50}
];

Warunek stabilności CFL: δt / δx² ≤ 0.25. Symulacja włączania/wyłączania grzałki potwierdza inercyjność systemu.

Google AdInline article slot

Regulator proporcjonalny: stała błąd

Dołączenie regulatora P: heater = K_p * Clip[error, {0, ∞}]. Przy niskiej mocy grzałki temperatura stabilizuje się poniżej wartości zadanej z powodu strat. Zwiększenie K_p nasila drgania, ale stała błąd nadal istnieje.

Wykres pokazuje:

  • Niska moc: powolny wzrost, nie osiągnięcie wartości zadanej.
  • Wysoka moc: drgania bez osiągnięcia celu.

Część całkująca do eliminacji błędu

Całka akumuluje błąd: accError += error; u(t) = K_p error + K_i accError. Pozwala to skompensować stałe straty.

Google AdInline article slot

Przykład z obniżoną mocą:

Module[{w = Table[0., {50}, {50}], accError = 0.0},
  Table[
    With[{error = (0.0022 - w[[25, 25]])},
      {
        heater = 20000.0 Clip[error + 0.001 accError, {0, Infinity}]
      },
      accError += error;
      w = solveHeat[w, Function[{i, j}, If[Max[Abs[{i, j} - {25, 2}]] < 1, heater, 0.0]]];
      {{steps, w[[25, 25]]}, {steps, heater/30000.0}}
    ],
    {steps, 1, 3000}
  ]
];

Temperatura zbliża się do wartości zadanej bez drgań.

Część różniczkująca: przewidywanie drgań

Część D reaguje na szybkość zmiany błędu: u(t) = K_p e + K_i ∫e + K_d * de/dt. Pomaga tłumić przyszłe drgania.

Pełny regulator PID zmniejsza czas narastania, ale wymaga precyzyjnej kalibracji współczynników. Zbyt duża wartość K_d powoduje artefakty.

Porównanie:

  • Tylko P: powolna odpowiedź, błąd.
  • PI: zbieżność, ale możliwe przebije.
  • PID: optymalny czas, minimalne drgania.

Definicja formalna i układ mechaniczny

Pełna formuła: u(t) = K_p e(t) + K_i ∫₀ᵗ e(τ) dτ + K_d de/dt.

Dla ciężaru o masie m: x''(t) = u(t)/m. Różniczkowanie regulatora PID upraszcza: u'(t) = K_i e + K_p e' + K_d e''.

Sprawdzenie bez regulatora: stały u=1 daje x(t) = t²/(2m) — trajektoria paraboliczna.

Z regulatorem P: e(t) = a - x(t) tworzy pętlę zamkniętą. Kalibracja współczynników to proces iteracyjny uwzględniający dynamikę systemu.

Co ważne:

  • Część proporcjonalna zapewnia podstawową reakcję, ale pozostawia stały błąd.
  • Całka usuwa skumulowane odchylenia w systemach inercyjnych.
  • Różniczka przewiduje zmiany, przyspieszając stabilizację.
  • Symulacja FDTD wizualizuje efekty do debugowania.
  • Stabilność wymaga spełnienia warunku CFL oraz ograniczeń na u(t).

— Editorial Team

Advertisement 728x90

Czytaj dalej