Dlaczego to działa? [PID i serwo]

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

Autor tematu
ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

Dlaczego to działa? [PID i serwo]

#1

Post napisał: ezbig » 24 sie 2007, 19:31

Koledzy uświadomcie mnie, bo coś mi tu nie gra. Analizuje różne działające rozwiązania sterowania serwami i ze specyfikacji dowiaduje się, że w każdym PID działa w pętli od 1 do 2,5 kHz (np. UHU).

Zastanawia mnie dlaczego to działa prawidłowo w maszynach cnc (tak wszyscy mówią), skoro taki Mach daje impulsy z częstotliwością 45kHz. Wynika z tego, że przy 2kHz dla pętli, impulsy sterujące idą 22,5x szybciej niż regulator steruje silnikiem.

Może coś źle tu interpretuję, ale z tego co przeanalizowałem, to impulsy step powiększają uchyb i dopiero na tej podstawie PID operuje silnikiem, czyli musi być tu duże opóźnienie reakcji. Co w przypadku takiego sygnału step: -+-+-+-+? Czy silnik, w ogóle zareaguje?

Czy pętla regulatora PID nie powinna działać szybciej niż sygnał sterujący?



Tagi:


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

#2

Post napisał: Leoo » 24 sie 2007, 21:13

ezbig pisze:Może coś źle tu interpretuję, ale z tego co przeanalizowałem, to impulsy step powiększają uchyb i dopiero na tej podstawie PID operuje silnikiem, czyli musi być tu duże opóźnienie reakcji. Co w przypadku takiego sygnału step: -+-+-+-+? Czy silnik, w ogóle zareaguje?

Czy pętla regulatora PID nie powinna działać szybciej niż sygnał sterujący?
Wszystko w porządku.
Serwosilnik to zwykle kawał metalu, który trzeba rozpędzić a następnie zatrzymać. Pomijam fakt, że jego oś zawsze coś napędza. Nawet jeśli Kolega zbuduje PID-a o wielkiej szybkości to i tak rozpędzenie wirnika nie nastąpi w czasie jednej pętli. Na sygnał -+-+-+-+ serwo zareaguje, o ile okres napływania tych impulsów będzie dłuższy od czasu reakcji (rozruchu) silnika. W innym wypadku silnik będzie zwyczajnie stał.

Poza tym, zwiększenie częstotliwości pętli może odbić się negatywnie na wyliczaniu składowej wyprzedzenia, pozostałych pewnie też.


Autor tematu
ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#3

Post napisał: ezbig » 24 sie 2007, 22:32

Tak też myślałem, ale w takim razie gdzie tu się kryje tajemnica szybkości serwa. Sterując w trybie step/dir uzyskam jakieś śmieszne prędkości. Można mnożyć kroki, ale w takim razie po co mach tak szybko może nadawać, skoro serwo tego nie przetrawi.

Moje serwo kręci 6000 obr/min, a enkoder daje 1600 impulsów. Przy tej prędkości między jednym, a drugim przejściem przez pętlę PID (2kHz) silnik może zrobić 80 kroków, zanim zostanie skorygowane położenie. Będzie to 18 stopni na osi - trochę spory błąd może wyjść.


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

#4

Post napisał: Leoo » 24 sie 2007, 23:16

ezbig pisze:Moje serwo kręci 6000 obr/min, a enkoder daje 1600 impulsów. Przy tej prędkości między jednym, a drugim przejściem przez pętlę PID (2kHz) silnik może zrobić 80 kroków, zanim zostanie skorygowane położenie. Będzie to 18 stopni na osi - trochę spory błąd może wyjść.
Tajemnica szybkości jest właśnie tu: 6000 obr/min. Nie istnieją silniki krokowe kręcące się tak szybko.
Kolega postrzega sterownik serwa, wyłącznie jako podzespół elektroniczny o konkretnych parametrach np. częstotliwościowych, czasowych. Trzeba jednak pamiętać, że został on zbudowany do poruszania elementem inercyjnym. Silnik popełni błąd ustawienia 80 kroków ale wyłącznie w sytuacji kiedy nagle pozbawimy sterownik impulsów STEP. Kiedyś porównywałem taką sytuację do arbuza rzuconego z wielką siłą w stronę ściany z nadzieją, że zatrzyma się na jej powierzchni.
Nie stosuje się tak dramatycznego sterowania ani serw, ani silników krokowych (zwłaszcza ich). Poza tym, serwo posiada mechanizm powrotu do pozycji zadanej, natomiast silnik krokowy zgubi wiele kroków bezpowrotnie.


Autor tematu
ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#5

Post napisał: ezbig » 25 sie 2007, 00:45

Rozumiem, czyli oznacza to, że np. Mach tak dobiera impulsy sterujące silnikami, aby przyspieszały i zwalniały zgodnie z ich możliwościami (ustawionymi w programie). Innymi słowy nie szarpie silnikiem tam i z powrotem na pełnej prędkości.

