Sterownik serwa DC - szczegóły działania PIDa

Rozmowy na temat układów elektronicznych sterowania obrabiarek CNC

Autor tematu
korinsj
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 11
Posty: 80
Rejestracja: 08 wrz 2004, 18:20
Lokalizacja: Miłoszyce
Kontakt:

Sterownik serwa DC - szczegóły działania PIDa

#1

Post napisał: korinsj » 02 gru 2008, 09:04

Witam,

Właśnie prowadzę testy sterownika do serwa DC. Żeby nie być gołosłownym, tutaj wrzuciłem krótki filmik z testów:



Narazie prędkości nie za duże, start/stop "na sztywno" (bez przyśpieszeń).

Ale mam pytanie do znawców z dziedziny - z tego co się orientuję większość sterowników do serw posiada trzy członową pętle regulacji: stabilizacja prądu, stabilizacja prędkości, stabilizacja położenia.

W tej chwili robię tylko pętla stabilizacji położenia: uchyb (położenie zadane - położenie z enkodera) idzie na PID, a z PIDa na wyjście PWM.

W tym wypadku obiekt (silnik) to całka z inercją, a więc K/s(1+sT).

I tu mam problem. Dla mojego silnika K=40, T=0,04s. Wyliczam nastawy dla PID takie, aby czas regulacji wynosił 0,01s. Otrzymuję wysokie P i spore D.

I w tym cały problem - wyjście PWM może zmieniać się od 0 (0% wypełnienia) do 1330 (100% wypełnienia). Tak duża wartość wzmocnienia P wymusza bardzo duże skoki części różniczkującej aby stłumić drgania. I wszystko "siada" bowiem wyjście PID wielokrotnie przekracza górny zakres PWM 1330 (nie mieści się w dynamice). Natomiast małe wartości wzmocnienia P powodują iż silnik jest miękki.

Z której strony spróbować ugryźć ten problem?



Tagi:


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#2

Post napisał: Leoo » 02 gru 2008, 21:04

korinsj pisze:I wszystko "siada" bowiem wyjście PID wielokrotnie przekracza górny zakres PWM 1330 (nie mieści się w dynamice).
I tak ma być. Przy krótkim czasie odpowiedzi silnik będzie sterowany na 100% mocy. Czy Kolega zastosował mechanizm zabezpieczenia przed przepełnieniem wartości członu całkującego?
Czy wpisanie do PWM wartości 1331 nie spowoduje jego przepełnienia (przyjęcie wartości 1)?


Autor tematu
korinsj
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 11
Posty: 80
Rejestracja: 08 wrz 2004, 18:20
Lokalizacja: Miłoszyce
Kontakt:

#3

Post napisał: korinsj » 03 gru 2008, 05:20

Mam ograniczenie zarówno nasycenia całkowania jak i sygnału wyjściowego. I tu pies pogrzebany. Całkowanie nawet wyłączam.

Przykład: silnik sterowany napięciowo (PWM) to całkowanie z inercją o parametrach K=40 T=0,04s. Zakładam czas regulacji 0,01s, to Kp=390, Ki=0 (aby było łatwiej), Kd=12000! Krotki czas regulacji => duże Kp => duże Kd aby stłumić drgania od dużego Kp. Tylko że przy takich nastawach wartość wyjściowa od razu leci w kosmos. Wyjście PIDa oczywiście ograniczam do -1330..+1330 ale tym samym "psuję" działanie różniczki która chce stłumić drgania. No wiec wydłużam czas regulacji, zmniejsza mi się Kp i Kd, jest coraz lepiej, ale silnik robi się coraz bardziej miękki.

Nie wiem czy sterowanie z pętlami stabilizacji prądu, prędkości i pozycji załatwia ten problem choćby dlatego że silnik sterowany prądowo to całkiem inny obiekt (podwójne całkowanie).

[ Dodano: 2008-12-03, 08:17 ]
Ten program do symulacji wszystko wyjaśni:

www.korinsj.com.pl/pub/regtest.exe

Proszę nacisnąć "GO!". Potem ustawić ograniczenie sygnału wyjściowego (pomiędzy PID a obiektem) na 1330 (czyli dla mnie jest to max PWM - 100%) i znów nacisnąć "GO!".

Będzie widać o co chodzi.


Adalber
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 2
Posty: 687
Rejestracja: 10 lip 2005, 15:13
Lokalizacja: Polska

#4

Post napisał: Adalber » 03 gru 2008, 11:30

Jak uzyskałeś transmitancję napędu (sinika) ? Została obliczona czy zdjąłeś charakterystykę ?


Autor tematu
korinsj
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 11
Posty: 80
Rejestracja: 08 wrz 2004, 18:20
Lokalizacja: Miłoszyce
Kontakt:

