równoczesna praca kilku osi

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC

tomcat65
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 15
Posty: 1242
Rejestracja: 15 lis 2009, 02:46
Lokalizacja: Olsztyn
Kontakt:

#11

Post napisał: tomcat65 » 23 lip 2013, 21:15

Lepiej Ty podaj, niekoniecznie krótki programik, a kol.'ma555rek' policzy Ci wypadkową prędkość dla każdej linii kodu :).



Tagi:


ma555rek
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 19
Posty: 1214
Rejestracja: 15 paź 2007, 00:45
Lokalizacja: nie ważne

#12

Post napisał: ma555rek » 23 lip 2013, 21:43

grze pisze:mógłbyś podać prościutki programik /G kod/ z trzema różnymi prędkościami na osiach?
Moge
g01 f500
x100y200z300

jesteście chyba na początku...
Pasjonat

Awatar użytkownika

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

#13

Post napisał: MlKl » 23 lip 2013, 22:13

Coś mi się widzi, że nie rozumiesz idei działania g-code. Tu wszystkie osie są powiązane, i polecenie g-code, odnoszące się do trzech osi przemieszcza zawsze jeden punkt w przestrzeni. Ewentualnie można temu punktowi jeszcze ową przestrzeń obracać osią obrotową, czy tworzyć inną kinematykę, ale zawsze program koncentruje się na jednym punkcie, jakim jest ostrze narzędzia.

A ty potrzebujesz przemieszczać trzy punkty na raz.


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

#14

Post napisał: ezbig » 23 lip 2013, 22:56

ma555rek, ma rację. Trzeba tylko trochę kumać składanie wektorów i da się taki g-kod z palca napisać.

[ Dodano: 2013-07-24, 00:22 ]
Jeśli to ma być periodyczny ruch i odległości w osiach x,y,z mają wspólną wielokrotność to da się to z sensem rozpisać w g-kodach (im więcej osi tym sprawa się komplikuje, a najprościej jest dla dwóch). W innych przypadkach g-kod będzie trzeba generować w nieskończoność.

Szczerze powiem, że nie widzę sensu kombinowania z mach-em, bo obliczeń z tym jest od cholery, a w razie zmiany będzie trzeba wszystko powtarzać. Można sobie ułatwić pisząc arkusz w excel-u, a jeszcze lepiej to naskrobać odpowiednie makro. Tylko to dalej jest roboty na kilka wieczorów. Dla mnie bez sensu. Ja wziąłbym gotowy moduł z mikrokontrolerem (za 30zł) i zaprogramował to co trzeba w jedno popołudnie, łącznie z wyświetlaniem na lcd (z 4 przyciskami za 30zł) i edycją nastaw dla każdej osi. Osi mogłoby być nawet 10. grze jak sam nie potrafisz, a interesowałby ciebie taki moduł to pisz na PW może się dogadamy.


tomcat65
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 15
Posty: 1242
Rejestracja: 15 lis 2009, 02:46
Lokalizacja: Olsztyn
Kontakt:

#15

Post napisał: tomcat65 » 24 lip 2013, 01:24

Kumał czy nie, całe te obliczenia są bez sensu. Tak to można się bawić mając kod na 5-10 linii. A co mając wygenerowany kod na kilkaset linii (lub dłuższy)? - macie jakiś program(ik)/generator który obliczy i dopisze do każdej linii kodu wypadkową prędkość? Czy chcecie to z palca pisać?

O ile się nie mylę, koledze 'grze' chodzi o ograniczenie max. prędkości w każdej osi.

