Ja zrozumiałem, że chce kręcić silnikami z prędkościami, które są ustalone i wykonuje nimi konkretne powtarzalne ruchy. Napisałem przykład prosty, ale te ruchy mogą być dowolnie skomplikowane. Można określić prędkość dla każdej osi niezależnie, można ustalić odcinki przejazdu osi też niezależnie. Można też zatrzymywać dowolne silniki jak się chce. W tym układzie można wszystko określić, nie wiem dlaczego uważasz, że prędkości pozostałych osi są uzależnione od pozostałych. Ja pokazałem, że nie są zależne.tuxcnc pisze: Jeśli w jednej osi miało by jechać tam i z powrotem, a pozostałe tylko tam i wszystko w określonym czasie, to faktycznie to co napisałeś miało by sens, ale trzeba by było założenia zrobić w jednej osi, a resztę osi dopasować.
Czyli 2*Y/t=X/t=Z/t .
Mając zadane wszystkie przesunięcia i prędkość (lub czas) w jednej osi, pozostałe prędkości wychodzą z układu równań i nie można ich dowolnie założyć.
To tutaj jest problem, bo z tego co autor wątku napisał, można wywnioskować że żąda rzeczy niemożliwej.
równoczesna praca kilku osi
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
Tagi:
-
- Lider FORUM (min. 2000)
- Posty w temacie: 21
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Pewnie inaczej rozumiemy znaczenie słów "zależy mi aby osie pracowały równocześnie".ezbig pisze:nie wiem dlaczego uważasz, że prędkości pozostałych osi są uzależnione od pozostałych.
Dla mnie "pracowały równocześnie" znaczy że mają ruch razem zaczynać i razem kończyć, że nie ma takiego momentu, że jedna oś jeszcze jedzie a pozostałe dawno skończyły.
Ja to piszę od początku, że problem został opisany enigmatycznie i zasadniczo nie wiadomo o co chodzi.
.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
W zasadzie to autor powinien określić co on rozumie przez "równocześnie". Ja milcząco założyłem, że równocześnie startują i poruszają się z różnymi prędkościami, a skoro mają różne prędkości odcinki do pokonania to nie muszą się równocześnie zatrzymać. Chyba że drogi zostaną tak dobrane, że to nastąpi. W każdym bądź razie moje wywody uwzględniają dowolną sytuację "równoczesności".
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 15
- Posty: 1242
- Rejestracja: 15 lis 2009, 02:46
- Lokalizacja: Olsztyn
- Kontakt:
To samo stwierdziłem i :tuxcnc pisze:problem został opisany enigmatycznie i zasadniczo nie wiadomo o co chodzi.
Ale mamy teżezbig pisze:zasady zostały wyłożone na stół. Trzeba jakiś prosty ruch określić i można kod napisać.
I nie wiadomo czego się trzymać, czy stałej prędkości w osiach,co da zawsze jednoznaczny ruch po przekątnej prostopadłościanu, czy stałej wypadkowej prędkości.grze pisze:jena oś idzie z prędkością np f150 o zadaną wartość następie się cofa, druga porusza się z prędkością f50 też o zadaną wartość i trzecia z f100. Zależy mi aby osie pracowały równocześnie.
Jedynie przykład kol. ma555rek z osią obrotową jest rozwiązywalny, czyli coś a'la:
http://www.youtube.com/watch?feature=pl ... aQNoM7Tuhk
Czyli chodzi o stworzenie 'elekronicznej gitary', aby cięła lub wykreślała linię śrubową o stałym kącie ( lub proporcjach boków, co na jedno wychodzi ) lub przemieszczała się po tej linii z określoną szybkością niezależnie od 'średnicy materiału'.
Podałem wzór, ale z błędem, powinno być S[[f*2√2/[z*2*pi]]*360st]
czyli dla x=a=100, z=20 wyniesie 202st34'/min.
Dla z=100 5 x wolniej,
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
Nie wiem tomcat65 czy celowo pominąłeś "/nieduża maszynka, nie ploter/", bo dla mnie to istotna informacja, że to jest jakaś maszyna, ale nie jest to ploter. Wszyscy się zafiksowali, że to ma być jakaś udziwniona frezarka, czy tokarka, gdzie osie pracują w powiązany sposób. Przecież ta maszyna może równie dobrze przesuwać jakieś pudełka.grze pisze:Mnie zależy na ustawieniu różnych prędkości dla trzech osi /nieduża maszynka, nie ploter/, czyli jena oś idzie z prędkością np f150 o zadaną wartość następie się cofa, druga porusza się z prędkością f50 też o zadaną wartość i trzecia z f100. Zależy mi aby osie pracowały równocześnie.
Przecież z punktu g-kodu to zawsze będzie ruch po przekątnej prostopadłościanu o stałej wypadkowej prędkości. W wyniku czego planer w mach-u czy linuxCNC wygeneruje ruch silników z prędkościami posuwu wcześniej zakładanymi. Tylko to opisuje nam jeden mały fragment kiedy wszystkie silniki jadą w jedną stronę. Cały ruch to nie tylko wypadkowa, ale i złożenie kilku ruchów.tomcat65 pisze:I nie wiadomo czego się trzymać, czy stałej prędkości w osiach,co da zawsze jednoznaczny ruch po przekątnej prostopadłościanu, czy stałej wypadkowej prędkości.
Każda sytuacja zakończenie ruchu osi lub zmiana kierunku to nowa linia kodu. Zmiana kierunku dla osi to w praktyce - jeśli np. Z szło od 0 do 100, to teraz musi wrócić do 0. W przestrzeni wektor prędkości wypadkowej obróci się, ale składowe wartości bezwzględne prędkości po XYZ będą te same (czyli X i Y idą do przodu, a Z będzie teraz wracać). grze nic nie pisze, że przy powrocie powrocie zmienia się prędkość, ale to nie jest problem (tylko wtedy trzeba będzie policzyć nową prędkość wypadkową dla wszystkich osi).
Każde zatrzymanie jednej osi wymaga nowej linii g-kodu i obliczenia nowej prędkości wypadkowej.
Weźmy dane z tego co podał grze:
1. "jedna oś idzie z prędkością np f150 o zadaną wartość następie się cofa"
- niech to będzie oś X, nie ma zadanej wartości - niech będzie 90, cofa chyba do 0
2. "druga porusza się z prędkością f50 też o zadaną wartość"
- niech to będzie oś Y, nie ma zadanej wartości - niech będzie 75
3. "i trzecia z f100"
- oś Z, nie ma zadanej wartości - niech będzie 45
Zbierzmy to razem:
F150 X0 -> X90 -> X0
F50 Y0 -> Y75 -> stop
F100 Z0 -> Z45 -> stop
Teraz tłumaczymy na właściwy g-kod:
1. Najpierw trzeba określić czasy ruchów osi.
F150 X0 -> X90 - 0,6 min, X90 -> X0 - 0,6 min
F50 Y0 -> Y75 - 1,5 min
F100 Z0 -> Z45 - 0,45 min
2. Mamy punkty na osi czasu, gdzie się coś zmienia (silnik staje lub zmienia kierunek) - tworzymy g-kod.
0 - 0,45 min - kończy ruch oś Z, a w tym czasie:
- X przejedzie do 0,45 x 150 = 67,5
- Y przejedzie do 0,45 x 50 = 22,5
Liczmy prędkość wypadkową jak jadą wszystkie osie:
F= sqrt(150^2+50^2+100^2)= 187,08
piszemy:
F187,08
G1 X67,5 Y22,5 Z45
0,45 - 0,6 min - oś Z stoi, oś X zmieni kierunek, ale zanim to zrobi dojedzie do 90,
a Y przejedzie do 0,6 x 50 = 30
Liczymy prędkość:
F= sqrt(150^2+50^2+0^2)= 158,11
kolejna linia:
F158,11
G1 X90 Y30
0,6 - 1,2 min - kończy ruch oś X na 0, oś Y przejedzie 1,2 x 50 = 60
Prędkość wypadkowa się nie zmienia (dalej 158,11)
kolejna linia:
G1 X0 Y60
1,2 - 1,5 min - oś X stoi, oś Y kończy ruch na 75
Dla jednej osi prędkości nie trzeba liczyć, ale jak ktoś chce to może policzyć

