Il G-code (Geometric Code) è il linguaggio di programmazione universale utilizzato per controllare le macchine CNC (Computer Numerical Control). Sviluppato negli anni '50 al MIT, il G-code rimane la spina dorsale della moderna lavorazione CNC, consentendo un controllo preciso sui processi di lavorazione come fresatura, tornitura e taglio laser.
Ogni comando G-code inizia con una lettera (ad esempio G, M o F) seguita da valori numerici, che indicano alla macchina di:
- Controllo del movimento (comandi G): Determina il percorso e la velocità dell'utensile (ad esempio, spostamento verso coordinate, movimento lineare/ad arco).
- Gestisci funzioni (comandi M): Gestire le azioni di avvio/arresto (ad esempio, rotazione del mandrino, cambio utensile, accensione/spegnimento del refrigerante).
Sebbene standardizzati secondo ISO 6983, esistono delle variazioni tra i produttori di macchine (ad esempio, Fanuc, Haas, Siemens). Questa tabella copre 90% di codici G per uso generico. Per le funzioni avanzate (5 assi, macro), consultare sempre il manuale della macchina per verificarne la compatibilità.
Concetti chiave:
- Comandi modali: Rimanere attivi fino alla sostituzione (ad esempio,
G01
rimane in modalità movimento lineare). - Comandi non modali: Eseguire una volta (ad esempio,
G28
ritorna alla posizione iniziale). - Unità:
G20
(pollici) /G21
(millimetri). - Sistemi di coordinate:
G54
–G59
(compensazioni di lavoro),G90
(posizionamento assoluto),G91
(posizionamento incrementale). - Esecuzione sequenziale: La macchina legge il codice riga per riga, dall'alto verso il basso, Nessun salto o loop a meno che non si utilizzino funzionalità avanzate

