
równoczesna praca kilku osi
-
- Lider FORUM (min. 2000)
- Posty w temacie: 9
- Posty: 3705
- Rejestracja: 15 sie 2010, 13:44
- Lokalizacja: Błonie
- Kontakt:
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.
A ty potrzebujesz przemieszczać trzy punkty na raz.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
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.
[ 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.
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 15
- Posty: 1242
- Rejestracja: 15 lis 2009, 02:46
- Lokalizacja: Olsztyn
- Kontakt:
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.
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.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 23
- Posty: 2103
- Rejestracja: 07 lip 2006, 00:31
- Lokalizacja: mazowieckie
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ść).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.
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

-
- Specjalista poziom 3 (min. 600)
- Posty w temacie: 1
- Posty: 689
- Rejestracja: 21 mar 2005, 18:51
- Lokalizacja: Trójmiasto
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.
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.
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 19
- Posty: 1214
- Rejestracja: 15 paź 2007, 00:45
- Lokalizacja: nie ważne
Taka "przekładnia jest w każdym programie sterujacym osiami czy to pojedynczej czy kilkoma w sposób zespolony.GumiRobot pisze: regulacja proporcji odbywa się jedynie przez tzw przekładnię elektroniczną wbudowaną w LinuxCNC.
"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
-
- Lider FORUM (min. 2000)
- Posty w temacie: 9
- Posty: 3705
- Rejestracja: 15 sie 2010, 13:44
- Lokalizacja: Błonie
- Kontakt:
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.
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.
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 15
- Posty: 1242
- Rejestracja: 15 lis 2009, 02:46
- Lokalizacja: Olsztyn
- Kontakt:
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ć
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ć
