In sintesi: la programmazione CNC significa darle le istruzioni che eseguirà per lavorare il pezzo. Il linguaggio standard è il G-code, fatto di codici G (i movimenti) e codici M (le funzioni della macchina). Puoi programmare a mano in ISO, in modo conversational a bordo macchina, oppure lasciar generare tutto al CAM. Qui trovi le basi, un cercatore di codici G/M e le guide per ogni argomento.
La programmazione CNC è il ponte tra il disegno di un pezzo e la sua lavorazione: è l’insieme di istruzioni che dicono alla macchina dove andare, a che velocità e con quale utensile. Capire come è fatto un programma — e i codici che lo compongono — ti permette di leggere ciò che gira in macchina, correggere al volo un errore e capire davvero cosa sta succedendo, invece di “fidarti e sperare”. In questa guida partiamo dalle fondamenta.
Che cos’è la programmazione CNC
Programmare una macchina a controllo numerico significa scrivere una sequenza di istruzioni, dette blocchi, che il controllo legge una dopo l’altra. Ogni blocco contiene comandi e coordinate: per esempio “vai in questo punto in linea retta a questa velocità”. La macchina non “capisce” il pezzo: esegue alla lettera ciò che le dici, ed è qui che sta tutta la differenza tra un programma curato e uno sbagliato.
Il programma può essere scritto a mano, generato da un software CAD/CAM oppure costruito direttamente sul controllo della macchina. Qualunque sia la strada, alla fine il risultato è sempre lo stesso linguaggio: il G-code.
G-code e M-code: il linguaggio della macchina
Il G-code è lo standard con cui si programmano quasi tutte le CNC. Si divide in due grandi famiglie:
- Codici G (preparatori): governano i movimenti e le modalità di lavoro — posizionamenti rapidi, interpolazioni lineari e circolari, cicli fissi, sistemi di coordinate.
- Codici M (miscellanei): comandano le funzioni della macchina — rotazione del mandrino, refrigerante, cambio utensile, arresti.
A questi si aggiungono gli indirizzi: X, Y, Z per le coordinate, F per l’avanzamento, S per i giri mandrino, T per l’utensile. Mettendoli insieme nasce un blocco come G01 X50 Y20 F200, cioè “muoviti in linea retta fino a X50 Y20 a 200 mm/min”.
Cerca un codice G o M
Non ricordi cosa fa un codice? Scrivi il codice (per esempio G01 o M03) o una parola chiave: la tabella si filtra all’istante.
| Codice | Tipo | Significato |
|---|---|---|
| G00 | Movimento | Posizionamento rapido (a vuoto) |
| G01 | Movimento | Interpolazione lineare (taglio in linea retta) |
| G02 | Movimento | Interpolazione circolare oraria |
| G03 | Movimento | Interpolazione circolare antioraria |
| G17 / G18 / G19 | Piani | Selezione del piano di lavoro XY / XZ / YZ |
| G20 / G21 | Unità | Misure in pollici / in millimetri |
| G28 | Riferimento | Ritorno al punto zero macchina |
| G40 | Compensazione | Annulla la compensazione raggio utensile |
| G41 / G42 | Compensazione | Compensazione raggio a sinistra / a destra |
| G43 | Compensazione | Compensazione della lunghezza utensile |
| G54–G59 | Origini | Selezione delle origini pezzo |
| G73 | Ciclo fisso | Foratura profonda con rottura truciolo |
| G76 | Ciclo fisso | Ciclo di filettatura |
| G80 | Ciclo fisso | Annulla il ciclo fisso attivo |
| G81 | Ciclo fisso | Foratura semplice |
| G82 | Ciclo fisso | Foratura con sosta sul fondo |
| G83 | Ciclo fisso | Foratura profonda a tappe (peck drilling) |
| G84 | Ciclo fisso | Maschiatura |
| G90 / G91 | Coordinate | Quote assolute / incrementali |
| G94 / G95 | Avanzamento | Avanzamento in mm/min / in mm/giro |
| G96 / G97 | Mandrino | Velocità di taglio costante / giri costanti |
| G98 / G99 | Ciclo fisso | Ritorno al piano iniziale / al piano R |
| M00 / M01 | Arresto | Arresto programma / arresto opzionale |
| M03 / M04 | Mandrino | Rotazione mandrino oraria / antioraria |
| M05 | Mandrino | Arresto del mandrino |
| M06 | Utensile | Cambio utensile |
| M08 / M09 | Refrigerante | Refrigerante acceso / spento |
| M30 | Fine | Fine programma e rewind |
| M98 / M99 | Sottoprogrammi | Richiamo sottoprogramma / ritorno |
Per l’elenco completo e spiegato vai alle guide dedicate ai codici G e ai codici M.
I tre modi di programmare una CNC
Non esiste un solo modo di programmare: ce ne sono tre, adatti a situazioni diverse.
- Manuale (ISO): scrivi tu il G-code, blocco per blocco. Massimo controllo, ideale per pezzi semplici e per imparare. Ne parliamo nella guida alla programmazione ISO.
- Conversational: rispondi a domande sul controllo della macchina (“che foro? che diametro?”) e il controllo genera il codice. Veloce a bordo macchina.
- CAM: disegni il pezzo e il software calcola i percorsi e genera il G-code tramite il post-processor. La scelta per geometrie complesse e produzione.
Quale conviene? Dipende dal pezzo e dal contesto: lo confrontiamo nella guida conversational, ISO o CAM.
Le guide del cluster Programmazione CNC
Codici G: lista e significato
Tutti i codici G più usati, raggruppati per funzione e spiegati con esempi.
Codici M: le funzioni macchina
Mandrino, refrigerante, cambio utensile e arresti: cosa fa ogni codice M.
Cicli fissi (canned cycles)
Foratura, foratura profonda, maschiatura e filettatura senza scrivere ogni movimento.
Programmazione ISO: struttura del programma
Blocchi, indirizzi, coordinate assolute e incrementali: come è fatto un programma.
Esempio di programma CNC commentato
Un programma reale spiegato riga per riga, dall’inizio alla fine.
Conversational, ISO o CAM
I tre metodi a confronto: pro, contro e quando scegliere ciascuno.
Anatomia di un blocco G-code

