Home - Software - CNC Programmierung mit G-Code

CNC Programmierung mit G-Code

ANZEIGE

CNC Programmierung mit G-Code – Was ist das eigentlich?

Der G-Code, auch DIN-Code genannt, ist eine Maschinensprache, mit deren Hilfe der Programmierer der CNC-Maschine sagt, was sie machen soll.

CNC steht für computerized numerical control und bedeutet, dass die Maschine durch einen Computer gesteuert wird.

Der G-Code heißt so, weil viele Befehle mit einem G, gefolgt von einer Zahl, beginnen (z.B. G56).

Tatsächlich jedoch existieren verschiedenste Befehle mit allen möglichen Buchstaben von A-Z des Alphabets. Die Summe der G-Code Befehle ergeben das Maschinenprogramm.

G-Code Programm

G-Code Programm – Ein Beispiel

Da der G-Code weitestgehend standardisiert ist, ist dieser auf nahezu jeder CNC-Maschine ablauffähig.

Sobald das Maschinenprogramm in die Maschine eingespielt wird, läuft der Job im Idealfall nahezu vollautomatisch ab.

Wie ist das CNC Programm aufgebaut?

Das CNC-Programm setzt sich aus mehreren sogenannten Sätzen zusammen.

Ein Satz entspricht genau einer Zeile im Maschinenprogramm. Der Satz wiederum besteht aus einem oder mehreren Befehlen. Im englischen Sprachraum wird ein Satz auch als Block bezeichnet.

Der Befehl besteht üblicherweise aus dem Addressbuchstaben und einem oder mehreren Parametern.

Jeder Satz beginnt mit einer eindeutigen Zählernummer, welche in Zehnerschritten erhöht wird (N010, N020, …).

Dadurch hat man vorgehaltenen Platz, um nachträglich noch bis zu 9 Befehlszeilen zwischen zwei vorhandenen G-Code Befehlen hinzuzufügen.

CNC Programm mit G-Code – Beispielprogramme

1. Beispiel: Lineares Verfahren mit Eilgang und Standardvorschub

Im folgenden Beispielprogramm wird zunächst der Befehl (N010) gegeben, sodass im Eilgang (G00) die Position x=50, y=50 und z=10 angefahren wird.

In der folgenden Befehlszeile (N020) wird mit normaler Geschwindigkeit (G01) die Position X=100 und y=100 angefahren, der Verfahrweg wird dabei linear interpoliert.

%
%Beispiel CNC Programm in G-Code mit zwei Sätzen:
N010 G00 X50 Y50 Z10
N020 G01 X100 Y100
%

2.  Beispielprogramm: Abfahren einer Taschenkontur

In diesem Beispielprogramm wollen wir die Kontur einer Tasche fräsen. Diese soll 20 mm lang und 10 mm breit sein.

Die Kreisbögen sollen tangential mit den Geraden abschließen. Für die Kreisbögen benutzen wir den Befehl G02 (Kreisbogen im Uhrzeigersinn).

Zum Bearbeiten und Visualisieren von G-Code könnt ihr euch den kostenlosen G-Code Viewer und Editor NC Corrector herunterladen.

  1. Anfahren der Home-Position X=0, Y=0, Z=0
    N10 G01 X0 Y0 Z0
  2. Eintauchen des Werkzeugs um 10 mm
    N20 G01 Z-10
  3. Kreisbogenfahrt im Uhrzeigersinn zu Zielkoordinate X0 Y10; Der G-Code Befehl G02 benötigt die Angabe der Parameter I, J, und K: Die relative Position des Kreismittelpunkts vom aktuellen Punkt befindet sich in X-Richtung 0 mm entfernt (–> I0) und in y-Richtung 5 mm entfernt (–>J5)
    N30 G02 X0 Y10 I0 J5
  4. Lineares Anfahren der Koordinate X10 Y10
    N40 G01 X10 Y10
  5. Kreisbogenfahrt im Uhrzeigersinn zu Zielkoordinate X10 Y0;
    Die Position des Kreismittelpunkts  liegt von Koordinate X10 Y10 aus gesehen bei X+0 und Y-5
    N50 G02 X10 Y0 I0 J-5
  6. Lineares Anfahren der Koordinate X0 Y0
    N60 G01 X0 Y0
  7. Hochfahren mit dem Werkzeug
    N70 G01 Z0
