Strojenie PID

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

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

#11

Post napisał: korinsj » 21 wrz 2008, 12:38

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.



Tagi:


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#12

Post napisał: jarekk » 22 wrz 2008, 13:24

korinsj pisze: 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ą.
Widzę robimy podobną rzecz - może kolega opowie co więcej ? ( ja też mam główny sterownik na ARMach, ale chyba w nieco innej konfiguracji).
korinsj pisze: . 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.
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 )


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

#13

Post napisał: korinsj » 26 wrz 2008, 19:24

> 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.

Awatar użytkownika

chomikaaa
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 6
Posty: 988
Rejestracja: 19 cze 2004, 23:22
Lokalizacja: lodz

#14

Post napisał: chomikaaa » 26 wrz 2008, 20:15

Ja tez robie podobna rzecz a oto efekty na 8bitowcu projekt narazie w formie testowej
Załączniki
MVI_8329.rar
uzyskany efekt
(5.91 MiB) Pobrany 530 razy
IMG_8345.JPG
stanowisko testowe
IMG_8345.JPG (69.72 KiB) Przejrzano 503 razy


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#15

Post napisał: jarekk » 26 wrz 2008, 20:26

korinsj pisze: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.
Dziękuję bardzo. Jeszcze pogrzebałem i w końcu kupiłem HCPL316J - aby mieć od razu zabezpieczenie ( będę robił na IGBT).
korinsj pisze: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ą.
Jakich prędkości się kolega spodziewa ? Jeden procek to niestety ograniczenie ( miałem taki prototyp, działał do około 80..100kHz). Obecnie mam procka głównego ( LPC2378) plus dodatkowy procek na każdą oś ( do stabilnej generacji step/dir).

I jeszcze jedno pytanie ( pytałem już innego kolegę który też robi sterownik). 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.
Działą to całkiem ok, ale czy jest jakiś lepszy sposób ? Np. zakładać dopuszczalną względną zmianę prędkości ? ( ale ta nie będzie stała w całym zakresie prędkości)


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

#16

Post napisał: korinsj » 27 wrz 2008, 08:20

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


cnc3d
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 5
Posty: 635
Rejestracja: 29 mar 2008, 16:48
Lokalizacja: laski

#17

Post napisał: cnc3d » 27 wrz 2008, 12:37

No to do tego dołóżmy jeszcze płynną regulację prędkości potencjometrem, ograniczającą prędkość zadaną i mamy zabawę na całego. Tak naprawdę to problemów jest znacznie więcej, a to co kolega opisał to wierzchołek góry lodowej: uzależnienie skoku prędkości od aktualnej szybkości, zróżnicowane przyspieszenia, na różnych osiach itd. W związku z tym nie ma się co dziwić, że "prawdziwe" sterowania sa takie drogie, ale za to mogą sie pochwalić kilkakrotnie większymi wydajnościami.


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 7
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#18

Post napisał: jarekk » 28 wrz 2008, 14:09

cnc3d pisze:No to do tego dołóżmy jeszcze płynną regulację prędkości potencjometrem, ograniczającą prędkość zadaną i mamy zabawę na całego. Tak naprawdę to problemów jest znacznie więcej, a to co kolega opisał to wierzchołek góry lodowej: uzależnienie skoku prędkości od aktualnej szybkości, zróżnicowane przyspieszenia, na różnych osiach itd.
No ja właśnie to uruchamiam - mam panel ( po CANie) z przyciskami oraz cyfrowymi i analogowymi potencjometrami.

Ja to robię tak - każda oś ma następujące parametry - prędkość bezpieczną ( poniżej której nie ma gubienia kroków), maksymalne dopuszczalne przyspieszenie i opóźnienie, maksymalną prędkość. Do tego dla każdego wektora dochodzą dodatkowe parametry prędkości i przyspieszenia ( w zależności od tego czy to posów roboczy, czy też "wolny"). Tak naprawdę jest to matematyka na poziomie równań kwadratowych ( potem chcę używać krzywych Beziera) - choć zanim powstał algorytm to tydzień go męczyłem w Excelu zanim liczby się zgadzały.

Cała trajektoria przeliczana jest na PC ( hamowania, przyspieszania, odcinki ze stałymi prędkościami). W tej chwili nie mam jeszcze pełnej optymalizacji, ale i tak działa to zachęcająco - w porównaniu do algorytmu w którym każdy wektor startuje i kończy na zerze.

Co do taktowania - używam stałego taktu algorytmu - na poziomie 50...500kHz ( przeliczenia robione są na konkretną częstotliwość ). Wtedy chcąc płynnie przyspieszyć/zwolnić po prostu przestrajam ten zegar ( główny procek taktuje procesory osi sygnałem zegarowym ). Docelowo również będzie można w ten sposób zatrzymać i uruchomić program bez ryzyka zgubienia kroków ( płynnie zatrzymując takt). Mam w planie również możliwość pracy w tył ( czasami potrzebne dla plazmy ).
korinsj pisze: 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.
Tej właśnie optymalizacji mi brakuje. Ale mam pomysł jak ją zrobić - trzeba będzie iteracyjnie podnosić prędkość w węzłach pomiędzy wektorami ( w stosunku do wersji w której we wszystkich węzłach zakończyliśmy na prędkości bezpiecznej).


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

#19

Post napisał: korinsj » 28 wrz 2008, 20:00

... 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.

Awatar użytkownika

chomikaaa
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 6
Posty: 988
Rejestracja: 19 cze 2004, 23:22
Lokalizacja: lodz

#20

Post napisał: chomikaaa » 28 wrz 2008, 21:48

Mam pare pytan do waszych rozwazan:

- czy to nie mach, turbocnc odpowiada za rampe rozpedzania hamowania?

- czy moze tworzycie swoje oprogramowanie na wzor macha, czy tylko soft sterownika?

nie rozumiem dlaczego ograniczacie predkosc.

- jaka strukture wykorzystujecie do regulatora pozycji predkosci momentu?

- enkoder ile impulsow inkrementuje "krok"

- w dotychczasowych eksperymentach ile trwa pelna petla programu sterownika ile to jest us i ile trwa okres jedengo ze stanow enkodera dla predkosci obrotowej max ?

- no i jakie zalozenie przyjeliscie odczyt z lpt liczycie impulsy w czasie czy inna metoda?

nie bardzo wiem do czego dazycie wiec nie wiem co pisac a chetnie dolacze sie do dyskusji w wolnych chwilach.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”