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

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

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

#31

Post napisał: jarekk » 07 gru 2008, 05:42

cnc3d pisze:Można połączyć obie metody, ale na bazie samego procka jest to niemożliwe. Potrzebna jest skomplikowana struktura logiczna i niestety też dzielenie, a i tak efekt nie jest w pełni zadowalający.
Dlatego ja wziąłem dsPICa "motor control" - ma sprzętowy enkoder kwadraturowy z kupą dodatkowych timerów. Wtedy da się to załatwić. Nie mówię już o sprżetowej generacji sygnałów dla tranzystorów mocy. Nie trzeba wtedy CPLD



Tagi:


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

#32

Post napisał: Adalber » 07 gru 2008, 12:15

Nie przesadzajmy z tą "skomplikowaną strukturą logiczną".
Zrobiłem enkoder kwadraturowy na zwykłym uP Atmela typu '51. Jeśli wykorzystamy przerwania, procesorowi zajmuje to od 5% do 100% mocy obliczeniowej w zależności od częstotliwości impulsów enkodera.
Mając do dyspozycji lepszy uP z przerwaniami w odpowiedzi na zbocze narastające i opadające to już zwykły banał .


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

#33

Post napisał: Leoo » 07 gru 2008, 12:46

Adalber pisze:Nie przesadzajmy z tą "skomplikowaną strukturą logiczną".
Jakieś 18 lat temu projektowałem "coś" co odczyta bezstykowo pozycję mechanicznego żyroskopu. Procesor to 80C31, pamięć programu w EEPROM 2732. Kod zajmuje praktycznie 3 linie w Asemblerze i dekoduje (jak się okazało po latach) enkoder kwadraturowy.
Kolego cnc3d, proszę nie pisać mi o jakiejś katastroficznej złożoności procesów, czy o niemożliwości wykonania dzielenia przez procesor. Jak na razie spór w dyskusji istnieje tylko między nami. Ja proponuję rozwązania natomiast Kolega je podważa. Nie pouczam Autora wątku, podsuwam jedynie pomysły. Zrobi On z nimi co zechce.


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

#34

Post napisał: cnc3d » 07 gru 2008, 17:55

Co do możliwości sprzętowych mikrokontrolerów z dekoderem kwadraturowym (sprzętowym) to jest oczywiście najlepsze rozwiązanie. Próba programowego symulowania dekodera kwadraturowego będzie sie sprawdzała tylko przy bardzo niskich częstotliwościach. Poza tym potrzebne jest znacznie więcej instrukcji do wykonania. Najpierw odłożenie rejestrów na stos, skok do procedury przerwania, pobranie stanu portu, decyzja o dekrementacji lub inkrementacji, odczyt zmiennej pozycji, inkrementacja, lub dekrementacja, zapis do zmiennej pozycji, odtworzenie rejestrów, powrót z procedury przerwania. To do najmniej 10 instrukcji, a biorąc pod uwagę kilka cykli na niektóre instrukcje, to co najmniej 30 cykli. Stara 51' pozwoli na obsługę enkodera do częstotliwości ok 50kHz co jest żałośnie niską wartością. Nawet wielokrotnie szybsze procki się spocą przy 300kHz. A gdzie pozostałe obliczenia? Enkoder 2500 ppr generuje 10000 zboczy na obrót, co przy 3000rpm daje 0.5Mhz.

Ale polemika dotyczyła sposobu wyznaczania prędkości a nie pozycji. A takich sprzętowych zasobów standardowo precyzyjnie wyznaczających prędkość z enkodera żaden kontroler nie ma. A co do moich rad to na razie musi wam wystarczyć wskazywanie, która droga jest zła.

Ma kolega jakiś prosty patent na wyznaczanie takiej prędkości w sposób liniowy i ciągły, z rozdzielczością i dokładnością umożliwiającą zastosowanie go w pętli sprzężenia zwrotnego regulatora prędkości serwonapędu? Są metody sprzętowe, ale bardzo skomplikowane. Tak skomplikowane, że wymagają implementacji na fpga z co najmniej 50-cio megahercowym motorkiem. Wszyscy producenci "poważnych" serwonapędów stosują taką metodę.


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

#35

Post napisał: Leoo » 07 gru 2008, 18:21

cnc3d pisze:Ma kolega jakiś prosty patent na wyznaczanie takiej prędkości w sposób liniowy i ciągły, z rozdzielczością i dokładnością umożliwiającą zastosowanie go w pętli sprzężenia zwrotnego regulatora prędkości serwonapędu? Są metody sprzętowe, ale bardzo skomplikowane. Tak skomplikowane, że wymagają implementacji na fpga z co najmniej 50-cio megahercowym motorkiem. Wszyscy producenci "poważnych" serwonapędów stosują taką metodę.
Oczywiście.
Sprzętowy dekoder połączony z licznikiem rewersyjnym. Licznik połączony z CPU jednym portem 8b. Rozwiązanie stosowane np. w serwie Gecko, tyle że bez procesora. Nawet jeśli PID serwa "prześpi" 200 zmian enkodera i tak zdąży wyliczyć właściwą wartość poprawki.
Załączniki
ls7083-7084_139.pdf
(36.57 KiB) Pobrany 285 razy

