{"id":10351,"date":"2026-03-20T13:59:24","date_gmt":"2026-03-20T05:59:24","guid":{"rendered":"https:\/\/www.cncmachiningshops.com\/?p=10351"},"modified":"2026-07-19T17:12:07","modified_gmt":"2026-07-19T09:12:07","slug":"what-is-g-code","status":"publish","type":"post","link":"https:\/\/www.cncmachiningshops.com\/it\/what-is-g-code\/","title":{"rendered":"Che cos\u2019\u00e8 il G-Code nella lavorazione CNC? Sintassi, struttura ed esempi pratici di programmazione"},"content":{"rendered":"<div data-page-id=\"A6cNdQPsso1VkNxnLMecVSBRnhe\" data-lark-html-role=\"root\" data-docx-has-block-data=\"true\">\n<p>Il software CAM ha reso il G-code meno visibile nei flussi di lavoro quotidiani CNC \u2014 ma non ha reso il G-code meno importante. Ogni percorso utensile generato da un sistema CAM diventa alla fine un file G-code, e quel file \u00e8 ci\u00f2 che il controller CNC esegue effettivamente, riga per riga, senza alcuna consapevolezza del modello CAD o della strategia di lavorazione che c'\u00e8 dietro. Quando un utensile affonda troppo in profondit\u00e0, un tempo di ciclo risulta inaspettatamente alto, o una finitura superficiale non corrisponde alla simulazione, la risposta \u00e8 quasi sempre nel G-code \u2014 non nella configurazione CAM. Comprendere il G-code nella lavorazione CNC significa capire cosa sta effettivamente facendo la macchina, piuttosto che cosa intendevi che facesse.<\/p>\n<p>Questo articolo tratta il G-code dalla prospettiva di come i controller CNC lo interpretano ed eseguono in ambienti di lavorazione reali. L'obiettivo \u00e8 pratico: sintassi, struttura, logica modale, errori comuni e un esempio di codice passo-passo che mostra esattamente cosa accade a livello di macchina. Che tu stia eseguendo il debug di un programma, revisionando la configurazione di un fornitore, o cercando di capire perch\u00e9 un tempo di ciclo preventivato sembra sbagliato, questo \u00e8 il quadro di riferimento da cui partire.<\/p>\n<hr \/>\n<h2>Cos'\u00e8 il G-Code e Come Controlla le Macchine CNC?<\/h2>\n<h3>La Definizione Che Conta Davvero in Produzione<\/h3>\n<p>Il G-code \u00e8 il linguaggio di istruzioni a basso livello che i controller delle macchine CNC eseguono direttamente. Ogni riga specifica comandi di movimento, posizioni degli assi, velocit\u00e0 di avanzamento, stati del mandrino e funzioni ausiliarie. Non \u00e8 descrittivo \u2014 non dice \u201clavora questa tasca\u201d o \u201cfinisci questa superficie.\u201d Dice \u201cspostati a questa coordinata a questa velocit\u00e0 di avanzamento in questa modalit\u00e0.\u201d Il controller segue quelle istruzioni esattamente, senza alcuna interpretazione dell'intento oltre a ci\u00f2 che \u00e8 codificato.<\/p>\n<p>Questa distinzione conta nella pratica. Il software CAM definisce cosa dovrebbe accadere in base alla geometria e alla strategia di lavorazione. Il file G-code definisce cosa il controller eseguir\u00e0 effettivamente. Questi sono spesso vicini \u2014 ma non sempre identici, e il divario tra loro \u00e8 dove vivono la maggior parte dei problemi di lavorazione.<\/p>\n<h3>Come i Controller CNC Leggono il G-Code<\/h3>\n<p>I controller elaborano il G-code in sequenza, un blocco alla volta. Dopo aver letto ogni riga, il controller aggiorna il suo stato interno \u2014 modalit\u00e0 di movimento attiva, sistema di coordinate, offset lunghezza utensile, selezione del piano \u2014 quindi esegue il comando. I comandi modali rimangono attivi finch\u00e9 non vengono esplicitamente modificati. Questa \u00e8 la parte che coglie di sorpresa la maggior parte delle persone: un comando impostato 50 righe prima pu\u00f2 ancora controllare il comportamento della macchina alla riga 200 se nulla lo ha annullato.<\/p>\n<p>I controller applicano anche funzioni di look-ahead, limiti di accelerazione e algoritmi di interpolazione dopo aver letto il G-code \u2014 non durante la generazione CAM. Due macchine che eseguono G-code identico possono produrre profili di movimento diversi se i loro parametri di controllo differiscono. Questo \u00e8 il motivo per cui i risultati di lavorazione non sono completamente determinati in fase CAM.<\/p>\n<h3>Dove si Colloca il G-Code nel Flusso di Lavoro CNC<\/h3>\n<p>Il flusso dalla progettazione al taglio segue una sequenza chiara:<\/p>\n<p><strong>Modello CAD \u2192 Strategia percorso utensile CAM \u2192 Output G-code \u2192 Controller CNC \u2192 Movimento servo \u2192 Rimozione materiale<\/strong><\/p>\n<p>Il G-code \u00e8 il punto di passaggio. Tutto a monte \u00e8 progettazione e pianificazione. Tutto a valle \u00e8 taglio fisico. Comprendere il G-code significa capire cosa accade a quel confine \u2014 che \u00e8 esattamente dove i problemi sono pi\u00f9 difficili da vedere e pi\u00f9 costosi da risolvere.<\/p>\n<hr \/>\n<h2>Come \u00e8 Strutturato un Programma G-Code CNC<\/h2>\n<h3>Blocchi, Righe e Ordine di Esecuzione<\/h3>\n<p>Un programma G-code \u00e8 costruito da blocchi \u2014 righe individuali che il controller elabora in sequenza, dall'alto verso il basso. Ogni blocco rappresenta un ciclo di istruzioni. Il controller non ha consapevolezza dei blocchi futuri oltre a un look-ahead limitato, quindi l'ordine dei comandi determina direttamente il comportamento della macchina.<\/p>\n<p>Un programma ben strutturato segue questa sequenza:<\/p>\n<ol>\n<li>Avvio programma e inizializzazione di sicurezza<\/li>\n<li>Dichiarazione di unit\u00e0, piano e modalit\u00e0 di coordinate<\/li>\n<li>Selezione utensile e attivazione offset<\/li>\n<li>Movimenti di lavorazione (sgrossatura, finitura, foratura, ecc.)<\/li>\n<li>Ritrazione e cambio utensile (se pi\u00f9 utensili)<\/li>\n<li>Fine del programma e ripristino<\/li>\n<\/ol>\n<p>Saltare o riordinare i passaggi crea rischi. Un movimento di taglio eseguito prima dell'attivazione dell'offset lunghezza utensile, ad esempio, posiziona l'utensile basandosi su un riferimento Z non corretto \u2014 che \u00e8 un modo affidabile per produrre un crash anche quando la geometria del percorso utensile \u00e8 corretta.<\/p>\n<h3>Parole di Indirizzo: Cosa Fa Ogni Lettera<\/h3>\n<p>Ogni blocco \u00e8 composto da parole di indirizzo \u2014 una lettera che identifica la funzione, seguita da un numero che definisce il valore.<\/p>\n<ul>\n<li><strong>G<\/strong> \u2014 Comando di movimento o modalit\u00e0 (rapido, lineare, circolare, selezione piano, ecc.)<\/li>\n<li><strong>M<\/strong> \u2014 Funzioni macchina e ausiliarie (mandrino, refrigerante, cambio utensile, fine programma)<\/li>\n<li><strong>X, Y, Z<\/strong> \u2014 Posizioni target degli assi<\/li>\n<li><strong>F<\/strong> \u2014 Velocit\u00e0 di avanzamento (distanza al minuto o per giro, a seconda della modalit\u00e0)<\/li>\n<li><strong>S<\/strong> \u2014 Velocit\u00e0 mandrino (RPM)<\/li>\n<li><strong>T<\/strong> \u2014 Numero utensile<\/li>\n<\/ul>\n<p>Pi\u00f9 parole di indirizzo possono apparire su una stessa riga. Il controller le interpreta collettivamente per determinare tipo di movimento, posizione e stato della macchina. La sequenza all'interno di un blocco conta anche su alcuni controller \u2014 controlla sempre il manuale del controller per l'ordine di parsing dei blocchi.<\/p>\n<h3>Comandi Modali vs Non-Modali<\/h3>\n<p>Questo \u00e8 il concetto che causa pi\u00f9 errori nella programmazione CNC \u2014 e pi\u00f9 confusione durante il debug.<\/p>\n<p><strong>Comandi modali<\/strong> restano attivi su pi\u00f9 blocchi finch\u00e9 non vengono esplicitamente annullati o sostituiti. G01 (interpolazione lineare), G90 (posizionamento assoluto) e F (velocit\u00e0 di avanzamento) sono tutti modali. Impostali una volta e si applicano a ogni blocco successivo finch\u00e9 non vengono modificati.<\/p>\n<p><strong>Comandi non modali<\/strong> si applicano solo al blocco in cui compaiono. G04 (pausa) \u00e8 un esempio tipico: mette in pausa per un blocco, poi l'esecuzione continua senza che la pausa si applichi di nuovo.<\/p>\n<p>Il pericolo con i comandi modali: una modalit\u00e0 impostata all'inizio del programma controlla il comportamento di tutto ci\u00f2 che segue, inclusi i blocchi scritti molto dopo. Una transizione G00-a-G01 mancante dove prevista, o una velocit\u00e0 di avanzamento non aggiornata tra le operazioni, pu\u00f2 produrre movimento errato senza attivare alcun allarme del controllore.<\/p>\n<h3>Scomposizione di una Tipica Riga di Codice G<\/h3>\n<pre><code>G01 X50.0 Y20.0 Z-5.0 F300\r\n<\/code><\/pre>\n<ul>\n<li><strong>G01<\/strong> \u2014 Interpolazione lineare (modale; resta attiva finch\u00e9 non viene specificata un'altra modalit\u00e0 di movimento)<\/li>\n<li><strong>X50.0 Y20.0 Z-5.0<\/strong> \u2014 Posizione target nel sistema di coordinate corrente<\/li>\n<li><strong>F300<\/strong> \u2014 Velocit\u00e0 di avanzamento di 300 mm\/min (modale; si applica a tutti i successivi movimenti di taglio)<\/li>\n<\/ul>\n<p>Se il blocco successivo riporta <code>X80.0 Y20.0<\/code> senza codice G, la macchina si muove linearmente a 300 mm\/min verso la nuova posizione \u2014 perch\u00e9 G01 e F300 sono ancora attivi. Questo \u00e8 un comportamento corretto se intenzionale, e un problema se non previsto.<\/p>\n<hr \/>\n<h2>I Codici G Pi\u00f9 Comuni Utilizzati nella Lavorazione CNC<\/h2>\n<h3>Comandi di Movimento: G00, G01, G02, G03<\/h3>\n<p>Questi quattro codici coprono la maggior parte dei movimenti in qualsiasi programma CNC.<\/p>\n<p><strong>G00 \u2014 Posizionamento Rapido<\/strong> Muove l'utensile verso una posizione alla velocit\u00e0 massima di traslazione della macchina. Il controllore non rispetta la velocit\u00e0 di avanzamento programmata durante G00. Utilizzarlo esclusivamente per movimenti non di taglio \u2014 posizioni di sgombero, avvicinamenti per cambio utensile e riposizionamenti sopra il pezzo. Non usare mai G00 mentre l'utensile \u00e8 a contatto con il materiale; i limiti di avanzamento non si applicano e il risultato \u00e8 imprevedibile.<\/p>\n<p><strong>G01 \u2014 Interpolazione Lineare<\/strong> Esegue un movimento di taglio in linea retta alla velocit\u00e0 di avanzamento programmata. Questo \u00e8 il comando di taglio principale per fresatura, tornitura e qualsiasi rimozione di materiale controllata. La selezione della velocit\u00e0 di avanzamento deve riflettere il diametro dell'utensile, il materiale e il rivestimento \u2014 non un valore \u201csicuro\u201d generico. Per alluminio 6061 con una fresa in carburo da 10 mm, F400\u2013600 mm\/min a S8000\u201312000 RPM \u00e8 tipicamente appropriato. Per acciaio inox 316L con lo stesso utensile, F100\u2013180 mm\/min a S3000\u20135000 RPM \u00e8 pi\u00f9 realistico a causa del comportamento di incrudimento.<\/p>\n<p><strong>G02 \/ G03 \u2014 Interpolazione Circolare (CW \/ CCW)<\/strong> Genera movimento ad arco nel piano attivo. G02 si muove in senso orario; G03 in senso antiorario. La geometria dell'arco \u00e8 definita da punto iniziale, punto finale e da un offset del centro (I, J, K) o da un valore di raggio (R). Una geometria dell'arco mal definita \u2014 dove i punti iniziale e finale non corrispondono al raggio specificato \u2014 produce allarmi del controllore o sovratagli. Verificare sempre le definizioni degli archi in simulazione prima del taglio.<\/p>\n<h3>Selezione del Piano e Unit\u00e0: G17\u2013G19, G20, G21<\/h3>\n<p><strong>G17, G18, G19<\/strong> selezionano il piano di lavorazione attivo: XY, XZ e YZ rispettivamente. La selezione del piano influisce direttamente su come vengono interpretati gli archi G02\/G03. Un arco G02 programmato con coordinate XY si comporta correttamente in G17 ma produce movimento errato se G18 o G19 \u00e8 attivo da un'operazione precedente.<\/p>\n<p><strong>G20 \/ G21<\/strong> dichiarano unit\u00e0 in pollici o metriche. Questo deve essere sempre impostato esplicitamente all'inizio del programma. Ereditare le unit\u00e0 da un programma precedente \u00e8 uno dei modi meno evidenti per far schiantare una macchina \u2014 il controllore scala tutte le posizioni per il fattore di conversione delle unit\u00e0, spostando l'utensile in posizioni lontane da quelle previste.<\/p>\n<h3>Modalit\u00e0 di Posizionamento: G90 vs G91<\/h3>\n<p><strong>G90 \u2014 Posizionamento Assoluto<\/strong>: Tutte le coordinate fanno riferimento allo zero di lavoro attivo. Questa \u00e8 la modalit\u00e0 standard per la maggior parte della lavorazione CNC perch\u00e9 ogni posizione \u00e8 inequivocabile \u2014 X50.0 significa sempre 50 mm dallo zero, indipendentemente da dove si trovava l'utensile in precedenza.<\/p>\n<p><strong>G91 \u2014 Posizionamento Incrementale<\/strong>: Le coordinate fanno riferimento alla posizione corrente dell'utensile. Utile per pattern ripetitivi (matrici di fori, spaziatura di cave) dove definire tutto dallo zero richiederebbe calcoli. Il rischio \u00e8 l'errore cumulativo \u2014 un errore di arrotondamento in un movimento sposta ogni successiva posizione incrementale. Usare G91 deliberatamente e tornare sempre a G90 dopo la sequenza incrementale.<\/p>\n<h3>Codici di Sicurezza e Riferimento<\/h3>\n<p><strong>G04 (Sosta)<\/strong>: Pausa del movimento per un tempo definito o un numero di giri del mandrino. Usi comuni includono la rottura del truciolo durante forature profonde e il consentire al mandrino di stabilizzarsi dopo un cambio di velocit\u00e0 prima di iniziare una passata di finitura di precisione.<\/p>\n<p><strong>G28 (Ritorno al Riferimento Macchina)<\/strong>: Invia gli assi attraverso un punto intermedio verso il punto zero macchina. Il punto intermedio \u00e8 critico \u2014 se non \u00e8 definito esplicitamente in una posizione sicura, G28 pu\u00f2 guidare l'utensile attraverso il pezzo o il dispositivo di fissaggio durante il percorso verso il punto zero.<\/p>\n<p><strong>G53 (Movimento in Coordinate Macchina)<\/strong>: Si muove direttamente in coordinate macchina, bypassando gli offset di lavoro. Pi\u00f9 prevedibile di G28 per movimenti di parcheggio e cambi utensile quando usato correttamente.<\/p>\n<table>\n<thead>\n<tr>\n<th>Categoria<\/th>\n<th>G-Code<\/th>\n<th>Funzione<\/th>\n<th>Uso tipico<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Movimento<\/td>\n<td>G00<\/td>\n<td>Movimento rapido<\/td>\n<td>Posizionamento non di taglio<\/td>\n<\/tr>\n<tr>\n<td>Movimento<\/td>\n<td>G01<\/td>\n<td>Taglio lineare<\/td>\n<td>Lavorazione controllata<\/td>\n<\/tr>\n<tr>\n<td>Movimento<\/td>\n<td>G02 \/ G03<\/td>\n<td>Taglio circolare<\/td>\n<td>Archi, tasche, profili<\/td>\n<\/tr>\n<tr>\n<td>Piano<\/td>\n<td>G17\u2013G19<\/td>\n<td>Selezione del piano<\/td>\n<td>Definizione della direzione dell'arco<\/td>\n<\/tr>\n<tr>\n<td>Unit\u00e0<\/td>\n<td>G20 \/ G21<\/td>\n<td>Pollici \/ Metrici<\/td>\n<td>Inizializzazione del programma<\/td>\n<\/tr>\n<tr>\n<td>Posizionamento<\/td>\n<td>G90 \/ G91<\/td>\n<td>Assoluto \/ Incrementale<\/td>\n<td>Controllo delle coordinate<\/td>\n<\/tr>\n<tr>\n<td>Sicurezza<\/td>\n<td>G28 \/ G53<\/td>\n<td>Movimenti di riferimento<\/td>\n<td>Cambio utensile, spazio di sicurezza<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>Codici M e come funzionano insieme al codice G<\/h2>\n<h3>Cosa controllano i codici M<\/h3>\n<p>Mentre i codici G governano come l'utensile si muove nello spazio, i codici M governano ci\u00f2 che la macchina fa \u2014 mandrino on\/off, refrigerante on\/off, cambio utensile e flusso del programma. Nelle operazioni di lavorazione pratiche, i codici M definiscono lo stato della macchina che i movimenti di taglio del codice G presuppongono gi\u00e0 attivo. Un movimento di taglio (G01) eseguito senza un mandrino attivo (M03) danneggia l'utensile e il pezzo. Un cambio utensile (M06) eseguito senza un adeguato spazio di sicurezza degli assi rischia una collisione.<\/p>\n<h3>I codici M che compaiono in quasi ogni programma<\/h3>\n<ul>\n<li><strong>M03<\/strong> \u2014 Mandrino on, rotazione oraria<\/li>\n<li><strong>M04<\/strong> \u2014 Mandrino on, rotazione antioraria (usato per operazioni specifiche come la maschiatura inversa)<\/li>\n<li><strong>M05<\/strong> \u2014 Arresto mandrino<\/li>\n<li><strong>M06<\/strong> \u2014 Cambio utensile (sospende l'esecuzione fino al completamento del cambio)<\/li>\n<li><strong>M08<\/strong> \u2014 Refrigerante on<\/li>\n<li><strong>M09<\/strong> \u2014 Refrigerante off<\/li>\n<li><strong>M30<\/strong> \u2014 Fine programma e reset all'inizio<\/li>\n<\/ul>\n<p>L'ordine \u00e8 importante. M03 deve comparire prima del primo movimento di taglio. M08 deve essere attivato prima che l'utensile entri in contatto con il materiale, non durante. M06 richiede che la macchina sia in una posizione sicura \u2014 tipicamente verificata da un movimento G28 o G53 verso una posizione di cambio utensile definita.<\/p>\n<h3>Codice G e codice M: complementari, non intercambiabili<\/h3>\n<table>\n<thead>\n<tr>\n<th>Aspetto<\/th>\n<th>G-Code<\/th>\n<th>Codice M<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Ruolo principale<\/td>\n<td>Movimento utensile e controllo del percorso<\/td>\n<td>Stato macchina e funzioni ausiliarie<\/td>\n<\/tr>\n<tr>\n<td>Azioni tipiche<\/td>\n<td>Movimenti lineari, archi, posizionamento<\/td>\n<td>Mandrino, refrigerante, cambio utensile, fine programma<\/td>\n<\/tr>\n<tr>\n<td>Impatto sull'esecuzione<\/td>\n<td>Geometria e velocit\u00e0 di avanzamento<\/td>\n<td>Prontezza al taglio e sicurezza macchina<\/td>\n<\/tr>\n<tr>\n<td>Rischio se errato<\/td>\n<td>Collisione, errore dimensionale<\/td>\n<td>Danno utensile, cambio utensile non sicuro<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>Velocit\u00e0 di avanzamento, velocit\u00e0 del mandrino e comandi utensile: come influenzano la qualit\u00e0 del pezzo<\/h2>\n<h3>Velocit\u00e0 di avanzamento (F) e finitura superficiale<\/h3>\n<p>La velocit\u00e0 di avanzamento determina direttamente il carico di truciolo \u2014 lo spessore di materiale che ogni tagliente rimuove per giro. Troppo alta, e l'utensile si sovraccarica: vibrazioni, strappi e scarsa finitura superficiale ne conseguono. Troppo bassa, e l'utensile sfrega invece di tagliare, concentrando il calore sul tagliente e favorendo la formazione di tagliente di riporto, che degrada anch'essa la finitura.<\/p>\n<p>La relazione tra velocit\u00e0 di avanzamento e finitura superficiale \u00e8 specifica del materiale. Per alluminio 6061, una fresa a candela da 10 mm a S10000 RPM con F500 mm\/min produce un carico di truciolo di circa 0,025 mm per dente (assumendo un utensile a 2 taglienti) \u2014 tipicamente ottenendo Ra 1,6\u20133,2 \u00b5m in una passata di sgrossatura. Riducendo a F200 mm\/min si diminuisce il carico di truciolo ma si aumenta il calore e lo sfregamento, spesso peggiorando la finitura anzich\u00e9 migliorarla. Le passate di finitura usano profondit\u00e0 di taglio ridotte, non necessariamente velocit\u00e0 di avanzamento ridotte, per ottenere Ra 0,8 \u00b5m o migliore.<\/p>\n<p>Per acciaio inox 316L, le velocit\u00e0 di avanzamento sono significativamente pi\u00f9 basse \u2014 tipicamente F100\u2013180 mm\/min \u2014 perch\u00e9 il materiale si incrudisce sotto taglio. Superare i carichi di truciolo raccomandati causa rapida usura dell'utensile e strappi superficiali. Un'applicazione costante del refrigerante (a inondazione o attraverso l'utensile) \u00e8 essenziale per gestire il calore e prevenire l'accumulo di incrudimento tra le passate.<\/p>\n<h3>Velocit\u00e0 del mandrino (S) e prestazioni di taglio<\/h3>\n<p>La velocit\u00e0 del mandrino imposta la velocit\u00e0 di taglio superficiale al diametro esterno dell'utensile. La velocit\u00e0 corretta dipende dal diametro dell'utensile, dal materiale e dal rivestimento dell'utensile. Una fresa a candela in carburo da 10 mm rivestita in TiAlN che taglia alluminio 6061 tipicamente opera a 200\u2013400 m\/min di velocit\u00e0 superficiale \u2014 traducendosi in circa S6,400\u201312,700 RPM. Lo stesso utensile in acciaio inox 316L opera a 40\u201380 m\/min di velocit\u00e0 superficiale \u2014 circa S1,270\u20132,550 RPM \u2014 per limitare la generazione di calore e l'usura dell'utensile.<\/p>\n<p>Una velocit\u00e0 del mandrino eccessiva nell'acciaio inox genera calore concentrato che ammorbidisce il tagliente, riducendo drasticamente la vita dell'utensile. Una velocit\u00e0 insufficiente nell'alluminio produce taglio inefficiente e scarsa evacuazione del truciolo. Impostare correttamente la velocit\u00e0 del mandrino non significa usare valori conservativi \u2014 significa abbinare la velocit\u00e0 a ci\u00f2 che l'utensile e il materiale richiedono realmente.<\/p>\n<h3>Comandi utensile e attivazione offset<\/h3>\n<p>La selezione utensile (T) specifica quale utensile caricare. La compensazione lunghezza utensile (G43 con offset H) applica il riferimento Z corretto per quel specifico utensile. Se viene attivato l'offset sbagliato \u2014 o se G43 viene omesso del tutto \u2014 il riferimento Z si sposta della differenza tra l'offset programmato e la lunghezza effettiva dell'utensile. Questo produce una discesa troppo profonda o una retrazione insufficiente a sgomberare il pezzo.<\/p>\n<p>Prima di qualsiasi cambio utensile, la macchina deve essere in una posizione sicura. La maggior parte dei controllori richiede un posizionamento esplicito verso una posizione di cambio utensile prima che M06 venga eseguito. Saltare questo passaggio rischia una collisione tra l'utensile e il pezzo o la fixture durante il cambio.<\/p>\n<hr \/>\n<h2>Lettura del codice G passo dopo passo: un esempio completo di fresatura<\/h2>\n<p>Leggere correttamente il codice G significa tracciare lo stato della macchina dopo ogni riga \u2014 non solo leggere le posizioni. Ecco un programma completo di fresatura 2D con commento tecnico su ci\u00f2 che ogni sezione fa realmente sulla macchina.<\/p>\n<pre><code>%\r\n<\/code><\/pre>\n<p><strong>G21 G90 G17<\/strong> \u2014 Imposta unit\u00e0 metriche, posizionamento assoluto e piano XY. Questi tre stati modali controllano l'interpretazione delle coordinate per l'intero programma. La mancanza di uno qualsiasi di essi significa ereditare lo stato del programma precedente \u2014 una fonte comune di comportamento inatteso quando si eseguono programmi in sequenza.<\/p>\n<p><strong>G00 X0 Y0<\/strong> \u2014 Movimento rapido allo zero programma in XY. Nessun taglio. L'utensile si muove a velocit\u00e0 rapida massima; non c'\u00e8 protezione della velocit\u00e0 di avanzamento.<\/p>\n<p><strong>T1 M06<\/strong> \u2014 Seleziona l'utensile 1 ed esegue un cambio utensile. L'esecuzione si sospende fino al completamento del cambio. La macchina deve essere nella sua posizione di cambio utensile designata prima di questa riga, altrimenti esiste un rischio di collisione.<\/p>\n<p><strong>S8000 M03<\/strong> \u2014 Avvia il mandrino a 8.000 RPM in senso orario. Per una fresa a candela da 10 mm in alluminio 6061, questo corrisponde a circa 251 m\/min di velocit\u00e0 superficiale \u2014 all'interno dell'intervallo di taglio efficiente per carburo non rivestito o rivestito in TiN.<\/p>\n<p><strong>G43 H01 Z50.0<\/strong> \u2014 Attiva la compensazione lunghezza utensile utilizzando l'offset H01 e si sposta a Z50 nel sistema di riferimento corretto. Questa \u00e8 la riga che stabilisce il corretto riferimento Z per la lavorazione. La mancanza di G43 significa che la posizione Z dell'utensile \u00e8 riferita senza applicare la lunghezza effettiva dell'utensile.<\/p>\n<p><strong>G00 Z5.0<\/strong> \u2014 Avvicinamento rapido a 5 mm sopra la superficie del pezzo. Ancora nessuna taglio \u2014 l'utensile si sta posizionando sopra il pezzo.<\/p>\n<p><strong>G01 Z-2.0 F200<\/strong> \u2014 Discesa controllata a 2 mm di profondit\u00e0 a F200 mm\/min. La velocit\u00e0 di avanzamento ridotta durante la discesa limita il carico assiale di taglio. A F200 con una fresa a candela da 10 mm a 2 taglienti, il carico di truciolo per tagliente sulla discesa \u00e8 di circa 0,0125 mm \u2014 conservativo ma appropriato per un movimento di ingresso in Z.<\/p>\n<p><strong>G01 X50.0 Y0.0 F400<\/strong> \u2014 Primo movimento di taglio lineare. La velocit\u00e0 di avanzamento aumenta a F400 mm\/min per la passata di taglio laterale, producendo un carico di truciolo di circa 0,025 mm per tagliente a S8000 RPM \u2014 tipico per la sgrossatura dell'alluminio.<\/p>\n<p><strong>Movimenti G01 successivi<\/strong> \u2014 Tracciano i restanti tre lati del profilo rettangolare. G01 e F400 rimangono attivi (modali) \u2014 non \u00e8 necessario ripeterli a meno che l'avanzamento non cambi.<\/p>\n<p><strong>G00 Z50.0<\/strong> \u2014 Ritiro rapido all'altezza Z di sicurezza. La lavorazione \u00e8 completata; la macchina esce a velocit\u00e0 rapida massima.<\/p>\n<p><strong>M05<\/strong> \u2014 Arresto del mandrino. Arrestare sempre il mandrino prima della fine del programma.<\/p>\n<p><strong>M30<\/strong> \u2014 Fine programma e reset. Il controllore torna all'inizio del programma, pronto per il pezzo successivo.<\/p>\n<h3>Errori Comuni di Lettura<\/h3>\n<p><strong>Ignorare lo stato modale:<\/strong> G01 e F400 rimangono attivi finch\u00e9 non vengono esplicitamente modificati. Un programmatore che aggiunge un nuovo movimento successivamente e dimentica che questi sono ancora attivi otterr\u00e0 un movimento di taglio dove era previsto un rapido.<\/p>\n<p><strong>Assumere che l'ordine sia flessibile:<\/strong> L'accensione del mandrino (M03) deve precedere il movimento di taglio. L'offset utensile (G43) deve essere attivato prima del posizionamento in Z. Questi non sono suggerimenti \u2014 sono requisiti per un'esecuzione sicura.<\/p>\n<p><strong>Leggere le coordinate senza tracciare lo stato:<\/strong> Una posizione come Z-2.0 ha senso solo nel contesto del sistema di coordinate attivo, dell'offset utensile e della modalit\u00e0 di posizionamento. Leggi lo stato, poi leggi le coordinate.<\/p>\n<hr \/>\n<h2>Errori Comuni del G-Code e Come Diagnosticarli<\/h2>\n<p>La maggior parte dei problemi seri non deriva da codice complesso. Derivano da piccoli errori modali, offset errati o disallineamenti di unit\u00e0 che si propagano attraverso il programma.<\/p>\n<h3>Errori Modali<\/h3>\n<p>Un comando modale impostato in modo errato \u2014 o mai annullato dopo l'uso \u2014 influisce su ogni blocco successivo finch\u00e9 qualcosa non lo modifica. G91 (modalit\u00e0 incrementale) lasciato attivo dopo una subroutine di tastatura causa l'esecuzione di tutti i movimenti successivi previsti in assoluto come offset incrementali. L'utensile finisce lontano dalla posizione prevista e il controllore non genera alcun allarme perch\u00e9 il movimento era sintatticamente valido.<\/p>\n<p>Questi errori non si rivelano semplicemente esaminando le singole righe. Richiedono il tracciamento dello stato della macchina attraverso la sequenza del programma \u2014 mentalmente o tramite simulazione.<\/p>\n<h3>Errori di Coordinate e Offset<\/h3>\n<p>Gli errori G-code a pi\u00f9 alto rischio coinvolgono errori di sistema di coordinate e offset:<\/p>\n<ul>\n<li>Offset di lavoro errato (es., G54 selezionato quando il programma prevede G55)<\/li>\n<li>Compensazione lunghezza utensile errata o mancante (disallineamento G43\/H)<\/li>\n<li>Confusione G90\/G91 quando si passa tra modalit\u00e0 assoluta e incrementale<\/li>\n<\/ul>\n<p>Ciascuno di questi pu\u00f2 produrre un crash o un pezzo scartato senza alcun errore di sintassi. Il controllore fa esattamente ci\u00f2 che dice il codice \u2014 semplicemente non \u00e8 ci\u00f2 che era previsto.<\/p>\n<h3>Approccio Diagnostico: Validazione a Strati<\/h3>\n<p>L'approccio ingegneristico standard alla validazione del G-code funziona attraverso strati di crescente affidabilit\u00e0:<\/p>\n<ol>\n<li>Revisione del codice \u2014 verificare unit\u00e0, sistemi di coordinate, attivazioni di offset e reset modali<\/li>\n<li>Simulazione CAM o del controllore \u2014 verificare il movimento graficamente prima che qualsiasi cosa venga eseguita<\/li>\n<li>Prova a vuoto \u2014 eseguire con mandrino spento e offset Z alzato di 50\u2013100 mm<\/li>\n<li>Blocco singolo con override dell'avanzamento \u2014 eseguire il programma reale una riga alla volta a velocit\u00e0 ridotta<\/li>\n<\/ol>\n<table>\n<thead>\n<tr>\n<th>Tipo di Errore<\/th>\n<th>Rischio<\/th>\n<th>Prevenzione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Comando modale non resettato<\/td>\n<td>Movimento di taglio inatteso<\/td>\n<td>Ripetere esplicitamente i G-code critici a ogni operazione<\/td>\n<\/tr>\n<tr>\n<td>Sistema di coordinate errato<\/td>\n<td>Lavorazione nella posizione sbagliata<\/td>\n<td>Impostare sempre l'offset di lavoro all'inizio del programma<\/td>\n<\/tr>\n<tr>\n<td>Offset lunghezza utensile mancante<\/td>\n<td>Crash utensile o sovrataglio<\/td>\n<td>Attivare G43 con valore H verificato prima del movimento in Z<\/td>\n<\/tr>\n<tr>\n<td>Disallineamento unit\u00e0 (G20\/G21)<\/td>\n<td>Posizioni scalate o crash<\/td>\n<td>Dichiarare le unit\u00e0 esplicitamente \u2014 non affidarsi mai ai valori predefiniti<\/td>\n<\/tr>\n<tr>\n<td>Movimento rapido non sicuro<\/td>\n<td>Collisione<\/td>\n<td>Utilizzare piani di sicurezza e verificare il comportamento in prova a vuoto<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>G-Code Avanzato: Macro, Sottoprogrammi e Cicli Fissi<\/h2>\n<h3>Variabili Macro e Programmazione Parametrica<\/h3>\n<p>La programmazione macro introduce variabili nel G-code, consentendo logica parametrica e condizionale che i programmi statici non possono ottenere. Invece di codificare rigidamente profondit\u00e0, posizioni o velocit\u00e0 di avanzamento, gli ingegneri definiscono i valori una volta e li richiamano in tutto il programma.<\/p>\n<pre><code>#100 = 20.0   (Lunghezza tasca)\r\n<\/code><\/pre>\n<p>Questo approccio \u00e8 particolarmente prezioso per famiglie di componenti \u2014 dove diametro del foro, profondit\u00e0 della tasca o spaziatura dei fori variano in base alla configurazione \u2014 e per cicli di misurazione in macchina che adattano i parametri di lavorazione in base ai risultati della sonda. Il compromesso \u00e8 la complessit\u00e0: le macro richiedono documentazione e validazione accurate, e gli errori nella logica condizionale possono produrre movimenti imprevisti.<\/p>\n<h3>Sottoprogrammi e Funzioni Ripetute<\/h3>\n<p>I sottoprogrammi (chiamati con M98, restituiti con M99) consentono di definire sequenze di movimento ripetute una sola volta ed eseguirle pi\u00f9 volte. Un modello di fori che appare sei volte su un componente non richiede sei copie della sequenza di foratura \u2014 un singolo sottoprogramma gestisce tutte le istanze.<\/p>\n<pre><code>M98 P2000 L6    (Chiama il sottoprogramma O2000 sei volte)\r\n<\/code><\/pre>\n<p>Oltre alla brevit\u00e0 del codice, i sottoprogrammi migliorano la coerenza: tutti e sei i fori seguono esattamente la stessa sequenza di movimento. Qualsiasi aggiornamento alla strategia di foratura \u2014 velocit\u00e0 di avanzamento, profondit\u00e0, incremento di spezzettamento \u2014 richiede la modifica di un solo sottoprogramma, non di sei blocchi di codice separati.<\/p>\n<h3>Cicli Fissi: Produttivit\u00e0 Senza Perdita di Controllo<\/h3>\n<p>I cicli fissi raggruppano sequenze di lavorazione comuni (foratura, maschiatura, alesatura, lamatura) in comandi singoli. Un ciclo di foratura che altrimenti richiederebbe blocchi separati di avvicinamento, penetrazione, sosta e ritiro diventa una sola riga:<\/p>\n<pre><code>G81 X20.0 Y10.0 Z-15.0 R2.0 F200\r\n<\/code><\/pre>\n<p>Questo riduce il tempo di programmazione, accorcia il codice e produce un comportamento coerente in tutti i fori del modello. L'avvertenza importante: i cicli fissi devono essere annullati con G80 al termine, e i loro parametri (modalit\u00e0 di ritiro, sosta, incremento di spezzettamento) devono corrispondere all'implementazione del controllore. Il comportamento dei cicli fissi varia tra controllori Fanuc, Haas e Siemens \u2014 verificare sempre rispetto al manuale di programmazione specifico della macchina.<\/p>\n<hr \/>\n<h2>Come Varia il G-Code tra Controllori CNC<\/h2>\n<h3>Fanuc, Haas e Oltre<\/h3>\n<p>I controllori basati su Fanuc sono la cosa pi\u00f9 vicina a uno standard di riferimento per il G-code nel settore. Molti costruttori di macchine utensili basano i loro sistemi di controllo sull'architettura Fanuc, rendendo il codice compatibile Fanuc ragionevolmente portabile tra macchine diverse. I controllori Haas sono in gran parte compatibili con Fanuc ma includono estensioni proprietarie, diversi stati modali predefiniti e sintassi macro specifica Haas che pu\u00f2 alterare il comportamento di esecuzione su programmi condivisi.<\/p>\n<p>I controllori Siemens e Heidenhain utilizzano la sintassi G-code ma operano in modo abbastanza diverso nella pratica. Heidenhain in particolare si affida all'input conversazionale per molte operazioni. Mazatrol (il sistema proprietario Mazak) \u00e8 principalmente conversazionale con G-code come opzione secondaria. I programmi scritti per un tipo di controllore richiedono frequentemente la rigenerazione del post-processore \u2014 non solo la modifica \u2014 prima di essere eseguiti su una piattaforma diversa.<\/p>\n<h3>Perch\u00e9 il G-Code Non \u00e8 Universale<\/h3>\n<p>Differenze specifiche che contano nella pratica:<\/p>\n<ul>\n<li>I set di codici G e M supportati variano \u2014 alcuni codici validi su un controllore generano allarmi su un altro<\/li>\n<li>I parametri dei cicli fissi (profondit\u00e0 di spezzettamento, tipo di ritiro, temporizzazione della sosta) differiscono tra produttori<\/li>\n<li>La sintassi delle variabili macro e i comandi di logica condizionale sono specifici del controllore<\/li>\n<li>Gli algoritmi di look-ahead e i profili di accelerazione influenzano la fluidit\u00e0 del movimento anche quando il G-code \u00e8 identico<\/li>\n<\/ul>\n<p>Questo \u00e8 il motivo per cui i post-processori CAM sono specifici della macchina piuttosto che generici. Il post-processore traduce i percorsi utensile CAM nel dialetto G-code corretto per il controllore di destinazione \u2014 non in G-code universale che qualsiasi macchina pu\u00f2 eseguire.<\/p>\n<h3>Cosa Devono Sapere Progettisti e Team di Approvvigionamento<\/h3>\n<p>Dal punto di vista dell'approvvigionamento, il G-code deve essere trattato come dato di produzione specifico della macchina. Condividere un file G-code tra fornitori presuppone macchine e controllori identici \u2014 un presupposto che spesso non regge. La migliore pratica \u00e8 condividere i dati CAD e CAM piuttosto che il G-code finale, e confermare il tipo di macchina e la versione del controllore prima del trasferimento dei programmi. Quando il G-code deve essere condiviso, la simulazione sul controllore ricevente prima della lavorazione \u00e8 essenziale.<\/p>\n<hr \/>\n<h2>Conclusione<\/h2>\n<p>Il G-code nella lavorazione CNC \u00e8 lo strato finale tra l'intento progettuale e il taglio fisico. I sistemi CAM pianificano il percorso utensile; il file G-code \u00e8 ci\u00f2 che la macchina effettivamente esegue. Comprendere la struttura del G-code, la logica modale e la sequenza di esecuzione d\u00e0 agli ingegneri visibilit\u00e0 diretta su ci\u00f2 che accade al tagliente \u2014 e perch\u00e9 si verificano problemi quando si verificano.<\/p>\n<p>Per chiunque lavori in ambienti CNC \u2014 che si tratti di scrivere programmi, revisionare configurazioni dei fornitori o risolvere problemi di lavorazione \u2014 la conoscenza del G-code significa diagnosi pi\u00f9 rapida, migliore comunicazione con gli operatori e meno sorprese in officina. Non \u00e8 necessario scrivere G-code da zero in un flusso di lavoro guidato da CAM. \u00c8 necessario saperlo leggere, capire cosa far\u00e0 la macchina e riconoscere quando qualcosa nel codice non corrisponde al risultato previsto.<\/p>\n<hr \/>\n<h2>FAQ<\/h2>\n<p><strong>Tutte le macchine CNC usano lo stesso G-code?<\/strong><\/p>\n<p>No. Il G-code non \u00e8 completamente standardizzato nel settore. I controllori Fanuc, Haas, Siemens e Heidenhain usano tutti la sintassi G-code con set di comandi, definizioni di cicli fissi, sintassi macro e stati modali predefiniti variabili. I programmi che funzionano correttamente su un controllore possono generare allarmi o produrre movimenti diversi su un altro. Questo \u00e8 il motivo per cui i post-processori CAM sono specifici del controllore.<\/p>\n<p><strong>Le macchine CNC possono funzionare senza G-code?<\/strong><\/p>\n<p>A livello di controllo, no. Anche la programmazione conversazionale e i percorsi utensile generati da CAM vengono in ultima analisi tradotti in G-code (o istruzioni equivalenti a basso livello) per l'esecuzione. Il G-code \u00e8 il linguaggio di esecuzione nativo della macchina \u2014 tutto il resto \u00e8 un livello sopra di esso.<\/p>\n<p><strong>La programmazione manuale del G-code \u00e8 ancora necessaria?<\/strong><\/p>\n<p>La programazione manuale completa \u00e8 raramente richiesta negli ambienti di produzione. Tuttavia, leggere e modificare il G-code \u00e8 ancora una competenza pratica per il debug, l'ottimizzazione dei tempi di ciclo, piccole modifiche ai programmi esistenti e la comunicazione con operatori di macchine e fornitori. La maggior parte degli ingegneri CNC non scrive programmi da zero, ma lavora regolarmente con file G-code.<\/p>\n<p><strong>Come posso testare in sicurezza un nuovo programma G-code?<\/strong><\/p>\n<p>Seguire un approccio di validazione a strati: rivedere il codice per unit\u00e0, sistemi di coordinate e dichiarazioni di offset; eseguire la simulazione CAM o del controller; effettuare una prova a vuoto con il mandrino spento e l'asse Z sollevato di 50\u2013100 mm sopra il pezzo; quindi eseguire un singolo blocco con override di avanzamento ridotto prima di impegnarsi in un ciclo completo.<\/p>\n<p><strong>Qual \u00e8 la differenza tra G-code e programmazione conversazionale?<\/strong><\/p>\n<p>Il G-code \u00e8 esplicito e basato su testo \u2014 ogni azione della macchina \u00e8 codificata direttamente. La programmazione conversazionale utilizza menu e prompt per definire le operazioni, che il controller converte internamente in G-code. La programmazione conversazionale \u00e8 pi\u00f9 veloce per parti semplici sulla macchina; il G-code offre maggiore trasparenza, portabilit\u00e0 e controllo per programmi complessi multi-operazione.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>CAM software has made G-code less visible in day-to-day CNC workflows \u2014 but it hasn&#8217;t made G-code less important. Every toolpath a CAM system generates eventually becomes a G-code file, and that file is what the CNC controller actually executes, line by line, with no awareness of the CAD model or the machining strategy behind it.<\/p>","protected":false},"author":1,"featured_media":12248,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10351","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>What Is G-Code? CNC Programming Syntax &amp; Examples<\/title>\n<meta name=\"description\" content=\"Learn what G-code is in CNC machining, including command syntax, program structure, and practical programming examples used to control CNC machines.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cncmachiningshops.com\/it\/what-is-g-code\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What Is G-Code in CNC Machining? Syntax, Structure, and Practical Programming Examples\" \/>\n<meta property=\"og:description\" content=\"Learn what G-code is in CNC machining, including command syntax, program structure, and practical programming examples used to control CNC machines.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cncmachiningshops.com\/it\/what-is-g-code\/\" \/>\n<meta property=\"og:site_name\" content=\"CNC Machining Shops\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-20T05:59:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-19T09:12:07+00:00\" \/>\n<meta name=\"author\" content=\"cncmachiningshops\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"cncmachiningshops\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/\"},\"author\":{\"name\":\"cncmachiningshops\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\"},\"headline\":\"What Is G-Code in CNC Machining? Syntax, Structure, and Practical Programming Examples\",\"datePublished\":\"2026-03-20T05:59:24+00:00\",\"dateModified\":\"2026-07-19T09:12:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/\"},\"wordCount\":4073,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/\",\"name\":\"What Is G-Code? CNC Programming Syntax & Examples\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg\",\"datePublished\":\"2026-03-20T05:59:24+00:00\",\"dateModified\":\"2026-07-19T09:12:07+00:00\",\"description\":\"Learn what G-code is in CNC machining, including command syntax, program structure, and practical programming examples used to control CNC machines.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg\",\"width\":800,\"height\":600,\"caption\":\"What Is G-Code in CNC Machining 800x600\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/what-is-g-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What Is G-Code in CNC Machining? Syntax, Structure, and Practical Programming Examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\",\"name\":\"CNC Machining Shops\",\"description\":\"10+ Years CNC Machining Service Supplier\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"alternateName\":\"CMS\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\",\"name\":\"CNC Machining Shops\",\"alternateName\":\"CMS\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/CMS_Logo_1000x1000.png\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/CMS_Logo_1000x1000.png\",\"width\":800,\"height\":800,\"caption\":\"CNC Machining Shops\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"description\":\"Shenzhen CMS Technology Co., Ltd. is located in Shenzhen, Guangdong, China. It was established in 2012 with a factory area of \u200b\u200b3,000 square meters. It is a company specializing in CNC machining and precision parts manufacturing. We have passed ISO9001, IATF16949, ISO13485 certification and are your trusted partner.\",\"email\":\"info@cncmachiningshops.com\",\"telephone\":\"+8617196430663\",\"legalName\":\"Shenzhen CMS Technology Co., Ltd.\",\"foundingDate\":\"2012-07-22\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\",\"name\":\"cncmachiningshops\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"caption\":\"cncmachiningshops\"},\"sameAs\":[\"https:\\\/\\\/cncmachiningshops.com\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cos'\u00e8 il G-Code? Sintassi di Programmazione CNC ed Esempi","description":"Scopri cos'\u00e8 il G-code nella lavorazione CNC, inclusa la sintassi dei comandi, la struttura del programma ed esempi pratici di programmazione utilizzati per controllare le macchine CNC.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cncmachiningshops.com\/it\/what-is-g-code\/","og_locale":"it_IT","og_type":"article","og_title":"What Is G-Code in CNC Machining? Syntax, Structure, and Practical Programming Examples","og_description":"Learn what G-code is in CNC machining, including command syntax, program structure, and practical programming examples used to control CNC machines.","og_url":"https:\/\/www.cncmachiningshops.com\/it\/what-is-g-code\/","og_site_name":"CNC Machining Shops","article_published_time":"2026-03-20T05:59:24+00:00","article_modified_time":"2026-07-19T09:12:07+00:00","author":"cncmachiningshops","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"cncmachiningshops","Tempo di lettura stimato":"18 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#article","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/"},"author":{"name":"cncmachiningshops","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551"},"headline":"What Is G-Code in CNC Machining? Syntax, Structure, and Practical Programming Examples","datePublished":"2026-03-20T05:59:24+00:00","dateModified":"2026-07-19T09:12:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/"},"wordCount":4073,"commentCount":0,"publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg","articleSection":["Uncategorized"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/","url":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/","name":"Cos'\u00e8 il G-Code? Sintassi di Programmazione CNC ed Esempi","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#primaryimage"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg","datePublished":"2026-03-20T05:59:24+00:00","dateModified":"2026-07-19T09:12:07+00:00","description":"Scopri cos'\u00e8 il G-code nella lavorazione CNC, inclusa la sintassi dei comandi, la struttura del programma ed esempi pratici di programmazione utilizzati per controllare le macchine CNC.","breadcrumb":{"@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cncmachiningshops.com\/what-is-g-code\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#primaryimage","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/What-Is-G-Code-in-CNC-Machining-800x600-2.jpg","width":800,"height":600,"caption":"What Is G-Code in CNC Machining 800x600"},{"@type":"BreadcrumbList","@id":"https:\/\/www.cncmachiningshops.com\/what-is-g-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cncmachiningshops.com\/"},{"@type":"ListItem","position":2,"name":"What Is G-Code in CNC Machining? Syntax, Structure, and Practical Programming Examples"}]},{"@type":"WebSite","@id":"https:\/\/www.cncmachiningshops.com\/#website","url":"https:\/\/www.cncmachiningshops.com\/","name":"Officine di lavorazione CNC","description":"Fornitore di servizi di lavorazione meccanica CNC da oltre 10 anni","publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"alternateName":"CMS","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cncmachiningshops.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.cncmachiningshops.com\/#organization","name":"Officine di lavorazione CNC","alternateName":"CMS","url":"https:\/\/www.cncmachiningshops.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2025\/11\/CMS_Logo_1000x1000.png","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2025\/11\/CMS_Logo_1000x1000.png","width":800,"height":800,"caption":"CNC Machining Shops"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/logo\/image\/"},"description":"Shenzhen CMS Technology Co., Ltd. ha sede a Shenzhen, Guangdong, Cina. \u00c8 stata fondata nel 2012 con una superficie produttiva di 3.000 metri quadrati. \u00c8 un'azienda specializzata nella lavorazione CNC e nella produzione di componenti di precisione. Abbiamo ottenuto le certificazioni ISO9001, IATF16949 e ISO13485 e siamo il vostro partner di fiducia.","email":"info@cncmachiningshops.com","telephone":"+8617196430663","legalName":"Shenzhen CMS Technology Co., Ltd.","foundingDate":"2012-07-22","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551","name":"officine di lavorazione cnc","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","caption":"cncmachiningshops"},"sameAs":["https:\/\/cncmachiningshops.com"]}]}},"_links":{"self":[{"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/posts\/10351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/comments?post=10351"}],"version-history":[{"count":0,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/posts\/10351\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/media\/12248"}],"wp:attachment":[{"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/media?parent=10351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/categories?post=10351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/tags?post=10351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}