Un programma è una sequenza di righe e ogni riga, detta blocco, si legge da sinistra a destra. Prendiamo un esempio: N50 G01 X50.0 Y20.0 F200 S1200 M03. Ecco cosa dice, pezzo per pezzo:
- N50 — il numero del blocco (facoltativo, serve solo a numerare le righe).
- G01 — la modalità di movimento: interpolazione lineare.
- X50.0 Y20.0 — le coordinate del punto di destinazione.
- F200 — l’avanzamento, cioè 200 mm/min.
- S1200 — i giri del mandrino, 1200 giri/min.
- M03 — fa partire il mandrino in senso orario.
Quando sai leggere un blocco così, leggere un intero programma diventa solo questione di ripetere lo stesso ragionamento riga dopo riga. Un dettaglio utile: molti comandi sono modali, cioè restano attivi finché non li cambi, quindi non vanno ripetuti a ogni riga.
I dialetti del G-code: Fanuc, Heidenhain, Siemens
Le fondamenta del G-code sono uno standard, ma ogni costruttore di controlli ha le proprie varianti. Fanuc è il dialetto più diffuso e il riferimento di gran parte delle macchine; Heidenhain usa una programmazione conversational molto amata nelle fresatrici; Siemens (SINUMERIK) ha una sintassi potente e leggermente diversa. Ciò significa che un programma scritto per un controllo non sempre gira identico su un altro: è proprio per questo che, nel flusso CAD/CAM, il post-processor traduce i percorsi nel dialetto giusto per la tua macchina.
Da dove iniziare
Se parti da zero, il percorso più efficace è questo: prima impara a leggere un blocco e i codici principali (bastano i venti che trovi nella tabella qui sopra), poi studia la struttura di un programma e analizza un esempio commentato. Quando le basi sono solide, il passaggio al CAM sarà molto più consapevole. Per fare pratica offline, una buona idea è affiancare un manuale: trovi una selezione nella guida ai migliori libri di programmazione CNC. E per impostare giri e avanzamenti corretti, tieni a portata il calcolatore dei parametri di taglio.
Domande frequenti
Che cos’è il G-code?
È il linguaggio standard con cui si programmano le macchine CNC. È composto da codici G (movimenti e modalità) e codici M (funzioni macchina), più indirizzi come X, Y, Z, F e S.
Devo saper programmare a mano se uso il CAM?
Non è obbligatorio, ma conoscere le basi del G-code ti permette di leggere il programma, correggere piccoli errori e capire cosa farà la macchina. È un vantaggio enorme.
Qual è la differenza tra codici G e codici M?
I codici G sono “preparatori” e governano i movimenti e le modalità di lavoro; i codici M sono “miscellanei” e comandano funzioni come mandrino, refrigerante e cambio utensile.
Il G-code è uguale per tutte le macchine?
Le basi sono standard, ma ogni controllo (Fanuc, Heidenhain, Siemens) ha le sue varianti e codici specifici. Per questo il post-processor genera il G-code adatto alla macchina specifica.
Quanto tempo serve per imparare a programmare una CNC?
Le basi della programmazione ISO si imparano in poche settimane di pratica; la padronanza completa, cicli e ottimizzazioni comprese, richiede mesi di esperienza in officina.
Per vedere la programmazione CNC da zero, guarda questo corso introduttivo:
Conclusioni
Programmare una CNC non è un dono per pochi: è un linguaggio con poche parole-chiave e una logica precisa. Inizia dai codici fondamentali, capisci come si compone un blocco e leggi un programma vero: in poco tempo passerai dal “non so cosa fa questa riga” al “so esattamente cosa succederà in macchina”. Usa il cercatore qui sopra come riferimento rapido e segui le guide del cluster per approfondire passo dopo passo.