I przykład bezsensu obliczeń:
Jedziemy dwa przyległe boki kwadratu i przekątną.Pominę trzecią oś dla łatwiejszych obliczeń. Boki, jako że równe, przyjmę = 1. Max.f(x)=150, f(Y)=100
Start: G0 X0 Y0
g1 x1 - ze wzoru F=Wx[f(x)]+Wy[f(y)] +Wz[f(z)] - f150, zgadza się.
g1 y1 - ze wzoru F=Wx[f(x)]+Wy[f(y)] +Wz[f(z)] - f100, też się zgadza
g1 x0 y0 - ze wzoru F=Wx[f(x)]+Wy[f(y)] +Wz[f(z)] - f250. Jako, że obie osie muszą tu jechać jednakowo, program policzy: sqrt((250^2)/2)=176 z groszami. I zonk, obie jadą szybciej niż powinny.
Czy też inaczej się te wektory składa i oblicza?

P.S. Czy moduł z mikrokontrolerem będzie rozróżniał g0 od g1? jeśli nie, to ograniczenie w Machu max. prędkości dla osi przyniesie ten sam skutek.


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

#16

Post napisał: ezbig » 24 lip 2013, 02:18

tomcat65 pisze: P.S. Czy moduł z mikrokontrolerem będzie rozróżniał g0 od g1? jeśli nie, to ograniczenie w Machu max. prędkości dla osi przyniesie ten sam skutek.
Moduł z mikrokontrolerem będzie sterował ruchem osi. Po co rozróżnianie G0, G1 skoro to nie jest ploter tylko jakaś maszynka. Ja rozumiem, że tu potrzebny jest sterownik, który cyklicznie i jednocześnie steruje silnikami - każdym niezależnie jeśli chodzi o prędkość i zadaną ilość kroków (odległość).

Z tymi obliczeniami to nie do końca tak jest jak piszesz, da się to wszystko zaprogramować w g-kodach. Tylko to będzie trochę jak gra w szachy jeśli to ma być uniwersalne. Musisz wziąć pod uwagę to, że osiągnięcie konkretnego ruchu z zadanymi prędkościami w osiach x, y, z, będzie tworzyć wiele wektorów, a nie "jedna przekątną sześcianu".

Przykładowo w dwóch osiach prędkość po x i y zależy od kąta nachylenia wektora ścieżki do osi x. Mamy zadaną prędkość w osiach x i y oraz konkretne odległości do pokonania. Z prędkości w osiach obliczymy prędkość dla F w kodzie i kąt nachylenia wektora ścieżki. Rysujemy więc ścieżkę pod obliczonym kątem z prędkością F, ale nie możemy tu podstawić odległości jakie mamy zadane (bo zmienimy kąt nachylenia, który nie musi być taki sam jak wynika z prędkości x i y). Musimy jechać do tej wartości, która jest mniejsza, a drugą obliczyć. Przykładowo jeśli x było mniejsze, to jedziemy do x, a y obliczmy. X zakończył ruch na tym etapie, ale y ma dalej jechać. Jeśli x stoi to trzeba teraz w F wpisać prędkość zadaną dla y i jechać do zadanej wartości y. Jeśli x jednak miałby teraz wracać do 0 to trzeba na nowo policzyć kąt nachylenia ścieżki do x i kontynuować ruch na tej samej zasadzie co poprzednio. To już się robi żmudne dla 2 osi, a przy trzeciej to się koszmar robi. Dodatkowo jak mamy sytuację, że ruchy nie są w cyklach zsynchronizowane, to można się tak bawić w nieskończoność (lub napisać makro, które się zawiesi :)) Interpolacja, która jest nam potrzebna w frezarce cnc, tu utrudnia życie. Dlatego proponuję wstawić niezależny sterownik, który za grosze zrobi to bez naszego wysiłku.


GumiRobot
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 1
Posty: 689
Rejestracja: 21 mar 2005, 18:51
Lokalizacja: Trójmiasto

#17

Post napisał: GumiRobot » 24 lip 2013, 08:57

