{"id":10317,"date":"2026-03-12T10:55:08","date_gmt":"2026-03-12T02:55:08","guid":{"rendered":"https:\/\/www.cncmachiningshops.com\/?p=10317"},"modified":"2026-07-19T17:21:55","modified_gmt":"2026-07-19T09:21:55","slug":"g-code-and-m-code","status":"publish","type":"post","link":"https:\/\/www.cncmachiningshops.com\/it\/g-code-and-m-code\/","title":{"rendered":"Codici G e M nella programmazione CNC: tipi di comandi, struttura del programma ed esempi pratici"},"content":{"rendered":"<div data-page-id=\"AT0qdjHDyok1tCxcuPGceqlZn7e\" data-lark-html-role=\"root\" data-docx-has-block-data=\"true\">\n<p>Ogni movimento eseguito da una macchina CNC \u2014 ogni velocit\u00e0 di avanzamento, ogni avvio del mandrino, ogni cambio utensile \u2014 \u00e8 guidato dal codice G e dal codice M. Questi due tipi di comandi costituiscono il livello di istruzioni che fa da ponte tra il percorso utensile generato dal CAM e l\u2019effettiva asportazione di metallo. Il codice G controlla la geometria e il movimento; il codice M controlla lo stato della macchina che rende tale movimento sicuro ed efficace. Comprendere come funzionano insieme \u00e8 ci\u00f2 che distingue i programmatori in grado di scrivere codice di produzione affidabile da quelli che sanno solo eseguire ci\u00f2 che genera il CAM.<\/p>\n<p>Questo articolo tratta i codici G e M da un punto di vista ingegneristico pratico: cosa controlla ciascuno di essi, come funzionano la struttura del programma e la logica degli stati modali, i codici pi\u00f9 comuni nel contesto reale della lavorazione, le differenze tra i controllori che influenzano la portabilit\u00e0 e gli errori di programmazione che causano la maggior parte degli arresti e degli scarti. L\u2019obiettivo non \u00e8 fornire un elenco di riferimento dei comandi, bens\u00ec favorire la comprensione della logica di esecuzione che rende i programmi CNC prevedibili e ripetibili.<\/p>\n<hr \/>\n<h2>Cosa sono il codice G e il codice M? La differenza fondamentale<\/h2>\n<p>La distinzione fondamentale \u00e8 chiara. <strong>Il codice G controlla il movimento dell'utensile e la geometria<\/strong>. <strong>Il codice M controlla lo stato della macchina e le funzioni ausiliarie<\/strong>. Entrambi sono necessari. Nessuno dei due funziona senza l\u2019altro.<\/p>\n<table>\n<thead>\n<tr>\n<th>Aspetto<\/th>\n<th>Codice G<\/th>\n<th>Codice M<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Ruolo principale<\/td>\n<td>Movimento e geometria dell'utensile<\/td>\n<td>Funzionamento e stato della macchina<\/td>\n<\/tr>\n<tr>\n<td>Comandi<\/td>\n<td>Assi, interpolazione, avanzamenti, sistemi di coordinate<\/td>\n<td>Mandrino, refrigerante, cambio utensili, svolgimento del programma<\/td>\n<\/tr>\n<tr>\n<td>Effetti<\/td>\n<td>Precisione, finitura superficiale, tempo di ciclo<\/td>\n<td>Sicurezza, affidabilit\u00e0, condizioni di taglio<\/td>\n<\/tr>\n<tr>\n<td>Esempi<\/td>\n<td>G00, G01, G02, G17, G54<\/td>\n<td>M03, M05, M06, M08, M30<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Codice G: Geometria e logica del movimento<\/h3>\n<p>I codici G rispondono alla domanda: <em>In che modo lo strumento dovrebbe muoversi per creare questa geometria?<\/em> Essi definiscono la modalit\u00e0 di posizionamento, il tipo di interpolazione, il comportamento dell'avanzamento e quale sistema di coordinate \u00e8 attivo. La qualit\u00e0 della finitura superficiale, la precisione dimensionale e la distribuzione del carico sull'utensile dipendono tutte direttamente dalla struttura e dalla sequenza dei codici G.<\/p>\n<p>Considerate il codice G come il \u201ccervello geometrico\u201d del programma. Sa dove deve andare l\u2019utensile e come deve arrivarci.<\/p>\n<h3>Codice M: Controllo macchine e PLC<\/h3>\n<p>I codici M rispondono a una domanda diversa: <em>Come dovrebbe comportarsi la macchina durante l'esecuzione di quel movimento?<\/em> Si occupano dell'avvio e della direzione del mandrino, dell'attivazione del refrigerante, dei cambi utensile e del controllo del flusso del programma. Tutte queste funzioni sono gestite tramite il PLC (controllore logico programmabile) della macchina, un livello di controllo separato dal controllore di movimento.<\/p>\n<p>Un modo utile per concettualizzare la questione: il codice G definisce il percorso; il codice M prepara e mantiene le condizioni necessarie per l\u2019asportazione di materiale lungo quel percorso. Un percorso utensile definito correttamente fallisce immediatamente se il mandrino non \u00e8 in funzione, se \u00e8 caricato l\u2019utensile sbagliato o se il refrigerante non \u00e8 attivo. Queste condizioni rientrano interamente nell\u2019ambito del codice M.<\/p>\n<hr \/>\n<h2>Struttura del programma CNC: blocchi, stati modali e logica di esecuzione<\/h2>\n<p>Uno dei concetti pi\u00f9 importanti nella programmazione CNC \u2014 e quello che causa i comportamenti pi\u00f9 inaspettati \u2014 \u00e8 comprendere che il controller esegue i programmi come un <strong>macchina a stati<\/strong>, non come un semplice elenco sequenziale di istruzioni.<\/p>\n<h3>Blocchi e ordine di esecuzione<\/h3>\n<p>Un programma CNC \u00e8 costituito da <strong>blocchi<\/strong> \u2014 in genere una riga di istruzioni per blocco. Il controller legge ogni blocco da sinistra a destra e lo esegue come un\u2019unit\u00e0 unica. \u00c8 fondamentale sottolineare che il controller non interpreta l\u2019intento. Vede solo il blocco corrente combinato con gli stati modali impostati dai blocchi precedenti.<\/p>\n<p>Ci\u00f2 significa che due comandi di movimento apparentemente identici possono comportarsi in modo completamente diverso a seconda di quanto stabilito in precedenza nel programma. Un errore in questo ambito \u00e8 la causa principale della maggior parte dei comportamenti imprevisti del CNC.<\/p>\n<h3>Codici modali e non modali<\/h3>\n<p>Questa distinzione \u00e8 fondamentale per comprendere il comportamento del programma:<\/p>\n<p><strong>Codici modali<\/strong> rimangono attivi finch\u00e9 non vengono modificati esplicitamente. Una volta impostati, permangono in tutti i blocchi successivi finch\u00e9 non vengono sovrascritti. Esempi:<\/p>\n<ul>\n<li>Modalit\u00e0 di movimento (G00, G01, G02) \u2014 rimane attiva fino a quando non viene attivata una modalit\u00e0 di movimento diversa<\/li>\n<li>Modalit\u00e0 di posizionamento (G90\/G91) \u2014 le impostazioni assolute o incrementali rimangono valide fino a quando non vengono modificate<\/li>\n<li>Selezione del piano (G17\/G18\/G19) \u2014 il piano di taglio attivo rimane attivo<\/li>\n<\/ul>\n<p><strong>Codici non modali<\/strong> vengono eseguiti una sola volta nel blocco in cui compaiono, dopodich\u00e9 non hanno alcun effetto. Ne sono esempi tipici alcuni comandi predefiniti di annullamento del ciclo e di sosta.<\/p>\n<table>\n<thead>\n<tr>\n<th>Comportamento<\/th>\n<th>Codici modali<\/th>\n<th>Codici non modali<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Persistenza dello stato<\/td>\n<td>Valido fino a nuova comunicazione<\/td>\n<td>Esegui una volta<\/td>\n<\/tr>\n<tr>\n<td>Rischi in caso di fraintendimento<\/td>\n<td>Movimenti indesiderati nei blocchi successivi<\/td>\n<td>Effetto solitamente localizzato<\/td>\n<\/tr>\n<tr>\n<td>Esempi comuni<\/td>\n<td>G00, G01, G90, G91, G17<\/td>\n<td>Azioni una tantum, annullamenti di cicli specifici<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>L'implicazione pratica: un G01 modale rimasto attivo da un'operazione precedente far\u00e0 s\u00ec che il successivo movimento di posizionamento rapido venga invece eseguito come movimento di taglio a velocit\u00e0 di avanzamento. Si tratta di un rischio di collisione imminente, che pu\u00f2 essere interamente evitato comprendendo lo stato modale.<\/p>\n<h3>Fasi della logica di programma<\/h3>\n<p>Ogni programma CNC affidabile segue tre fasi logiche:<\/p>\n<p><strong>Inizializzazione:<\/strong> Definire in modo esplicito lo stato della macchina. Impostare le unit\u00e0 di misura (G20\/G21), il piano (G17), la modalit\u00e0 di posizionamento (G90), l\u2019offset del pezzo (G54 o equivalente) e la modalit\u00e0 di avanzamento. Non fare mai affidamento sulle impostazioni predefinite del controllore, poich\u00e9 variano da macchina a macchina.<\/p>\n<p><strong>Lavorazione meccanica:<\/strong> Il codice G \u00e8 predominante per il movimento e la geometria. I codici M mantengono attive le condizioni di taglio in background: il mandrino continua a girare, il refrigerante rimane attivo e l'utensile rimane inserito.<\/p>\n<p><strong>Spegnimento:<\/strong> Ritorno a uno stato sicuro e noto. L'utensile si ritira, il mandrino e il flusso del refrigerante si arrestano, il programma termina e si resetta per il ciclo successivo.<\/p>\n<hr \/>\n<h2>Principali tipi di codice G: movimento, posizionamento e cicli predefiniti<\/h2>\n<p>Anzich\u00e9 elencare ogni singolo codice G, comprendere le tre categorie funzionali aiuta a chiarire quando e perch\u00e9 ciascun tipo viene utilizzato nelle operazioni pratiche di lavorazione.<\/p>\n<h3>Codici G per il movimento e l'interpolazione<\/h3>\n<p>Questi codici definiscono il modo in cui l'utensile da taglio si sposta tra un punto e l'altro. Essi hanno un impatto diretto sulla finitura superficiale, sul tempo di ciclo e sul carico dell'utensile.<\/p>\n<p><strong>G00 \u2013 Posizionamento rapido<\/strong> Sposta l'utensile alla velocit\u00e0 massima della macchina. Utilizzato esclusivamente per movimenti non di taglio: avvicinamento, ritiro, posizionamento per il cambio utensile e movimenti di allontanamento. Il codice G00 privilegia la velocit\u00e0 rispetto alla precisione del percorso: nella maggior parte delle macchine, il percorso effettivo tra i punti non \u00e8 una linea retta. \u00c8 necessario verificare lo spazio libero tra l'attrezzaggio e il pezzo, senza darlo per scontato.<\/p>\n<p><strong>G01 \u2013 Interpolazione lineare<\/strong> Sposta l'utensile in linea retta a una velocit\u00e0 di avanzamento programmata. Si tratta del movimento di taglio principale per la maggior parte delle operazioni di fresatura e tornitura. La velocit\u00e0 di avanzamento \u00e8 indicata con la lettera F \u2014 e tale valore F rimane attivo fino a quando non viene modificato.<\/p>\n<p><strong>G02 \/ G03 \u2013 Interpolazione circolare<\/strong> Il codice G02 genera archi in senso orario; il codice G03 genera archi in senso antiorario. Utilizzati per tasche circolari, raggi d\u2019angolo, raccordi e contornature. \u00c8 necessario specificare il punto centrale o il raggio (R). Sulla maggior parte dei controllori, la direzione dell\u2019arco \u00e8 relativa al piano attivo (G17\/G18\/G19) \u2014 un dettaglio importante quando si programmano archi al di fuori del piano XY.<\/p>\n<p><strong>La distinzione fondamentale:<\/strong> Il comando G00 serve per il posizionamento tra un taglio e l'altro. I comandi G01\/G02\/G03 servono per la asportazione di materiale. L'uso del comando G00 al posto del comando G01 \u2014 o il mantenimento attivo del comando G01 quando \u00e8 necessario un posizionamento rapido \u2014 \u00e8 una delle cause pi\u00f9 comuni di urti e tagli eccessivi.<\/p>\n<h3>Sistema di coordinate e codici G di posizionamento<\/h3>\n<p>Questi codici definiscono <em>dove<\/em> \u00e8 il movimento che si verifica, non il modo in cui si muove l'utensile.<\/p>\n<p><strong>Sistemi di coordinate di lavoro (G54\u2013G59)<\/strong> Ogni offset memorizza una relazione tra lo zero macchina e lo zero pezzo. Nel corso dello stesso programma possono essere attivi pi\u00f9 sistemi di fissaggio o configurazioni, richiamando offset di lavoro diversi. Nella lavorazione pratica, G54 \u00e8 l\u2019impostazione predefinita per la lavorazione con configurazione singola; G55\u2013G59 vengono utilizzati per pallet con pi\u00f9 sistemi di fissaggio o sistemi di fissaggio a tombstone.<\/p>\n<p><strong>G90 \u2013 Posizionamento assoluto<\/strong> Tutte le coordinate fanno riferimento allo zero di lavoro attivo. Uno spostamento a X50 porta sempre a X50 rispetto allo zero del pezzo, indipendentemente dalla posizione attuale dell'utensile. Questa \u00e8 la modalit\u00e0 standard per la maggior parte dei programmi di produzione: \u00e8 prevedibile e facile da verificare.<\/p>\n<p><strong>G91 \u2013 Posizionamento incrementale<\/strong> Ogni coordinata si sposta rispetto alla posizione attuale dell'utensile. Il comando G91 \u00e8 molto utile per schemi ripetitivi ed elementi simmetrici, ma pu\u00f2 risultare pericoloso se lasciato attivo involontariamente. Un comando incrementale G01 Z-1,0 significa \u201cspostarsi di 1 mm verso il basso dalla posizione attuale\u201d \u2014 non dal punto zero del pezzo. Ci\u00f2 costituisce una fonte significativa di errori di profondit\u00e0 e di collisioni.<\/p>\n<h3>Cicli predefiniti<\/h3>\n<p>I cicli predefiniti sintetizzano le sequenze ripetitive di foratura, alesatura e maschiatura in singole righe di codice. Anzich\u00e9 programmare separatamente l\u2019avvicinamento, l\u2019avanzamento, la sosta, il ritiro e l\u2019allontanamento per ciascun foro, un ciclo predefinito gestisce automaticamente l\u2019intera sequenza.<\/p>\n<p>Tra gli esempi pi\u00f9 comuni figurano G81 (foratura), G83 (foratura a interruzioni per fori profondi), G84 (maschiatura) e G76 (alesatura di precisione). I parametri includono in genere la profondit\u00e0 del foro, il piano di ritiro, la velocit\u00e0 di avanzamento e le opzioni specifiche del ciclo.<\/p>\n<p>A questo proposito, ci sono due aspetti tecnici da considerare. Innanzitutto, i cicli predefiniti sono <strong>modale<\/strong> \u2014 rimangono attivi fino a quando non vengono esplicitamente annullati (in genere con il codice G80). Se si dimentica di annullare un ciclo di foratura prima di un movimento di riposizionamento, la macchina potrebbe eseguire la foratura in ogni posizione intermedia. In secondo luogo, il comportamento di ritrazione varia a seconda dei controllori: verificare la logica di ritrazione nella foratura a picchiettamento prima di eseguire cicli di foratura profonda su macchine che non si conoscono bene.<\/p>\n<hr \/>\n<h2>Codici M pi\u00f9 comuni: cosa controllano e perch\u00e9 la tempistica \u00e8 importante<\/h2>\n<p>I codici M vengono spesso considerati come un elemento secondario: semplici comandi per avviare il mandrino e attivare il refrigerante. In pratica, la tempistica e la sequenza dei codici M sono fondamentali quanto la geometria del percorso utensile. Un errore in questo ambito comporta la perdita di utensili, pezzi e, talvolta, anche di macchine.<\/p>\n<h3>Controllo del mandrino<\/h3>\n<p><strong>M03 \u2013 Mandrino acceso (in senso orario)<\/strong> Direzione di taglio standard per utensili destri. Deve essere attivata prima dell'esecuzione di qualsiasi codice G di taglio. Includere un valore S (velocit\u00e0 del mandrino) nello stesso blocco o in quello precedente.<\/p>\n<p><strong>M04 \u2013 Mandrino acceso (in senso antiorario)<\/strong> Utilizzato per utensili sinistrorsi, alcune operazioni di alesatura e la fresatura di filettature in configurazioni specifiche. L'uso del codice M04 con una fresa standard destrorsa provoca immediatamente danni sia all'utensile che al pezzo.<\/p>\n<p><strong>M05 \u2013 Arresto mandrino<\/strong> Necessario prima dei cambi utensile, delle operazioni di sondaggio e delle pause di programma. Sulla maggior parte delle macchine, il comando M06 (cambio utensile) arresta automaticamente il mandrino; tuttavia, programmare esplicitamente il comando M05 prima di M06 \u00e8 una pratica migliore e pi\u00f9 trasferibile.<\/p>\n<h3>Controllo del liquido di raffreddamento<\/h3>\n<p><strong>M08 \u2013 Liquido di raffreddamento attivo<\/strong> Attiva il raffreddamento a flusso continuo. Sulle macchine dotate di pi\u00f9 opzioni di raffreddamento, \u00e8 possibile scegliere tra raffreddamento a flusso continuo, a nebbia e attraverso il mandrino tramite specifici codici M: consultare l\u2019elenco dei codici M della macchina.<\/p>\n<p><strong>M09 \u2013 Liquido di raffreddamento disattivato<\/strong> Spegnere prima dei cambi utensile e al termine del programma. Lasciare il refrigerante attivo durante un cambio utensile crea problemi di pulizia e potenziali rischi per la sicurezza nella posizione di cambio utensile.<\/p>\n<p>La tempistica del refrigerante \u00e8 pi\u00f9 importante di quanto la maggior parte dei programmatori riconosca. Nella lavorazione del titanio (Ti-6Al-4V), il refrigerante deve essere attivo prima che il tagliente entri in contatto con il pezzo: attivarlo dopo il contatto \u00e8 troppo tardi per garantire la protezione termica. Nell\u2019alluminio 6061, il raffreddamento a nebbia o a flusso continuo previene la formazione di incrostazioni sul tagliente e mantiene la finitura superficiale. Il comando M08 appartiene <em>prima<\/em> il primo taglio G01, non quello successivo.<\/p>\n<h3>Cambio utensile e flusso del programma<\/h3>\n<p><strong>M06 \u2013 Cambio utensile<\/strong> Esegue il cambio utensile automatico dell'utensile specificato da un codice T. Per garantire l'esecuzione in sicurezza, \u00e8 necessario che l'utensile sia ritirato nella posizione di cambio utensile e che il mandrino sia fermo. Sequenza standard: G00 per raggiungere la distanza di sicurezza in direzione Z \u2192 M05 \u2192 T___ \u2192 M06.<\/p>\n<p><strong>M00 \u2013 Arresto del programma (incondizionato)<\/strong> Sospende l'esecuzione. La macchina si arresta e attende un comando da parte dell'operatore. Viene utilizzato per ispezioni in corso d'opera, operazioni manuali o regolazioni dei dispositivi di fissaggio a ciclo in corso.<\/p>\n<p><strong>M01 \u2013 Fermata facoltativa<\/strong> Si arresta solo se l'interruttore di arresto opzionale \u00e8 attivo sul controller. Utile per i punti di ispezione che possono essere bypassati durante la produzione, ma attivati durante la messa a punto o le prime serie di produzione.<\/p>\n<p><strong>M30 \u2013 Fine programma e ripristino<\/strong> Termina il programma e riporta il cursore all'inizio. Il modo corretto per terminare un programma di produzione CNC. Il comando M02 termina senza riportare il cursore all'inizio: evitarlo nel codice di produzione.<\/p>\n<table>\n<thead>\n<tr>\n<th>Gruppo di funzioni<\/th>\n<th>Codici M<\/th>\n<th>Ruolo ingegneristico<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Mandrino<\/td>\n<td>M03 \/ M04 \/ M05<\/td>\n<td>Attivare e interrompere il taglio; controllare la direzione<\/td>\n<\/tr>\n<tr>\n<td>Refrigerante<\/td>\n<td>M08 \/ M09<\/td>\n<td>Controllo termico, evacuazione dei trucioli, finitura superficiale<\/td>\n<\/tr>\n<tr>\n<td>Gestione degli strumenti<\/td>\n<td>M06<\/td>\n<td>Sequenza di cambio utensili<\/td>\n<\/tr>\n<tr>\n<td>Flusso del programma<\/td>\n<td>M00 \/ M01 \/ M30<\/td>\n<td>Fermate di sicurezza, ispezione, ripristino del ciclo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>Come funzionano insieme il codice G e il codice M: un esempio pratico di fresatura<\/h2>\n<p>Il coordinamento tra i codici G e M diventa chiaro quando si analizza la logica di esecuzione di un'effettiva operazione di lavorazione. Ecco come si presenta, dal punto di vista della gestione degli stati, una semplice passata di fresatura frontale su un pezzo in alluminio 6061:<\/p>\n<h3>Fase 1: Preparazione della macchina (i codici M definiscono le condizioni di taglio)<\/h3>\n<pre><code>G21 G90 G17 G54 ; Imposta sistema metrico, assoluto, piano XY, offset pezzo\nT01 M06 ; Carica fresa frontale (sequenza cambio utensile)\nS3000 M03 ; Avvio mandrino in senso orario a 3000 giri\/min\r\nM08 ; Attivazione raffreddamento a flusso continuo\nG00 Z50,0 ; Avanzamento rapido fino alla distanza di sicurezza sull\u2019asse Z\nG00 X-10,0 Y0 ; Avanzamento rapido fino alla posizione di avvicinamento\r\n<\/code><\/pre>\n<p>Prima di qualsiasi operazione di taglio, lo stato della macchina \u00e8 completamente definito: utensile corretto, mandrino in rotazione nella direzione corretta alla velocit\u00e0 corretta, refrigerante attivo, utensile posizionato in modo sicuro sopra il pezzo.<\/p>\n<h3>Fase 2: Movimento di taglio (i codici G controllano il percorso)<\/h3>\n<pre><code>G00 Z2,0 ; Avanzamento rapido all'altezza di approccio Z\nG01 Z-0,5 F200 ; Affondamento alla profondit\u00e0 di taglio con avanzamento controllato\nG01 X110,0 F600 ; Passata con fresa frontale lungo il pezzo\r\n<\/code><\/pre>\n<p>I comandi G01 controllano l'effettiva asportazione di materiale. I codici M relativi al mandrino e al refrigerante della Fase 1 rimangono attivi in modalit\u00e0 \u2014 non \u00e8 necessario richiamarli per ogni taglio, ma devono essere stati impostati prima dell'inizio della Fase 2.<\/p>\n<h3>Fase 3: Chiusura sicura (ripristino del sistema a uno stato noto)<\/h3>\n<pre><code>G01 Z2.0 F600 ; Ritrazione alla velocit\u00e0 di avanzamento (non rapida \u2014 controllata)\r\nG00 Z50,0 ; Avanzata rapida fino alla distanza massima dall'asse Z\nM09 ; Disattivazione del refrigerante\nM05 ; Arresto mandrino\nG00 X0 Y0 ; Ritorno alla posizione di riferimento\nM30 ; Fine programma e ripristino\r\n<\/code><\/pre>\n<p>Ogni elemento della sequenza di uscita ha una funzione specifica. Il ritiro alla velocit\u00e0 di avanzamento prima di passare alla corsa rapida evita la formazione di segni di affondamento nel caso in cui l'utensile sia ancora leggermente a contatto con il pezzo. La disattivazione del refrigerante prima dell'arresto del mandrino impedisce che il refrigerante venga spruzzato durante la decelerazione. Il comando G00 verso la posizione di origine prepara in modo affidabile il ciclo successivo.<\/p>\n<p>Questa logica in tre fasi \u2014 preparazione, esecuzione, ripristino \u2014 \u00e8 il modello mentale che permette di evitare la maggior parte degli errori di programmazione CNC.<\/p>\n<hr \/>\n<h2>Differenze tra i controller: perch\u00e9 il codice G e il codice M non sono realmente universali<\/h2>\n<p>Lo standard ISO 6983 \/ RS274 fornisce una base sintattica comune, ma i produttori di controllori ne estendono e modificano il comportamento in modo significativo. Un programma che funziona correttamente su una macchina pu\u00f2 generare allarmi o movimenti imprevisti su un\u2019altra, anche con hardware identico.<\/p>\n<h3>Aree comuni di variazione<\/h3>\n<p><strong>Controllori basati su Fanuc:<\/strong> I controllori industriali pi\u00f9 diffusi. Fanuc definisce un ampio nucleo comune, ma le opzioni dei costruttori di macchine aggiungono o modificano il comportamento. La sintassi delle macro B, i codici M di sondaggio e i parametri dei cicli predefiniti spesso variano da una macchina all\u2019altra, anche all\u2019interno della stessa famiglia Fanuc.<\/p>\n<p><strong>Controllori Haas:<\/strong> \u00c8 in gran parte compatibile con Fanuc per i codici G di movimento di base, ma Haas utilizza codici M semplificati o proprietari per molte funzioni. I programmi scritti su macchine Haas spesso richiedono modifiche ai codici M quando vengono trasferiti su macchine Fanuc.<\/p>\n<p><strong>LinuxCNC:<\/strong> Open source e altamente configurabile. Supporta la sintassi standard RS274, ma i comportamenti avanzati sono definiti dall'utente. Potente per macchine personalizzate; richiede un'accurata documentazione sulla configurazione per garantire un comportamento coerente.<\/p>\n<table>\n<thead>\n<tr>\n<th>Area<\/th>\n<th>Variazione tipica<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cambio utensile (M06)<\/td>\n<td>Posizionamento, controlli di sicurezza, comportamento ATC<\/td>\n<\/tr>\n<tr>\n<td>Cicli predefiniti<\/td>\n<td>Parametri, modalit\u00e0 di retrazione, comportamento di beccaggio<\/td>\n<\/tr>\n<tr>\n<td>Codici M del liquido di raffreddamento<\/td>\n<td>Diversi tipi di refrigerante, assegnazioni di codici specifici<\/td>\n<\/tr>\n<tr>\n<td>Variabili macro<\/td>\n<td>Sintassi, disponibilit\u00e0, numerazione delle variabili<\/td>\n<\/tr>\n<tr>\n<td>Stati predefiniti delle finestre modali<\/td>\n<td>Selezione del piano, modalit\u00e0 di avanzamento, unit\u00e0 di misura all'accensione<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Migliori pratiche in materia di portabilit\u00e0<\/h3>\n<p>L'approccio pi\u00f9 affidabile alla compatibilit\u00e0 tra controller:<\/p>\n<ul>\n<li><strong>Non affidarti mai alle impostazioni predefinite.<\/strong> Impostare esplicitamente le unit\u00e0 di misura, il piano, la modalit\u00e0 di posizionamento e l'offset di lavoro all'avvio del programma.<\/li>\n<li><strong>Evita le scorciatoie specifiche del controller<\/strong> nei programmi destinati a pi\u00f9 macchine.<\/li>\n<li><strong>Come utilizzare i codici M non standard<\/strong> con la loro funzione \u2014 i futuri programmatori non sapranno cosa fa M88 sul tuo specifico computer senza la documentazione.<\/li>\n<li><strong>Verificare su ciascun controller<\/strong> prima del primo ciclo di produzione, anche se il programma \u201cdovrebbe funzionare\u201d.\u201d<\/li>\n<\/ul>\n<hr \/>\n<h2>Errori comuni nei codici G e M: diagnosi e prevenzione<\/h2>\n<p>La maggior parte degli errori CNC \u00e8 riconducibile a errori nella gestione degli stati, non a errori di sintassi. Il controller ha eseguito esattamente ci\u00f2 che gli era stato indicato: il problema \u00e8 che il programmatore non ha tenuto pienamente conto degli stati modali attivi.<\/p>\n<table>\n<thead>\n<tr>\n<th>Errore<\/th>\n<th>Causa principale<\/th>\n<th>Prevenzione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Trasferimento modale<\/td>\n<td>G90\/G91, G00\/G01 oppure selezione del piano rimasta attiva dal blocco precedente<\/td>\n<td>Reimpostare esplicitamente gli stati modali critici all\u2019avvio del programma e prima delle operazioni critiche<\/td>\n<\/tr>\n<tr>\n<td>Sistema di coordinate errato<\/td>\n<td>Il programma presuppone un offset di lavoro o un sistema di unit\u00e0 di misura diverso da quello impostato sulla macchina<\/td>\n<td>Impostare esplicitamente i comandi G54\u2013G59, G90\/G91, G20\/G21 \u2014 non dare mai nulla per scontato<\/td>\n<\/tr>\n<tr>\n<td>Movimento rapido e inaspettato<\/td>\n<td>G01 rimane attivo quando si intende eseguire un posizionamento rapido, o viceversa<\/td>\n<td>Riformulare il codice G relativo al movimento in ogni blocco in cui cambia l'intenzione di movimento<\/td>\n<\/tr>\n<tr>\n<td>Sincronizzazione mandrino\/liquido di raffreddamento<\/td>\n<td>Codici M inseriti dopo l'inizio del movimento di taglio<\/td>\n<td>Considerare M08 e M03 come precondizioni: attive prima del primo G01<\/td>\n<\/tr>\n<tr>\n<td>Sostituzione non sicura dell'utensile<\/td>\n<td>M06 attivato senza arresto del mandrino n\u00e9 posizione di ritrazione di sicurezza<\/td>\n<td>Applicare la sequenza standard di cambio utensile: ritrazione \u2192 M05 \u2192 T___ \u2192 M06<\/td>\n<\/tr>\n<tr>\n<td>Comportamento irregolare del ciclo<\/td>\n<td>Ciclo predefinito in modalit\u00e0 (G83, G84) non annullato prima del riposizionamento<\/td>\n<td>Annullare esplicitamente i cicli predefiniti con G80; non dare per scontato che vengano annullati automaticamente<\/td>\n<\/tr>\n<tr>\n<td>Il programma va in errore al secondo tentativo<\/td>\n<td>Gli stati dei modali nascosti permangono anche dopo la chiusura del programma<\/td>\n<td>Utilizzare M30 con sequenza di spegnimento completa; inizializzare tutti gli stati all'avvio del programma<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Un esempio concreto: modalit\u00e0 incrementale lasciata attiva<\/h3>\n<p>Un caso comune in officina: un programmatore utilizza il ciclo G91 (incrementale) per uno schema di foratura con cerchio di bulloni. Il ciclo predefinito viene eseguito correttamente. Successivamente, il comando G80 annulla il ciclo, ma il comando G91 non viene mai reimpostato su G90. L\u2019operazione successiva \u2014 una passata di fresatura di tasca \u2014 utilizza coordinate incrementali. Anzich\u00e9 spostarsi in X50 Y30 (in assoluto), la macchina si sposta di 50 mm e 30 mm rispetto alla posizione attuale.<\/p>\n<p>Risultato: passata di fresatura in una posizione errata, pezzo scartato, potenziale collisione.<\/p>\n<p>Correzione: aggiungere <code>G90<\/code> alla riga immediatamente successiva <code>G80<\/code> al ritorno dalla modalit\u00e0 incrementale. Un carattere. Salva una parte.<\/p>\n<hr \/>\n<h2>Migliori pratiche per una programmazione CNC affidabile<\/h2>\n<p>I programmi affidabili presentano caratteristiche strutturali comuni, indipendentemente dalla macchina o dal controllore. Queste pratiche riducono gli errori, semplificano la risoluzione dei problemi e rendono i programmi facilmente gestibili da parte di chi non ne \u00e8 l'autore originale.<\/p>\n<h3>Blocco di inizializzazione \u2014 Sempre<\/h3>\n<p>Inizia ogni programma con un'inizializzazione completa dello stato:<\/p>\n<pre><code>G21 G90 G17 G54 G94 G40 G49    ; Metrico, assoluto, piano XY, WCS 1, \n ; avanzamento al minuto, annulla compensazione utensile, annulla lunghezza utensile\r\n<\/code><\/pre>\n<p>Questo singolo blocco risolve la maggior parte dei problemi legati al trasferimento dello stato modale. Ci vogliono cinque secondi per scriverlo e consente di risparmiare ore di ricerca dei guasti.<\/p>\n<h3>Cambiamenti espliciti di stato ai confini logici<\/h3>\n<p>Prima di ogni nuovo tipo di operazione \u2014 in particolare in caso di passaggio dalla foratura alla fresatura, tra diversi dispositivi di fissaggio o dopo interventi manuali \u2014 ristabilire gli stati modali critici. Non dare per scontato che l\u2019operazione precedente abbia lasciato la macchina nelle condizioni corrette.<\/p>\n<h3>Regole di sequenziamento del codice M<\/h3>\n<p>Segui sempre questo ordine:<\/p>\n<ol>\n<li>Ritirarsi fino a raggiungere una distanza di sicurezza Z<\/li>\n<li>Arresto del mandrino (M05) se \u00e8 necessario un cambio utensile<\/li>\n<li>Cambio utensile (M06) con codice T<\/li>\n<li>Avvio del mandrino alla nuova velocit\u00e0 (M03 S___) e attivazione del refrigerante (M08)<\/li>\n<li>Posizione rispetto al punto di avvicinamento<\/li>\n<li>Iniziare il movimento di taglio<\/li>\n<\/ol>\n<p>Invertire i passaggi 4 e 5 \u2014 tornando alla posizione precedente all\u2019attivazione del mandrino e del refrigerante \u2014 \u00e8 tecnicamente possibile sulla maggior parte dei controllori, ma non \u00e8 una buona pratica. Il mandrino ha bisogno di tempo per raggiungere la velocit\u00e0; il refrigerante deve raggiungere la zona di taglio prima che l\u2019utensile entri in contatto con il pezzo.<\/p>\n<h3>Commentare il significato, non solo la sintassi<\/h3>\n<p>Commento inappropriato: <code>; G01 X50 F300 (spostamento lineare)<\/code> Ottimo commento: <code>; Passata di finitura sulla faccia di riferimento - profondit\u00e0 0,1 mm, lasciare 0 di materiale in eccesso<\/code><\/p>\n<p>I commenti dovrebbero spiegare <em>perch\u00e9<\/em> spiegare l'esistenza di una sequenza di codice e quali presupposti essa comporti, senza limitarsi a ripetere ci\u00f2 che il codice gi\u00e0 dice.<\/p>\n<h3>Verificare tramite simulazione prima dell'esecuzione<\/h3>\n<p>Anche i programmatori pi\u00f9 esperti effettuano una simulazione prima di procedere alla lavorazione. La moderna simulazione CAM individua errori nel percorso utensile, collisioni del portautensile e interferenze nei movimenti rapidi che, pur apparendo corretti nel codice, causano guasti alla macchina. Le prove a vuoto con avanzamento 10%, accompagnate da un controllo visivo di ogni fase dell\u2019operazione, consentono di individuare i problemi residui che la simulazione non rileva.<\/p>\n<hr \/>\n<h2>Conclusione<\/h2>\n<p>Il codice G e il codice M non sono due elenchi separati di comandi CNC, ma due livelli coordinati di un unico sistema di controllo della macchina. Il codice G definisce dove e come si muove l\u2019utensile; il codice M garantisce che la macchina si trovi nello stato corretto per eseguire quel movimento in modo sicuro ed efficace. Comprendere come interagiscono, come lo stato modale persiste tra i blocchi di programma e come le differenze tra i controllori influenzano il comportamento \u00e8 ci\u00f2 che fa la differenza tra un codice che funziona in modo affidabile in produzione e un codice che funziona una sola volta, su una singola macchina, in condizioni ideali.<\/p>\n<p>Una programmazione CNC affidabile deriva da una gestione rigorosa degli stati: inizializzazione esplicita, fasi di esecuzione prevedibili e un'attenta sincronizzazione del codice M. I programmatori che considerano il codice G e il codice M come un sistema logico coordinato \u2014 anzich\u00e9 come comandi isolati da memorizzare \u2014 scrivono programmi portabili, sicuri e di facile manutenzione su diverse macchine e turni di lavoro.<\/p>\n<hr \/>\n<h2>FAQ<\/h2>\n<p><strong>Il codice G \u00e8 lo stesso sia per le fresatrici che per i torni?<\/strong><\/p>\n<p>Non esattamente. I codici di movimento di base (G01, G02) sono presenti in entrambi, ma il contesto differisce in modo significativo. La fresatura utilizza la selezione del piano (G17\/G18\/G19) e le coordinate multiasse. I centri di tornitura utilizzano il controllo del diametro\/raggio (G7\/G8 su alcuni controllori), il movimento sincronizzato con il mandrino per la filettatura (G32, G92) e cicli fissi specifici per il tornio (G71, G72). La sintassi di base \u00e8 comune; la logica applicativa \u00e8 tuttavia sufficientemente diversa da impedire che l\u2019esperienza acquisita nella fresatura sia automaticamente trasferibile alla programmazione della tornitura.<\/p>\n<p><strong>I codici M sono universali su tutte le macchine CNC?<\/strong><\/p>\n<p>No \u2014 e dare per scontato che lo siano \u00e8 rischioso. I codici di base come M03 (rotazione del mandrino in senso orario), M05 (arresto del mandrino) e M30 (fine programma) sono ampiamente standardizzati. Tuttavia, il controllo del refrigerante, la sonda, il serraggio, i cambi di pallet e le funzioni relative all\u2019automazione variano in modo significativo a seconda del controllore, del costruttore della macchina e della configurazione. Verificate sempre l\u2019assegnazione dei codici M su ogni macchina specifica prima di fare affidamento su di essi.<\/p>\n<p><strong>Perch\u00e9 lo stesso codice G si comporta in modo diverso su controller diversi?<\/strong><\/p>\n<p>La norma ISO 6983 definisce la sintassi, non il comportamento. I controllori estendono lo standard con le proprie impostazioni predefinite, opzioni e interpretazioni. I parametri dei cicli predefiniti, le definizioni degli archi, gli stati modali predefiniti all\u2019accensione e il posizionamento per il cambio utensile possono variare. Scrivere codice esplicito e prudente \u2014 impostando tutti gli stati modali anzich\u00e9 affidarsi alle impostazioni predefinite \u2014 \u00e8 l\u2019unico modo affidabile per gestire le differenze tra i vari controllori.<\/p>\n<p><strong>Un software CAM pu\u00f2 sostituire la conoscenza del codice G\/M manuale?<\/strong><\/p>\n<p>Il software CAM genera in modo efficiente percorsi utensile corretti, ma non elimina la necessit\u00e0 di comprendere il codice. Ingegneri e operatori di macchina devono comunque conoscere i codici G e M per verificare la logica del programma, risolvere i comportamenti imprevisti, ottimizzare i tempi di ciclo e comunicare in modo chiaro con fornitori e operatori. Il CAM sostituisce la digitazione, ma non sostituisce il giudizio ingegneristico.<\/p>\n<p><strong>Quali sono gli errori pi\u00f9 pericolosi nei codici G e M?<\/strong><\/p>\n<p>Gli errori legati allo stato del sistema causano gli incidenti pi\u00f9 gravi. Gli errori pi\u00f9 rischiosi sono: spostamenti rapidi G00 eseguiti troppo vicino al pezzo; modalit\u00e0 incrementale G91 lasciata attiva involontariamente; omissione dell\u2019avvio del mandrino (M03) prima del movimento di taglio; richiamo del cambio utensile (M06) senza retrazione di sicurezza; e cicli predefiniti (G83, G84) non annullati prima del riposizionamento. Nessuno di questi comandi genera errori di sintassi: il controllore li esegue senza segnalare alcun problema. Il danno si verifica a livello meccanico.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Ogni movimento eseguito da una macchina CNC \u2014 ogni velocit\u00e0 di avanzamento, ogni avvio del mandrino, ogni cambio utensile \u2014 \u00e8 controllato dal codice G e dal codice M. Questi due tipi di comandi costituiscono il livello di istruzioni che fa da tramite tra il percorso utensile generato dal CAM e l\u2019effettiva asportazione di metallo.<\/p>","protected":false},"author":1,"featured_media":12266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-10317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cnc-machining-guide"],"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>G Code vs M Code: CNC Programming Commands Guide<\/title>\n<meta name=\"description\" content=\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\" \/>\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\/g-code-and-m-code\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\" \/>\n<meta property=\"og:description\" content=\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cncmachiningshops.com\/it\/g-code-and-m-code\/\" \/>\n<meta property=\"og:site_name\" content=\"CNC Machining Shops\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-12T02:55:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-19T09:21:55+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=\"15 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"},\"author\":{\"name\":\"cncmachiningshops\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\"},\"headline\":\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\",\"datePublished\":\"2026-03-12T02:55:08+00:00\",\"dateModified\":\"2026-07-19T09:21:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"},\"wordCount\":3349,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"articleSection\":[\"CNC Machining Guide\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\",\"name\":\"G Code vs M Code: CNC Programming Commands Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"datePublished\":\"2026-03-12T02:55:08+00:00\",\"dateModified\":\"2026-07-19T09:21:55+00:00\",\"description\":\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"width\":800,\"height\":600,\"caption\":\"G Code and M Code in CNC Programming 800x600\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical 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":"Codice G vs Codice M: Guida ai comandi di programmazione CNC","description":"Scopri le differenze tra il codice G e il codice M nella programmazione CNC, compresi i tipi di comando, la struttura del programma ed esempi pratici utilizzati nelle operazioni di lavorazione 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\/g-code-and-m-code\/","og_locale":"it_IT","og_type":"article","og_title":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples","og_description":"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.","og_url":"https:\/\/www.cncmachiningshops.com\/it\/g-code-and-m-code\/","og_site_name":"CNC Machining Shops","article_published_time":"2026-03-12T02:55:08+00:00","article_modified_time":"2026-07-19T09:21:55+00:00","author":"cncmachiningshops","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"cncmachiningshops","Tempo di lettura stimato":"15 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#article","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"},"author":{"name":"cncmachiningshops","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551"},"headline":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples","datePublished":"2026-03-12T02:55:08+00:00","dateModified":"2026-07-19T09:21:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"},"wordCount":3349,"commentCount":0,"publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","articleSection":["CNC Machining Guide"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/","url":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/","name":"Codice G vs Codice M: Guida ai comandi di programmazione CNC","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","datePublished":"2026-03-12T02:55:08+00:00","dateModified":"2026-07-19T09:21:55+00:00","description":"Scopri le differenze tra il codice G e il codice M nella programmazione CNC, compresi i tipi di comando, la struttura del programma ed esempi pratici utilizzati nelle operazioni di lavorazione CNC.","breadcrumb":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","width":800,"height":600,"caption":"G Code and M Code in CNC Programming 800x600"},{"@type":"BreadcrumbList","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cncmachiningshops.com\/"},{"@type":"ListItem","position":2,"name":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical 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\/10317","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=10317"}],"version-history":[{"count":0,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/posts\/10317\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/media\/12266"}],"wp:attachment":[{"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/media?parent=10317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/categories?post=10317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/it\/wp-json\/wp\/v2\/tags?post=10317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}