Aliasing, transformata Z, dyskretyzacja regulatorów (Euler/Tustin/ZOH), kwantyzacja, wybór T_s, specyfika embedded.
Dlaczego dyskretne, skoro analogowe regulatory istnieją?
Cena: trzeba uważać. Złe próbkowanie wprowadza opóźnienia, zamienia stabilne planty w niestabilne, generuje aliasing. Te artefakty są nieobecne w analizie ciągłej i łatwo je przeoczyć.
Twierdzenie Shannona-Nyquista (1949): sygnał o paśmie da się jednoznacznie odzyskać z próbek wtedy i tylko wtedy gdy:
Próbkowanie wolniejsze powoduje, że częstotliwości powyżej składają się do pasma — to aliasing. Każda częstotliwość powyżej wygląda jak fałszywa , dla .
Sygnał 3 Hz przekracza granicę Nyquista 2.0 Hz. Próbki pasują RÓWNIE DOBRZE do fałszywej sinusoidy 1.0 Hz (czerwona linia). To samo zjawisko: koła samochodu w filmie wyglądające na obracające się wstecz.
Twierdzenie Shannona-Nyquista: aby sygnał o częstotliwości można było jednoznacznie odzyskać z próbek, częstotliwość próbkowania musi spełnić:
Granica nazywa się częstotliwością Nyquista. Sygnały powyżej niej zostają „złożone" — aliasing:
Aliased sygnał 3 Hz przy próbkowaniu 4 Hz to 1.0 Hz — i NIE DA SIĘ ich rozróżnić tylko z próbek. Próbki czerwonej i niebieskiej krzywej są identyczne. To samo zjawisko obserwujemy w:
Konsekwencje w sterowaniu:
Transformata Z jest dla układów dyskretnych tym, czym transformata Laplace'a dla ciągłych. Mapuje sekwencję czasową w funkcję zmiennej zespolonej:
Kluczowa własność: opóźnienie staje się dzieleniem przez z:
Konsekwencja: równania różnicowe stają się algebraiczne, tak jak ODE staje się algebra po Laplace'ie. Plant dyskretny:
W domenie Laplace'a stabilność = bieguny w lewej półpłaszczyźnie (). W domenie Z stabilność = bieguny wewnątrz koła jednostkowego ().
Mapa łączy obie domeny. Lewa półpłaszczyzna s mapuje się na wnętrze koła jednostkowego z — granice stabilności są zgodne.
Odpowiedź częstotliwościowa układu dyskretnego: . Ze względu na okresowość ma okres , czyli pasmo Bode jest ograniczone do = pasmo Nyquista. Powyżej tej granicy odpowiedź się zwija i powtarza — to algebraiczna manifestacja aliasingu.
Najprostsza, ale nie zachowuje stabilności: stabilny biegun w lewej s-półpłaszczyźnie może mapować się POZA koło jednostkowe w z. Bezpieczna tylko dla małych T_s.
Stabilna zawsze (mapa lewa półpłaszczyzna → wnętrze koła), ale wprowadza dodatkowe opóźnienie fazy.
Zachowuje stabilność, dokładniejszy O(T_s²), najczęściej stosowana w przemyśle. Z drobnym efektem zwanym frequency warping: częstotliwości w pobliżu Nyquista są nieliniowo skompresowane.
Dokładny ekwiwalent gdy plant rzeczywiście jest sterowany przez ZOH (typowo w embedded — sygnał u trzymany między próbkami). Wymaga obliczania transformaty Z planta.
Plant: MSD (m=1, c=2, k=4). PID: Kp=8, Ki=4, Kd=2. Skok r=1, czas T=5s. Błąd liczony jako odchylenie od ciągłej implementacji (T_s = 1 ms).
Trzy klasyczne sposoby dyskretyzacji członów PID:
Euler jest najprostszy ale niedokładny — jego mapa s-plane → z-plane to , która nie zachowuje stabilności (bieguny stabilne ciągłe mogą wpaść na zewnątrz koła jednostkowego dla dużych ).
Tustin (bilinear/trapezoidal) używa mapy — zachowuje stabilność i jest dokładniejszy 2. rzędu w T_s. Najczęściej stosowany w praktyce.
ZOH jest dokładnym ekwiwalentem dla planta sterowanego ZOH-em (czyli „typowego" embedded). Dla regulatora obliczeniowo droższy bo wymaga transformaty Z całego planta.
Spróbuj: T_s = 0.005 s — wszystkie 3 metody praktycznie identyczne. T_s = 0.1 s — Euler już widocznie odbiega. T_s = 0.2 s — Euler może wręcz destabilizować pętlę. Tustin trzyma się znacznie lepiej.
Komputer pracuje na liczbach skończonej precyzji:
Reguły kciuka: ADC powinien mieć rozdzielczość co najmniej 10× większą niż wymagana precyzja regulacji. DAC podobnie. Sygnały krytyczne (np. moment silnika) — fixed-point 32-bit lub float64.
Wytyczne projektowe:
T_s powinno być znacznie mniejsze od dominującej stałej czasowej planta:
Dla planta z τ = 1 s (np. silnik DC z bezwładnością) ⇒ T_s ≈ 10–100 ms. Dla planta z τ = 10 ms (szybki silnik) ⇒ T_s ≈ 0.1–1 ms.
T_s wyznaczone przez pożądane pasmo regulatora:
Regulator z pasmem 10 Hz ⇒ f_s ≈ 100 Hz, T_s ≈ 10 ms.
Jeśli szum pomiarowy ma znaczące widmo do f_n, wymagane próbkowanie f_s ≥ 2·f_n (Nyquist). Inaczej szum będzie aliasingowany do pasma roboczego.Anti-aliasing filter analogowyjest często koniecznością — odcina pasma > f_s/2 przed próbkowaniem.
Zwiększenie f_s → szybszy procesor wymagany, więcej przerwań, większy pobór mocy w embedded. Bardzo wysokie f_s (1 MHz dla power electronics) wymagają dedykowanego sprzętu (FPGA, DSP).
Praktyczne pułapki dyskretnej implementacji, na które warto uważać:
Każdy krok regulatora musi zakończyć się przed kolejnym próbkowaniem. Algorytmy o niedeterministycznym czasie (alokacja pamięci, GC, dynamic dispatching) są wykluczone w real-time. Embedded code: statyczna alokacja, brak wskaźników, deterministyczne pętle.
MCU bez FPU (np. Cortex-M0) wykonuje float bardzo wolno. Dla szybkich pętli (PWM 100 kHz) stosuje się Q15 lub Q31 fixed-point. Trzeba uważać na overflow przy akumulacji całek.
Gdy regulator przełącza się między trybami (manual ↔ automatyczny, różne setpointy), integrator musi być bumpless — żadnych skoków u. Klasyczna technika: bumpless transfer z back-calculation albo resetowanie integratora do wartości aktualnego u.
Gdy regulator zawiesza się (bug, freeze procesora), plant musi przejść w stan bezpieczny. Sprzętowy watchdog timer resetuje sterowanie do u = 0 (lub innej bezpiecznej wartości) gdy regulator nie odświeży go w terminie.
Algorytm zaprojektowany w SI musi działać też w jednostkach urządzenia: pozycja w „krokach enkodera", a nie metrach; moment w „PWM duty cycle %", a nie N·m. Stałe konwersji powinny być w jednym miejscu kodu, łatwo wymienne.
Embedded debugging jest trudny: log bufor cykliczny, transmitancja przez UART, semihosting. Logowanie wszystkich istotnych sygnałów (e, u, I, D, y_meas, y_filtered) jest warte początkowej inwestycji.
Pełne traktowanie: Åström & Wittenmark „Computer-Controlled Systems" (3rd ed., 1997) — kanon dyskretnej automatyki. Embedded-specific: Tilbury & Brogan „Adaptive Control for Real-Time Industrial Applications".