G90 stelt um auf absolute Koordinaten.
Du müsstest also nen G90 machen, gefolgt von deinen Wunsch-Koordinaten.
G91 stellt wieder auf "relativ" um.
Moin.
Ich bin grade bisschen zu doof für wohl einfachsten G-Code.
Entweder seh ich da was nicht oder es geht tatsächlich technisch nicht.
Ich hab einen Laser Cutter, der über GRBL gesteuert werden kann.
Arbeitsfläche sind 400x400 mm.
Bisher war der G-Code, der nach einem Auftrag gesendet wird:
Damit fährt der Laser dahin zurück, wo er angefangen hat, und verdeckt damit perfekt das Werkstück. Ich muss also jedes Mal das Ding erst mal wegbewegen, um ans Werkstück zu kommen.Code:G90 G0 X0 Y0
Was ich jetzt machen möchte, wäre was wie:
Der Laser soll also ins gegenüberliegende Eck fahren, wo er nicht im Weg umgeht.Code:G0 X400 Y400
Das klappt, solange ich NICHT mit
ein neues Origin festlege.Code:G92 X0 Y0
Angenommen, der Laserkopf ist aktuell bei mechanischen X40 Y50, ich setze G92 X0 Y0, dann würde
den Laser auf tatsächliche X440 Y450 fahren wollen. Die Software erkennt, dass die Werte grösser sind als mechanisch möglich, stoppt mit einem Soft Limit Error, bewegt den Kopf garnicht und verlang einen Reset. Damit ist der mit G92 gesetzte Punkt natürlich weg. Zitat Waldi, der Möter: "Bläääd".Code:G0 X400 Y400
Ich Suche jetzt eine Befehlsabfolge, die den Kopf zu den mechanischen X400 Y400 fährt, unabhängig davon, was vorher mit G92 für ein Origin festgelegt wurde, und auch so, dass dieses Origin beibehalten wird (so, dass ich danach mit z.B. G0 X0 Y0 wieder an das Origin komme.)
Also er startet einen Auftrag bei X40 Y50, fährt den Kopf danach zu X400 Y400, Werkstückwechsel, und er legt wieder bei X40 Y50 los.
Wie würde man das machen, wenn das so überhaupt möglich ist?
MfG
Stefan
#ifndef MfG
#define MfG
G90 stelt um auf absolute Koordinaten.
Du müsstest also nen G90 machen, gefolgt von deinen Wunsch-Koordinaten.
G91 stellt wieder auf "relativ" um.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Leider nicht ganz. Das Ding bleibt irgendwie in dem Koordinatensystem, das ich davor mit G92 verschoben hab.
Mal Beispiele (jetzt nur für X, damits kürzer ist)
Kopf fährt zu den "echten" X400. ("echt" = wenn ich an die Führungsschiene ein Lineal pappe und schau, wo der Kopf dann steht). Da, wo er eigentlich hin soll, egal von wo aus er dann mit egal welchem Nullpunkt startet.Code:Reset $H (Home-Befehl) G90 X400
Kopf ist bei "echten" X20Code:Reset $H G90 X20
Neuer Nullpunkt gesetzt.Code:G92 X0
Kopf bleibt stehen (bei den "echten" X20)Code:G90 X0
Kopf zurück, wo er nach $H war (zu den "echten" X0)Code:X-20
Soft Limit Fehler, da er zu den "echten" X420 fahren will, was aber ausserhalb der mechanisch möglichen x400 liegt.Code:X400
Ich müsste X380 senden, damit er zu den echten X400 fährt.
Muss einer dieser 3 Punkte sein:
a) ich hab nen kompletten Denkfehler
b) das ist in der Steuerung falsch umgesetzt
c) es geht mit G-Code einfach nicht
Ich weiss jetzt nicht genau: merkt sich (oder soll, nach Definition) eine CNC-Maschine das ursprüngliche "prä-G92-Koordinatensystem"? Oder gibts da nur 1 und das wird halt mit G92 einfach verschoben? Aber "irgendwie" muss sie das ja noch wissen, da sie weiss, wie viel sie noch fahren kann, bevors den Soft Limit Error gibt.
#ifndef MfG
#define MfG
Normalerweise wird beim Start genullt- also Home angefahren. Da sollte es Endschalter in irgendeiner Form geben.
Macht zumindest jeder 3D-Drucker.
Dennoch kannst du auf absolute Koordinaten umschalten mit G90. G91 stellt wieder relative ein, also:
G90 X10 Y10 fährt Position X und Y 10 an //solange hier kein G91 kommt, bleiben wir bei absoluten Koordinaten
X20 Y20 fährt Position X20,Y20 an
G91 X10 Y10 fährt Position X30 Y30 an //hier stellen wir _dauerhaft_ um auf relative Koordinaten, bis wieder ein G90 kommt.
X10 Y10 fährt nun Position X40, Y40 an
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Naja, das mit G90/G91 zwischen absolut/relativ umschalten ist mir schon klar.
Es ging eher um das Umschalten zu einem anderen, absoluten Koordinatensystem.
Beim Stichwort "Endschalter" hats aber plötzlich geklickt.
Vermutlich nicht die Lösung, die du meintest, und auch nicht die, die ich mir vorgestellt hab, aber immerhin führt die zum Soll-Ergebnis:
Also Home zu den Endschaltern bei 0/0, damit weiss ich jetzt, wo der Kopf ist.Code:$H G91 G0 X400 Y400 G90
Dann einfach relativ die 400/400 fahren und ich bin am Ziel.
Ohne die Reise über die Schalter wüsste ich ja sonst nicht, wo der Kopf gerade ist, und könnte damit bei verschobenem Koordinatensystem weder mit G90 noch G91 ans Ziel.
Die Werte für G92 weiss ich ja nicht numerisch. Ich fahr den Laser einfach optisch mit niedrigster Leistung da hin, wo er loslegen soll, G92 X0 Y0 und gib ihm.
Wenn der Laser eh schon da in der Nähe der Ecke ist, sind das mit dem Umweg über Home max. 4-5 Sekunden, die er da "umsonst" unterwegs ist. Aber ist ja keine Live-Fertigung für Formel-1-Ersatzteile, dass das was ausmacht.
#ifndef MfG
#define MfG
Je nach verwendeter Firmware muss Home nicht bei 0,0 sein.
Bei meinem 3D-Drucker ist Home beispielsweise irgendwo bei -20 oder so.
0,0 ist die vordere, linke Ecke des Arbeitsbereiches- Home liegt ausserhalb.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Lesezeichen