Pierwszorzędna instalacja z zakłóceniem, którego nikt nie prosił
Dynamika pionowa pojazdu, w celach sterowania tempem, redukuje się do jednego prostego równania siłowego: masa razy przyspieszenie jest równe ciągu silnika pomniejszonemu o opór aerodynamiczny oraz sile grawitacji działającej na stok.
m v̇ = F_engine(u) - c·v² - m g sin(θ_hill) Opór sprawia, że to zjawisko jest nieznacznie nieliniowe, ale istotnym faktorem dla projektanta sterownika jest prostsza struktura: termin związany ze stokiem stanowi nieodmierzalne zakłócenie wprowadzane do tego samego równania co wejście sterujące. Sterownik, który nie uwzględnia go wyraźnie, ogólnie ustabilizuje się na pewnym błędzie prędkości, gdy θ_hill ≠ 0 — a jak duży ten błąd zależy całkowicie od wybranego sterownika.
m v̇ = F_engine(u) - c·v² - m g sin(θ_hill)
Dlaczego tylko sterowanie proporcjonalne nie wystarcza na wzniesieniu
Czysty regulator proporcjonalny ustawia obroty z błędu prędkości: u = Kp·(v_set - v). Na płaskim terenie konwerguje do pewnego punktu roboczego. Dodając wzniesienie, w stanie ustalonym samochód potrzebuje niezerowych obrotów, aby przeciwdziałać sile grawitacji – ale regulator proporcjonalny może wytworzyć jedynie niezerowe wyjście z niezerowego błędu. W rezultacie samochód ustala się poniżej v_set o dokładnie tyle, ile wynosi błąd: stałe przesunięcie, czasami nazywane 'droopem'. Zwiększanie Kp zmniejsza to przesunięcie, ale nigdy go nie eliminuje, a zbyt duże zwiększenie Kp prowadzi do wymiany tego przesunięcia na oscylacje i szarpanie aktuatora zamiast niego.
Dlaczego dodanie członu całki rozwiązuje problem strukturalnie
Człon całkowy kumuluje błąd w czasie i stale zwiększa polecenie przyspieszenia, dopóki jakikolwiek błąd pozostaje: u = Kp·e + Ki·∫e dt. W stanie ustalonym, polecenie przyspieszenia musi przestać się zmieniać, a jedynym sposobem na to jest, aby sam błąd osiągnął dokładnie zero. To gwarancja strukturalna, jaką zapewnia kontroler PI, której nie daje kontroler P sam w sobie: zerowy błąd w stanie ustalonym dla stałej zakłócającej, niezależnie od tego, jak duża jest wartość Kp lub jak stroma jest góra (pomijając nasycenie aktuatora) – bezpośredwie wynikające z faktu, że układ nie posiada własnego elementu integrującego, więc kontroler musi go dostarczyć.
u(t) = Kp·e(t) + Ki·∫₀ᵗ e(τ) dτ, e = v_set - v
P only: settles with a nonzero offset proportional to disturbance size
PI: offset is driven to exactly zero, because only e = 0 lets
the integral term stop growing
Ciemna strona członu całkującego: zwijanie
Każdy rzeczywisty rozrusznik przepustnicy osiąga nasycenie – nie może być w pełni otwarty (100%). Jeśli podjechać samochodem po stromym wzgórzu, błąd pozostaje uparcie dodatni nawet z pełnym przyspieszeniem, ponieważ silnik po prostu nie jest w stanie dostarczyć wystarczającej siły. Człon całkujący, niewrażliwy na nasycenie, gromadzi ten dodatkowy błąd przez cały czas, gdy rozrusznik jest zablokowany na maksymalnej pozycji. Dopiero kiedy samochód ostatecznie pokonuje wzgórze i zanika zakłócenie grawitacji, człon całkujący osiąga wartość znacznie większą niż potrzebna – a musi się całkowicie rozładować przed obniżeniem polecenia przepustnicy do wartości wymaganej na płaskiej drodze. Widocznym objawem jest duży, opóźniony przekroczenie prędkości tuż po pokonaniu wzgórza: regulator stale wydaje komendy dotyczące prawie pełnego przyspieszenia przez znaczący odcinek płaskiej drogi, wyłącznie z powodu zgromadzonej historii błędu, która nie ma nic wspólnego z aktualnym błędem.
Zapobieganie zwijaniu się: informowanie integratora o rzeczywistości działania aktuatora
Rozwiązaniem jest zawsze wersja, w której integrator jest informowany o tym, kiedy aktuator przestaje reagować. Trzy standardowe techniki, uporządkowane według stopnia interwencji, to:
obcinanie (warunkowa integracja) zatrzymywanie terminu integralnego, gdy aktuator jest nasycony I błąd spowodowałby dalsze nasycenie – najtańsze rozwiązanie, wymaga jedynie flagi nasycenia, bez dodatkowych informacji o układzie
wyliczanie wstecznej wartości podawanie różnicy między wydanym a faktycznie zastosowanym (nasyconym) sygnałem sterującym do integratora z własnym zwiększeniem, dzięki czemu stan integralny jest aktywnie przyciągany do wartości, do jakiej powinien się on zbliżyć, biorąc pod uwagę rzeczywisty, obcięty wyjście
obserwatorowe/modelowe zapobieganie zwijaniu się rekonstrukcja stanu, w jakim układ byłby, przy uwzględnieniu nasyconego wpływu, zamiast stanu bez nasycenia, a następnie integracja z tym modelem – najbardziej dokładne, ale wymaga dobrego modelu układu, Wyliczanie wstecznej wartości jest najszerzej stosowanym kompromisem w produkcji pojazdów samochodowych i przemysłowym sterowaniu: kosztuje dodatkowe zwiększenie i dodatkowy ścieżek sprzężenia zwrotnego, a integrator śledzi rzeczywistość – czyli że układ widział jedynie obciętą wartość rozkaz gazu – zamiast fantastycznej wartości, którą chciał wysłać niezaktualizowany model.
clamping (conditional integration)
freeze the integral term whenever the actuator is saturated AND
the error would push it further into saturation — cheapest fix,
needs only a saturation flag, no extra plant knowledge
back-calculation
feed the difference between the commanded and the actually-applied
(saturated) control signal back into the integrator with its own
gain, so the integral state is actively pulled toward whatever
value it should have had given the real, clamped output
observer-based / model-based anti-windup
reconstruct what state the plant would be in given the saturated
input, rather than the unsaturated one, and integrate against that
— most accurate, but needs a decent plant model to be worth it
Gdzie projekt nadal wymaga osądu
Żaden z tych elementów nie jest pozbawiony kompromisów. Duże Ki eliminuje przesunięcie (offset) szybciej, ale również szybciej się nagle zwija (windup), gdy dochodzi do nasycenia, a wchodzi w interakcję z Kp, aby ustawić tłumienie pętli zamkniętej – jeśli oba parametry są zbyt wysokie, to ta sama akcja całkowa, która wyeliminowała przesunięcie na zboczu, zaczyna powodować przeszczeglenie i drgania nawet bez osiągnięcia nasycenia. Rzeczywiste strojenie kontroli prędkości w terenie jest przeprowadzane względem rodziny zakłóceń (zmian nachylenia drogi, wiatru z impetem, obciążenia), a nie pojedynczego kroku, a zyski przeciwko nagle zwijaniu są dobierane tak, aby odzyskanie po nasyconym wzgórzach było szybkie, bez powodowania nerwowego reakcji na niewykorzystanym, codziennym działaniu.
Często zadawane pytania
Dlaczego kontrola prędkości P-only nigdy nie osiąga ustawionej prędkości na wzniesieniu?
Ponieważ regulator proporcjonalny może emitować tylko niezerowy rozkaz przyspieszenia w odpowiedzi na niezerowy błąd prędkości, ale utrzymywanie stałej prędkości na wzniesieniu wymaga ciągłego niezerowego rozkazu przyspieszenia, aby przeciwdziałać sile grawitacji. Regulator ustala się przy wartości błędu prędkości generującej dokładnie to rozkaz przyspieszenia – stabilne przesunięcie, które zmniejsza się, ale nigdy nie znika w miarę jak wzrasta współczynnik zwrotny.
Co powoduje integralne windup?
Występuje ono wtedy, gdy błąd sterowania utrzymuje stały znak przez dłuższy czas, a aktuator jest nasycony (np. pełne przyspieszenie na stromym wzniesieniu) – termin całkowy nadal kumuluje ten błąd, nawet jeśli aktuator nie może zareagować na dodatkowe rozkazy, więc rośnie znacznie ponad wartość potrzebną po powrocie do normalnych warunków, powodując wolny, opóźniony przekroczenie (overshoot), gdy w końcu się wyhamowuje.
Jak anti-windup naprawia przekroczenie?
Poprzez zapobieganie kumulacji błędu przez termin całkowy, który nie może być zareagowany. Ograniczanie (clamping) po prostu zamraża integrację podczas nasycenia; back-calculation aktywnie wprowadza różnicę między rozkazanym a faktycznie zastosowanym (nasyconym) sygnałem do zintegrowalnika, przyciągając jego wewnętrzny stan do wartości, która powinna być w oparciu o rzeczywisty, ograniczony wydatek na sygnał.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Cruise Control PI i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Cruise Control PI