sterownik HPGL - STEP/DIR

Rozmowy dotyczące oprogramowania sterującego maszynami CNC i sterowników CNC obrabiarek numerycznych

Autor tematu
bogus105
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 418
Rejestracja: 24 gru 2005, 12:59
Lokalizacja: Bielsko-Biała

sterownik HPGL - STEP/DIR

#1

Post napisał: bogus105 » 17 mar 2007, 02:52

WITAM, chcę zrobić taki sterownik na mikrokontrolerze, który przez port szeregowy z PC odbierał by współrzędne kolejnych punktów (ploterowy HPGL) i przeliczałby to na impulsy STEP/DIR na sterowniki silników krokowych.
Pytanie jak się do tego zabrać??
Jak zrobić żeby np. prędkość posuwu była stała?? rozumiem to tak, że mając współrzędne 2 pktów microkontroler przelicza odległość między nimi, następnie mając zadany posuw oblicza czas w jakim np. wrzeciono ma pokonać drogę między tymi punktami, a mając ten czas i wiedząc jaka ma być droga po X i po Y to znając rozdzielczość maszyny wiadomo ile musi ona zrobić kroków po X i po Y. Wtedy czas/kroki i są dane co jaki czas trzeba dać impuls STEP na każdą oś żeby suma sumarum się wszystko zgadzało... taką teorię sobie wymyśliłem
tylko jak z realizacją w praktyce? co z błędami - rozdzielczość czasowa i mechaniczna jakaś jest i wtedy to nie będzie się zgadzało.
Czy istnieje jakiś prostszy algorytm realizacji tego?? Czy prościej będzie taki program zrobić na PC-ta i sterować via LPT? - chodzi o to że mają być 4 silniki do sterowania posuwem (jakby 4 osie) i 4 silniki do sterowania elementem w miejscu wrzeciona. Jak na mikrokontroler to chyba za dużo...



Tagi:

Awatar użytkownika

Piotr Rakowski
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 2173
Rejestracja: 29 lip 2005, 15:07
Lokalizacja: Warszawa
Kontakt:

#2

Post napisał: Piotr Rakowski » 17 mar 2007, 07:32

Kol. Prokopcio zrobił już taki sterownik do wypalarki plazmowej. Odezwij się do niego.
Maszyny i oprogramowanie CNC: eduCAD, STEP2CNC, LynxCUT, Styro3D, Tapper, cncCAD, Image2CAM, Turn3D, TERMCUT, LynxNEST (Nesting)


prokopcio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 1
Posty: 1138
Rejestracja: 11 sty 2005, 13:03
Lokalizacja: Grodków
Kontakt:

#3

Post napisał: prokopcio » 17 mar 2007, 15:02

Witam. Tak - zrobiłem sterowniczek na atmelu'51 (assembler) i napisałem programik w delphi na PC. jednak projekt nie został dokończony i do idealności było mu bardzo daleko chociaż działał prawidłowo. Podarowałem sobie liczenie "dyskretyzacji" odcinków w procesorze i robiłem to na PC w wymyślonym przez siebie algorytmie. Do sterownika docierały przez port RS232 jedynie bajty danych, które odpowiednio oznaczały "góra, dół, prawo, lewo, włącz plazmę, wyłącz plazmę itp. sterownik na podstawie tych bajtów sterował silnikami - nawet to nie było STEP/DIR ;-) - dany były pobierane do bufora a z niego sterownik co ustawiony czas (prędkość) pobierał dane i sterował silnikami. Tutaj jest opis, fotki i filmiki:
http://www.elektroda.pl/rtvforum/topic358230.html

Jednak takie liczenie i wysyłanie gotowych niemalże kroków znacznie ogranicza prędkości pracy maszyny, "nadwyręża transmisję" a bufor okazuje się "malutki" i nie jest to eleganckie rozwiązanie.

Teraz właśnie jestem w trakcie tworzenia nowego sterownika, który :
- Łącze USB 1.1; USB 2.0 lub RS232
- Wewnętrzna implementacja przetwarzania współrzędnych na ścieżkę
- Spory bufor danych
- przyjmowanie bezpośrednich współrzędnych (a nie jak poprzednio kroków);
- idealna stabilizacja prędkości (potrzebne dla cięcia plazmowego, laserowego, drutem oporowym itp.)
- możliwość "wgrania" prostych kształtów i praca bez komputera
- programowany "maksymalny skok głębokości"
- sporo innych opcji ;-)
- minimalne obciążenie komputera (możliwość wykonywania innych czynności podczas pracy maszyny oraz możliwość wykorzystania starego i słabego komputera)
- nie wymagany port LPT (Nowe laptopy ich nie posiadają)

Tutaj odrazu Ci proponuję, żebyś szczegółowo przyjrzał się algorytmowi Bresenhama, który jest bardzo prosty i na podstawie niego łatwo znajdziesz poszczególne kroki jakie trzeba wykonać aby "przejechać" z punktu do punktu. Reszta zależy tylko od Twojej wyobraźni.

Pozdrawiam

Awatar użytkownika

Piotr Rakowski
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 2173
Rejestracja: 29 lip 2005, 15:07
Lokalizacja: Warszawa
Kontakt:

#4

Post napisał: Piotr Rakowski » 17 mar 2007, 16:38

prokopcio pisze:...
Tutaj odrazu Ci proponuję, żebyś szczegółowo przyjrzał się algorytmowi Bresenhama, który jest bardzo prosty i na podstawie niego łatwo znajdziesz poszczególne kroki jakie trzeba wykonać aby "przejechać" z punktu do punktu. Reszta zależy tylko od Twojej wyobraźni.
Te algorytmy Bresenhama (zarówno dla odcinków prostych, jak i krzywych) nie będą dobre do wyznaczania wektorów ruchów (one są do reseryzacji - czyli znajdowania pikseli spełniających określone warunki). Zdecydowanie polecam algorytmy interpolacji liniowej, kołowej, helikalnej itd (wymyślone już od dawna).

Najprostrzy algorytm interpolacji liniowej wygląda tak. Liczenie następnego punktu następuje względem poprzedniego o interwał ruchu w danej osi.
Dla obrabiarki 3-osiowej będzie to:

X(i+1) = X(i) + λxi,
Y(i+1) = Y(i) + λyi,
Z(i+1) = Z(i) + λzi.

gdzie: λxi = λL/L(Xi-Xo), λyi = λL/L(Yi-Yo), λzi = λL/L(Zi-Zo),
L = długość wektora ruchu,
λL = posuw dotychczasowy,
Xi,Yi,Zi - punkt aktualny,
Xo,Yo,Zo - punkt początkowy ruchu.

Pozdrawiam.
Maszyny i oprogramowanie CNC: eduCAD, STEP2CNC, LynxCUT, Styro3D, Tapper, cncCAD, Image2CAM, Turn3D, TERMCUT, LynxNEST (Nesting)

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Ogólne Dyskusje na Temat Systemów Sterowania CNC”