Awatar użytkownika

kwarc
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1058
Rejestracja: 06 sty 2007, 18:13
Lokalizacja: Mgławica Andromedy

#36

Post napisał: kwarc » 07 gru 2008, 21:35

proponuje zawezic dyskusje do sterownikow w zastosowaniach AMATORSKICH.czyli
enkodery napewno nie 10000 na obrot.czestotliwosci napewno nie 0.5Mhz i dopuszczalne bledy w interpolacji np.0,05mm oraz dostepne i tanie podzespoly elektroniczne tak jak to uczynil tworca UHU .kurcze dlaczego Niemcy sa bardzo czesto lepsi?? przecierz maja nizszy poziom nauczania w szkolach :???:


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:

#37

Post napisał: korinsj » 08 gru 2008, 06:51

> enkodery napewno nie 10000 na obrot

Zakładam zastosowanie enkoderów 250..1000 imp/obr (wymnożone następnie w sterowniku przez 4)

> czestotliwosci napewno nie 0.5Mhz

W tej chwili ARM zlicza bez problemu 500kHz. Pójdzie nawet na ponad 700kHz.

> dopuszczalne bledy w interpolacji np.0,05mm

To zależy od rozdzielczości enkodera i skoku śruby. Zapytam inaczej - ile przykładowo działek enkodera powinien wynosić max błąd?

>tanie podzespoly elektroniczne

Koszt mojego sterownika serwa DC to jakieś 50zł (bez mostka H).


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

#38

Post napisał: Leoo » 08 gru 2008, 12:36

korinsj pisze:Koszt mojego sterownika serwa DC to jakieś 50zł (bez mostka H).
Kolega pewnie gdzieś pracuje zawodowo. Kwotę, którą zarabia na godzinę, proszę pomnożyć przez ilość godzin spędzoną nad projektem i koszt zaraz się poprawi :cool:


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:

#39

Post napisał: korinsj » 08 gru 2008, 14:09

>Kolega pewnie gdzieś pracuje zawodowo. Kwotę, którą zarabia na godzinę, proszę pomnożyć przez ilość godzin spędzoną nad projektem i koszt zaraz się poprawi

Przecież nie pisałem o koszcie wykonania projektu - działającego prototypu (elektronika+oprogramowanie). Zacytowałem zdanie: "tanie podzespoly elektroniczne" i do tego zdania się odniosłem.

[ Dodano: 2008-12-09, 13:46 ]
Tutaj:

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

wrzuciłem nową wersję programu - symuluje pracę serwa DC sterowanego regulatorem P-PI(D).

Pole "Mnożnik" odpowiada za dokładność pomiaru prędkości. O ile uchyb położenia ma zawsze wartość całkowitą (pozycja zadana - pozycja enkodera), o tyle mnożnikiem można symulować precyzyjny pomiar prędkości.

Standardowo prędkość jest liczona jako różnica między odczytami enkodera przy kolejnych wejściach do obsługi PID. Ustawiając mnożnik np. na 10 powodujemy iż prędkość "mierzona" jest z dokładnością do jednej cyfry po przecinku.

Można porównać zachowanie się pętli regulacji gdy pomiar prędkości odbywa się nie na podstawie tylko różnicy odczyt enkodera, ale dokonując pomiaru np. szybkim timerem.


domin0
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 2
Posty: 12
Rejestracja: 26 cze 2007, 23:19
Lokalizacja: ślask

#40

Post napisał: domin0 » 03 mar 2009, 21:43

Mam kilka pytan poczatkujacego - przy założeniu,że mam driver sterujacy +/- 10V oraz enkoder 1000 imp a przy przelozeniu 1 impuls z enkodera reprezentuje przesuniecie o 0.005 mm w osi
- chcac zbudowac uklad regulacji zamieniajacy STEP/DIR na sygnal napieciowy +/-10V , mam buforowac jakas (jaka?)ilosc impulsow STEP i dopiero pozniej wymuszac przy pomocy reg PId przesuneicei o zliczona wartość?
-co z reg.predkosci jezeli w jednej osi reg PId rozpedzi mi silnik do innej predkosci niz w drugiej osi to z krzywej moze wyjsc łuk z róznicy czasów dojazdu do zadanego punktu- co z tym zrobic?

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”