Moduł 15 · analiza

MIMO

Sprzężenie wejść-wyjść, RGA, decoupling, SVD, condition number, decentralized control, distributed MPC.

1. Po co MIMO — gdy SISO zawodzi

Analogia. Wyobraź sobie dwa krany w wannie — ciepły i zimny — sterujące razem temperaturą i przepływem. Otwierasz ciepły mocniej — temperatura rośnie ALE przepływ też. Klasyczne PID dla temperatury i osobne dla przepływu trafiają w spiralę: jeden kran obraca się dla T, drugi dla Q, ale oba zmieniają oba parametry jednocześnie. MIMO rozpoznaje to sprzężenie i je rozplątuje.

SISO (Single Input, Single Output): jedno sterowanie, jedno wyjście. Niemal cały kurs do tej pory: regulator PID dla MSD (siła → pozycja), SMC dla cart-pole (z trickiem full-state).

MIMO (Multi Input, Multi Output): m sterowań, p wyjść, każde sterowanie może wpływać na każde wyjście. Klasyczna postać transmitancji:

Y(s)=G(s)U(s),G(s)Cp×mY(s) = G(s) U(s), \quad G(s) \in \mathbb{C}^{p \times m}

Macierz transmitancji G(s)G(s) ma element Gij(s)G_{ij}(s) opisujący wpływ uju_j na yiy_i.

Przykłady industrial MIMO:

  • Manipulator robotyczny — 6 momentów silników, 6 wyjść (pozycje przegubów). Pełna macierz dynamiki sprzężona przez Coriolisa i grawitację.
  • Quadrotor — 4 silniki, 6 stopni swobody (3D pozycja + 3D orientacja). Underactuated.
  • Destylacja — 2 sterowania (przepływ refluksu, podgrzewanie), 2 wyjścia (czystość góry i dołu kolumny). Klasyczny problem MIMO procesowy.
  • HVAC — wiele zasłon, wiele temperatur w budynku. Centralne MIMO MPC.

2. Sprzężenie wejść/wyjść — wizualizacja

Najprostszy MIMO — 2×2 plant z parametrycznym sprzężeniem α:

x˙1=x1+u1+αu2,x˙2=x2+αu1+u2\dot x_1 = -x_1 + u_1 + \alpha u_2, \quad \dot x_2 = -x_2 + \alpha u_1 + u_2

Dla α=0\alpha = 0 mamy dwa niezależne układy SISO — dwa PID per oś działają jak należy. Dla α>0\alpha > 0 wejście u_1 wpływa też na y_2 (i odwrotnie) — klasyczne PID per oś prowadzi do interakcji.

współczynnik sprzężenia α

α (cross-coupling)0.70
RGA (Relative Gain Array)
RGA₁₁ = RGA₂₂1.961RGA₁₂ = RGA₂₁-0.961parowanieu₁→y₁, u₂→y₂ OK

RGA > 1 = sprzężenie wzmacnia. Im większe (przy α → 1), tym trudniejsza regulacja klasycznym PID per oś. Decoupling wymaga inwersji macierzy gain.

-0.50.130.751.38201.63.24.86.48r₁ (cel)y₁ — niezależne PID (sprzężone)y₁ — z decouplingt [s]y₁-0.50.130.751.38201.63.24.86.48r₂ (cel)y₂ — niezależne PIDy₂ — z decouplingt [s]y₂

MIMO 2×2 z cross-coupling α: sterowanie u_2 wpływa nie tylko na y_2, ale też na y_1 (przez α). Klasyczne PID per oś tego nie wie — gdy reguluje y_2, „rozregulowuje" y_1, regulator y_1 musi to skompensować, co dalej zaburza y_2. Spirala.

Decoupling: pre-compensator D=K1\mathbf{D} = \mathbf{K}^{-1} przekształca wyjście regulatora niezależnego (u_ctl) w sterowanie planta (u) tak, że efektywnie układ widziany przez regulatora jest diagonalny.

u=Ductl,DK=I    y=Ku=KK1uctl=uctl.u = D\,u_{ctl}, \quad D \cdot K = I \;\Rightarrow\; y = K\, u = K \cdot K^{-1}\, u_{ctl} = u_{ctl}.

RGA (Bristol 1966):

Λij=Kij(K1)ji\Lambda_{ij} = K_{ij} \cdot (K^{-1})_{ji}

RGA mówi: w której konfiguracji parowania wejście-wyjście klasyczne SISO PID działa najlepiej. Diagonalne RGA bliskie 1 = dobre parowanie. Bliskie 0 = błędne parowanie, trzeba zmienić. Ujemne = niestabilność (sprzężenie odwrotne).

Spróbuj: α = 0.1 — sprzężenie znikome, niezależne PID radzi sobie świetnie. α = 0.9 — silne sprzężenie, PID per oś dziko oscyluje, decoupling daje czyste odpowiedzi. α = 1 — singularność (det = 0), decoupling matrix nie istnieje, plant ma 0-stopień sterowności (uderzenie tylko w jeden wymiar ich sumy).

3. Relative Gain Array (RGA)

Analogia. RGA odpowiada na pytanie: które wejście najlepiej parować z którym wyjściem? Dla 2-wymiarowego problemu — kran ciepły z temperaturą, zimny z przepływem? Albo odwrotnie? RGA daje liczbowo odpowiedź — najwyższe pozycje na diagonalnej wskazują właściwe parowanie.

Definicja (Bristol 1966)

Niech K=G(0)K = G(0) = macierz wzmocnień DC. RGA to macierz Λ\Lambda o elementach:

