PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : G-code für (temporären) Wechsel auf mechanische Maschinenkoordinaten?



Jaecko
02.09.2022, 08:38
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:

G90
G0 X0 Y0
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.

Was ich jetzt machen möchte, wäre was wie:

G0 X400 Y400
Der Laser soll also ins gegenüberliegende Eck fahren, wo er nicht im Weg umgeht.

Das klappt, solange ich NICHT mit

G92 X0 Y0
ein neues Origin festlege.
Angenommen, der Laserkopf ist aktuell bei mechanischen X40 Y50, ich setze G92 X0 Y0, dann würde

G0 X400 Y400
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".

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

Rabenauge
02.09.2022, 09:28
G90 stelt um auf absolute Koordinaten.
Du müsstest also nen G90 machen, gefolgt von deinen Wunsch-Koordinaten.

G91 stellt wieder auf "relativ" um.

Jaecko
02.09.2022, 17:01
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)



Reset
$H (Home-Befehl)
G90
X400

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.



Reset
$H
G90
X20

Kopf ist bei "echten" X20


G92 X0

Neuer Nullpunkt gesetzt.


G90
X0

Kopf bleibt stehen (bei den "echten" X20)


X-20

Kopf zurück, wo er nach $H war (zu den "echten" X0)


X400

Soft Limit Fehler, da er zu den "echten" X420 fahren will, was aber ausserhalb der mechanisch möglichen x400 liegt.
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.

Rabenauge
02.09.2022, 22:34
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

Jaecko
04.09.2022, 18:10
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:


$H
G91
G0 X400 Y400
G90


Also Home zu den Endschaltern bei 0/0, damit weiss ich jetzt, wo der Kopf ist.
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.

Rabenauge
04.09.2022, 20:22
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.