Taschenkontur mit G02

Taschenkontur Abfahren mit G02

%
%Programm Taschenkontur mit G02
N10 G01 X0 Y0 Z0
N20 G01 Z-10
N30 G02 X0 Y10 I0 J5
N40 G01 X10 Y10
N50 G02 X10 Y0 I0 J-5
N60 G01 X0 Y0
N70 G01 Z0
%Ende Programm Taschenkontur
%

Häufig verwendete G-Code Befehle

Anbei findest Du eine Liste der am häufigsten benutzen Befehle und Funktionen.

Die Befehle für den CNC Programmierer reichen vom Verstellen der Achsen, über die Korrektur der Werkzeugbahn und dem Hinterlegen des Werkzeugradius bis hin zum Werkzeugwechsel:

G-Befehle (Wegfunktionen)

  • G00: Im Eilgang eine Position mit den Vorschub Achsen anfahren
  • G01: In normaler Geschwindigkeit eine Position anfahren (lineare Interpolation)
  • G02: Vorschub mit Kreisbogen, im Uhrzeigersinn (Kreis Interpolation)
  • G03: Vorschub mit Kreisbogen, gegen den Uhrzeigersinn
  • G04: Verweilzeit
  • G05: Spline Definition
  • G06: Spline Interpolation
  • G09: Genauhalt
  • G14: Polarkoordinatensystem, absolut
  • G15: Polarkoordinatensystem, relativ
  • G17: X-Y Ebene wählen
  • G18: Z-X Ebene wählen
  • G19: Y-Z Ebene wählen
  • G20: Frei definierbare Ebene wählen
  • G28: HOME Position anfahren
  • G33: Gewindeschneiden mit konstanter Steigung
  • G34: Gewindeschneiden mit zunehmender Steigung
  • G35: Gewindeschneiden mit abnehmender Steigung
  • G40: Aufheben aller Werkzeugbahnkorrekturen
  • G41: Werkzeugbahnkorrektur in Vorschubrichtung links
  • G42: Werkzeugbahnkorrektur in Vorschubrichtung rechts
  • G43: Werkzeugkorrektur positiv
  • G44: Werkzeugkorrektur negativ
  • G53: Löschen der Nullpunktverschiebung
  • G54-G59: Nullpunktverschiebungen 1-6
  • G80: Zyklen Lölschen
  • G81-G89: Bohrzyklen
  • G90: Absolute Koordinatenangaben im aktuellen Koordinatensystem
  • G91: Relative Koordinatenangaben im aktuellen Koordinatensystem
  • G92: Bezugspunktverschiebung – Speicher setzen
  • G94: Vorschub in mm/min
  • G95: Vorschub in mm/U
  • G96: Konstante Schnittgeschwindigkeit (Bitte G92 Spindeldrehzahlbegrenzung setzen)
  • G97: Konstante Spindeldrehzahl in U/min

M-Befehle (Schaltfunktionen):

M-Befehle, auch M-Funktionen (Miscellaneous Functions) genannt dienen zum Zu- und Abschalten von Maschinenfunktionen.

  • M00: Programmhalt (Spindel, Kühlmittel, Vorschub aus)
  • M01: Wahlweiser Halt
  • M02: Programm Ende
  • M03: Spindel Ein: Im Uhrzeigersinn (Rechtslauf)
  • M04: Spindel Ein: Gegen den Uhrzeigersinn (Linkslauf)
  • M05: Spindel Stop
  • M06: Werkzeugwechsel durchführen (Werkzeug muss vorher eingemessen worden sein)
  • M07: Kühlmittel 2 Ein
  • M08: Kühlmittel 1 Ein
  • M09: Kühlmittel Aus
  • M10: Klemmung Ein
  • M11: Klemmung Aus
  • M13: Spindel Ein, Rechtslauf und Kühlmittel Ein
  • M14: Spindel Ein, Linkslauf und Kühlmittel Ein
  • M19: Spindel Stop bei bestimmter Winkellage
  • M30: Programm-Ende, Zurück zum Programm-Anfang
  • M31: Verriegelung aus
  • M40 – M45: Getriebestufen Wahl
  • M60: Werkstückwechsel
  • M68: Werkstück spannen
  • M69: Werkstück ausspannen

