Znaleziono 8 wyników
- 28 wrz 2008, 20:00
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
... a do tego wszystkiego wszystkie operacje trzeba robić osobno dla każdej z osi i wybierać najgorszy przypadek. Ruch z punkt 0,0 do 0,100 potem z 0,100 do 100,100 z tą samą prędkością ma tę samą prędkość liniową, ale przy przejściu z pierwszego wektora na drugi oś X musi ruszyć a Y całkowicie się zatrzymać. Jeśli kończymy i zaczynamy każdy wektor przy prędkości przy której nie ma gubienia kroków, to jest łatwizna, ale powyżej tej prędkości mamy spore komplikacje.
- 27 wrz 2008, 08:20
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
1. Jakich prędkości się kolega spodziewa ? - Jeszcze nie wiem. To przecież zależy od ilości kroków/obrót, skoku śruby. Co najwyżej mogę określić max częstotliwość generowania sygnału STEP. Ale ta mi wyjdzie dopiero po zakończeniu prac. Narazie rozważam szczegóły sterowania głównym prockiem - czy przyśpieszanie robić zmieniając okres przerwania, czy też dać stały, minimalny okres przerwania a zmieniać krok.
2. Jeden procek to niestety ograniczenie - Jeden sterownik już zrobiłem do maszyny i działa OK. Tyle że nie wyciągałem z niego "ile się da" bo sama maszyna miała wolno chodzić.
3. Stała prędkość liniowa (jako wymaganie) wymusza czasami skokową zmianę prędkości na osiach sterowników. Mój algorytm zakłada że mam znaną prędkość bezpieczną poniżej której nie ma gubienia kroków - jak skok jest za duży to zwalniam do tej prędkości.
Ja robię podobnie.
W sterowniku są zaszyte 3 prędkości: minimalna, graniczna, maksymalna. Do tego wartość przyśpieszenia/hamowania z jaką mogę zmieniać prędkość. Takich grup mam kilka - z inną dynamiką mogę się poruszać gdy frez mam uniesiony, a z inną gdy obrabiam materiał. Dodatkowy parametr mówi czy ruch ma się rozpoczynać/kończyć od prędkości minimalnej czy też granicznej.
Prędkość minimalna - wynika z samego sprzętu - np. z jaką minimalną częstotliwością może mi timerek od przerwania generować przerwanie.
Prędkość graniczna - maksymalna prędkość z jaką mogę ruszyć silnik i przy jakiej mogę go natychmiast zatrzymać bez zgubienia kroku przez kroków, czy też przekroczenia dopuszczalnego błędu trajektorii przy serwo.
Prędkość maksymalna - czyli max. częstotliwość generowania STEP, max. szybkość posuwu maszyny, itp. pozostałe ograniczenia. Po prostu max. szybkość z jaką mogę kręcić silnikiem.
I teraz tak. Procek zna aktualne położenie. Pobiera położenie docelowe oraz prędkość z jaką ma ją przebyć. Sprawdza czy prędkość mieści się w zakresie "minimalna" i "maksymalna" i ewentualnie ją koryguje do tego zakresu.
Następnie jest analiza od jakiej prędkości zacząć ruch i na jakiej skończyć (minimalna czy też graniczna). Jeśli minimalna to układ będzie rozpędzany do prędkości zadanej, jeśli graniczna to jeśli zadana<graniczna rusza od razu na zadanej, jeśli zadana>graniczna to jest płynnie rozpędzany. Podobnie jest z hamowanie - obliczany jest punkt w którym należy zacząć hamowanie aby go skończyć na prędkości minimalnej/zadanej/granicznej.
Problemy zaczynają się przy prędkości zadanej powyżej granicznej. Na plus jest to, że jest ona zazwyczaj używana tylko do przejazdu frezu w górze z jednego punktu do drugiego, na minus to że utrzymanie stałej prędkości liniowej powyżej granicznej jest praktycznie niemożliwe. Obliczenie ruchu z utrzymaniem stałej liniowej prędkości powyżej granicznej możliwe by było tylko off-line - ze wstępnym przeliczeniem dynamiki ruchu na PCcie.
Dlaczego? Powiedzmy że mam przejechać dwa odcinki z prędkością powyżej granicznej. Jeden odcinek jest nachylony do osi OY pod kątem 0 stopni, drugi 45 stopni. Ruch po pierwszym odcinku wymusza prędkość max. na osi Y i zerową na X. Na drugim odcinku oba silniki już muszą chodzić z jakimiś tam prędkościami. Tak więc program przeliczając pierwszy odcinek musi znaleźć punkt hamowania przy którym prędkość wejścia na drugi odcinek będzie poniżej takiej przy której zostanie zachowane bezpieczne hamowanie i silnika osi Y i rozpędzanie osi X - należy pamiętać że oś X nie może ruszyć z prędkością powyżej granicznej.
Gdyby było tylko tak, nie byłoby problemu. Ale jest małe "ale". Załóżmy że oba odcinki trzeba przebyć z prędkością powyżej granicznej i oba są wystarczająco "długie". Czyli że robiąc ruch na drugim odcinku mogę być pewien że na jego długości wyhamuje silnik do granicznej przy której będę mógł się zatrzymać.
I teraz sa schody - co jeżeli pierwszy odcinek jest długi a drugi bardzo krótki? Oznacza to że punkt hamowania na pierwszym odcinku musi leżeć wcześniej, tak aby bez problemu wyhamować na końcu drugiego odcinka. No niby OK, ale co jeśli teraz dodamy trzeci odcinek? Teraz nie muszę już tak wcześnie hamować na pierwszym bo po drugim będę miał jeszcze trzeci. Ale ten trzeci być może będzie też bardzo krótki i to na tyle że hamowanie muszę zacząć już na pierwszym.
I tu jest właśnie problem utrzymania stałej prędkości liniowej powyżej granicznej. Tak złożona analiza byłaby możliwa tylko off-line - wstępne przeliczenia całej trajektorii ruchu na PCcie i podsyłanie prockowi "gotowca".
Dlatego też u mnie ruch może się zaczynać i kończyć co najwyżej na granicznej.
Pozdrawiam,
SM
2. Jeden procek to niestety ograniczenie - Jeden sterownik już zrobiłem do maszyny i działa OK. Tyle że nie wyciągałem z niego "ile się da" bo sama maszyna miała wolno chodzić.
3. Stała prędkość liniowa (jako wymaganie) wymusza czasami skokową zmianę prędkości na osiach sterowników. Mój algorytm zakłada że mam znaną prędkość bezpieczną poniżej której nie ma gubienia kroków - jak skok jest za duży to zwalniam do tej prędkości.
Ja robię podobnie.
W sterowniku są zaszyte 3 prędkości: minimalna, graniczna, maksymalna. Do tego wartość przyśpieszenia/hamowania z jaką mogę zmieniać prędkość. Takich grup mam kilka - z inną dynamiką mogę się poruszać gdy frez mam uniesiony, a z inną gdy obrabiam materiał. Dodatkowy parametr mówi czy ruch ma się rozpoczynać/kończyć od prędkości minimalnej czy też granicznej.
Prędkość minimalna - wynika z samego sprzętu - np. z jaką minimalną częstotliwością może mi timerek od przerwania generować przerwanie.
Prędkość graniczna - maksymalna prędkość z jaką mogę ruszyć silnik i przy jakiej mogę go natychmiast zatrzymać bez zgubienia kroku przez kroków, czy też przekroczenia dopuszczalnego błędu trajektorii przy serwo.
Prędkość maksymalna - czyli max. częstotliwość generowania STEP, max. szybkość posuwu maszyny, itp. pozostałe ograniczenia. Po prostu max. szybkość z jaką mogę kręcić silnikiem.
I teraz tak. Procek zna aktualne położenie. Pobiera położenie docelowe oraz prędkość z jaką ma ją przebyć. Sprawdza czy prędkość mieści się w zakresie "minimalna" i "maksymalna" i ewentualnie ją koryguje do tego zakresu.
Następnie jest analiza od jakiej prędkości zacząć ruch i na jakiej skończyć (minimalna czy też graniczna). Jeśli minimalna to układ będzie rozpędzany do prędkości zadanej, jeśli graniczna to jeśli zadana<graniczna rusza od razu na zadanej, jeśli zadana>graniczna to jest płynnie rozpędzany. Podobnie jest z hamowanie - obliczany jest punkt w którym należy zacząć hamowanie aby go skończyć na prędkości minimalnej/zadanej/granicznej.
Problemy zaczynają się przy prędkości zadanej powyżej granicznej. Na plus jest to, że jest ona zazwyczaj używana tylko do przejazdu frezu w górze z jednego punktu do drugiego, na minus to że utrzymanie stałej prędkości liniowej powyżej granicznej jest praktycznie niemożliwe. Obliczenie ruchu z utrzymaniem stałej liniowej prędkości powyżej granicznej możliwe by było tylko off-line - ze wstępnym przeliczeniem dynamiki ruchu na PCcie.
Dlaczego? Powiedzmy że mam przejechać dwa odcinki z prędkością powyżej granicznej. Jeden odcinek jest nachylony do osi OY pod kątem 0 stopni, drugi 45 stopni. Ruch po pierwszym odcinku wymusza prędkość max. na osi Y i zerową na X. Na drugim odcinku oba silniki już muszą chodzić z jakimiś tam prędkościami. Tak więc program przeliczając pierwszy odcinek musi znaleźć punkt hamowania przy którym prędkość wejścia na drugi odcinek będzie poniżej takiej przy której zostanie zachowane bezpieczne hamowanie i silnika osi Y i rozpędzanie osi X - należy pamiętać że oś X nie może ruszyć z prędkością powyżej granicznej.
Gdyby było tylko tak, nie byłoby problemu. Ale jest małe "ale". Załóżmy że oba odcinki trzeba przebyć z prędkością powyżej granicznej i oba są wystarczająco "długie". Czyli że robiąc ruch na drugim odcinku mogę być pewien że na jego długości wyhamuje silnik do granicznej przy której będę mógł się zatrzymać.
I teraz sa schody - co jeżeli pierwszy odcinek jest długi a drugi bardzo krótki? Oznacza to że punkt hamowania na pierwszym odcinku musi leżeć wcześniej, tak aby bez problemu wyhamować na końcu drugiego odcinka. No niby OK, ale co jeśli teraz dodamy trzeci odcinek? Teraz nie muszę już tak wcześnie hamować na pierwszym bo po drugim będę miał jeszcze trzeci. Ale ten trzeci być może będzie też bardzo krótki i to na tyle że hamowanie muszę zacząć już na pierwszym.
I tu jest właśnie problem utrzymania stałej prędkości liniowej powyżej granicznej. Tak złożona analiza byłaby możliwa tylko off-line - wstępne przeliczenia całej trajektorii ruchu na PCcie i podsyłanie prockowi "gotowca".
Dlatego też u mnie ruch może się zaczynać i kończyć co najwyżej na granicznej.
Pozdrawiam,
SM
- 26 wrz 2008, 19:24
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
> Widzę robimy podobną rzecz - może kolega opowie co więcej ?
AT91SAM7SE512 + 2 kości A43L2616V. Transmisja z PC poprzez USB, wyjście na 4 osie, oprogramowanie pod Windowsy. Wejścia na krańcówki, klawiaturę, jakieś dodatkowe we/wy. Obliczanie przyśpieszania/hamowania aby utrzymać stałą prędkość liniową.
> Czy kolega traktuje je jako prywatne, czy też byłby skłonny pokazać samą tę końcówkę mocy ? Chcę przerobić UHU na TLP250 i miałem wątpliwosci zarówno co do formowania impulsów jak i zasilania ( chcę dać mały prosty DC/DC na transformatorze )
Załączanie przez 33R, wyłączanie przez 1R. Każdy mostek z małym transformatorkiem - jedno pierwotne, cztery wtórne (dla każdego TLP). Pierwotne sterowanie bezpośrednio z flyback-a.
AT91SAM7SE512 + 2 kości A43L2616V. Transmisja z PC poprzez USB, wyjście na 4 osie, oprogramowanie pod Windowsy. Wejścia na krańcówki, klawiaturę, jakieś dodatkowe we/wy. Obliczanie przyśpieszania/hamowania aby utrzymać stałą prędkość liniową.
> Czy kolega traktuje je jako prywatne, czy też byłby skłonny pokazać samą tę końcówkę mocy ? Chcę przerobić UHU na TLP250 i miałem wątpliwosci zarówno co do formowania impulsów jak i zasilania ( chcę dać mały prosty DC/DC na transformatorze )
Załączanie przez 33R, wyłączanie przez 1R. Każdy mostek z małym transformatorkiem - jedno pierwotne, cztery wtórne (dla każdego TLP). Pierwotne sterowanie bezpośrednio z flyback-a.
- 21 wrz 2008, 12:38
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
1. Jakie błędy pozycji w stanach dynamicznych chcesz osiągnąć? Tzn. jaki maksymalny uchyb będzie dla ciebie zadowalający? - Ciężko powiedzieć w tej chwili. To zależy od rozdzielczości enkodera, skoku śruby itp. Powiedzmy strefa martwa 2..3 działki, max uchyb 10 działek.
2. Jaka jest częstotliwość pętli regulatora? - W tej chwili 10kHz ale mogę dać i kilka razy więcej (i oczywiście dużo mniej).
3. Jak na te tranzystory to 10A trochę dużo. - Tak. Bo testy robię na 24V/3..4A. Docelowo mam projekt płytki z otworami dla IRFP250N.
2. Jaka jest częstotliwość pętli regulatora? - W tej chwili 10kHz ale mogę dać i kilka razy więcej (i oczywiście dużo mniej).
3. Jak na te tranzystory to 10A trochę dużo. - Tak. Bo testy robię na 24V/3..4A. Docelowo mam projekt płytki z otworami dla IRFP250N.
- 21 wrz 2008, 11:02
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
1. Te duże drgania niegasnące. - OK
2. Czym sterujesz, jakie tranzystory - Power MOS IRF630
3. Jaki dead time, jaki opornik w bramce - moje sprawdzone rozwiązania, na dużych układach przetwarzania energii. Bramki steruję przez "odpowiednio" łączone TLP250, z rozbudowanym układem załączania/wyłączania tranzystora (ograniczenie stromości zboczy przy załączaniu, a szybkie wypompowanie ładunku z kondensatora bramki tranzystora przy wyłączaniu). Do tego dead time-y zaszyte w logice.
4. Jakie prądy maksymalne chcesz uzyskać, jaka moc silnika - prądy około 10A, moce powiedzmy 300..500W. Testy robie na 24VDC/3A.
5. Aha i do czego to ma być zastosowane. - Frezarki, tokarki, plotery CNC - mam na dziś kilka rzeczy do uruchomienia. Główny sterownik (ARM+dużo SDRAM) już prawie mam gotowy, soft pod Windowsy też. Teraz robię właśnie "końcówki" dla silników krokowych i DC. Główny sterownik daje "standardowe" impulsy a ja, w zależności od silnika zmieniam tylko końcówkę sterującą.
2. Czym sterujesz, jakie tranzystory - Power MOS IRF630
3. Jaki dead time, jaki opornik w bramce - moje sprawdzone rozwiązania, na dużych układach przetwarzania energii. Bramki steruję przez "odpowiednio" łączone TLP250, z rozbudowanym układem załączania/wyłączania tranzystora (ograniczenie stromości zboczy przy załączaniu, a szybkie wypompowanie ładunku z kondensatora bramki tranzystora przy wyłączaniu). Do tego dead time-y zaszyte w logice.
4. Jakie prądy maksymalne chcesz uzyskać, jaka moc silnika - prądy około 10A, moce powiedzmy 300..500W. Testy robie na 24VDC/3A.
5. Aha i do czego to ma być zastosowane. - Frezarki, tokarki, plotery CNC - mam na dziś kilka rzeczy do uruchomienia. Główny sterownik (ARM+dużo SDRAM) już prawie mam gotowy, soft pod Windowsy też. Teraz robię właśnie "końcówki" dla silników krokowych i DC. Główny sterownik daje "standardowe" impulsy a ja, w zależności od silnika zmieniam tylko końcówkę sterującą.
- 21 wrz 2008, 06:47
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
1. Musisz zasymulować płynne rozpędzanie i zwalnianie do zatrzymania. - Tak też myślałem. Zrobię program w którym procek będzie miał wykonać przejazd - powiedzmy 1/3 drogi przyśpiesza się, 1/3 drogi stała prędkość, 1/3 drogi hamuje. Wynikiem będzie maksymalny i minimalny uchyb jaki uzyskał na całej trasie. Problem tylko będzie z wychwyceniem ewentualnych drgań/oscylacji w czasie "jazdy" po wartości zadanej.
2. Ki i KD na zero i zwiększasz KP aż do osiągnięcia wzbudzenia - Co uznać za moment wzbudzenia? Osiągnięcie drgań niegasnących? Po drugie - których drgań? Zwiększając Kp mam początkowe oczywiście aperiodyczne dojście do wartości zadanej (prawie, bo bez całkowania zawsze pozostaje jakiś uchyb). Dalej zwiększam Kp i dochodzi do jednego przeregulowania, potem lekkie zejście w dół i znów staje na lekkim błędzie. Dalej zwiększam Kp i dochodzę do momentu "oscylacji" - tzn. silnik nie stoi cicho, ale "trzeszczy" sobie na komutatorze (niewidoczne drgania w granicach 1..2 kroków). To są że tak powiem pierwsze oscylacje. Mogę go "wyciszyć" tłumiąc wał palcami. Dalej zwiększam Kp i silnik zaczyna oscylować już mocno, aż dojdę do drgań niegasnących, gdzie wał silnika w widoczny sposób kręci się tam i z powrotem. To są że tak powiem drugie oscylacje. I teraz pytanie - przy których oscylacjach mam uznać Kp za krytyczne? Kiedy uznać że jest już moment wzbudzenia?
3. Napisz więcej jak zachowuje się sterownik. - Przerabiam jeszcze zasilanie górnych tranzystorów mostka (przechodzę z pompy ładunkowej na mały transformatorek) i zaraz potem wracam do testów. Opiszę dokładnie jak zachowuje się silnik.
2. Ki i KD na zero i zwiększasz KP aż do osiągnięcia wzbudzenia - Co uznać za moment wzbudzenia? Osiągnięcie drgań niegasnących? Po drugie - których drgań? Zwiększając Kp mam początkowe oczywiście aperiodyczne dojście do wartości zadanej (prawie, bo bez całkowania zawsze pozostaje jakiś uchyb). Dalej zwiększam Kp i dochodzi do jednego przeregulowania, potem lekkie zejście w dół i znów staje na lekkim błędzie. Dalej zwiększam Kp i dochodzę do momentu "oscylacji" - tzn. silnik nie stoi cicho, ale "trzeszczy" sobie na komutatorze (niewidoczne drgania w granicach 1..2 kroków). To są że tak powiem pierwsze oscylacje. Mogę go "wyciszyć" tłumiąc wał palcami. Dalej zwiększam Kp i silnik zaczyna oscylować już mocno, aż dojdę do drgań niegasnących, gdzie wał silnika w widoczny sposób kręci się tam i z powrotem. To są że tak powiem drugie oscylacje. I teraz pytanie - przy których oscylacjach mam uznać Kp za krytyczne? Kiedy uznać że jest już moment wzbudzenia?
3. Napisz więcej jak zachowuje się sterownik. - Przerabiam jeszcze zasilanie górnych tranzystorów mostka (przechodzę z pompy ładunkowej na mały transformatorek) i zaraz potem wracam do testów. Opiszę dokładnie jak zachowuje się silnik.
- 20 wrz 2008, 20:48
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
1. Jak wielki zadajesz skok jednostkowy w strojeniu Zieglera-Nicholsa ? - 500 (jeden pełen obrót)
2. Czym zadajesz sygnał wejściowy? - poprzez RS-a z PCta
3. Czy profil prędkości ma ograniczone przyspieszenie? Nie. Tym zajmować się będzie sterownik nadrzędny. Ten ma tylko za zadanie być układem śledzącym (nadążnym). Dostaje impuls na zrobienie krok+/krok- i ma tak posterować silnikiem aby z enkodera utrzymać tę samą pozycję. Tak więc uchybem dla PID jest różnica między docelowym położeniem a aktualnym położeniem enkodera.
4. Jaka jest rozdzielczość enkodera? Niewielka - 500 impulsów / obrót.
5. Którą wartość chcesz minimalizować? Powiedzmy max. szybkość uzyskania wartości zadanej, przeregulowanie max. 20%
6. Jak wyznaczasz wskaźnik jakościowy? Całka z błędu do momentu w którym ewentualne oscylacje schodzą poniżej 1% błędu.
7. PID jest analogowe, czy program w procku? W procku. Układ na małym ARMie, mały CPLD "przygotowuje" sygnały dla procka.
8. Na jakich zmiennych pracujesz (ilu bitowych)? 32-bitowych. Kp z dokładnością 1/256, Ki z dokładnością 1/65536, Kd z dokładnością 1.
9. Jakie uchyby uzyskujesz w tej chwili? Pomierzę.
Dodatkowe informacje:
- PWM na 30kHz, rozdzielczość 10bit
- częstotliwość PID - 10kHz (Tp=1/10kHz)
- max częstotliwość z enkodera - 500kHz (chociaż ARM wyciągnie i więcej)
- mogę dodać strefę nieczułości (uchyb poniżej powiedzmy kilku działek daje zero)
- PID pozycyjny równoległy: PWM=Kp*e + Ki*SumaE + Kd * (e-em), Ki = (Kp * Tp) / Ti, Kd = (Kp * Td) / Tp
Testowo używam silnika DC "talerzowego" bez obciążenia - niewielka bezwładność, znikome tłumienie.
Chciałem spróbować z auto-tuningiem metodą Astrom-Hagglund, ale napisałem programik do symulacji PIDa i coś nie za bardzo to wychodzi. Pomogłoby to przynajmniej przy wstępnym doborze nastaw.
No chyba że powinienem dobierać nastawy dla niewielkich uchybów - w końcu układ ma być układem śledzącym (elektroniczna zębatka).
W razie czego mogę podesłać programik do symulacji - jak ktoś wie co robię nie tak w auto-tunningu A-H.
2. Czym zadajesz sygnał wejściowy? - poprzez RS-a z PCta
3. Czy profil prędkości ma ograniczone przyspieszenie? Nie. Tym zajmować się będzie sterownik nadrzędny. Ten ma tylko za zadanie być układem śledzącym (nadążnym). Dostaje impuls na zrobienie krok+/krok- i ma tak posterować silnikiem aby z enkodera utrzymać tę samą pozycję. Tak więc uchybem dla PID jest różnica między docelowym położeniem a aktualnym położeniem enkodera.
4. Jaka jest rozdzielczość enkodera? Niewielka - 500 impulsów / obrót.
5. Którą wartość chcesz minimalizować? Powiedzmy max. szybkość uzyskania wartości zadanej, przeregulowanie max. 20%
6. Jak wyznaczasz wskaźnik jakościowy? Całka z błędu do momentu w którym ewentualne oscylacje schodzą poniżej 1% błędu.
7. PID jest analogowe, czy program w procku? W procku. Układ na małym ARMie, mały CPLD "przygotowuje" sygnały dla procka.
8. Na jakich zmiennych pracujesz (ilu bitowych)? 32-bitowych. Kp z dokładnością 1/256, Ki z dokładnością 1/65536, Kd z dokładnością 1.
9. Jakie uchyby uzyskujesz w tej chwili? Pomierzę.
Dodatkowe informacje:
- PWM na 30kHz, rozdzielczość 10bit
- częstotliwość PID - 10kHz (Tp=1/10kHz)
- max częstotliwość z enkodera - 500kHz (chociaż ARM wyciągnie i więcej)
- mogę dodać strefę nieczułości (uchyb poniżej powiedzmy kilku działek daje zero)
- PID pozycyjny równoległy: PWM=Kp*e + Ki*SumaE + Kd * (e-em), Ki = (Kp * Tp) / Ti, Kd = (Kp * Td) / Tp
Testowo używam silnika DC "talerzowego" bez obciążenia - niewielka bezwładność, znikome tłumienie.
Chciałem spróbować z auto-tuningiem metodą Astrom-Hagglund, ale napisałem programik do symulacji PIDa i coś nie za bardzo to wychodzi. Pomogłoby to przynajmniej przy wstępnym doborze nastaw.
No chyba że powinienem dobierać nastawy dla niewielkich uchybów - w końcu układ ma być układem śledzącym (elektroniczna zębatka).
W razie czego mogę podesłać programik do symulacji - jak ktoś wie co robię nie tak w auto-tunningu A-H.
- 20 wrz 2008, 13:55
- Forum: Elektronika CNC
- Temat: Strojenie PID
- Odpowiedzi: 28
- Odsłony: 6740
Strojenie PID
Mam sterownik silnika DC - pełny mostek ze sterowaniem PWM. Wypełnienie dla PWM zadaje PID. Sygnałami wejściowymi dla PID jest: aktualne położenie wału silnika z enkodera, oraz położenie zadane (zmieniające się w takt sygnałów zewnętrznych krok+/krok-).
I teraz pytanie - jak zabrać się do strojenia regulatora PID?
Obiekt regulacji będzie chyba typu całkującego (podwójnie całkujący?), więc chyba bez różniczkowania się nie obejdzie. Do tego obiekt astatyczny - a więc jest problem z pobraniem odpowiedzi na skok w pętli otwartej.
Próbowałem Zieglera-Nicholsa - wychodzi coś nie tak. Myślałem o auto-tuningu. Może metoda przekaźnikowa (Astroma-Hagglunda)? Napisałem program na którym mogę symulować PIDa i obiekt (inercyjny I-wszego rzędu z opóźnieniem) i coś to auto-strojenie za bardzo nie wychodzi.
Czy ktoś ma pomysł jak zrobić auto-tuning? Ostatecznie myślałem o tym, że komputer będzie wybierał parametry dla P I D, kazał sterownikowi wykonać krok i pobierał od niego odpowiedź: jaki max uchyb, jaki czas regulacji, jaka jakość regulacji i na tej podstawie może niech przemiata przez ileś tam wartości P I D zawężając obszar poszukiwań.
Może ktoś podrzuci jakiś pomysł?
SM
I teraz pytanie - jak zabrać się do strojenia regulatora PID?
Obiekt regulacji będzie chyba typu całkującego (podwójnie całkujący?), więc chyba bez różniczkowania się nie obejdzie. Do tego obiekt astatyczny - a więc jest problem z pobraniem odpowiedzi na skok w pętli otwartej.
Próbowałem Zieglera-Nicholsa - wychodzi coś nie tak. Myślałem o auto-tuningu. Może metoda przekaźnikowa (Astroma-Hagglunda)? Napisałem program na którym mogę symulować PIDa i obiekt (inercyjny I-wszego rzędu z opóźnieniem) i coś to auto-strojenie za bardzo nie wychodzi.
Czy ktoś ma pomysł jak zrobić auto-tuning? Ostatecznie myślałem o tym, że komputer będzie wybierał parametry dla P I D, kazał sterownikowi wykonać krok i pobierał od niego odpowiedź: jaki max uchyb, jaki czas regulacji, jaka jakość regulacji i na tej podstawie może niech przemiata przez ileś tam wartości P I D zawężając obszar poszukiwań.
Może ktoś podrzuci jakiś pomysł?
SM