Przyznam się bez bicia, że osobiście tak właśnie szarpałem moim serwem. Bo aktualnie testuje własnoręcznie oprogramowany sterownik do serwa (na atmega8 ). Nie podłączałem tego jeszcze do żadnego programu, tylko podawałem impulsy step z generatora i ew. zmieniałem mnożnik. Owszem silnik zawsze staje idealnie w wybranym miejscu, ale jak daje mu rozkaz przesunięcia o np. 3000 imp. przy 6000 obr./min, to zatrzymanie jest z lekką "sprężynką". Prawdopodobnie wybiega te 80 imp na przód - nie wiem bo wyświetlacz mi tak szybko nie odświeża pozycji i zanim pokaże to już jest pozycja zadana. Przy mniejszych prędkościach (<3000) "sprężynka" praktycznie zanika.

Walczę teraz z ustawieniami parametrów PID i jeszcze tego dobrze nie czuję, a docelowo chciałbym zaprogramować opcję autotuningu, bo jeszcze mam sporo miejsca w procesorku.

Dzięki za rozjaśnienie tematu :smile:. W zasadzie to co napisałeś jest oczywiste, ale tak się skupiłem na samym regulatorze, że oderwałem się od specyfiki sterowania.

Awatar użytkownika

arizon
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 275
Rejestracja: 11 mar 2006, 06:08
Lokalizacja: Rzeszów
Kontakt:

#6

Post napisał: arizon » 25 sie 2007, 01:23

Witam
Czy kolega używa fast PWM atmegi czy sam wymyślił jakąś pętlę do pozycjonowania silnika. Ja też sobie zrobiłem PID'a do atmegi tylko że 16-stki ale używam dwóch (atmeg) jedna czyta położenie enkodera a w drugiej mam PID'a tylko że napisanego od zera bez używania sprzętowego PWM'a.
Pozdrawiam
"Skąd mam wiedzieć co to jest ja to tylko zbudowałem"
www.serwotech.pl


Autor tematu
ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#7

Post napisał: ezbig » 25 sie 2007, 03:59

arizon pisze:Witam
Czy kolega używa fast PWM atmegi czy sam wymyślił jakąś pętlę do pozycjonowania silnika. Ja też sobie zrobiłem PID'a do atmegi tylko że 16-stki ale używam dwóch (atmeg) jedna czyta położenie enkodera a w drugiej mam PID'a tylko że napisanego od zera bez używania sprzętowego PWM'a.
Pozdrawiam
Używam sprzętowego PWM'a. Najpierw zrobiłem wszystko na jednym procku (badanie enkodera + PID). Jednak okazało się, że układ mi się "nie wyrabia" i gubi kroki! A to dlatego, bo zdawało mi się, że moje serwo kręci 3000 obr/min, a wyszło 6200. Zwiększyłem częstotliwość badania enkodera i procek mi siada. Badanie enkodera zajmuje zbyt dużo czasu i zakłóca pracę PID'a - układ stał się niestabilny i łatwo go było można wyprowadzić z równowagi. Wrzuciłem wiec badanie enkodera do drugiego, małego procka i ten nadaje sygnały pierwszemu takt/kierunek (z enkodera oczywiście). Początkowo chciałem to zrobić na ttl-ach, lub LS 7084, ale nie chciało mi się lutować, a LS-a nie wiem gdzie kupić, więc procek okazał sie najprostszym rozwiązaniem i najtańszym. Daje próbkowanie 250 kHz więc mam spory zapas i kroków teraz nie gubi.

Dlaczego nie używasz sprzętowego PWM'a?

Awatar użytkownika

arizon
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 275
Rejestracja: 11 mar 2006, 06:08
Lokalizacja: Rzeszów
Kontakt:

#8

Post napisał: arizon » 26 sie 2007, 13:54

ezbig pisze:Używam sprzętowego PWM'a. Najpierw zrobiłem wszystko na jednym procku (badanie enkodera + PID). Jednak okazało się, że układ mi się "nie wyrabia" i gubi kroki!
Czy kolega używa przerwań czy w pętli bada port? bo z tej wypowiedzi tak wynika. Mój program nie gubi kroku do 1MHz.
ezbig pisze: Dlaczego nie używasz sprzętowego PWM'a?
To chyba wynika z tego że nie lubię jak coś mnie ogranicza a tak było ze sprzętowym PWM'em
Pozdrawiam
"Skąd mam wiedzieć co to jest ja to tylko zbudowałem"
www.serwotech.pl


Autor tematu
ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#9

Post napisał: ezbig » 27 sie 2007, 00:32

arizon pisze: Czy kolega używa przerwań czy w pętli bada port? bo z tej wypowiedzi tak wynika. Mój program nie gubi kroku do 1MHz.
Używam przerwania, bo mierzę sobie przy okazji obroty silnika. Tak liczę, że gdybym to zrobił w pętli i wyrzucił pomiar obrotów, to i tak pętla nie wyciągnie więcej niż 450kHz przy 16MHz dla procka. Teoretycznie to szybkość zliczania doszłaby do 900kHz.

arizon pisze: To chyba wynika z tego że nie lubię jak coś mnie ogranicza a tak było ze sprzętowym PWM'em
Pozdrawiam
Mi sprzętowy wystarcza, ale skoro wystarczy 2kHz dla PID'a, to myślę czyby nie wrzucić sterowania dla 3 serw w jedną "kostkę" i wtedy też będę musiał sobie PWM'y spreparować.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”