Skip to Content

THE ULTIMATE GUIDE TO CNC PROGRAMMING & G‑CODE APPLICATION

From Machine Zero to Advanced Macros — Master Every G‑Code Command to Confidently Operate Any CNC Milling or Turning Center
June 2, 2026 by
ZENTIOR, Anthony
| No comments yet
The Ultimate Guide to CNC Programming & G‑Code Application | ZENTIOR

The Ultimate Guide to CNC Programming & G‑Code Application Der ultimative Leitfaden zur CNC‑Programmierung & G‑Code‑Anwendung Le guide ultime de la programmation CNC et de l'application du code G

June 2, 2026 by Anthony Zentior | Engineering Deep Dive 2. Juni 2026 von Anthony Zentior | Technischer Tiefgang 2 juin 2026 par Anthony Zentior | Plongée technique

1. Why CNC Programming Matters 1. Warum CNC‑Programmierung wichtig ist 1. Pourquoi la programmation CNC est importante

CNC programming is the bridge between a digital CAD model and a physical part. Without a correct, efficient program, even the most rigid machine and the sharpest tool will produce scrap. This guide takes you from the absolute basics of G‑code to advanced canned cycles, tool compensation, and subprogram techniques—everything you need to confidently write, read, and edit CNC programs for milling and turning. Die CNC‑Programmierung ist die Brücke zwischen einem digitalen CAD‑Modell und einem physischen Bauteil. Ohne ein korrektes, effizientes Programm produziert selbst die steifste Maschine mit dem schärfsten Werkzeug Ausschuss. Dieser Leitfaden führt Sie von den absoluten Grundlagen des G‑Codes bis hin zu fortgeschrittenen Zyklen, Werkzeugkorrekturen und Unterprogrammtechniken – alles, was Sie brauchen, um CNC‑Programme für Fräsen und Drehen sicher zu schreiben, zu lesen und zu editieren. La programmation CNC est le pont entre un modèle CAO numérique et une pièce physique. Sans un programme correct et efficace, même la machine la plus rigide et l'outil le plus tranchant produiront des rebuts. Ce guide vous emmène des bases absolues du code G jusqu'aux cycles d'usinage avancés, à la compensation d'outil et aux techniques de sous‑programmes – tout ce dont vous avez besoin pour écrire, lire et modifier en toute confiance des programmes CNC pour le fraisage et le tournage.

1.1 A Brief History of G‑Code 1.1 Eine kurze Geschichte des G‑Codes 1.1 Un bref historique du code G

G‑code originated in the 1950s at MIT as a language to control the first NC machines. The “G” stands for “general” or “geometric” code, while “M” codes control miscellaneous machine functions. Today, G‑code is standardized under ISO 6983, though many machine builders add custom cycles. Fanuc, Siemens, and Heidenhain each have dialects, but the core commands are universal. G‑Code entstand in den 1950er Jahren am MIT als Sprache zur Steuerung der ersten NC‑Maschinen. Das „G“ steht für „General“ oder „Geometrie“‑Code, während „M“‑Codes verschiedene Maschinenfunktionen steuern. Heute ist G‑Code unter ISO 6983 standardisiert, obwohl viele Maschinenhersteller eigene Zyklen hinzufügen. Fanuc, Siemens und Heidenhain haben jeweils Dialekte, aber die Kernbefehle sind universell. Le code G est né dans les années 1950 au MIT en tant que langage pour contrôler les premières machines à commande numérique. Le « G » signifie code « général » ou « géométrique », tandis que les codes « M » contrôlent les fonctions diverses de la machine. Aujourd'hui, le code G est normalisé selon l'ISO 6983, bien que de nombreux constructeurs ajoutent des cycles personnalisés. Fanuc, Siemens et Heidenhain ont chacun leurs dialectes, mais les commandes fondamentales sont universelles.

2. Coordinate Systems and Machine Zero 2. Koordinatensysteme und Maschinennullpunkt 2. Systèmes de coordonnées et zéro machine