kolejna linia:
F50
G1 Y75
Cały kod:
Kod: Zaznacz cały
G0 X0 Y0 Z0
F187,08 G1 X67,5 Y22,5 Z45
F158,11 G1 X90 Y30
F158,11 G1 X0 Y60
F50 G1 Y75

-
- Lider FORUM (min. 2000)
- Posty w temacie: 21
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Chyba jednak nie rozumiesz zasady działania planera.ezbig pisze:Przecież z punktu g-kodu to zawsze będzie ruch po przekątnej prostopadłościanu o stałej wypadkowej prędkości. W wyniku czego planer w mach-u czy linuxCNC wygeneruje ruch silników z prędkościami posuwu wcześniej zakładanymi.
Weźmy dla uproszczenia dwie osie i sytuację gdy jedna jedzie tam i z powrotem, a w tym samym czasie druga tylko tam.
Rozbicie tego ruchu na dwie linie kodu daje następujący efekt :
1. jedna oś jedzie tam, druga połowę drogi.
2. obie osie się zatrzymują (!!!)
3. jedna oś wraca, druga jedzie dalej.
O ile pierwsza oś nie może pojechać inaczej, bo prawa fizyki wymagają rozpędzenia i hamowania, to druga oś przecież ani nie musi, ani być może nie powinna zatrzymać się pośrodku drogi.
Czyli być może takie rozwiązanie jest nie do przyjęcia.
.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
Napisałem na końcu bardzo istotną uwagę. Program musi być skonfigurowany tak, żeby silniki pracowały bez rampy. W mach-u wiem że to możliwe, a chyba linuxCNC też pozwala na takie ustawienie. Przy małych prędkościach to możliwe. Chyba, że niezależnie od tego program i tak staje na każdej linii kodu (ale chyba tak to nie ma).