Categorie G-Code
Categoria | Comandi di esempio | Funzione primaria |
---|---|---|
Controllo del movimento | G00, G01, G02, G03 | Movimento utensile (rapido/lineare/arco) |
Selezione del piano | G17, G18, G19 | Selezionare il piano di lavoro (XY/XZ/YZ) |
Unità e misure | G20 (pollici), G21 (mm) | Imposta il sistema di misura |
Sistemi di coordinate | Da G54 a G59, G92 | Definire offset di lavoro o coordinate temporanee |
Compensazione utensile | G40, G41, G42, G43 | Regolare in base alle dimensioni/lunghezza dell'utensile |
Cicli in scatola | Da G81 a G89 | Routine di foratura/maschiatura automatizzate |
Controllo del mandrino | M03, M04, M05 | Avvia/arresta la rotazione del mandrino |
Controllo del refrigerante | M08, M09 | Accendere/spegnere il refrigerante |
Controllo del programma | M30, M02 | Fine programma/reset macchina |
Funzioni speciali | G28, G53 | Ritorna alle coordinate di casa/macchina |
Nota: I programmi di base 80% utilizzano solo: G00/G01
, G17/G20/G21
, M03/M05
, e M30
.
Tabella di riferimento dei comandi G-Code comuni
Comando | Funzione | Parametri | Esempio | Appunti |
---|---|---|---|---|
G00 | Posizionamento rapido (movimento senza taglio) | X, Y, Z (coordinate di destinazione) | G00X10Y5Z2 | Evita collisioni; non si verificano tagli. |
G01 | Interpolazione lineare (movimento di taglio) | X, Y, Z, F (velocità di avanzamento) | G01 X20 Y15 Z0 F150 | Mantenere una velocità di avanzamento costante per la finitura superficiale. |
G02 | Interpolazione circolare in senso orario | X, Y, I, J, K (offset del centro dell'arco) | G02 X30 Y30 I5 J0 | I/J/K definiscono il centro dell'arco rispetto al punto di partenza. |
G03 | Interpolazione circolare antioraria | Uguale a G02 | G03 X40 Y20 I0 J-5 | Utilizzato per archi e cerchi. |
G17 | Selezione del piano XY | Nessuno | G17 | Piano predefinito per la maggior parte delle operazioni di fresatura. |
G18 | Selezione del piano XZ | Nessuno | G18 | Utilizzato per operazioni di tornitura. |
G19 | Selezione del piano YZ | Nessuno | G19 | Raramente utilizzato nella fresatura standard. |
G20 | Unità in pollici | Nessuno | G20 | Imposta tutti i valori in pollici. |
G21 | Unità metrica | Nessuno | G21 | Imposta tutti i valori in millimetri. |
G28 | Ritorno alla posizione iniziale | X, Y, Z (facoltativo tramite intermedio) | G28 X0 Y0 Z0 | La macchina si sposta verso il punto di riferimento. |
Il G40 | Annulla compensazione taglierina | Nessuno | Il G40 | Disabilita la compensazione del raggio utensile. |
G41 | Compensazione della fresa sinistra | D (numero di offset del raggio utensile) | G41D1 | Compensa il raggio dell'utensile a sinistra del percorso. |
G42 | Compensazione della fresa a destra | D (numero di offset del raggio utensile) | G42 D2 | Compensa il raggio dell'utensile a destra del percorso. |
G43 | Compensazione della lunghezza dell'utensile | H (numero di offset dell'altezza dell'utensile) | G43 H3 | Si adatta alla lunghezza dell'utensile; essenziale per le configurazioni multi-utensile. |
G54 | Sistema di coordinate di lavoro 1 | Nessuno | G54 | Seleziona l'offset di lavoro predefinito (G54–G59). |
G80 | Annulla modalità di movimento | Nessuno | G80 | Annulla i cicli (ad esempio foratura, maschiatura). |
G90 | Posizionamento assoluto | Nessuno | G90 | Tutte le coordinate sono relative all'origine. |
G91 | Posizionamento incrementale | Nessuno | G91 | Le coordinate sono relative alla posizione attuale. |
M03 | Avvio del mandrino (senso orario) | S (velocità del mandrino) | Modello M03 S2000 | Il mandrino ruota in senso orario a 2000 giri/min. |
M04 | Avvio del mandrino (senso antiorario) | S (velocità del mandrino) | Modello M04 S1500 | Utilizzato per operazioni di taglio inverso. |
M05 | Arresto del mandrino | Nessuno | M05 | Arresta il mandrino dopo l'operazione. |
M06 | Cambio utensile | T (numero utensile) | M06 T5 | Cambio utensile automatico (richiede ATC). |
M08 | Refrigerante acceso | Nessuno | M08 | Attiva il refrigerante di allagamento. |
M09 | Liquido refrigerante spento | Nessuno | M09 | Disattiva il refrigerante. |
M30 | Fine programma e ripristino | Nessuno | M30 | Termina il programma e reimposta la macchina. |
F | Velocità di avanzamento | Valore di avanzamento (unità/min o unità/giro) | F200 | Impostare in G94 (unità/min) o G95 (unità/giro). |
S | Velocità del mandrino | Valore RPM | S3000 | La velocità dipende dal materiale e dal tipo di utensile. |
T | Selezione dello strumento | Numero dello strumento | Tipo 4 | Prepara lo strumento per il comando M06. |
FAQ
No. Il software CAM moderno genera la maggior parte del codice automaticamente. Concentrati sulla comprensione dei comandi comuni come G00
, G01
, M03
, e M30
.
Le basi sono universali, ma le funzionalità avanzate variano a seconda del marchio. Ad esempio:
- Haas: G187 (modalità ad alta velocità)
- Fanuc: G05.1 (levigatura)
Per i dettagli, consultare sempre il manuale della macchina.
Sì. Ad esempio:
Utilizzando G00
(movimento rapido) invece di G01
(taglio lento) → L'utensile urta il pezzo in lavorazione.
Dimenticare M05
(arresto del mandrino) → Il mandrino continua a ruotare anche dopo la fine del programma.
- Prima prova: esegui i programmi in modalità "dry run" (senza tagli).
- Modalità blocco singolo: esegue una riga alla volta per rilevare gli errori.
- Impostazioni di backup: annotare gli offset della macchina prima di modificarli.
- Pulisci l'area di lavoro: rimuovi i detriti che potrebbero ostacolare il movimento.
Sì, ma modifica solo i valori che conosci appieno e non modificare mai i percorsi utensile senza un software CAM: piccoli errori possono causare arresti anomali.
Programmi CAM: Fusion 360, Mastercam, SolidWorks CAM (a pagamento), FreeCAD, Easel (basato sul Web).
Nota: Evita di scrivere codice da zero, a meno che tu non sia esperto.
Risorse
- Documentazione LinuxCNC G-Code
- Manuale di programmazione Fanuc serie 30i/31i/32i
- Guida alla programmazione avanzata Siemens 840D SL
- Norma ISO 6983-1
- Quaderno di programmazione Haas Mill
- Manuale di programmazione CNC Mazak SmoothX
- Nozioni di base sul codice G (NRAO)
- Blog del ricettario CNC
- NC Viewer (Web, gratuito)
- CAMotics (Open source)
- Vericut
- Macchinista pratico
- Forum di LinuxCNC
- Stack Exchange – Produzione
- Reddit r/CNC