Problem z prawidłowym doborem nastaw PID - Ziegler Nichols

Cześć wszystkim, próbuję dobrać nastawy do PID. Robię symulację w Matlabie. Problem w tym, że wydaje się jakby nawet pospolity regulator proporcjonalny był lepszy, niż PI po dobraniu nastaw Zieglerem. Wniosek: Coś robię źle. Poniżej zamieszczam szczegóły.

Jest silnik, inercja z przekształtnika i regulator prądu. Tym wszystkim steruje regulator prędkości i jak po prostu ustawię P na 100, to odpowiedź (dla prędkości zadanej 60 rad/s) jest wyśmienita:

Uchyb ustalony na niezauważalnym poziomie. Powinien dać się poprawić całkowaniem, więc ustawiam P na 250, żeby wprowadzić układ na granicę stabilności i odczytuję:

Kkr = 250, Tosc = 39.6ms
Więc mogę obliczyć nastawy:
P = 0.45 * Kkr = 112.5
Ti = 0.8 * Tosc = 0.03168
W matlabie korzystam z formuły równoległej P = I * 1/s, a tabelka była dla formuły P(1 + 1/(Ti s)), więc
nastawa I = P / Ti = 3551

No i wychodzi coś takiego, jak zadam 60 rad/s

Coś duże to całkowanie i wystarczy spojrzeć na uchyb ustalony, wynosi 1.65 rad/s, a to dużo. Nie muszę mówić, że zbyt szybkie to to nie jest. Coś musi być źle.

Aha, jeszcze dodam, że regulator prądu ma ustawione nasycenie, że nie da więcej, niż znamionowe napięcie zasilania, a regulator napięcia nie daje więcej, niż 1.5 wartości znamionowej prądu, dlatego odpowiedź jest linią prostą.

Dodatkowo, próbowałem funkcji Tune, żeby samo dostroiło regulator, ale daje mi człon proporcjonalny na 0, a całkowanie w milionach i odpowiedź jest podobna.

Jeżeli ktoś ma pomysł, co ja tu robię źle, to proszę o poradę. Dziękuję i pozdrawiam serdecznie!

1 polubienie

Nie do końca rozumiem ten opis “równoległego” PI, a skoro odpowiedź układu z czasem nie zbiega Ci się z zadaną wartością to masz naknocone całkowanie jak nic - zwyczajnie nie działa (chociaż wykres się lekko zaokrąglił zgodnie z całkowaniem).
Całkowanie jest bardzo proste, wartość obecna = poprzednia + uchyb*parametr.
Podepnij SCOPE pod wyjście z regulatora i wyjście z ogranicznika prądu to zobaczymy czy regulator PI, który stroisz “czeka” ponad dopuszczalny prąd.

Ok, rozwiązałem problem.
Otóż wartość zadana prędkości była bardzo bliska maksymalnej możliwej do osiągnięcia przez silnik zasilony napięciem znamionowym (600 rpm = 62.8 rad/s). Regulator prądu ma na wyjściu ograniczenie, że jak będzie chciał podać więcej, niż 220V, to i tak poda 220V. To wciąż nie tłumaczy intuicyjnie dlaczego prędkość nie ustalała się na zadanej, choć mogła, bo na wykresie jest ponad 60, a zadana była 60. Działo się tak z powodu całkowania. Napięcie jest ograniczone, a to znacznie spowalnia regulator (zwłaszcza pod koniec rozruchu, kiedy 220V nie powoduje przepływu zbyt dużego prądu czyli również momentu), który jakby mógł, dałby więcej niż 220V, żeby tylko szybciej osiągnąć wartość zadaną. Uchyb zatem długo się całkuje i okazuje się, że całka z uchybu pod koniec jest już duża (wchodzi w grę integral windup).

Dlatego właśnie zdawało mi się, że prędkość ustala się na tych 63 rad/s, ale jak zrobię 40s symulację, to okazuje się, że prędkość powoli zmierza ku wartości zadanej i to nie jest uchyb ustalony, tylko przeregulowanie.

Rozwiązanie tego problemu będzie się sprowadzało do anti windup’u albo po prostu darować sobie całkowanie lub dać niewielkie, tylko żeby skompensować trochę ten ujemny uchyb (Metoda Zieglera - Nicholsa raczej nie przewiduje stosowania takich nieliniowości jak nasycenie za regulatorem). Mimo to, regulator świetnie się spisuje bez żadnych dodatków, kiedy pracuje przy mniejszych wartościach zadanych. Może wtedy zmieniać napięcie w dużym zakresie, więc nic mu nie stoi na przeszkodzie, kiedy musi szybko zrobić korektę prędkości.

Dziękuję za pomoc i pozdrawiam wszystkich zainteresowanych.

1 polubienie