równoczesna praca kilku osi

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC
Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 8107
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#81

Post napisał: tuxcnc » 28 lip 2013, 18:40

ezbig pisze:ruch silników w układzie delta będzie zupełne inny od tego z układu kartezjańskiego.
Będzie inny, bo wyliczy go inny planer.
Wchodząc na wyższy poziom abstrakcji i odrywając się od kartezjańskiego układu, możemy napisać planer przeliczający wartości zadane g-kodem według dowolnego algorytmu, albo wręcz stablicować wyniki, a prędkość "narzędzia" (parametr F) mnożyć przez zmienny współczynnik, zadany dowolnym algorytmem, lub także stablicowany.
Nie da rady zrobić tylko jednej rzeczy, oderwać od siebie czasu, drogi i prędkości, a o to chyba autorowi wątku chodzi.
Krótko mówiąc nie można dowolnie zmieniać parametrów, jeśli ruchy mają być wzajemnie skorelowane.
Przykład :
Oś X robi 100 mm/s a oś Y 10 mm/s, więc jeśli X=10*Y to ruch się wykona równocześnie.
Nie można zmienić jednej z prędkości i oczekiwać że przy tym samym przesunięciu ruchy wykonają się równocześnie.
Może nie najlepiej to tłumaczę, ale to jest prosta matematyka.

.



Tagi:


ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 23
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#82

Post napisał: ezbig » 28 lip 2013, 18:47

MlKl pisze:ezbig - mylisz się. Silniki, powyciągane z maszyny, nadal będą się kręcić według założeń dla maszyny z jednym narzędziem, poruszającym się w wielu płaszczyznach. Żeby nimi zarządzać g-codem w czasie rzeczywistym i w realnych wymiarach, trzeba z planera wywalić wzory, określające zależności między osiami.

I nadal nie wiem, czy konstrukcja polecenia

Kod: Zaznacz cały

g1 f100 x200 f50 y50 f120 z -200
uruchomi je wszystkie z podanymi szybkościami, czy też zostanie zastosowana pierwsza albo ostatnia dla wszystkich odpalonych osi.
Już nie chciałem MlKl pisać wprost do ciebie ;), ale skoro sam się odezwałeś. Spójrz na silniki jako odrębne urządzenia. Nic z planera nie wyrzucisz, bo tak został zapisany, żeby interpolować ruch narzędzia w układzie kartezjańskim. Wzorami można zmienić ten układ i sterować z mach-a np. deltą za pomocą zwykłego g-kodu. Nie da się pisząc prosty g-kod spowodować niezależny ruch silników z różnymi prędkościami, bo osie są powiązane planerem. Trzeba spreparować taki g-kod aby uzyskać odpowiednie ruchy silników i wtym cała sztuka. Z g-kodu wyjdą esy-floresy, ale silniki odtańczą właściwy cykl.

Awatar użytkownika

MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 9
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#83

Post napisał: MlKl » 28 lip 2013, 19:17

I tym się właśnie różni podejście użytkowników oprogramowania z zamkniętym kodem źródłowym od tych, którzy sobie mogą dowolnie w swoim programie pogrzebać.

W życiu by mi nie przyszło do głowy tworzenie maszyny, którą sterować można tylko przez skomplikowane makro, usuwające skutki działania wbudowanego w program planera.

Można używać mikroskopu do tłuczenia orzechów. Jednak młotek jest skuteczniejszy. I się przy tej robocie nie psuje...

Nie trzeba być programistą - za takie usługi się po prostu programiście płaci. Sterowanie maszyną ma być proste jak budowa cepa.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 8107
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#84

Post napisał: tuxcnc » 28 lip 2013, 19:22

Spróbuję jeszcze raz ...

Można określonemu silnikowi nadać określoną prędkość, przykładem jest sterowanie wrzeciona w tokarce.
Można skorelować inny ruch z tą prędkością, np. nacinanie gwintu na tokarce.
Ale nie jest możliwe wykonanie ruchu dwóch osi o zadane przesunięcie, w tym samym czasie i z dowolnymi prędkościami.
Czas, droga i prędkość są ze sobą nierozerwalnie związane.

Jeśli chodzi tylko o prędkość bez mierzenia przesunięcia, to sprawa jest banalnie prosta, przynajmniej w LinuxCNC.
Mamy możliwość zadania na dowolnym wyjściu dowolnej częstotliwości, dowolnego stanu i możemy tym sterować choćby M03, M04, M05 itd. albo jeszcze lepiej kodami M100 do M199, dowolnie definiowanymi przez użytkownika.
Ale to będzie tylko włącz/wyłącz z zadaną prędkością, na czas działania i przesunięcie bezpośredniego wpływu mieć nie będziemy, no chyba że dodamy enkodery ...

.


ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 23
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#85

Post napisał: ezbig » 28 lip 2013, 19:24

Dlatego już w drugim moim poście pisałem, że to rozwiązanie co najwyżej doraźne na prosty ruch. Lepiej użyć prostego sterownika i będzie to do ogarnięcia bez długiego szkolenia.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 8107
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#86

Post napisał: tuxcnc » 28 lip 2013, 19:38

