La programmazione ISO resta il modo più diretto per capire come una CNC interpreta movimenti, velocità e funzioni ausiliarie. Io la considero la base più utile da padroneggiare anche quando in reparto si usa un CAM: leggere il codice aiuta a correggere in fretta, verificare il post-processo e intervenire con criterio sul pezzo.
In questo articolo trovi una spiegazione pratica del linguaggio a blocchi, i comandi che servono davvero, un esempio di programma semplice e un confronto onesto con CAM e programmazione conversazionale. L’obiettivo è darti un quadro utile per lavorare meglio su fresatrici e torni, senza confondere teoria e officina.
I punti da tenere a mente prima di scrivere il primo programma
- L’ISO su CNC è un linguaggio a blocchi basato su G, M, X, Y, Z, F, S e T, ma il dialetto cambia da controllo a controllo.
- Prima di mandare in macchina un programma, vanno sempre verificati origine pezzo, utensile, piano di lavoro e unità di misura.
- I comandi più frequenti sono G00, G01, G02/G03, G17-G19, G20/G21, G54, M03/M05 e G43.
- Il rischio maggiore non è il codice “sbagliato” in assoluto, ma il codice giusto usato nel contesto sbagliato.
- Per geometrie semplici l’ISO è rapido e trasparente; per pezzi complessi il CAM è più efficiente, ma il controllo finale resta indispensabile.
Che cosa indica davvero il linguaggio ISO su una CNC
Nel lessico di officina, “ISO” indica di solito un programma a blocchi leggibile dal controllo numerico, con un riferimento storico all’ISO 6983 e con dialetti che cambiano da macchina a macchina. La logica di base è comune, ma ogni costruttore introduce varianti, opzioni e cicli propri.
La parte importante, per chi lavora su macchine CNC, è capire che il programma non descrive solo una traiettoria. Descrive anche il contesto operativo: quale utensile entra in lavoro, quale piano è attivo, quale origine pezzo si usa, se il mandrino gira in senso orario o antiorario e quando il refrigerante deve partire. Capire questa struttura cambia il modo in cui leggi un file e ti fa vedere subito dove può nascere un errore.
Io distinguo sempre tra due livelli: il movimento geometrico e la logica di processo. Il primo dice dove andare; la seconda dice come farlo in sicurezza. Una volta chiarita questa differenza, leggere il codice diventa molto meno intimidatorio e ha senso passare al blocco riga per riga.
Questa distinzione è importante perché spiega anche perché due programmi apparentemente simili possono comportarsi in modo diverso su due controlli diversi. Ed è proprio da qui che conviene partire quando si legge un blocco ISO.
Come si legge un blocco senza perdersi
Un blocco ISO è una riga di istruzioni. In genere contiene comandi di movimento, coordinate, velocità e funzioni ausiliarie. La sintassi cambia in dettaglio da controllo a controllo, ma l’ordine mentale con cui lo leggo io è sempre lo stesso: prima capisco il contesto, poi il movimento, poi le funzioni accessorie.
O1001
G21 G17 G90 G40 G49 G80
T1 M06
S8000 M03
G54
G00 X0 Y0
G43 H01 Z50
G01 Z-5 F250
G01 X40
G01 Y30
G02 X20 Y50 I-20 J0
G00 Z100
M05
M30
In questo esempio vedo subito alcune cose utili. G21 imposta i millimetri, G17 seleziona il piano XY, G90 attiva la programmazione assoluta, mentre G40, G49 e G80 annullano rispettivamente compensazione utensile, compensazione lunghezza e cicli fissi. Poi arrivano utensile, mandrino, origine pezzo e movimento di avvicinamento.
La riga con G43 H01 merita attenzione: qui si attiva la compensazione lunghezza utensile, quindi il valore memorizzato nel correttore H1 entra davvero nel calcolo della quota Z. Anche l’arco con G02 dice molto: senza i parametri corretti sull’offset del centro, il controllo non sa ricostruire la traiettoria. In pratica, il blocco non va letto “a parole”, ma come una sequenza di condizioni operative.
Quando faccio formazione, insisto sempre su questo punto: prima di chiederti dove va la fresa, chiediti in che stato è la macchina in quel momento. È il passaggio che evita la maggior parte delle letture superficiali e prepara al lavoro sui comandi che contano davvero.
I comandi che uso davvero più spesso in officina
Se devo semplificare la programmazione ISO per chi inizia, parto da una manciata di istruzioni. Sono quelle che si incontrano ogni giorno, sia su centri di lavoro sia su torni, anche se con logiche e indirizzi leggermente diversi.
| Comando | Funzione | Perché conta davvero |
|---|---|---|
| G00 | Movimento rapido | Serve per gli spostamenti non di taglio; se usato male può avvicinare l’utensile troppo in fretta. |
| G01 | Interpolazione lineare | È il movimento di lavoro base: qui entrano feed, profondità e qualità della superficie. |
| G02 / G03 | Archi orari e antiorari | Fondamentali per raccordi, tasche circolari e profili continui; richiedono attenzione sul piano attivo. |
| G17 / G18 / G19 | Selezione del piano | Stabiliscono come il controllo interpreta gli archi e la geometria della lavorazione. |
| G20 / G21 | Pollici o millimetri | Un errore qui cambia tutte le quote: è uno degli sbagli più costosi da intercettare in tempo. |
| G54-G59 | Offset pezzo | Definiscono l’origine di lavoro; senza l’offset giusto il programma può essere corretto ma applicato male. |
| G43 | Compensazione lunghezza utensile | Serve per allineare la quota reale della punta con quella programmata. |
| M03 / M05 | Mandrino avvio e stop | Imposta il ciclo macchina nel momento giusto; direzione e tempi contano quanto la velocità. |
| M08 / M09 | Refrigerante on e off | Non è un dettaglio: influisce su evacuazione truciolo, temperatura e finitura. |
| T e S | Utensile e giri mandrino | Chiudono il cerchio tra strategia di taglio e stabilità del processo. |
In questa tabella non c’è tutto, ma c’è il nucleo operativo. Io preferisco insegnare pochi comandi bene, invece di far memorizzare decine di sigle senza contesto: quando la struttura mentale è solida, il resto si impara molto più in fretta.
Da qui il passo successivo è capire come trasformare questi comandi in un programma base, senza saltare i controlli essenziali.
Come costruire un programma base passo dopo passo
Quando scrivo un programma semplice, seguo sempre la stessa sequenza. Non perché sia l’unica possibile, ma perché riduce gli errori e rende il codice leggibile anche da chi dovrà modificarlo dopo di me.
- Definisco il pezzo, l’origine e il sistema di riferimento. Senza questo passaggio, anche un programma corretto rischia di lavorare sul punto sbagliato.
- Scelgo utensile, correttore e parametri di taglio coerenti con materiale e lavorazione.
- Scrivo un blocco iniziale pulito con modalità sicure, unità giuste e compensazioni annullate se necessario.
- Porto l’utensile in zona di sicurezza prima di entrare nel taglio.
- Eseguo la lavorazione principale con avanzamenti coerenti e transizioni semplici.
- Chiudo il ciclo con stop mandrino, refrigerante e fine programma ordinata.
Su una fresatrice 2D, il programma può restare molto essenziale. Su un tornio, invece, entrano in gioco altri aspetti: diametri, quote in X spesso espresse in modo particolare, cicli di sgrossatura e finitura, e una relazione più stretta tra utensile e profilo. La logica però non cambia: prima sicurezza, poi movimento, poi processo.
Io consiglio sempre di fare tre controlli prima del primo pezzo: simulazione, esecuzione a blocchi singoli e dry run se il controllo lo consente. Questa triade non è una formalità; è il modo più semplice per scoprire coordinate invertite, archi sbagliati e compensazioni dimenticate prima che lo faccia il pezzo.
Una volta imparata questa sequenza, il confronto con CAM e programmazione conversazionale diventa molto più concreto, perché capisci davvero cosa fai manualmente e cosa stai delegando al software.
ISO, CAM e programmazione conversazionale a confronto
Nel 2026 il punto non è scegliere un solo metodo per sempre, ma capire quale strumento risolve meglio un certo tipo di lavoro. Io la vedo così: l’ISO è il linguaggio di controllo e verifica, il CAM è il motore per la geometria complessa, la programmazione conversazionale è l’alleata delle lavorazioni ripetitive o dei piccoli lotti.
| Metodo | Quando conviene | Punti forti | Limiti realistici |
|---|---|---|---|
| ISO manuale | Piccole modifiche, prove rapide, lavorazioni semplici, correzioni in macchina | Trasparenza, controllo diretto, velocità nelle varianti minime | Diventa lungo e fragile su geometrie complesse o 5 assi |
| CAM | Profili complessi, 3 e 5 assi, strategie avanzate, ottimizzazione dei percorsi | Produttività, simulazione, gestione automatica di traiettorie articolate | Richiede post-processore corretto e verifica del risultato in macchina |
| Conversazionale | Lotti brevi, pezzi semplici, officina con tempi stretti | Rapidità di inserimento, meno codice da scrivere, accessibile a operatori meno esperti | Può essere meno flessibile quando serve una personalizzazione profonda |
Gli errori che fanno perdere tempo, utensili e pezzi
Le criticità più comuni non arrivano quasi mai da un singolo comando assurdo. Arrivano da una sequenza corretta scritta dentro un contesto sbagliato. È una differenza sottile, ma in officina pesa moltissimo.
- Unità errate - Se il programma è scritto in millimetri ma il controllo è in pollici, il risultato è immediatamente fuori scala.
- Origine pezzo non coerente - Un G54 impostato male sposta tutto il ciclo, anche quando il percorso sembra corretto nel software.
- Piano sbagliato - Con archi e interpolazioni circolari, G17/G18/G19 cambia l’interpretazione geometrica del blocco.
- Compensazioni dimenticate - G43, correttori utensile o annullamenti mancanti possono modificare Z in modo imprevedibile.
- Feed e giri non coerenti - Un avanzamento troppo aggressivo o un mandrino impostato male peggiorano finitura e durata utensile.
- Archi definiti male - Un I, J o R sbagliato non sempre blocca subito la macchina; a volte crea una traiettoria apparentemente plausibile ma sbagliata.
- Programma non verificato - Saltare simulazione e controllo a blocchi singoli è uno dei modi più rapidi per trasformare un buon codice in un problema reale.
Il mio controllo minimo, prima di avviare, è sempre lo stesso: unità, origine, utensile, piano, correttore, avanzamento, direzione mandrino e quota di sicurezza. Sono otto verifiche brevi, ma fanno la differenza tra una partenza pulita e una giornata persa a correggere danni evitabili.
Una volta interiorizzati questi controlli, il salto finale non è imparare altre sigle: è costruire un metodo di lavoro più solido.
Il metodo che io terrei per lavorare meglio con il codice ISO
Se devo lasciare un consiglio operativo, è questo: non trattare il programma come un file da scrivere e basta. Trattalo come un processo ripetibile. Un header standard, nomi utensile coerenti, commenti essenziali e una sequenza di verifica fissa riducono gli errori molto più di qualunque scorciatoia.
- Crea un avvio standard con unità, piano, compensazioni e sicurezza già definite.
- Documenta origine pezzo, utensile e correzioni direttamente nel programma o nella scheda di lavoro.
- Salva versioni pulite quando fai modifiche sul banco macchina.
- Usa la simulazione come abitudine, non come eccezione.
- Se lavori spesso gli stessi particolari, costruisci una libreria di blocchi riutilizzabili invece di riscrivere tutto da zero.
Se stai iniziando, partire da lavorazioni 2.5D su una fresatrice 3 assi è spesso la scelta più utile: la geometria è abbastanza semplice da leggere, ma abbastanza reale da farti vedere subito l’effetto di origine, piano e compensazioni. Questo approccio è quello che, nel lavoro quotidiano, fa davvero crescere la qualità: meno dipendenza dalla memoria, più controllo sul processo e più facilità nel passare da una macchina all’altra.