Λij=Kij(K1)ji\Lambda_{ij} = K_{ij} \cdot (K^{-1})_{ji}

Suma w każdym wierszu i kolumnie = 1 (jeśli K niesingularna). RGA jest niezmiennikiem względem skalowania wejść i wyjść — czyste „relatywne" wzmocnienia.

Interpretacja

  • Λij=1\Lambda_{ij} = 1 — pełna niezależność, parowanie i↔j ideałem dla niezależnego regulatora SISO.
  • Λij=0\Lambda_{ij} = 0 — pełne sprzężenie, nie parować i↔j, sterowanie j i tak nie ma wpływu DC na wyjście i (po efekcie pętli zamkniętej).
  • Λij>1\Lambda_{ij} > 1 — sterowanie j wzmacnia y_i pod warunkiem że pozostałe wyjścia są trzymane stałe. Większa wartość = bardziej trudne praktycznie do regulacji.
  • Λij<0\Lambda_{ij} < 0 — sygnał obraca się w pętli zamkniętej. Wybór tego parowania prowadzi do niestabilności po awarii innych pętli.

Reguła parowania

Wybierz parowanie tak, by diagonalne RGA były jak najbliższe 1. Jeśli żadne parowanie tego nie spełnia (np. wszystkie diagonalne < 0.5), system jest silnie sprzężony — klasyczny SISO niewystarczy, trzeba MIMO z decoupling lub centralnej syntezy.

4. Decoupling — pre-compensator

Idea: jeśli plant ma macierz wzmocnień KK z sprzężeniem, dodaj pre-compensator D=K1D = K^{-1}. Wtedy efektywny plant widziany przez regulator to:

y=Ku=K(Ductl)=KK1uctl=uctly = K\, u = K\, (D\, u_{ctl}) = K\, K^{-1}\, u_{ctl} = u_{ctl}

Czyli identyczność — każde wyjście niezależne. Niezależne regulatory PID per oś mogą działać.

Statyczne vs dynamiczne

Powyższy schemat działa idealnie tylko w DC (kompensuje statyczne wzmocnienia). Dla pełnej dyskoplowanej odpowiedzi częstotliwościowej trzeba dynamicznego D(s)=G(s)1D(s) = G(s)^{-1}. Pułapka: G1G^{-1} może być niefizyczne (improper) albo zawierać non-minimum phase zera — wtedy nieimplementowalne.

Inne podejścia

  • Singular Value Decomposition (SVD) — rozkład K=UΣVTK = U\Sigma V^T, kontroler w nowych współrzędnych u~=VTu\tilde u = V^T u, y~=UTy\tilde y = U^T y — diagonalna dynamika.
  • Centralna synteza — LQR/MPC bezpośrednio dla macierzowego (A, B). Optymalna w sensie kosztu.
  • Sequential loop closing — zamykaj jedną pętlę na raz, dostraj, potem następną. Klasyka procesowa.

5. SVD i kierunki krytyczne

SVD macierzy wzmocnień K daje:

K=UΣVT,Σ=diag(σ1,σ2,)K = U\,\Sigma\,V^T, \quad \Sigma = \mathrm{diag}(\sigma_1, \sigma_2, \ldots)

Wartości singularne σi\sigma_i mówią jak dużo gain ma plant w kierunku viv_i. Kolumny VV = kierunki w przestrzeni wejść, kolumny UU = kierunki w przestrzeni wyjść.

Condition number

κ(K)=σmax/σmin\kappa(K) = \sigma_{max}/\sigma_{min}

Większa wartość = plant „chory" w jakimś kierunku. Małe sterowanie w kierunku vminv_{min} daje znikomy efekt na wyjściu — kierunki słabo sterowalne. Duże κ\kappa = sterowanie wymaga znaczącej energii w niektórych kierunkach, robust margin maleje.

Reguła ostrzeżenia

κ>100\kappa > 100 = plant z poważnym problemem kierunkowości. Klasyczny SISO bez decoupling zawodzi. κ>104\kappa > 10^4 = praktycznie nieregulowalny klasycznymi metodami.

6. Decentralized control

Dla dużych systemów z setkami zmiennych (rafineria, sieć energetyczna) centralny MIMO MPC staje się obliczeniowo niewykonalny. Decentralized control: dzielimy system na podukłady (np. 10×10 zamiast jednego 100×100), na każdy lokalny regulator. Krytyczne pytania:

  • Jak podzielić? — minimalizuj sprzężenia między podgrupami. RGA pomaga zidentyfikować klastry.
  • Co komunikować? — pełen state share (drogo) lub tylko setpoints (tanio, gorsze).
  • Jak gwarantować stabilność? — twierdzenia o grupach Lyapunova dla połączonych podsystemów (małe gain warunki).

Distributed MPC

Rozszerzenie: każdy podukład rozwiązuje własne MPC, ale komunikuje przewidywanie z sąsiadami. Iteracyjnie zbliżają się do centralnej optimum przez consensus-based optimization. Aktywny obszar badawczy (Maestre 2014, Negenborn 2010).

Lektura: Skogestad & Postlethwaite „Multivariable Feedback Control" rozdz. 3 — RGA, SVD, decoupling. Maciejowski „Predictive Control with Constraints" rozdz. 5 — MIMO MPC.

Co świadomie pomijam

  • μ-analysis — strukturalna niepewność dla MIMO (uogólnienie H∞).
  • Network-aware MIMO — sterowanie z ograniczonym pasmem komunikacji, opóźnienia różne dla różnych kanałów.
  • MIMO frequency-domain design — pełna teoria loop shaping w wielu wymiarach (singular value loop shaping).