Beispielprogramm für M-Befehle:

%
%Programm M-Befehl
N10 S1120 M14 $
N20 G95 F0.20 $
%

Im oben gezeigten Programm wird die Spindeldrehzahl wird auf 1120 U/min eingestellt, die Spindel eingeschaltet sowie der Vorschub auf 0,20 mm/U gestellt

Überblick über alle Adressbefehle:

Nach der Norm DIN 66025 / ISO 6983 gibt es folgende Addressbuchstaben:

A Absolut oder Inkrementposition um die X-Achse (Drehen um X)
B Absolut oder Inkrementposition um die Y-Achse (Drehen um Y)
C Absolut oder Inkrementposition um die Z-Achse (Drehen um Z)
D Werkzeugkorrekturfaktor
E Zweiter Vorschub
F Vorschub
G Verfahrbefehle (G0)
H Werkzeuglängenkorrektur
I Definiert den Kreisbogenmittelpunkt auf der x-Achse bei den Befehlen G02 und G03
J Definiert den Kreisbogenmittelpunkt auf der y-Achse bei den Befehlen G02 und G03
K Definiert den Kreisbogenmittelpunkt auf der z-Achse bei den Befehlen G02 und G03
L Fixed Cycle Loop Count
M Zusatzfunktionen (Miscellaneous) (z.B. Kühlmittel an/aus, Motorspindel an/aus… )
N Satznummer
O Programmname
P Zusätzlicher Parameter für manche G und M Befehle
Q Zusätzlicher Parameter für manche G Befehlen
R Parameter, z.B. Radius bei Kreisbahn (Radius)
S Spindeldrehzahl
T Werkzeugauswahl
U Inkrement X
V Inkrement Y
W Inkrement Z
X Absolut oder Inkrementposition in Richtung der X-Achse
Y Absolut oder Inkrementposition in Richtung der Y-Achse
Z Absolut oder Inkrementposition in Richtung der Z-Achse
$ Satzende

Leider kann ich an dieser Stelle nicht auf alle Befehle im Detail eingehen. Hier sei auch auf die Handbücher der NC-Software Anbieter verwiesen, welche die einzelnen Befehle sehr detailliert und umfangreich dokumentieren. Eine sehr umfangreiche Liste findet ihr auch im RepRap Wiki.

g-code-editor

NC Correktor

Zum einfachen Bearbeiten und Visualisieren von G-Code finde ich den G-Code Viewer und Editor NC Corrector klasse. NC Corrector ist einfach für den Einstieg in die CNC Programmierung und zum Erlernen der Grundfuntionen.

Falls du zusätzlich zu den Fräsbahnen auch noch die Maschine und komplexere Dinge visualisieren möchtest kannst du dir auch mal PALmill ansehen, das du unter folgendem Link ebenfalls kostenlos herunterladen kannst: http://www.hubertklinkner.de/palmill/

Damit Du nicht Alles von Hand programmieren musst, liegt es Nahe eine fertige Software zu verwenden, die für Dich den G-Code weitestgehend selbständig aus dem 3D Modell erzeugt:

Kostenlose CAM-Software zum Erzeugen von G-Code

Um von der 3D Konstruktion zum fertigen Produkt zu gelangen, muss man folgende Schritte durchlaufen:

  1. CAD: Konstruktion eines Teils in 3D CAD-Software und Export der 3D Daten
  2. CAM: Erstellen des G-Codes aus den 3D Daten mit Hilfe der CAM-Software
  3. CNC-Steuerung: Import des G-Codes und Ablauf des Programms.
Bild mit Prozessablauf für den G-Code

CAD CAM Prozessablauf

