równoczesna praca kilku osi
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
Ja tam żadnych wzorów nie proponowałem, tylko podałem zasadę tworzenia tego ruchu z wektorów. Robienie tego na piechotę to masochizm, ale da się. Poza tym żeby napisać skrypt generujący taki g-kod to trzeba sobie to ręcznie przeanalizować. Tylko dla mnie mach czy linuxcnc w takim zastosowaniu to atrapa. To już od razu można sobie machnąć program w jakimś języku i sterować impulsami przez port lpt, jak już musimy zaprzęgać do tego komputer z monitorem. Zdaje się, że jest jakiś gotowy program, który zapala led-y przez lpt według zaprogramowanych sekwencji. Nic nie stoi na przeszkodzie, żeby podłączyć do tego sterowniki.
Tagi:
-
Autor tematu - Posty w temacie: 9
Czyżby tylko jedna osoba zrozumiała o co pytałem?MlKl pisze:Z wypowiedzi autora wynika, że chce jednocześnie sterować w czasie realnym trzema niezależnymi narzędziami, czy też osiami. Tymczasem program typu Mach steruje zawsze jednym narzędziem na raz, wszystkie osie są na sztywno dowiązane do wierzchołka narzędzia. Program przelicza, o ile każda z nich ma się przesunąć, by ten wierzchołek poruszał się zaprogramowaną trasą.
W LinuxCNC jest HAL, czyli warstwa pośrednia między interpreterem g-codu a sterownikami, którą można wykorzystać do zaprogramowania sterowników z pominięciem interpretera g-code. Wtedy każdy ze sterowników działa osobno według własnego rozkładu jazdy, i wszystkie robią to równocześnie.
prościej chyba się nie da.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 9
- Posty: 3705
- Rejestracja: 15 sie 2010, 13:44
- Lokalizacja: Błonie
- Kontakt:
Tutaj wszyscy są zaprogramowani monotematycznie
W każdym razie nie osiągniesz tego, co potrzebujesz, przez prosty g-code zinterpretowany przez Macha, czy LinuxCNC. Jeżeli nie boisz się wyzwań, i łatwo się uczysz, HAL z LinuxCNC jest rozwiązaniem. Tomcat sporo przesadza z tym straszeniem - Linux wcale nie jest ani taki trudny, ani się nie psuje tak łatwo.