Every CNC machine operates in a Cartesian coordinate system (X, Y, Z). The machine’s absolute reference point is called the Machine Zero or Home position. From there, we define workpiece coordinate systems (G54–G59) that align with the fixture and stock. Jede CNC‑Maschine arbeitet in einem kartesischen Koordinatensystem (X, Y, Z). Der absolute Referenzpunkt der Maschine wird Maschinennullpunkt oder Home‑Position genannt. Davon ausgehend definieren wir Werkstück‑Koordinatensysteme (G54–G59), die sich an Vorrichtung und Rohteil orientieren. Chaque machine CNC fonctionne dans un système de coordonnées cartésien (X, Y, Z). Le point de référence absolu de la machine est appelé zéro machine ou position d’origine. À partir de là, nous définissons des systèmes de coordonnées pièce (G54–G59) qui s’alignent sur le montage et le brut.

💡 Key Concept: Always set your workpiece coordinate system origin (G54 X0 Y0 Z0) to a repeatable feature—typically the top‑left corner of the stock or a drilled datum hole. 💡 Schlüsselkonzept: Setzen Sie den Nullpunkt Ihres Werkstück‑Koordinatensystems (G54 X0 Y0 Z0) immer auf ein wiederholbares Merkmal – typischerweise die obere linke Ecke des Rohlings oder eine gebohrte Bezugsbohrung. 💡 Concept clé : Réglez toujours l’origine de votre système de coordonnées pièce (G54 X0 Y0 Z0) sur un élément reproductible – généralement le coin supérieur gauche du brut ou un trou de référence percé.

3. G‑Code Structure and Essential Commands 3. G‑Code‑Struktur und wesentliche Befehle 3. Structure du code G et commandes essentielles

A CNC program is a sequence of blocks, each containing one or more words. A word consists of a letter address (e.g., G, M, X, Y, Z, F, S) followed by a numeric value. Blocks are executed in order unless a jump or subprogram call interrupts the flow. Ein CNC‑Programm ist eine Folge von Sätzen, die jeweils ein oder mehrere Wörter enthalten. Ein Wort besteht aus einer Buchstabenadresse (z. B. G, M, X, Y, Z, F, S) gefolgt von einem Zahlenwert. Die Sätze werden der Reihe nach ausgeführt, es sei denn, ein Sprung- oder Unterprogrammaufruf unterbricht den Ablauf. Un programme CNC est une séquence de blocs, chacun contenant un ou plusieurs mots. Un mot se compose d’une adresse par lettre (par ex. G, M, X, Y, Z, F, S) suivie d’une valeur numérique. Les blocs sont exécutés dans l’ordre, sauf si un saut ou un appel de sous‑programme interrompt le flux.

3.1 Rapid and Linear Moves (G00 / G01) 3.1 Eilgang und Linearinterpolation (G00 / G01) 3.1 Déplacement rapide et interpolation linéaire (G00 / G01)

G00 – Rapid positioning: moves all axes at the machine’s maximum traverse rate, not intended for cutting.
G01 – Linear interpolation: moves the tool along a straight line at a defined feed rate (F) to cut material.
G00 – Eilgangpositionierung: Bewegt alle Achsen mit maximaler Verfahrgeschwindigkeit der Maschine, nicht zum Schneiden bestimmt.
G01 – Linearinterpolation: Bewegt das Werkzeug mit einer festgelegten Vorschubgeschwindigkeit (F) entlang einer Geraden, um Material zu schneiden.
G00 – Positionnement rapide : déplace tous les axes à la vitesse de déplacement maximale de la machine, non destiné à la coupe.
G01 – Interpolation linéaire : déplace l’outil le long d’une ligne droite à une vitesse d’avance (F) définie pour couper la matière.

N10 G90 G54        (Absolute, work offset 1)
N20 G00 X0 Y0     (Rapid to start position)
N30 S2000 M03     (Spindle 2000 RPM CW)
N40 G01 Z-2 F500  (Feed down into material)
N50 G01 X100 F800 (Cut a straight line)

3.2 Circular Interpolation (G02 / G03) 3.2 Zirkularinterpolation (G02 / G03) 3.2 Interpolation circulaire (G02 / G03)

G02 – Clockwise arc.
G03 – Counter‑clockwise arc.
Arcs are defined by the end point (X, Y) and the circle center (I, J) or radius (R). I and J are incremental distances from the start point to the arc center.
G02 – Kreisbogen im Uhrzeigersinn.
G03 – Kreisbogen gegen den Uhrzeigersinn.
Bögen werden durch den Endpunkt (X, Y) und den Kreismittelpunkt (I, J) oder Radius (R) definiert. I und J sind inkrementelle Abstände vom Startpunkt zum Bogenmittelpunkt.
G02 – Arc dans le sens horaire.
G03 – Arc dans le sens anti‑horaire.
Les arcs sont définis par le point d’arrivée (X, Y) et le centre du cercle (I, J) ou le rayon (R). I et J sont les distances incrémentales du point de départ au centre de l’arc.

