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
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‑Code | Function |
|---|---|
| M00 | Program stop (unconditional) |
| M01 | Optional stop (active only if op‑stop switch is on) |
| M02 | End of program |
| M03 | Spindle on clockwise |
| M04 | Spindle on counter‑clockwise |
| M05 | Spindle stop |
| M06 | Automatic tool change |
| M08 | Coolant on |
| M09 | Coolant off |
| M30 | Program end and rewind |
| M‑Code | Funktion |
|---|---|
| M00 | Programm‑Halt (unbedingt) |
| M01 | Wahlweiser Halt (nur aktiv, wenn Wahl‑Halt‑Schalter ein ist) |
| M02 | Programmende |
| M03 | Spindel ein (Uhrzeigersinn) |
| M04 | Spindel ein (Gegenuhrzeigersinn) |
| M05 | Spindel aus |
| M06 | Automatischer Werkzeugwechsel |
| M08 | Kühlmittel ein |
| M09 | Kühlmittel aus |
| M30 | Programmende und Rückspulen |
| Code M | Fonction |
|---|---|
| M00 | Arrêt programme (inconditionnel) |
| M01 | Arrêt optionnel (actif si l’interrupteur d’arrêt optionnel est enclenché) |
| M02 | Fin de programme |
| M03 | Broche en marche (sens horaire) |
| M04 | Broche en marche (sens anti‑horaire) |
| M05 | Arrêt broche |
| M06 | Changement d’outil automatique |
| M08 | Arrosage en marche |
| M09 | Arrosage arrêt |
| M30 | Fin 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
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
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‑Code | Function |
|---|---|
| M00 | Program stop (unconditional) |
| M01 | Optional stop (active only if op‑stop switch is on) |
| M02 | End of program |
| M03 | Spindle on clockwise |
| M04 | Spindle on counter‑clockwise |
| M05 | Spindle stop |
| M06 | Automatic tool change |
| M08 | Coolant on |
| M09 | Coolant off |
| M30 | Program end and rewind |
| M‑Code | Funktion |
|---|---|
| M00 | Programm‑Halt (unbedingt) |
| M01 | Wahlweiser Halt (nur aktiv, wenn Wahl‑Halt‑Schalter ein ist) |
| M02 | Programmende |
| M03 | Spindel ein (Uhrzeigersinn) |
| M04 | Spindel ein (Gegenuhrzeigersinn) |
| M05 | Spindel aus |
| M06 | Automatischer Werkzeugwechsel |
| M08 | Kühlmittel ein |
| M09 | Kühlmittel aus |
| M30 | Programmende und Rückspulen |
| Code M | Fonction |
|---|---|
| M00 | Arrêt programme (inconditionnel) |
| M01 | Arrêt optionnel (actif si l’interrupteur d’arrêt optionnel est enclenché) |
| M02 | Fin de programme |
| M03 | Broche en marche (sens horaire) |
| M04 | Broche en marche (sens anti‑horaire) |
| M05 | Arrêt broche |
| M06 | Changement d’outil automatique |
| M08 | Arrosage en marche |
| M09 | Arrosage arrêt |
| M30 | Fin 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