G-Code lernen Teil 2/2:
Fortgeschrittene CNC Programmierung
Im ersten Teil der Serie „CNC Programmierung: G-Code lernen – Einfach und Schnell“ haben wir die Grundlagen des G-Codes erlernt. In diesem Beitrag werden Sie weitere Befehle wie Unterprogramme, Schleifen, IF-Anweisungen und R-Parameter lernen.
Motivation: In der CNC-Fertigung ist es oft notwendig, ähnliche Teile mit leichten Variationen zu produzieren. Die Erstellung einer neuen G-Code-Datei für jede kleine Änderung mittels CAD/CAM-Software kann zeitaufwendig sein. Eine gute Lösung bietet die Nutzung einer anpassbaren G-Code-Datei. Mit Parametern lassen sich Veränderungen in der G-Code Datei schnell und einfach umsetzen, was Zeit spart und die Flexibilität erhöht. In diesem Artikel erfahren Sie wie die parametrisierte G-Code-Programmierung Ihre CNC-Prozesse effizienter macht.
Für die CNC Programmierung (G-Code) nutzen wir unsere CNC Steuerungssoftware als kostenlosen G-Code-Simulator. Klicken Sie hier, um cncGraF kostenlos herunterzuladen.
Um mehr über den kostenlosen G-Code Simulator zu erfahren, klicken Sie auf den Blogartikel
„cncGraF: Kostenloser G-Code Simulator und CNC Maschinen-Emulator„.
Übersicht: Fortgeschrittene CNC Programmierung
G-Code: Unterprogramme
Zuerst fügen wir ein Unterprogramm hinzu. Dabei verwenden wir das G-Code-Beispiel aus dem ersten Teil dieser Serie „CNC Programmierung: G-Code lernen – Einfach und Schnell„. Die erweiterten G-Code-Zeilen sind farblich in Hellrot hervorgehoben. Der G-Code sieht dann folgendermaßen aus:
; G-Code-Datei: Herstellung eines Rechtecks am 22.12.2023
; Update am 23.01.2024
; Werkzeugnummer 1 wird gewählt
T1
; Werkzeug heben mit Eilgeschwindigkeit auf die Höhe Z = 10mm über dem Nullpunkt
G00 Z10
; Mit Eilgeschwindigkeit auf die Position X = 10 und Y = 10 fahren
G00 X10 Y10
; Arbeitsspindel mit M3 mit einer Drehzahl von 2000 U/min einschalten
M3 S20000
; 5 Sekunden warten bis die Spindeldrehzahl erreicht ist
G04 H5
; Relative Bemaßung (Kettenmaß), Befehl G91 ist aktiv
G91
P1 ; Unterprogramm 1 wird aufgerufen
; Programmende
M5 M30
; Anfang des Unterprogramms 1
M99 P1
; Mitte des Rechtecks anfahren
G00 X50 Y30
; 2 mm mit Vorschub 600 mm pro Minute in das Werkstück eintauchen
G01 Z-12 F600
; Kreis (d=20mm, Mittelpunkt 60×60) im Uhrzeigersinn
; mit Vorschub 600 mm pro Minute fahren
G02 I0 J20
; Werkzeug heben mit Eilgeschwindigkeit : Z = 10mm über dem Nullpunkt
G00 Z12
; Mit Eilgeschwindigkeit auf die Position X = 10 und Y = 10 fahren
G00 X-50 Y-30
; 2 mm mit Vorschub 600 mm pro Minute in das Werkstück eintauchen
G01 Z-12
; Rechteck 100×100 mm mit Vorschub 600 mm pro Minute abfahren
G01 X100
G01 Y100
G01 X-100
G01 Y-100
; Werkzeug heben mit Eilgeschwindigkeit : Z = 10mm über dem Nullpunkt
G00 Z12
M99 ; Ende des Unterprogramms 1
Im G-Code (siehe oben) wird die Bearbeitung eines Rechtecks und eines Kreises beschrieben, wobei die beiden Formen im Unterprogramm 1 definiert sind. Das Unterprogramm wird mit Befehl P1 im Hauptprogramm aufgerufen.
Die Definition des Unterprogramms beginnt mit dem Befehl M99 P1 und endet mit M99. Alle Unterprogramme befinden sich am Ende des Hauptprogramms, d.h., hinter dem Befehl M30, der das Ende des Hauptprogramms kennzeichnet. Die Nummer des Unterprogramms wird dabei durch die Zahl nach ‚P‚ gekennzeichnet – in diesem Fall 1.
G-Code Unterprogramme haben folgende Struktur:
G91 ; Relative Bemaßung (Kettenmaß) wird aktiviert
; Hauptprogramm
P1 ; Unterprogramm 1 wird aufgerufen
; Hauptprogramm
M30 ; Ende des Hauptprogramms
M99 P1
; Inhalt des Unterprogramms 1
M99
Wskazówka: Es ist zu beachten, dass zu Beginn des Hauptprogramms der Befehl G91 gesetzt werden muss, um die relative Bemaßung (Kettenmaß) zu aktivieren. Alle nachfolgenden Koordinatenangaben sind damit relative Werte. Dies ist notwendig, damit die Unterprogramme an beliebigen Positionen platziert werden können.
Unterprogramm-Verwaltung
Die CNC-Steuerungssoftware cncGraF verfügt über eine integrierte Unterprogramm-Verwaltung. Dort können alle Unterprogramme gespeichert werden. In solch einem Fall muss das Unterprogramm nicht in der G-Code-Datei enthalten sein; stattdessen wird das Unterprogramm im Hauptprogramm nur noch mit dem G-Code-Befehl ‚P‚ und der Unterprogrammnummer (hier P1) aufgerufen.
Wskazówka: Wenn ein Unterprogramm mit derselben Unterprogrammnummer (die Zahl hinter ‚P‚) sowohl in der G-Code-Datei als auch in der Unterprogramm-Verwaltung vorhanden ist, dann wird das Unterprogramm aus der G-Code-Datei verwendet. Die Software sucht zuerst in der Datei nach dem Unterprogramm und erst danach in der G-Code-Verwaltung. Dadurch ist es möglich, das Unterprogramm in der Verwaltung zu ‚überschreiben‘.
G-Code: Schleifen
Um die im Unterprogramm definierten Formen zu vervielfältigen, muss das Unterprogramm mehrmals aufgerufen werden. Dies wird mit den G-Code-Befehlen G25 Q und G26 für Schleifen realisiert.
Der G-Code-Ausschnitt im Hauptprogramm sieht dann folgendermaßen aus:
G25 Q4
P1 ; Unterprogramm 1 wird aufgerufen
G00 X110
G26
Mit G25 Q und G26 wird eine Schleife programmiert. G25 definiert den Schleifenanfang, und mit G26 wird die Schleife beendet. Der Parameter Q definiert die Anzahl der Durchläufe. In unserem Beispiel sind 4 Durchläufe festgelegt. Nach jedem Unterprogrammaufruf erfolgt eine relative Positionsverschiebung in X für das nächste Unterprogramm mit der Zeile: G00 X110.
Was ist ein R-Parameter?
Ein R-Parameter ist ein Platzhalter (Variable) im Bereich von R1 bis R999, in dem ein Wert gespeichert wird. Beispiel: R10 = 99.567. Diese Zeile definiert den Parameter R10, der den Wert 99.567 enthält.
Durch Aufruf des R-Parameters (hier R10) kann im G-Code auf dessen Wert zugegriffen werden. Bei der Verwendung der R-Parameter ist Folgendes zu beachten:
- Grundrechenarten Addition, Subtraktion, Multiplikation und Division können innerhalb eines Parameters ausgeführt werden. Bei der Berechnung der Werte wird die Regel „Punkt vor Strich“ angewandt. Die Klammern werden nicht unterstützt.
Beispiel:
R56 = 10/2 – 2*2
Das Ergebnis ist 1 - R-Parameter können innerhalb der Berechnung verwendet werden.
Beispiel:
R55 = 10
R56 = R55/2 – 2*2
Ergebnis ist 1 - R-Parameter können an folgenden Stellen im G-Code zugewiesen werden:
Befehl G00, Beispiel G00 X=R10
Befehl G01, Beispiel G01 X=R10 Y=R11 + 6 / 2
Befehl G02/G03 X/Y (Bogenbefehle), Beispiel: G02 I20 J20 X=R10 Y=R10
Befehl G25 Q (Schleife), Beispiel: G25 Q=R4
Befehl G53-G60 X/Y/Z, Beispiel G54 X=R20
Befehl IF-Anweisung, Beispiel: $IF R100==1 - R-Parameter sind globale Parameter, d.h., wenn sie am Anfang der G-Code-Datei festgelegt werden, dann sind sie für die gesamte Datei verfügbar.
- R-Parameter können auch in Unterprogrammen verwendet werden.
- Die Werte der R-Parameter werden unten in der Statusleiste des Texteditors angezeigt (siehe Bildschirmfoto unten)
Im Folgenden erweitern wir unsere Schleife um Parameter. Der G-Code-Ausschnitt sieht im Hauptprogramm dann folgendermaßen aus:
R4=4 ; R4 Parameter (Platzhalter) mit dem Wert 4 als Anzahl der Durchläufe anlegen
R5=110 ; R5 Parameter (Platzhalter) mit dem Wert 110 für neue X Position des Unterprogramms
; Zuweisung des Wertes über Parameter R4
G25 Q=R4
P1 ; Unterprogramm 1 wird aufgerufen
G00 X=R5 ; Relative Verschiebung, definiert im R5 Parameter
G26
Was ist eine IF-Anweisung?
Die IF-Anweisung wird benutzt, um eine Bedingung zu prüfen. Falls diese Bedingung erfüllt ist, werden die Befehle innerhalb der Bedingung ausgeführt. Es gibt folgende Bedienungen:
gleich ==
ungleich !=
größer gleich >=
kleiner gleich <=
Die IF-Anweisung besteht aus folgenden Befehle $IF $ENDIF $ELSE $ELSEIF. Die IF-Anweisung muss alleine in der Zeile stehen. IF Anweisung kann im Hauptprogramm und im Unterprogramm enthalten sein.
Beispiel 1: $IF $ENDIF
R57=10 ; Parameter R57 (Platzhalter) mit dem Wert 10 anlegen
$IF R57== 10
; Dieser G-Code Inhalt wird ausgeführt da Parameter R57 den Wert 10 hat (gleich ist erfüllt)
$ENDIF
Beispiel 2: $IF $ELSEIF $ENDIF
R57=9
$IF R57<=9
; Dieser Inhalt wird ausgeführt da Parameter R57=9 (kleiner gleich ist erfüllt)
$ELSEIF R57>=10
; Dieser Inhalt wird NICHT ausgeführt da Parameter R57 den Wert 9 hat.
; Die Änderung des Wertes auf 10 oder höher im Parameter R57 führt dazu dass
; dieser Inhalt ausgeführt wird.
$ENDIF
Wskazówka! Eine IF-Anweisung innerhalb einer anderen IF-Anweisung wird nicht unterstützt (siehe Tabelle unten).
FALSCH | RICHTIG |
---|---|
$IF R200==0 ; G-Code: Inhalt $IF R1==1 ; G-Code: Inhalt $ENDIF ; G-Code: Inhalt $ENDIF | $IF R200==0 ; G-Code: Inhalt $ENDIF $IF R1==1 ; G-Code: Inhalt $ENDIF |
Komplettes G-Code-Beispiel
Nachdem wir nun die Programmierung von Unterprogrammen, Schleifen, R-Parametern und IF-Anweisungen kennengelernt haben, erweitern wir unser Beispiel um diese Befehle.
Unser G-Code sieht dann folgendermaßen aus:
; G-Code-Datei: Herstellung eines Rechtecks am 15.01.2024
; Update am 23.01.2024
R3=3 ; Anzahl der Durchläufe in Y festlegen
R4=4 ; Anzahl der Durchläufe in X festlegen
R5=110 ; X Verschiebung für neues Unterprogramm festlegen
R6=110; Y Verschiebung für neues Unterprogramm festlegen
R7=1 ; Festlegen ob Kreis erzeugt werden soll, 1 – ja, 0 – nein
; Werkzeugnummer 1 wird gewählt
T1
; Werkzeug heben mit Eilgeschwindigkeit auf die Höhe Z = 10mm über dem Nullpunkt
G00 Z10
; Mit Eilgeschwindigkeit auf die Position X = 10 und Y = 10 fahren
G00 X10 Y10
; Arbeitsspindel mit M3 mit einer Drehzahl von 2000 U/min einschalten
M3 S2000
; 5 Sekunden warten bis die Spindeldrehzahl erreicht ist
G04 H5
; Relative Bemaßung (Kettenmaß) wird aktiviert
G91
; Zuweisung des Wertes über Parameter R3
G25 Q=R3
; Zuweisung des Wertes über Parameter R4
G25 Q=R4
P1 ; Unterprogramm 1 wird aufgerufen
G00 X=R5 ; Relative Verschiebung, definiert im R5 Parameter
G26
G00 Y=R6 ; Relative Verschiebung in X, definiert im R6 Parameter
G00 X=-R5*R4 ; Relative Verschiebung in X auf Ausgangposition
G26
; Programmende
M5 M30
; Anfang des Unterprogramms 1
M99 P1
$IF R7==1
; Mitte des Rechtecks anfahren
G00 X50 Y30
; 2 mm mit Vorschub 600 mm pro Minute in das Werkstück eintauchen
G01 Z-12 F600
; Kreis (d=20mm, Mittelpunkt 60×60) im Uhrzeigersinn
; mit Vorschub 600 mm pro Minute fahren
G02 I0 J20
; Werkzeug heben mit Eilgeschwindigkeit : Z = 10mm über dem Nullpunkt
G00 Z12
; Mit Eilgeschwindigkeit auf die Position X = 10 und Y = 10 fahren
G00 X-50 Y-30
$ENDIF
; 2 mm mit Vorschub 600 mm pro Minute in das Werkstück eintauchen
G01 Z-12
; Rechteck 100×100 mm mit Vorschub 600 mm pro Minute abfahren
G01 X100
G01 Y100
G01 X-100
G01 Y-100
; Werkzeug heben mit Eilgeschwindigkeit : Z = 10mm über dem Nullpunkt
G00 Z12
M99 ; Ende des Unterprogramms 1
Im G-Code (siehe oben) werden mehrere R-Parameter, Schleifen und IF-Anweisungen verwendet. Über die R-Parameter kann die G-Code-Datei sehr leicht verändert werden. Die R-Parameter R3 und R4 definieren die Anzahl der Teile in X und Y. Die R-Parameter R5 und R6 bestimmen den Abstand zwischen den Teilen in X und Y, und der letzte Parameter, R7, legt fest, ob ein Kreis ausgegeben werden soll oder nicht (siehe IF-Anweisung im Unterprogramm).
Podsumowanie
In diesem Blogartikel haben wir uns mit den verschiedenen Facetten der CNC Programmierung auseinandergesetzt. Angefangen bei den Grundlagen, die im Artikel
‚CNC Programmierung: G-Code lernen – Einfach und Schnell‚ behandelt wurden, bis hin zu fortgeschrittenen Themen wie R-Parametern, Schleifen und IF-Anweisungen. Damit haben wir die Breite und Tiefe der CNC Programmierung beleuchtet.
Wir hoffen, dass Ihnen dieser Blogartikel hilft, den gewünschten Erfolg zu erzielen.
Z serdecznymi pozdrowieniami, Twój zespół BOENIGK-electronics