(Full circle example)
G01 X50 Y0 F600
G02 X50 Y0 I-50 J0   (CW circle of radius 50 back to start)

3.3 Absolute vs. Incremental (G90 / G91) 3.3 Absolut vs. inkrementell (G90 / G91) 3.3 Absolu vs. incrémental (G90 / G91)

G90 – All coordinates are measured from the active work offset origin.
G91 – Coordinates are relative to the last position. Very useful for repetitive movements and subprograms.
G90 – Alle Koordinaten werden vom aktiven Werkstück‑Nullpunkt aus gemessen.
G91 – Koordinaten beziehen sich auf die letzte Position. Sehr nützlich für wiederholte Bewegungen und Unterprogramme.
G90 – Toutes les coordonnées sont mesurées depuis l’origine du décalage pièce actif.
G91 – Les coordonnées sont relatives à la dernière position. Très utile pour les mouvements répétitifs et les sous‑programmes.

4. M‑Codes: Controlling Machine Functions 4. M‑Codes: Steuerung der Maschinenfunktionen 4. Codes M : Contrôle des fonctions de la machine

M‑CodeFunction
M00Program stop (unconditional)
M01Optional stop (active only if op‑stop switch is on)
M02End of program
M03Spindle on clockwise
M04Spindle on counter‑clockwise
M05Spindle stop
M06Automatic tool change
M08Coolant on
M09Coolant off
M30Program end and rewind
M‑CodeFunktion
M00Programm‑Halt (unbedingt)
M01Wahlweiser Halt (nur aktiv, wenn Wahl‑Halt‑Schalter ein ist)
M02Programmende
M03Spindel ein (Uhrzeigersinn)
M04Spindel ein (Gegenuhrzeigersinn)
M05Spindel aus
M06Automatischer Werkzeugwechsel
M08Kühlmittel ein
M09Kühlmittel aus
M30Programmende und Rückspulen
Code MFonction
M00Arrêt programme (inconditionnel)
M01Arrêt optionnel (actif si l’interrupteur d’arrêt optionnel est enclenché)
M02Fin de programme
M03Broche en marche (sens horaire)
M04Broche en marche (sens anti‑horaire)
M05Arrêt broche
M06Changement d’outil automatique
M08Arrosage en marche
M09Arrosage arrêt
M30Fin de programme et rembobinage

5. Tool Length and Cutter Radius Compensation 5. Werkzeuglängen- und Fräserradiuskorrektur 5. Compensation de longueur d’outil et de rayon de fraise

5.1 Tool Length Offset (G43 / G44 / G49) 5.1 Werkzeuglängen‑Offset (G43 / G44 / G49) 5.1 Correction de longueur d’outil (G43 / G44 / G49)

G43 H__ applies a positive tool length offset (most common). H is the offset register number, typically matching the tool number. G49 cancels length compensation. G43 H__ wendet einen positiven Werkzeuglängen‑Offset an (am gebräuchlichsten). H ist die Offset‑Registernummer, die üblicherweise mit der Werkzeugnummer übereinstimmt. G49 hebt die Längenkorrektur auf. G43 H__ applique une correction positive de longueur d’outil (la plus courante). H est le numéro de registre de correction, correspondant généralement au numéro d’outil. G49 annule la correction de longueur.

