I codici CNC sono il linguaggio con cui una macchina a controllo numerico interpreta movimenti, velocità e funzioni ausiliarie. In questo articolo spiego come leggere un programma, che differenza c’è tra G-code e M-code, quali comandi conviene conoscere subito e dove nascono gli errori più frequenti. L’obiettivo è darti una base pratica, utile sia se stai studiando sia se vuoi controllare meglio un ciclo di lavorazione.
Le informazioni essenziali da tenere a portata di mano
- La logica di base è semplice: i codici di movimento guidano gli spostamenti, quelli ausiliari gestiscono ciò che ruota, si ferma o si attiva attorno alla lavorazione.
- Un programma CNC è fatto di blocchi: ogni riga combina coordinate, quote di avanzamento, mandrino, utensile e funzioni macchina.
- Lo standard ISO 6983 dà il formato generale, ma ogni controllo ha il proprio dialetto e alcune differenze operative.
- Se conosci bene G00, G01, G02, G03, G90, G91, G54, M03, M05, M06 e M08/M09, leggi già gran parte dei programmi reali.
- Gli errori più costosi nascono quasi sempre da unità sbagliate, offset errati, riferimenti confusi o post-processori non coerenti con la macchina.
Che cosa fanno i codici nella logica di una CNC
Io li tratto sempre come un linguaggio operativo, non come una lista di sigle da imparare a memoria. Il programma CNC descrive cosa deve fare la macchina, in quale ordine e con quali parametri: spostarsi, entrare in quota, accendere il mandrino, avviare il refrigerante, cambiare utensile, fermarsi. La base comune è quella dello standard ISO 6983, pensato per uniformare il formato dei programmi e rendere più semplice lo scambio tra sistemi diversi, anche se nella pratica ogni costruttore introduce funzioni e particolarità proprie.
La distinzione più utile, per chi lavora in officina, è questa: i comandi di tipo G governano soprattutto la geometria e il moto, mentre i comandi di tipo M gestiscono le funzioni macchina. Dentro il blocco di programma compaiono poi gli address words, cioè le lettere che danno significato al numero che segue: X, Y e Z per le coordinate, F per l’avanzamento, S per i giri mandrino, T per l’utensile. Se questa logica è chiara, il resto diventa molto più leggibile.
Il punto da non sottovalutare è che un codice non vale sempre allo stesso modo su tutte le macchine. Un controllo può interpretare un ciclo fisso in modo leggermente diverso, oppure richiedere una sequenza di sicurezza specifica all’avvio. Per questo il programma va sempre letto insieme al controllo reale, non solo come lista astratta di comandi. Da qui diventa naturale capire come si compone un blocco riga per riga.
Come leggere un blocco di programma senza perdere il filo
Un blocco CNC è una riga di istruzioni. Non tutte le lettere devono comparire sempre, ma quando ci sono vanno interpretate nel loro contesto. Io parto quasi sempre da quattro domande: dove si trova la macchina, in che sistema di riferimento lavora, con quale utensile e con quale movimento. Se rispondi a queste quattro, hai già capito gran parte della riga.
| Elemento | Cosa indica | Esempio | Perché conta |
|---|---|---|---|
| N | Numero di riga | N10 | Aiuta a orientarsi nel programma e nelle correzioni. |
| G | Preparazione o tipo di moto | G00, G01, G90 | Definisce se la macchina va in rapido, in interpolazione o in coordinate assolute. |
| X Y Z | Coordinate assi | X25. Y-10. Z-2. | Indicano la posizione finale o il punto da raggiungere. |
| F | Avanzamento | F250 | Stabilisce la velocità di lavoro dell’utensile. |
| S | Velocità mandrino | S12000 | Determina i giri al minuto del mandrino. |
| T | Utensile | T03 | Seleziona il numero utensile o il suo richiamo. |
| M | Funzione macchina | M03, M08, M30 | Accende il mandrino, attiva il refrigerante o chiude il programma. |
Un esempio semplice chiarisce la logica: N10 G21 G90 G54 G00 X0 Y0 S12000 M03. Qui la macchina lavora in millimetri, usa coordinate assolute, richiama l’offset pezzo G54, si porta in rapido al punto indicato e avvia il mandrino in senso orario. Se in una riga successiva compare G01 con un valore di F, la macchina passa da un movimento di posizionamento a un movimento di taglio controllato.
La lettura corretta nasce anche dal riconoscere gli stati “modali”: alcune istruzioni restano attive finché non vengono sostituite da un altro comando della stessa famiglia. È una delle ragioni per cui un programma va controllato dall’inizio alla fine, non solo riga per riga. Con questa base, il passo successivo è capire quali comandi incontri davvero tutti i giorni in officina.
I comandi più usati nelle lavorazioni quotidiane
Se devo insegnare a leggere un programma in fretta, parto sempre da un gruppo ristretto di codici. Sono quelli che si ripetono più spesso nei cicli di fresatura e tornitura, e coprono una parte enorme del lavoro reale. Non serve memorizzare subito tutto il catalogo: serve riconoscere i blocchi che governano il processo.
| Codice | Funzione | Uso pratico |
|---|---|---|
| G00 | Posizionamento rapido | Porta l’utensile vicino al punto di lavoro senza tagliare. |
| G01 | Interpolazione lineare | Usato per il taglio in linea retta con avanzamento controllato. |
| G02 / G03 | Interpolazione circolare | Servono per archi e traiettorie curve, in senso orario o antiorario. |
| G17 / G18 / G19 | Selezione del piano | Definiscono il piano di lavorazione: XY, XZ o YZ. |
| G20 / G21 | Unità di misura | Pollici o millimetri. In Italia, G21 è la scelta più comune. |
| G90 / G91 | Coordinate assolute o incrementali | Cambia il modo in cui vengono interpretate le quote. |
| G54-G59 | Offset pezzo | Permettono di lavorare sul riferimento reale del particolare. |
| M03 / M04 | Mandrino in rotazione | Avvio in senso orario o antiorario, secondo il ciclo. |
| M05 | Fermo mandrino | Serve prima di una pausa, cambio utensile o fine operazione. |
| M06 | Cambio utensile | Richiama l’utensile successivo previsto dal programma. |
| M08 / M09 | Refrigerante on/off | Attiva o disattiva il flusso di lubrorefrigerante. |
| M30 | Fine programma | Chiude il ciclo e spesso riporta il controllo allo stato iniziale. |
Ci sono poi differenze importanti tra fresatura e tornitura. Su un tornio, per esempio, il piano XZ è molto più frequente, e alcune funzioni legate alla gestione della torretta o del mandrino principale assumono un peso che in fresatura non hanno. Questo non cambia la logica di fondo, ma cambia il modo in cui leggi il programma e soprattutto il modo in cui verifichi la sicurezza del ciclo.
Quando questi comandi diventano familiari, il programma smette di sembrare una sequenza indecifrabile e diventa una traccia di lavorazione. Da lì, il tema successivo è capire come nasce davvero il codice che arriva in macchina, soprattutto quando parte da un CAM.
Dal cam alla macchina come nasce davvero il programma
Molti pensano che un programma CNC sia solo il risultato del post-processore. In realtà il flusso è più lungo: si parte dal modello CAD, si definisce la strategia di lavorazione nel CAM, si genera il percorso utensile, poi il post-processor traduce tutto nel dialetto corretto per quel controllo e per quella macchina. Io considero il post-processore un traduttore, non un giudice: può adattare il percorso, ma non sostituisce la verifica tecnica.
Qui si vede bene perché i codici non sono identici ovunque. Due macchine possono leggere un programma simile, ma non comportarsi nello stesso modo se cambiano cinematica, numero di assi, gestione degli utensili o formato degli offset. Per questo la simulazione offline, il controllo dei collisioni e il primo pezzo in prova restano passaggi essenziali, anche in reparti molto automatizzati.
In pratica, il ciclo affidabile è quasi sempre questo: definizione della strategia, post-processo, simulazione, verifica degli offset, prova a velocità ridotta, primo pezzo controllato. Quando salti uno di questi passaggi, l’errore non arriva sempre subito; a volte emerge solo quando il pezzo è già quasi finito. Ed è proprio lì che conviene conoscere gli errori tipici, perché sono quelli che fanno perdere più tempo e materiale.
Gli errori che vedo più spesso e che costano più tempo
Le criticità più comuni non sono quelle “eleganti”, ma quelle banali: un’unità sbagliata, un riferimento errato, una quota letta nel modo sbagliato. Nel lavoro reale, sono proprio questi dettagli a generare la maggior parte degli scarti e delle collisioni evitate per un soffio. Io li controllo sempre con una checklist minima, perché fidarsi solo dell’abitudine è il modo più rapido per sbagliare.
| Errore | Effetto tipico | Come lo prevengo |
|---|---|---|
| Unità sbagliate tra mm e pollici | Quote fuori scala e percorso completamente errato | Controllo sempre G20/G21 all’inizio e nel setup macchina. |
| G90 e G91 confusi | La macchina continua a spostarsi in modo inatteso | Uso un blocco di avvio standard e verifico ogni cambio di modalità. |
| Offset pezzo errato | Il ciclo si avvia nel riferimento sbagliato | Verifico G54/G55 con tastatura, azzeramento e primo riferimento reale. |
| Lunghezza utensile non corretta | Quota Z sbagliata, rischio urto o pezzo fuori tolleranza | Controllo tabella utensili e compensazioni prima del primo taglio. |
| Direzione mandrino o refrigerante mancanti | Taglio inefficace, utensile stressato o finitura scadente | Inserisco una sequenza di sicurezza fissa per avvio e arresto. |
| Dialetto CNC non coerente con il controllo | Allarmi, cicli interpretati male o funzioni non supportate | Allineo post-processore, controllo macchina e versione software. |
Il rischio maggiore è credere che una simulazione basti sempre. In realtà la simulazione riduce gli errori, ma non sostituisce il comportamento fisico della macchina, il serraggio reale, la flessione dell’utensile o la qualità del materiale. Per questo io considero obbligatori il collaudo a vuoto, il single block e la riduzione dell’avanzamento sul primo pezzo.
Quando queste verifiche diventano routine, cambia anche la scelta tra programmazione manuale e CAM. E qui entrano in gioco efficienza, complessità del pezzo e tempo disponibile in reparto.Quando conviene programmare a mano e quando lasciare lavorare il cam
Non vedo la programmazione manuale e il CAM come due scuole in guerra. Sono strumenti diversi. La programmazione a bordo macchina è veloce per cicli semplici, correzioni immediate e interventi di officina; il CAM diventa la scelta giusta quando la geometria è complessa, il percorso è lungo o servono strategie sofisticate su più assi. In altre parole, il criterio non è ideologico: è produttivo.
| Scenario | Manuale | CAM |
|---|---|---|
| Forature, riprese semplici, piccoli pattern | Molto adatto | Spesso sovradimensionato |
| Correzioni rapide in officina | Più rapido e diretto | Richiede passaggi in più |
| Contorni 2D ripetitivi | Possibile, se il ciclo è breve | Utile se il pezzo si ripete spesso |
| Geometrie 3D complesse | Poco pratico | Scelta naturale |
| 5 assi o cinematica avanzata | Solo per interventi mirati | Quasi sempre necessario |
Io consiglio di imparare comunque la logica manuale, anche quando si usa quasi sempre il CAM. Serve per leggere il post-processato, per correggere un ciclo, per capire perché una traiettoria non convince e per non dipendere completamente dal software. Un operatore che capisce il codice riconosce prima un errore di setup, una compensazione sbagliata o una sequenza poco sicura.
Quando devi scegliere, la regola pratica è semplice: manuale per ciò che è breve, ripetitivo o da correggere subito; CAM per ciò che è geometrico, articolato o sensibile al tempo ciclo. Con questa distinzione chiara, resta un ultimo passaggio utile: fissare il nucleo minimo da memorizzare per leggere quasi ogni programma con maggiore sicurezza.
Il set minimo che imparerei per primo
Se dovessi condensare tutto in una base operativa, partirei da pochi elementi ma studiati bene. Sono i comandi che permettono di capire la struttura del ciclo, il riferimento, il moto e la sequenza macchina.
- G00 e G01 per distinguere rapidamente tra avvicinamento e taglio.
- G02 e G03 per leggere archi e raccordi senza ambiguità.
- G20/G21 e G90/G91 per evitare gli errori che cambiano tutto il pezzo.
- G54 e gli altri offset per capire dove “vive” il riferimento del particolare.
- M03, M05, M06, M08 e M09 per seguire l’ordine reale delle azioni macchina.
- F, S e T per leggere avanzamento, giri mandrino e utensile senza fermarti a ogni riga.
Da qui in avanti, il salto vero non è memorizzare più sigle, ma capire le relazioni tra movimento, offset, utensile e condizioni di taglio. È lì che la programmazione smette di sembrare astratta e diventa un controllo concreto del processo.