#5

Post napisał: korinsj » 03 gru 2008, 11:39

Zdjąłem charakterystykę.

Tym bardziej że to "typowa" transmitancja. Dla sterowania napięciowego i odczytu położenia z enkodera to obiekt astatyczny typu całka z inercją. Pochodna (czyli prędkość) to będzie obiekt inercyjny I-wszego rzędu. Dla sterowania prądowego to będzie podwójne całkowanie.

Silnik talerzowy (dyskowy), bez obciążenia, więc tarcie pomijalnie małe.


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#6

Post napisał: Leoo » 03 gru 2008, 18:24

korinsj pisze:Ten program do symulacji wszystko wyjaśni:
Mam wątpliwości co do symulatora.
Jedna z metod strojenia PID wygląda tak: ustawiamy Ti na nieskończoność i Td na 0. Następnie dobieramy P tak, by silnik osiągnął wartość zadaną lub najbliższą z możliwych. W tym miejscu wszelkie kombinacje parametrów wywołują oscylacje. Sterownik typu P nie powinien oscylować. Ti ustawiałem na 20s, więcej się nie udało.


Autor tematu
korinsj
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 11
Posty: 80
Rejestracja: 08 wrz 2004, 18:20
Lokalizacja: Miłoszyce
Kontakt:

#7

Post napisał: korinsj » 03 gru 2008, 18:35

Wydaje mi się że jest OK. Aby całkowicie wyłączyć całkowanie można wpisać 0. Aby np. otrzymać aperiodyczne dojście do wartości zadanej można ustawić K=0.1 Ti=0 Td=0


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#8

Post napisał: Leoo » 03 gru 2008, 21:53

korinsj pisze:Wydaje mi się że jest OK. Aby całkowicie wyłączyć całkowanie można wpisać 0.
Dobra, przy K=0,2, Ti=0 i Td=0, PID zachowuje się jak P.
Empirycznie dla K=390, Ti=40 i Td=10,65 odpowiedź regulatora jes prawie bez przerzutu. Myślę, że ograniczenie PWM +/- 1330 nie powinno być uwzględniane w symulacji. Jeśli Kolega zaimplementuje kod do innego procesora, którego PWM działa na 8 bitach, to okaże się że zakres ograniczenia wyniesie +/-128 i reakcji prawie nie będzie.


Autor tematu
korinsj
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 11
Posty: 80
Rejestracja: 08 wrz 2004, 18:20
Lokalizacja: Miłoszyce
Kontakt:

#9

Post napisał: korinsj » 04 gru 2008, 05:46

> Empirycznie dla K=390, Ti=40 i Td=10,65 odpowiedź regulatora jes prawie bez przerzutu.

Powiem jedno - piękne nastawy!

> Myślę, że ograniczenie PWM +/- 1330 nie powinno być uwzględniane w symulacji.

Musi być, bo takie ograniczenie ma układ rzeczywisty. Zresztą mogę wrzucić te nastawy do sterownika i ściągnąć odpowiedź na skok i porównać go z odpowiedzią z symulacji.

>okaże się że zakres ograniczenia wyniesie +/-128 i reakcji prawie nie będzie.

Dokładnie TAK!. Symulacja działa poprawnie - jak układ rzeczywisty.

Ale chyba już wiem gdzie leży problem. Sterownik serwa DC ze strukturą: uchyb położenia => PID => wyjście PWM nigdy nie zadziała poprawnie w układzie rzeczywistym (ze względu na ograniczenie wyjścia). Porobiłem jeszcze sporo innych symulacji - tylko struktury: PI_P, P_PI, P_PID powinny działać poprawnie. Spróbuję dzisiaj załadować je w procek - powinno być OK!


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#10

Post napisał: Leoo » 04 gru 2008, 09:27

korinsj pisze:Sterownik serwa DC ze strukturą: uchyb położenia => PID => wyjście PWM nigdy nie zadziała poprawnie w układzie rzeczywistym (ze względu na ograniczenie wyjścia).
Niezupełnie. Kiedy PWM osiąga 100% wypełnienia silnik otrzymuje nominalny moment obrotowy. Zadając napięcie otrzymujemy moment. Poza tym istnieją regulatory PID z wyjściem dwustanowym. Jeśli chodzi o serwa, to choćby UHU, ELM-CHAN, GECKO i pewnie wiele innych, wszystkie mają wyjścia PWM bez pomiaru prądu (nie mylić z ogranicznikiem).
http://elm-chan.org/works/smc/report_e.html
Autor ELM publikuje schemat blokowy i kod źródłowy - można coś przylookać.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”