N10 T02 M06        (Load tool #2)
N20 G43 H02 Z50    (Apply length offset for tool 2, move to Z50)

5.2 Cutter Radius Compensation (G41 / G42 / G40) 5.2 Fräserradiuskorrektur (G41 / G42 / G40) 5.2 Compensation de rayon de fraise (G41 / G42 / G40)

G41 – Cutter compensation left (tool stays left of the programmed path).
G42 – Cutter compensation right.
G40 – Cancel compensation. Always activate in a lead‑in move (G00 or G01) with a D‑word (offset number).
G41 – Fräserradiuskorrektur links (Werkzeug bleibt links der programmierten Bahn).
G42 – Fräserradiuskorrektur rechts.
G40 – Korrektur aufheben. Immer in einer Einfahrbewegung (G00 oder G01) mit einem D‑Wort (Offset‑Nummer) aktivieren.
G41 – Compensation de fraise à gauche (l’outil reste à gauche de la trajectoire programmée).
G42 – Compensation de fraise à droite.
G40 – Annuler la compensation. Toujours activer lors d’un mouvement d’approche (G00 ou G01) avec un mot D (numéro de correction).

G00 X0 Y0
G01 G41 D01 X10 Y10 F500   (Activate left compensation)
G01 X100
G01 Y100
G01 X0
G01 G40 X-10 Y-10          (Cancel compensation during exit)

6. Canned Cycles for Drilling, Tapping, Boring 6. Bearbeitungszyklen zum Bohren, Gewindeschneiden, Ausdrehen 6. Cycles d’usinage pour perçage, taraudage, alésage

Canned cycles (G80‑G89) simplify repetitive drilling operations. They all use a common set of parameters: R (retract plane), Z (final depth), Q (peck depth, if applicable), F (feed rate), and sometimes P (dwell). Bearbeitungszyklen (G80–G89) vereinfachen wiederholte Bohroperationen. Sie alle verwenden einen gemeinsamen Parametersatz: R (Rückzugsebene), Z (Endtiefe), Q (Zustelltiefe, falls zutreffend), F (Vorschub) und manchmal P (Verweilzeit). Les cycles d’usinage (G80–G89) simplifient les opérations de perçage répétitives. Ils utilisent tous un jeu de paramètres commun : R (plan de retrait), Z (profondeur finale), Q (profondeur de passe, le cas échéant), F (avance) et parfois P (temporisation).

6.1 Deep‑Hole Peck Drilling (G83) 6.1 Tieflochbohren mit Entspänen (G83) 6.1 Perçage profond avec débourrage (G83)

G98 G83 X30 Y40 R5 Z-50 Q8 F120
X80 Y40
X130 Y40
G80

G98 returns to the initial plane after each cycle; G99 returns to the R‑plane. Q8 pecks 8 mm per plunge, retracting fully to clear chips. End with G80 to cancel the cycle. G98 fährt nach jedem Zyklus auf die Ausgangsebene zurück; G99 auf die R‑Ebene. Q8 stellt 8 mm pro Zustellung zu und zieht zum Entspänen vollständig zurück. Beenden Sie mit G80, um den Zyklus abzubrechen. G98 revient au plan initial après chaque cycle ; G99 revient au plan R. Q8 effectue des passes de 8 mm, avec retrait complet pour évacuer les copeaux. Terminez par G80 pour annuler le cycle.

6.2 Rigid Tapping (G84) 6.2 Starres Gewindebohren (G84) 6.2 Taraudage rigide (G84)

Synchronises spindle rotation and Z‑axis feed precisely. Feed must equal pitch × RPM. Use M29 before G84 on many Fanuc controls to enable rigid tapping mode. Synchronisiert Spindeldrehung und Z‑Achsen‑Vorschub präzise. Vorschub muss gleich Steigung × Drehzahl sein. Verwenden Sie M29 vor G84 bei vielen Fanuc‑Steuerungen, um den starren Gewindebohrmodus zu aktivieren. Synchronise précisément la rotation de la broche et l’avance de l’axe Z. L’avance doit être égale au pas × tr/min. Utilisez M29 avant G84 sur de nombreuses commandes Fanuc pour activer le mode taraudage rigide.

M29 S500
G98 G84 X50 Y50 R5 Z-20 F1.25
X100 Y100
G80

7. Subprograms and Macros for Efficient Code 7. Unterprogramme und Makros für effizienten Code 7. Sous‑programmes et macros pour un code efficace

Avoid duplicating code by using M98 (call subprogram) and M99 (return). Subprograms can be external files or defined after the main program. For parametric programming, Fanuc Macro B uses variables (#1–#33), arithmetic, and logical statements. Vermeiden Sie doppelten Code, indem Sie M98 (Unterprogramm aufrufen) und M99 (zurückkehren) verwenden. Unterprogramme können externe Dateien sein oder nach dem Hauptprogramm definiert werden. Für parametrische Programmierung verwendet Fanuc Makro B Variablen (#1–#33), Arithmetik und logische Anweisungen. Évitez de dupliquer du code en utilisant M98 (appel de sous‑programme) et M99 (retour). Les sous‑programmes peuvent être des fichiers externes ou définis après le programme principal. Pour la programmation paramétrique, le Macro B Fanuc utilise des variables (#1–#33), de l’arithmétique et des instructions logiques.

(Main program)
G90 G54
M98 P1000          (Call subprogram O1000)
M30

O1000             (Subprogram)
G00 X0 Y0
G01 Z-2 F200
G01 X50 Y50
M99

📌 Pro Tip: Use subprograms for repetitive geometry like bolt‑hole circles, pocket grids, and multi‑part fixtures. This reduces program size and makes editing much easier. 📌 Pro‑Tipp: Verwenden Sie Unterprogramme für wiederholte Geometrien wie Lochkreise, Taschengitter und Mehrfachspannvorrichtungen. Das reduziert die Programmgröße und erleichtert die Bearbeitung enorm. 📌 Conseil de pro : Utilisez des sous‑programmes pour les géométries répétitives comme les cercles de trous, les grilles de poches et les montages multi‑pièces. Cela réduit la taille du programme et facilite grandement l’édition.

8. Complete Example: Milling a Pocket with Islands 8. Vollständiges Beispiel: Fräsen einer Tasche mit Inseln 8. Exemple complet : Fraisage d’une poche avec îlots

Here is a real‑world program combining multiple techniques: work offset, tool change, length offset, cutter radius compensation, and a simple pocket cleanup pass. Hier ein praxisnahes Programm, das mehrere Techniken kombiniert: Werkstück‑Nullpunkt, Werkzeugwechsel, Längenkorrektur, Fräserradiuskorrektur und einen einfachen Schlichtdurchlauf der Tasche. Voici un programme réel combinant plusieurs techniques : décalage d’origine, changement d’outil, correction de longueur, compensation de rayon de fraise et une simple passe de finition de poche.

O5000 (POCKET WITH ISLANDS)
N10 G21 G40 G49 G80 G90   (Safe startup block)
N20 G54                    (Work offset #1)
N30 T01 M06                (10 mm end mill)
N40 G00 X0 Y0 S6500 M03
N50 G43 H01 Z50 M08
N60 G00 Z10
N70 G01 Z-5 F400
N80 G01 G41 D01 X10 Y10 F600
N90 X100
N100 Y100
N110 X0
N120 Y0
N130 G01 G40 X-10 Y-10
N140 G00 Z50 M09
N150 M30

9. Safety, Simulation, and Best Practices 9. Sicherheit, Simulation und bewährte Verfahren 9. Sécurité, simulation et bonnes pratiques

  • Always dry‑run a new program with the tool above the part (Z offset +50 mm) or in single‑block mode.Immer Trockenlauf eines neuen Programms mit Werkzeug über dem Teil (Z‑Offset +50 mm) oder im Einzelsatzmodus durchführen.Toujours faire un essai à vide d’un nouveau programme avec l’outil au‑dessus de la pièce (décalage Z +50 mm) ou en mode bloc par bloc.
  • Check feed and speed against the tooling catalogue; never exceed the recommended chip load.Vorschub und Drehzahl mit dem Werkzeugkatalog abgleichen; niemals die empfohlene Spanlast überschreiten.Vérifiez l’avance et la vitesse par rapport au catalogue d’outillage ; ne dépassez jamais la charge de copeau recommandée.
  • Use G‑code simulation software (e.g., NC Viewer, CAMotics) to visually verify toolpaths before running on the machine.G‑Code‑Simulationssoftware (z. B. NC Viewer, CAMotics) verwenden, um die Werkzeugbahnen vor dem Maschinenlauf visuell zu überprüfen.Utilisez un logiciel de simulation de code G (par ex. NC Viewer, CAMotics) pour vérifier visuellement les trajectoires avant de lancer la machine.

🌐 ZENTIOR
📩 operations@zentior.ch
🌐 ZENTIOR
📩 operations@zentior.ch
🌐 ZENTIOR
📩 operations@zentior.ch

#CNC #GCode #Manufacturing #Machining #PrecisionEngineering #IndustrialAutomation #ZENTIOR #CNC #GCode #Fertigung #Zerspanung #Präzisionsfertigung #Industrieautomatisierung #ZENTIOR #CNC #CodeG #Fabrication #Usinage #IngénierieDePrécision #AutomatisationIndustrielle #ZENTIOR


Sign in to leave a comment