W każdym razie nie osiągniesz tego, co potrzebujesz, przez prosty g-code zinterpretowany przez Macha, czy LinuxCNC. Jeżeli nie boisz się wyzwań, i łatwo się uczysz, HAL z LinuxCNC jest rozwiązaniem. Tomcat sporo przesadza z tym straszeniem - Linux wcale nie jest ani taki trudny, ani się nie psuje tak łatwo.
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 19
- Posty: 1214
- Rejestracja: 15 paź 2007, 00:45
- Lokalizacja: nie ważne
Grze, napisz wreszcie co chcesz aby te osie robiły.
Czy mają się jednocześnie przesunąć każda z własną prędkością,
i każda o określony , inny dla każdej odcinek
i startować oraz zatrzymać się mają jednocześnie?.
A następnie wrócić na początek?
I od nowa ta sekwencja i tak ciągle te same skoki?
NO NAPISZ COŚ WYRAŻNIEJ.
Czy mają się jednocześnie przesunąć każda z własną prędkością,
i każda o określony , inny dla każdej odcinek
i startować oraz zatrzymać się mają jednocześnie?.
A następnie wrócić na początek?
I od nowa ta sekwencja i tak ciągle te same skoki?
NO NAPISZ COŚ WYRAŻNIEJ.
Pasjonat
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 19
- Posty: 1214
- Rejestracja: 15 paź 2007, 00:45
- Lokalizacja: nie ważne
No to masz
maszynka :
ilość impulsów dla każdej osi np 100/1mm
(dla jasności aby się przesunęło o 1mm to program wygeneruje 100 impulsów do sterownika silnika.
pomijam rampy rozruchowe i ograniczenia predkości
trajektoria:
1 oś x --skok 100mm predkość 100mm/min
2 oś y --skok jakiś - prędkość 50mm/min
Program w osi x ruszy silnikiem i będzie to trwało przez czas T=S/V=100[mm] / 100[mm/min]=1[min]
Czyli po 1 min zatrzyma oś x
Ale chcesz aby w osi y było w tym czasie ileś tam mm ruchu z predkością 50mm/min
No to robimy
Mach będzie kręcił taką prędkość jaką sobie wyliczy z podanego w Gkodzie posuwu.
Ten posuw rozłoży na składową da osi X - i ma mu wyjść 100mm/min oraz na składową osi Y i ma mu wyjść 50mm/min
Ruch będzie trwał 1 min (m jak wcześniej wyliczyłem przyjmując jako podstawę oś X)
Czyli oczekiwane 50mm/min będzie wtedy gdy program będzie myślał że przez 1 min ma przesunąć punkt o 50 mm
tak więc postać Gkodu dla tego fragmentu wygląda tak:
g00
Fcoś tam - (później wyliczę
x100y50
Z tego ruchu program mysli że punkt wykona skok S=(x*x+y*y)exp2 ( pierwiastek z sumy kwadratów) czyli
S=(100*100+50*50)exp2=111,8mm
I ten skok ma być w czasie 1 min
Tak wiec do Gkodu trzeba wstawić posuw o wartości
F=111,8mm/1min czyli
f=111,8
G01F111,8
x100y50
Przy takim Gkodzie będziesz miał prędkość
dla x=100mm/min
dla y 50mm/min
Pozostaje tylko oczekiwania aby ruch na Y był w tym czasie na odcinku takim jakim chcesz
Ale zażądałeś aby to było jednocześnie - start i stop.
To oznacza że określony jest czas ruchu i z niego wyjdzie jaka będzie droga przy założonej predkości na osiach. i koniec
Możesz założyć ze osie mają wykonać określony skok w tym samym czasie - wtedy bedzie Ci się zmieniać odpowiednio prędkość na pozostałych osiach.
Dla trzech osi liczysz tak samo tylko trzeba trzecią oś wyliczyć wraz z wypadkową dwóch wcześniejszych.
A kol. Tomcat też może tym razem już ze "wzorów" coś skorzystać bo na razie to nie ogarnia.
maszynka :
ilość impulsów dla każdej osi np 100/1mm
(dla jasności aby się przesunęło o 1mm to program wygeneruje 100 impulsów do sterownika silnika.
pomijam rampy rozruchowe i ograniczenia predkości
trajektoria:
1 oś x --skok 100mm predkość 100mm/min
2 oś y --skok jakiś - prędkość 50mm/min
Program w osi x ruszy silnikiem i będzie to trwało przez czas T=S/V=100[mm] / 100[mm/min]=1[min]
Czyli po 1 min zatrzyma oś x
Ale chcesz aby w osi y było w tym czasie ileś tam mm ruchu z predkością 50mm/min
No to robimy
Mach będzie kręcił taką prędkość jaką sobie wyliczy z podanego w Gkodzie posuwu.
Ten posuw rozłoży na składową da osi X - i ma mu wyjść 100mm/min oraz na składową osi Y i ma mu wyjść 50mm/min
Ruch będzie trwał 1 min (m jak wcześniej wyliczyłem przyjmując jako podstawę oś X)
Czyli oczekiwane 50mm/min będzie wtedy gdy program będzie myślał że przez 1 min ma przesunąć punkt o 50 mm
tak więc postać Gkodu dla tego fragmentu wygląda tak:
g00
Fcoś tam - (później wyliczę
x100y50
Z tego ruchu program mysli że punkt wykona skok S=(x*x+y*y)exp2 ( pierwiastek z sumy kwadratów) czyli
S=(100*100+50*50)exp2=111,8mm
I ten skok ma być w czasie 1 min
Tak wiec do Gkodu trzeba wstawić posuw o wartości
F=111,8mm/1min czyli
f=111,8
G01F111,8
x100y50
Przy takim Gkodzie będziesz miał prędkość
dla x=100mm/min
dla y 50mm/min
Pozostaje tylko oczekiwania aby ruch na Y był w tym czasie na odcinku takim jakim chcesz
Ale zażądałeś aby to było jednocześnie - start i stop.
To oznacza że określony jest czas ruchu i z niego wyjdzie jaka będzie droga przy założonej predkości na osiach. i koniec
Możesz założyć ze osie mają wykonać określony skok w tym samym czasie - wtedy bedzie Ci się zmieniać odpowiednio prędkość na pozostałych osiach.
Dla trzech osi liczysz tak samo tylko trzeba trzecią oś wyliczyć wraz z wypadkową dwóch wcześniejszych.
A kol. Tomcat też może tym razem już ze "wzorów" coś skorzystać bo na razie to nie ogarnia.
Pasjonat
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 12
- Posty: 1417
- Rejestracja: 23 cze 2008, 10:38
- Lokalizacja: OOL lub DW
- Kontakt:
MlKl, czy możesz zapodać więcej informacji na temat HAL-a???
co to jest i z czym sie je jakie wymagania i możliwosci
grze, Można ustawić prace osi z różnymi prędkościami ale to w odpowiednich warunkach
jeśli chcesz pracować osiami z rożną predkoscią to nie problem ale problem będzie z odległością oraz synchronizacją ot wszystko na temat
co to jest i z czym sie je jakie wymagania i możliwosci
grze, Można ustawić prace osi z różnymi prędkościami ale to w odpowiednich warunkach
jeśli chcesz pracować osiami z rożną predkoscią to nie problem ale problem będzie z odległością oraz synchronizacją ot wszystko na temat
[b]MACH3 cnc[/b]Tworzenie Makr do palników magazynków THC OHC inne[b]EKRANY dla firm producentów maszyn[/b] Budowa sprzedaż wypalarki plazma gaz obrotnice Elektrodrążarki Frezarki Tokarki Giętarki3D inne wg zlecenia 888 708 196 Tomek Komor [email protected]
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 15
- Posty: 1242
- Rejestracja: 15 lis 2009, 02:46
- Lokalizacja: Olsztyn
- Kontakt:
Kol. tomcat nie aspiruje do roli omnibusa i nie musi ogarniać wszystkiego, zwłaszcza wydumanych nazw na określenie prostych czynności. Ach, ta wymyślna nazwa - składanie wektorów. Tak jak pisuardesa zamiast babci klozetowej. Ktoś chciał błysnąć, a wyszło? no cóż. Bo co zaproponowano: Obliczanie drogi do przebycia w funkcji czasu czyli prędkość na podstawie zwykłego twierdzenia Pitagorasa, czyli a kwadrat pluc b kwadrat = c kwadrat. Rzeczywiście, komplikacja obliczeń taka, że BIGBLUE wysiada, o napisaniu g-kodu nie wspomnę, bo przekracza to ludzkie możliwości. Chwała Bogu jest ktoś kto to potrafi. Uf, świat uratowanyma555rek pisze:kol. Tomcat też może tym razem już ze "wzorów" coś skorzystać bo na razie to nie ogarnia.

Opisana metoda, choć szumnie nazwana, jest prostsza niż budowa cepa. Za to wyjątkowo upierdliwa, bo nie dość, że liczenie dla każdej linii kodu to jeszcze uwzględnianie najwolniejszej osi w danej konfiguracji. No gratulacje.
I co ważniejsze, wszystko to nie ma sensu.
Bo odpaliłem Mach'a i zrobiłem to, co pisałem na początku, czyli ograniczenie predkości osi. I działa to tak, jak powinno. Chcemy jechac osią x - jedzie 150, z - 50, czyli tyle ile ustawione. Żadna nie przekroczy założonej dla niej prędkości. Po przekątnych zgodnie z obliczeniami, które są niepotrzebne, bo program sam policzy. Jadąc przekątną kwadratu, szybsza oś zwalnia do wolniejszej, inaczej się nie da kol.ma555rek. Chyba, że w nieeuklidesowej przestrzeni. Ale na razie pracujemy w układzie kartezjanskim.
Czy znów zaproponujesz jakąś ekstarwagancko nazwaną teorię?