Nicht jeder CNC Programmierer hat in der Arbeit oder zuhause eine professionelle Maschine mit einer professionellen Steuerung von Heidenhain, die alles in Nullkommanix selber macht.

Aus diesem Grund habe ich dir eine kurze Liste zusammengestellt, wo du geeignete CAD CAM Programme zum Nulltarif downloaden kannst:

CNC Steuerungssoftware

Zum Ablauf des G-Codes in deiner Maschine benötigst du geeignete CNC Steuerungssoftware für den Ablauf des G-Codes.

Im speziellen soll hier noch Mach 3 für den PC und GRBL für Arduino erwähnt werden.

Was ist deine Information zur CNC Steuerung? Schreib jetzt deine Meinung unten.

34 Gedanken zu „CNC Programmierung mit G-Code“

  1. Ich bin hier ein absoluter Neuling und experementiere mit der kürzlich zusammengebauten einfachen Graphiermaschiene, die keinen gespeicherten Nullpunkt besitzt und beim Abschalten, alles eingebene vergist. Vom Programieren bin ich erst jetzt damit in Kontakt gekommen und habe wegen der vielen englichen Ausdrücke und Bezeichnung große schwierigkeiten, so das ich schlieslich auf ein Programm angewiesen bin, welches aus einer Zeichnung dann den notwendigen Maschienensprachr umsetzt, doch solche Programme sind für mich nicht finanzierbar mit einer kleinen Rente von 660 Euro plus Grundsicherung. AQber habe erfahren das einfache Programme erhältlich sind, doch gefunden habe ich nur englische und nichts auf Deutsch und mit 87 Jahren will ich nicht mehr englich lernen nur um ein kleines bischen für meine persönlichen Zwecke es etwas leichter habe, mit diesem G-Code fertig zu werden. Was kann mir hier wirklich helfen????

  2. Wir suchen dringend jemanden, der uns bei der CNC Programmierung (Steuerung mit G-Code) helfen kann.
    Am besten vor Ort (06779 Raguhn-Jeßnitz).
    Eine Einweisung würde uns echt weiter helfen.#
    Kontakt gerne : kontakt (at) mbs-kesten.de

  3. Guter Beitrag. Für den Fall dass jemand stolpert: Im Beispiel 2 wird unter „3.“, bei den Parametern zu Befehl „G02“ in Satz „N30“, zweimal von „X“ gesprochen. Das muss für den Parameter „J“ aber „Y“ heißen.

  4. Der Artikel war eine große Hilfe. ich baue z.Zt meine
    Aciera F3 Maschine so um,daß ich PCDREH Win und
    Mach3 alternativ zur Steuerung einsetzen kann.
    Da gibt es viel Neues für mich.

  5. Sehr gute und hilfreiche Informationen für Einsteiger wie z.B. mich. Ein Dankeschön an den Autor für seine Bemühungen, diesen Artikel zu erstellen..

  6. habe eine emag vsc 250 mit 840d baujahr 1999 neue von Deutchland bezogen .Bai dieser masch, tu ich frai mit ıso coden prorammieren ,
    laider konte ich kaine 45 oder eine anderen winkel
    proramieren . Bitte um muster programm liebe kolegen.

  7. Hallo,
    hab mit Interesse die Seite gelesen. Ich bin Neuling auf dem Gebiet der CNC Maschinen und bin an Hilfe und Erfahrung anderer Nutzer interessiert. Hier ist diese Seite sehr nützlich.
    Ich habe aktuell ein Problem mit meiner Software „Galaad“ die nicht so richtig funktionieren will. Das Fräsen von Geraden funktioniert, Kurven werden nur stotternd abgearbeitet. Ein weiteres Problem ist dass die Endschalter und Werkzeug-Sensor-Signale nicht in der Software ankommen nicht funktionieren. Der Maschinenprozessor gibt die Signale aus, dh. GRBL bekommt die Befehle aber ob diese in GRBL verarbeitet werden kann ich nicht prüfen. Meine Frage: Gibt es eine Möglichkeit die eingehenden Signale im GRBL zu prüfen? Danke für Unterstützung!

    1. Habe gerade gesehen dass der Link zum G-Simple download tatsächlich nicht mehr funktioniert.
      Vielleicht weiß hier jemand wo man es aktuell bekommt? Oder stellt es der Autor nicht mehr kostenlos zu Verfügung?

  8. Vielen Dank für die gute Erklärung, hilft mir sehr als CNC-Neueinsteiger. Die „grauen Zellen“ werden wieder etwas gefordert, aber die grauen Haare sind nicht mehr geworden. 😉
    CNC-Maschine: Fernost DIY
    Nutzung: Frontplatten und Platinen/Isolationsfräsen

    1. Hallo Ralf, super dass dir der Artikel weitergeholfen hat. Wenn die grauen Haare nicht mehr geworden sind ist es dann gleich doppelt gut 😉 Danke auch für den Hinweis mit G-Simple. Ich weiß es nicht aber möglicherweise stellt der Anbieter den Download-Link aber bald wieder rein.

  9. echt hilfreich.
    Vielleicht hast du einen vorschlag was ich bei meinen Problem machen könnte. Hatte ausversehen das Handbuch meines Frequenzumrichters weg geworfeen. Habe jetzt das Problem das die Spindel viel zu lange braucht um hoch zu fahren.
    N6 GO S8000 V158 M3
    N7 GO X-10 Y15.251
    N8 GO Z30
    N9 GO Z1
    So wie der Code jetzt ist, würde mir die Spindel OHNE zu drehen ins Material rein fahren.
    Kann ich hinter den M3 noch ein M1 einfügen oder kann in einer zeile nur ein M Befehl stehen.
    Muß nach den M3 irgend etwas einfügen, das den fortgang des Programms um 10 sec. verzögert.
    Hoffe du kannst mir da einen tip geben

  10. Hallo Toni,
    danke für die super Beschreibungen. Ich bin Anfänger und verstehe erst jetzt wie die ganze Sache funktioniert.
    Ich werde Dir treu bleiben.
    Eine frage hätte ich aber.
    In deinem Beispiel 2 mit dem Kreisbogen stolpere ich über folgenden Punkt:
    bei 3. Kreisbogenfahrt, muss das nicht die Y-Richtung mit J5 sein?

  11. Hi

    Da aktuell auf der Suche nach einem CNC/G-Code-Simulator, stieß ich auf diese Seite.
    Selber bin ich nur Hobbyist, fand aber die letzten Jahre nirgendwo, daß die Zeilennummern N (1x als Befehl tituliert) eigentlich nicht benutzt werden würden.
    KA, wie Das im industriellen Bereich aussieht, die Hobby-Lösungen ignorieren N, meines Wissen nach, komplett.

    Leider wird hier LinuxCNC nicht erwähnt – hoffte gerade hier zu Infos in deutscher Sprache.

    Hier fand ich noch einen G-Code-Simulator
    https://nraynaud.github.io/webgcode/
    leider für mich so nicht direkt nutzbar, da hier reiner G-Code gebraucht wird, ich aber mit Funktionen ( O ) z.B. eine Helix generieren lassen.
    2.tes Leider: Meine Versuche, LinuxCNC in der VirtualBox zum Laufen zu bringen, scheitern an der zumeist verwendeten, englischen, Sprache.

    Tolle Seite

    1. Hallo posti,

      die Zeilennummern „N“ haben für den Ablauf keine direkte Funktion, helfen dir aber bei der Fehlersuche. Bei komplexeren Programmen sehr hilfreich, wenn in der Meldezeile nicht nur der Befehl steht wo es klemmt sondern auch die Zeilennummer.
      Zudem kannst du mit GOTO-Befehlen auch ohne zusätzliche Sprungmarken auf die Zeilennummer springen, z.B. GOTOF N0100.

  12. hallo Toni
    habe das vor ca. 25 jahren mal gelernt. heute sehe ich das wieder. an einiges kann man sich doch noch erinnern. Danke für die anschauliche Erklärung. Deine Seite fand ich über eine befreundete Homepage.

  13. Hallo,
    ich starte, mit einer Portal-fräse, ins Abenteuer CNC!Wagen tue ich dies nur, da es solche klasse Fachleute wie Dich gibt, die einem den Einstig in das CNC-Fräsen ermöglichen!
    Vielen Dank und weiter so!!!!
    N. Michel

    1. Hallo Norbert,
      danke für das tolle Lob!!
      Ich wünsche dir schon mal viel Spaß mit deiner Fräse! Da kann man kreativ arbeiten. Welche schöne Fräse hast du dir denn ausgesucht?
      Schöne Grüße

  14. Hallo, ich bin auf unterschiedliche Erklärung für den Befehl Polarkoordinaten G 09 für die CNC -Programmierung ( z.B. Deckel D4/D11) gestoßen. Im Tabellenbuch steht für G09 aber Genauhalt. Ist da mal eine neue Festlegung erfolgt ? Für 1 Antwort bedankt sich M.Fitzner

    1. Hallo,
      ich weiß nicht ob es eine neue Definition gegeben hat, aber nach aktueller DIN 66025 soll G09 für Genauhalt verwendet werden. Manche Hersteller halten sich aber nicht an die DIN vielleicht liegt es in Ihrem Fall daran. Beste Grüße!

      1. Hi! Ich bin auch anfänger!und seit eine wocho klappt das schon mit G-code! Danke furs beispiel! Können sie vielleicht ein paar dazu sreiben? z.B. kontur, kreistasche und HALBKUGEL positiv und negativ bezogen auf Z achse! Ich kann sehr viele sachen mit voirprogrammierte zyklen in fagor steuerung fräsen,aber nicht im Iso/G code sreiben! Da ich davor nur Heidenhein hatte!ich denke es wird hilfsreich sein fur viele anfänger!

      2. Kann mir einer sagen was für ein m code fürs teil auswerfen für den stif in der 2 spindel ist bitte ich kriege es nicht hin seit dri tagen schon

    2. Das Tabellenbuch richtet seine Befehle nach „PAL“ eine allgemeine Normung gibt es Nicht. Jeder Hersteller hat seine eigene Programmiersprache, heißt also, dass z.B. Beim Hersteller XYZ ein Befehl M03 heißt, der die Spindellaufrichtung angibt, Beim Hersteller ABC der Befehl M03 aber das Kühlmittel an machen lässt.
      So als grobes beispiel gesehen, hoffe ich konnte dir helfen 🙂

      1. Hallo,
        dies stimmt nicht gänzlich. Die DIN66025 regelt nicht eindeutig alle Funktionen, die Standardbefehle sind aber bei Namhaften Herstellern sowie in Berufsschulen und CNC-Kursen immer gleich. Was nun Hobby-CNC Maschinenbauer und die Maschinenbauer in Fernost so machen, kann ich nicht sagen.

        Es gibt Standard G und M-Codes, wie z.b.
        G00/G01 = Eilgang/Vorschub
        G02/G03 = Kreisbogen
        G40/G41/G42 = Bahnkorrektur
        M03/M04/M05 = Drehrichtung
        M08/M09 = Wasser an/aus
        um mal die gängigsten zu nennen. Diese sind bei Namhaften Steuerungen und Maschinen nach DIN. Weiterhin gibt es aber viele freie G und M befehle, die Maschinenhersteller nach bedarf belegen. Hier z.b. bei mir M51/M59 = Luft an/aus

        Nimmt nun also ein Hersteller den Befehl M03 um das Kühlmittel anzuschalten, so ist seine Steuerung auch nicht nach DIN.

        Quelle für diese Aussage ist mein alter Berufsschullehrer, meine langjährige Erfahrung an vielen Verschiedenen CNC-Maschinen mit Fanuc, Mitsubishi und irgendwelchen undefinierbaren Steuerungen an Maschinen aus der Schweiz stützen diese Aussage.

  15. Pingback: Vakuumtisch - CNC Fertigung jetzt schneller und hindernisfrei

  16. Pingback: Das große CNC Lexikon - Begriffserklärungen CNC Technik

  17. Pingback: Der Guide zur Graviermaschine - CNC Gravieren - Tipps und Tricks

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.