Jeżeli kolega Grze chce sobie pomachać 3/5 osiami w sposób dowolny to niech machnie na Macha i przesiądzie się na LinuxCNC a tam bez uruchamiania interpretera G-kodów używając jedynie HAL-a będzie mógł w sposób prosty i dowolny ruszać wszystkimi osiami z osobna jaki i synchronicznie.
Ja np. u siebie jestem w trakcie realizacji dozownika trzech substancji z płynną regulacją proporcji dozowania ich do mieszalnika przepływowego. Każda substancja jest podawana niezależną mechanicznie pompą a regulacja proporcji odbywa się jedynie przez tzw przekładnię elektroniczną wbudowaną w LinuxCNC.


ma555rek
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 19
Posty: 1214
Rejestracja: 15 paź 2007, 00:45
Lokalizacja: nie ważne

#18

Post napisał: ma555rek » 24 lip 2013, 13:08

GumiRobot pisze: regulacja proporcji odbywa się jedynie przez tzw przekładnię elektroniczną wbudowaną w LinuxCNC.
Taka "przekładnia jest w każdym programie sterujacym osiami czy to pojedynczej czy kilkoma w sposób zespolony.
"Regulacja proporcji każdej z pomp" czyli inaczej skok wydajnosci ogólnej dla zadanej liczby bezwzglednej z ustawieniem podziału dla poszczególnych osi
- Linux - wspomniana przekładnia
- Mach - ilość kroków na jednostkę dla danej osi (jedna ruszy się dalej inna bliżej mimo że obie otrzymają tą samą wartość do przesunięcia)
- sterownik servo (właściwie dowolny) - mnożnik i dzielnik kroków często dostępny dla zmian z poziomu zacisków wejściowych.
- prymitywny falownik - jak w nim pogrzebać też umożliwia jakąś tam zmianę zasięgu skoku lub rampy choć to przecież nie jest urządzenie dedykowane do pozycjonowania. ( ale czasem potrafi)

Acha w Machu jest jeszcze skalowanie osi wg współczynnika podanego parametrem Gkodu ( czy jakoś tak podobnie że jedna oś może być przeskalowana i zamiast kwadratu wyjdzie prostokąt)

Prooblem nie w napisaniu Gkodu (kol Tomcat - a z pewnoscią nie "wzięcia" jakiegoś do przeróbki) tylko w opisaniu jaki ma być ruch na tych osiach czyli aby potrzebujący wyksztusił dokładniejszą artykulację swojej wizji ruchu.
Wtedy można oszczędzić złotówki popychając Machem lub oszczędzić czas wg recepty kol ezbig.
Pasjonat

Awatar użytkownika

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

#19

Post napisał: MlKl » 24 lip 2013, 13:20

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.


tomcat65
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 15
Posty: 1242
Rejestracja: 15 lis 2009, 02:46
Lokalizacja: Olsztyn
Kontakt:

#20

Post napisał: tomcat65 » 24 lip 2013, 14:36

Mimo, ze autor nie wyartykuował dokładnie swych potrzeb, to zaproponowaliście wzory, które nijak nie przystają do rzeczywistości. Bo w czystej postaci są błędne, a z dodatkowymi warunkami koszmarne do obliczeń nawet dla dwóch osi. Nawet gdyby był dedykowany program, też by padł. Po co więc takie propozycje, które niczego nie rozwiązują? Jak już, to podajcie wzory wraz z warunkami, może komuś kiedyś się to przyda.
To samo dotyczy przejścia na Linuxa. Trzeba najpierw to zaistalowac, o ile system łaskawie uzna konfigurację sprzętową i się nie wysypie w trakcie. Później poznać system, program, każdą niemalże pierdołę w konsoli wpisać trzeba. I żeby dojśc do takiej wiedzy i korzystać z HAL'a to tez zajmie czas. Pod warunkiem, że pingwin wcześniej nie pokaże środkowego palca z dopiskiem 'kernel panic' na przykład.
Każda dystrybucja niekompatybilna z inną. Inne komendy. Jedyne co działa w każdej, to 'shut down' co tylko mogę polecić :twisted:

ODPOWIEDZ Poprzedni tematNastępny temat

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