ezbig pisze:Dlatego już w drugim moim poście pisałem, że to rozwiązanie co najwyżej doraźne na prosty ruch. Lepiej użyć prostego sterownika i będzie to do ogarnięcia bez długiego szkolenia.
Ja już nie wiem jak to tłumaczyć, ale ograniczeniem jest matematyka, nie zastosowany sterownik.
Bolek jedzie do pracy dziesięć minut i Franek jedzie do pracy dziesięć minut.
A teraz zrób tak żeby wyjechali i dojechali równocześnie, ale Bolek jechał dwa razy wolniej niż zwykle, oczywiście pokonując tą samą drogę.
No po prostu się nie da.
MlKl pisze:W życiu by mi nie przyszło do głowy tworzenie maszyny, którą sterować można tylko przez skomplikowane makro, usuwające skutki działania wbudowanego w program planera.
Nie przesadzaj.
Tak może być po prostu szybciej, taniej i prościej.

.


ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 23
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#87

Post napisał: ezbig » 28 lip 2013, 20:13

Ja już nie wiem jak to tłumaczyć, ale ograniczeniem jest matematyka, nie zastosowany sterownik.
tuxcnc ja nie neguję tego. Mi nie musisz tłumaczyć, matematyka nie taka straszna i dla 3 osi można to prosto na piechotę robić.

Wrzucam mój przykład jak to by wyglądało. Mam wrażenie, że po lekturze tego tematu, ktoś odniesie wrażenie, że trzeba doktoratu, żeby to ogarnąć ;). Odrzućmy oprogramowanie. Mamy czysty g-kod. Weźmy taki prosty ruch do zaprogramowania:

cykl:
F50 Z50
F100 X100
F200 Y200

Jak tak zapiszemy to osie pojadą, ale każda po sobie. Ma być równocześnie, czyli musimy ustalić wspólną prędkość posuwu "freza". Będzie ona wypadkową trzech prędkości, a w przestrzeni to przekątna prostopadłościanu.

Obrazek

To było proste. Jedźmy dalej. Trzeba na problem spojrzeć z punktu widzenia najkrótszego ruchu:

F50 Z50 - 1 min
F100 X100 - 1 min
F200 Y100 - 0.5 min

i teraz musimy cały ruch podzielić, bo widać, że silnik Y zrobi dwa cykle w tym czasie co pozostałe. To już można pisać g-kod

Kod: Zaznacz cały

F229,13
G1 X50 Y100 Z25   - tyle ruchu zrobimy w 30 sek.
G1 X100 Y0 Z50     - X i Z jadą dalej, a Y zmienia kierunek

G1 X50 Y100 Z25   - drugi cykl żeby silnik wróciły do stanu początkowego
G1 X0 Y0 Z0          - koniec cyklu można powtórzyć całość od nowa

Tu się przydaje trochę wyobraźni, wektory i ich właściwości, bo graficznie to wszystko widać jak na dłoni.

To jest prosty ruch, ale tak można i bardziej skomplikowane sekwencje tworzyć. Należy pamiętać, że jak któryś silnik miałby zatrzymać się na jakiś czas to wtedy przechodzimy na obliczenia dla dwóch osi (prędkość wypadkowa - przekątna prostokąta).

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 8107
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#88

Post napisał: tuxcnc » 28 lip 2013, 20:28

ezbig pisze:To było proste. Jedźmy dalej. Trzeba na problem spojrzeć z punktu widzenia najkrótszego ruchu:

F50 Z50 - 1 min
F100 X100 - 1 min
F200 Y100 - 0.5 min

i teraz musimy cały ruch podzielić, bo widać, że silnik Y zrobi dwa cykle w tym czasie co pozostałe. To już można pisać g-kod

Kod: Zaznacz cały

F229,13
G1 X50 Y100 Z25   - tyle ruchu zrobimy w 30 sek.
G1 X100 Y0 Z50     - X i Z jadą dalej, a Y zmienia kierunek

G1 X50 Y100 Z25   - drugi cykl żeby silnik wróciły do stanu początkowego
G1 X0 Y0 Z0          - koniec cyklu można powtórzyć całość od nowa

Miałeś pojechać tam a nie jakieś ruchy frykcyjne robić.
Najzwyczajniej przy założeniu takich prędkości i przesuwów układ równań nie będzie miał rozwiązania.
Tego się po prostu nie da zrobić i właśnie to trzeba zrozumieć.

.


ezbig
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 23
Posty: 2103
Rejestracja: 07 lip 2006, 00:31
Lokalizacja: mazowieckie

#89

Post napisał: ezbig » 28 lip 2013, 20:43

tuxcnc pisze:Miałeś pojechać tam a nie jakieś ruchy frykcyjne robić.
Chyba już wątek ci się urwał, bo takie założenia przedstawiał autor na początku, więc to uwzględniłem. Jaki masz problem z "pojechaniem tam"? Jak ruch ma się zatrzymać w osi Y to wystarczy przeliczyć nowe prędkości dla pozostałych, a Y niech stoi.

[ Dodano: 2013-07-28, 20:45 ]
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.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 8107
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#90

Post napisał: tuxcnc » 28 lip 2013, 21:43

ezbig pisze:Chyba już wątek ci się urwał, bo takie założenia przedstawiał autor na początku
Nic mi się nie urwało, tyko od początku nie wiem o co autorowi wątku chodzi, to znaczy podejrzewam że o coś czego się nie da zrobić.
Zakładając prędkości i drogi w trzech napędach, jest prawie niemożliwe wykonać te ruchy jednocześnie.
O tym mówię od początku.
Nie da się czasowo skorelować trzech ruchów zakładając przypadkowe prędkości i drogi.
No bo jak się prędkość podzieli przez drogę to wyjdzie czas, zapewne inny dla każdej osi.

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.

.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Mach 2 / 3 / 4 (ArtSoft software)”