Zum Hauptinhalt springen

G-Code-Dialekt-Unterstützung

Rayforge unterstützt mehrere G-Code-Dialekte, um mit verschiedener Controller-Firmware zu arbeiten.

Automatische Dialektauswahl​

Wenn ein GRBL-Gerät erkannt wird (über den Einrichtungs-Assistenten oder die Geräteerkennung), liest Rayforge die $I-Compile-Flags der Firmware aus und wählt automatisch den am besten passenden G-Code-Dialekt — du musst in der Regel keinen manuell auswählen. Du kannst die Auswahl danach jederzeit in den G-Code-Dialekt-Einstellungen der Maschine überschreiben.

Unterstützte Dialekte​

Rayforge unterstützt derzeit diese G-Code-Dialekte:

DialektFirmwareHäufige Verwendung
Grbl (Compat)GRBL 1.1+Diodenlaser, Hobby-CNC
Grbl (Compat, keine Z-Achse)GRBL 1.1+2D-Laserschneider ohne Z
Grbl RasterGRBL 1.1+Optimiert für Rasterarbeit
GRBL Dynamic (Tiefenbewusst)GRBL 1.1+Tiefenbewusstes Lasergravieren
GRBL Dynamic (keine Z-Achse)GRBL 1.1+Tiefenbewusstes Lasergravieren
LinuxCNCLinuxCNCNative Bézier-Unterstützung (G5)
Mach4 (M67 Analog)Mach4Hochgeschwindigkeits-Rastergravur
SmoothiewareSmoothiewareLaserschneider, CNC
MarlinMarlin 2.0+3D-Drucker mit Laser
Empfohlene Dialekte

Grbl (Compat) ist der am besten getestete und empfohlene Dialekt für Standard-Laseranwendungen.

Grbl Raster ist optimiert für Rastergravur auf GRBL-Controllern. Er hält den Laser kontinuierlich im dynamischen Leistungsmodus (M4) und lässt redundante Vorschubbefehle aus, was zu glatterem und kompakterem G-Code führt.

GRBL Dynamic (Tiefenbewusst) wird für tiefenbewusstes Lasergravieren empfohlen, bei dem die Leistung während der Schnitte variiert (z.B. Gravur mit variabler Tiefe).

LinuxCNC unterstützt native kubische Bézier-Kurven über den G5-Befehl, was sehr glatten und kompakten G-Code für Kurvenpfade erzeugt. Wenn du diesen Dialekt verwendest, aktiviere die Option „Bézier-Kurven unterstützen" in den Erweiterten Maschineneinstellungen, um die G5-Ausgabe zu nutzen.


Mach4 (M67 Analog)​

Der Mach4 (M67 Analog)-Dialekt ist für Hochgeschwindigkeits-Rastergravur mit Mach4-Controllern konzipiert. Er verwendet den M67-Befehl mit Analogausgabe zur präzisen Laserleistungssteuerung.

Hauptmerkmale​

  • M67 Analogausgabe: Verwendet M67 E0 Q<0-255> für Laserleistung statt Inline-S-Befehle
  • Reduzierter Pufferdruck: Durch die Trennung von Leistungsbefehlen und Bewegungsbefehlen wird der Controller-Puffer bei Hochgeschwindigkeitsoperationen weniger belastet
  • Hochgeschwindigkeits-Raster: Optimiert für schnelle Rastergravuroperationen

Wann verwenden​

Verwende diesen Dialekt, wenn:

  • Du einen Mach4-Controller mit Analogausgabefähigkeit hast
  • Du Hochgeschwindigkeits-Rastergravur benötigst
  • Dein Controller Pufferüberlauf bei Standard-Inline-S-Befehlen erlebt

Befehlsformat​

Der Dialekt generiert G-Code wie:

M67 E0 Q127 ; Laserleistung auf 50% setzen (127/255)
G1 X100 Y200 F1000 ; Zur Position bewegen
M67 E0 Q0 ; Laser ausschalten

Einen benutzerdefinierten Dialekt erstellen​

Um einen benutzerdefinierten G-Code-Dialekt basierend auf einem integrierten Dialekt zu erstellen:

  1. Öffne Maschineneinstellungen → G-Code-Dialekt
  2. Klicke auf das Kopier-Symbol bei einem integrierten Dialekt, um einen neuen benutzerdefinierten Dialekt zu erstellen
  3. Bearbeite die Dialekteinstellungen nach Bedarf
  4. Speichere deinen benutzerdefinierten Dialekt

Jeder benutzerdefinierte Dialekt ist eine unabhängige Kopie: Die Änderung eines Dialekts beeinflusst niemals andere Dialekte oder andere Maschinen, sodass du frei experimentieren kannst, ohne dir Sorgen machen zu müssen, eine bestehende Konfiguration zu beschädigen. Eine Kopie, die aus einem integrierten Dialekt erstellt wurde, behält eine Verknüpfung zu diesem integrierten Dialekt: Vorlagenfelder, die du nicht ausdrücklich geändert hast, folgen weiterhin dem integrierten Dialekt, sodass Verbesserungen an integrierten Dialekten automatisch deine Maschinen erreichen, während eigene Änderungen erhalten bleiben und nie überschrieben werden. Benutzerdefinierte Dialekte werden in deinem Konfigurationsverzeichnis gespeichert und können geteilt werden.

Dialekt-Einstellungen​

Beim Bearbeiten eines benutzerdefinierten Dialekts bietet die Einstellungsseite folgende Optionen:

Kontinuierlicher Lasermodus hält den Laser während des gesamten Auftrags im dynamischen Leistungsmodus (M4) aktiv, anstatt M4/M5 zwischen Segmenten umzuschalten. Dies ist nützlich für Rastergravur, bei der der Laser während der Scan-Zeilen kontinuierlich eingeschaltet bleiben muss.

Modaler Vorschub lässt den Vorschubparameter (F) in Bewegungsbefehlen weg, wenn er sich seit dem letzten Befehl nicht geändert hat. Dies erzeugt kompakteren G-Code und reduziert die Datenmenge, die an den Controller gesendet wird.

Separater Laser-Ein-Befehl zur Fokussierung​

Einige Dialekte unterstützen die Konfiguration eines separaten Befehls zum Einschalten des Lasers bei niedriger Leistung, was für den Fokusmodus nützlich ist. Dies ermöglicht dir, einen anderen Befehl für das visuelle "Laserzeiger"-Verhalten zu verwenden als beim tatsächlichen Schneiden oder Gravieren. Überprüfe die Einstellungsseite deines Dialekts auf diese Option.


Vorlagen-Platzhalter​

Beim Erstellen oder Bearbeiten eines benutzerdefinierten Dialekts verwenden alle Befehlsvorlagen Python-Formatierungsstrings mit Platzhaltern, um dynamische Werte einzufügen. Verwende die Syntax {name} oder {name:.0f} (z.B. {power:.0f} für eine Ganzzahl ohne Nachkommastellen).

Verfügbare Platzhalter nach Vorlage​

VorlagePlatzhalter
Laser Einpower
Fokus-Laser Einpower
Laser Aus(keine)
Werkzeugwechseltool_number
Geschw. setzenspeed
Hub-Bewegungx, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command
Linear-Bewegungx, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, power
Bogen (CW)x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, power
Bogen (CCW)x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, power
Bézier-Kubischx, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, p, q, power
Luft An/Aus(keine)
Alle homen(keine)
Achse homeaxis_letter
Bewegen zuspeed, x, y, z
Jogspeed
Alarm löschen(keine)
WCS-Offset setzenp_num, x, y, z
Proben-Zyklusaxis_letter, max_travel, feed_rate
Verweilenseconds, milliseconds

Platzhalter-Referenz​

Koordinaten​

PlatzhalterBeschreibung
xZiel-X-Koordinate als Float (z.B. 100.0)
yZiel-Y-Koordinate als Float (z.B. 200.0)
zZiel-Z-Koordinate als Float (z.B. 5.0)
x_cmdX-Achsen-Befehlsstring, z.B. " X100.0". Wird bei unverändertem Wert weggelassen (wenn „Unveränderte Koordinaten auslassen" aktiviert ist)
y_cmdY-Achsen-Befehlsstring, z.B. " Y200.0". Wird bei unverändertem Wert weggelassen
z_cmdZ-Achsen-Befehlsstring, z.B. " Z5.0". Wird bei unverändertem Wert weggelassen
extra_cmdBefehlsstring für zusätzliche Achsen (A, B, C), z.B. " A90.0". Leer, wenn keine zusätzlichen Achsen konfiguriert sind

Bewegung​

PlatzhalterBeschreibung
f_commandVorschub-Befehlsstring, z.B. " F3000". Wird bei modalem und unverändertem Wert weggelassen
s_commandSpindel-/Leistungs-Befehlsstring, z.B. " S500". Verwendet in dynamischen/Raster-Modi und im kontinuierlichen Lasermodus
iBogen- oder Bézier-Kontrollpunkt X-Offset von der Startposition
jBogen- oder Bézier-Kontrollpunkt Y-Offset von der Startposition
pZweiter Bézier-Kontrollpunkt X-Offset von der Endposition (nur Bézier-Kubisch)
qZweiter Bézier-Kontrollpunkt Y-Offset von der Endposition (nur Bézier-Kubisch)

Leistung und Geschwindigkeit​

PlatzhalterBeschreibung
powerAbsolute Laserleistung als Float. Unterstützt Formatierung, z.B. {power:.0f} für Ganzzahlen
speedGeschwindigkeitswert (für Bewegen-zu- und Jog-Befehle)
tool_numberWerkzeug-/Laserkopf-Nummer

Maschine und Probing​

PlatzhalterBeschreibung
axis_letterEinzelner Achsenbuchstabe, z.B. "X", "Y", "Z" (für Achse home und Proben)
p_numWCS P-Nummer (z.B. 1 für G54)
max_travelMaximaler Proben-Verfahrweg (nur Proben-Zyklus)
feed_rateProben-Vorschub (nur Proben-Zyklus)

Verweilen​

PlatzhalterBeschreibung
secondsVerweildauer in Sekunden als Float (z.B. 1.5)
millisecondsVerweildauer in Millisekunden als Ganzzahl (z.B. 1500)

Präambel und Postscript​

Die Skripte Präambel und Postscript unterstützen einen eigenen Satz von Platzhaltern, die die Maschine und den aktuellen Job beschreiben:

PlatzhalterBeschreibung
machine.nameName der Maschine
machine.active_wcsAktuell aktives Arbeitskoordinatensystem (z. B. G54)
machine.axis_extents[0]Breite des Arbeitsbereichs (mm)
machine.axis_extents[1]Höhe des Arbeitsbereichs (mm)
wcs_offset[0] … wcs_offset[2]X/Y/Z-Versatz des aktiven Arbeitskoordinatensystems
doc.nameName des exportierten Dokuments
job.extents[0] … job.extents[3]Job-Begrenzungsrahmen: minimales X, minimales Y, maximales X, maximales Y

Beispielsweise rahmen manche Maschinen den Job selbst ein — sogar bei offline ausgeführten G-code-Dateien —, indem sie die Job-Grenzen aus einem Präambel-Kommentar lesen:

; Bounds: X{job.extents[0]} Y{job.extents[1]} to X{job.extents[2]} Y{job.extents[3]}

Tipps​

  • Formatierungsspezifikationen werden unterstützt: {power:.0f} formatiert Leistung als Ganzzahl, {power:.2f} mit zwei Nachkommastellen.
  • Die Einstellung „Unveränderte Koordinaten auslassen" steuert, ob x_cmd, y_cmd und z_cmd leer bleiben, wenn sich die Achsenposition seit dem letzten Befehl nicht geändert hat. Dies reduziert die G-Code-Größe.
  • Die Einstellung „Modaler Vorschub" steuert, ob f_command weggelassen wird, wenn sich der Vorschub nicht geändert hat.
  • Lass ein Vorlagenfeld leer, um diesen Befehl vollständig zu überspringen (z.B. bezier_cubic auf "" setzen, um native Bézier-Ausgabe zu deaktivieren und auf Linearisierung zurückzugreifen).

Verwandte Seiten​