Home Come funzionano i GCode

Come funzionano i GCode

Anche se la vostra stampante è l’ultimo modello che impiega le migliori tecnologie a disposizione, il suo cuore utilizza una lingua antica, inventata al Servomechanisms Laboratory del Mit attorno al 1950, il GCode.
A quei tempi i codici erano scritti su schede perforate e non erano semplici da gestire. Negli anni sessanta si definirono i primi standard e poi nacquero numerose varianti dei GCode, utilizzati in vari tipi di macchine automatizzate.
I GCode, infatti, si usano per comporre una lunga sequenza di comandi per descrivere il lavoro di una macchina utensile in modo preciso e ripetibile. A volte si sente anche parlare di linguaggio di programmazione “G”. Ogni istruzione corrisponde a un’azione della macchina. Questo linguaggio semplice è sopravvissuto perché può essere trattato anche da piccole unità di elaborazione, come una scheda Arduino. Le sequenze di GCode si utilizzano per controllare ogni tipo di macchina a controllo numerico (Cnc), come possono esserlo frese a tre assi, laser cutter e le stampanti 3D.
Ogni stampa 3D nasce da un modello, progettato utilizzando un programma Cad o da un modellatore tridimensionale, che si esporta in uno dei formati standard. I più comuni sono Stl, Obj e il più recente Amf. Tutti descrivono i modelli in modo più semplice possibile per
facilitare la creazione dei G-code. I file di tipo Stl sono forse quelli con il formato più semplice, perché non prevedono nient’altro che una descrizione “per triangoli” dei modelli tridimensionali.
I G-code sono prodotti da un programma Cam (Computer Aided Manufacturing), che analizza il file in ingresso e calcola i movimenti della macchina che si dovrà utilizzare per ricreare “fisicamente” l’oggetto, per questo è importante che i file siano “semplificati”.
Il Cam deve inoltre conoscere tutti i parametri e le caratteristiche della macchina che compirà il lavoro: tipo di lavorazioni, misure del piano di lavoro, caratteristiche dell’utensile, velocità di rotazione, temperatura di funzionamento, pressione.
Il compito non è certo semplice. I Cam più complessi cercano di ottimizzare i percorsi della macchina per creare degli oggetti dalle caratteristiche migliori ed evitare che la macchina danneggi lo stesso oggetto che sta realizzando. In molti casi, soprattutto utilizzando delle frese a controllo numerico, è meglio analizzare il “programma” con dei simulatori.
Leggere fra le righe
Slic3r è un programma Cam che analizza i file Stl e Obj e produce una sequenza di G-code. Un file in formato G-code (estensione .G-code, .g o .gco) può essere letto con qualsiasi editor di testo (per esempio con notepad di Windows). Alcune stampanti
leggono questi file da schede di memoria o da chiavette Usb, altre possono riceverlo via rete e salvarlo nella propria memoria. Le prime stampanti invece, lavoravano collegate a un computer e i GCode erano inviati uno per volta alla macchina. Le stampanti opensource utilizzano un dialetto del GCode originale, adatto alla stampa 3D.
Nella finestra dell’editor si legge una lunga sequenza di lettere e numeri disposti su più righe. La stampante elabora un’istruzione GCode per volta e la trasforma in un’azione. Ci sono comandi per compiere movimenti, per estrudere materiale, per impostare temperature, velocità, per scegliere utensili e controllarli.
Link utili
Raramente vi troverete a scrivere GCode a mano, ma sapere come funzionano, come sono scritti e gli effetti che producono può essere di grande aiuto per risolvere alcuni problemi di stampa apparentemente incomprensibili.
Potete usare G-code anche per verificare il funzionamento della stampante,
impostando a mano temperature o movimenti.
Ecco due link per utilizzarli al meglio:
Referenza completa dei G-code gestiti da RepRap:
Software per la visualizzazione dei G-code (anche per smartphone):
I GCode non sono un vero e proprio linguaggio di programmazione, perché non è possibile creare variabili, cicli per ripetere delle operazioni, introdurre delle logiche. Alcune moderne “revisioni” dello standard o delle varianti del linguaggio originale hanno incluso queste possibilità che ovviamente complicano il linguaggio e ampliano le possibilità. Per interpretare costrutti ed espressioni più complesse è però necessaria una maggior complessità nel software e nell’hardware a bordo delle macchine. Questo è il motivo per cui lo standard “semplificato” sopravvive senza problemi.
I GCode sono formati da gruppi di lettere e numeri (sono delle stringhe).
Solitamente un GCode è posto su una riga e inizia con la lettera “G”, da cui il nome, anche se in realtà nei codici sono presenti praticamente tutte le lettere dell’alfabeto.
Alcuni codici sono “istantanei” e una volta impartiti corrispondono a una precisa azione: per esempio uno spostamento dell’asse x di dieci millimetri. Altri codici sono “modali”, cioè attivano un comportamento che persiste fino a che non è modificato: per esempio l’impostazione della temperatura dell’estrusore.
Un file GCode può includere dei numeri di linea, anche se non è obbligatorio. Di solito sono esclusi perché non sono strettamente necessari e perché aumentano inutilmente le dimensioni del file.
I numeri di linea sono indicati all’inizio di ogni riga, un po’ come si faceva con il Basic molti anni fa. Prima del numero si deve inserire la lettera N e quindi il comando GCode:
N1 T0*57
N2 G92 E0*67
I numeri di linea devono essere in sequenza, ma non è obbligatorio usare un passo unitario: è possibile adottare, per esempio, incrementi di cinque o dieci unità, anche non regolari.
I file per le stampanti 3D prevedono sempre:
• una parte introduttiva per preparare la macchina, posizionare e riscaldare estrusore e piano,
• una parte “esecutiva” in cui l’estrusore si muove e costruisce l’oggetto,
• una parte “conclusiva” per terminare il lavoro e mettere a riposo la macchina.
I G-code sono in genere scritti su una sola riga e se ne possono mettere anche più di uno per ogni linea.
Un comando generico è formato da un codice formato da una lettera e da un numero, seguita da vari parametri:
G1 X10 Y0 Z00 F1000.0 E0
Qui il comando è “G1” che si tradurrà in un movimento da parte della stampante. Il comando è seguito da un elenco di parametri formati da una lettera e un numero. X10 corrisponderà a un movimento lungo l’asse X di dieci millimetri verso destra.
Come abbiamo detto, all’inizio di ogni file c’è una sequenza con i GCode di partenza che impostano la macchina e preparano il lavoro successivo. Nella sequenza di partenza si azzerano gli assi, si scalda l’estrusore, s’impostano i riferimenti e le misure secondo cui
organizzare i movimenti.
Riportiamo qui di seguito la sequenza iniziale dei G-code prodotti per la stampa di un semplice cubo da 20 × 20 × 20 mm.
M107
M104 S198 ; set temperature
G28 ;Home all axis
T0
G1 Z10 F1000
G92 E0

M117 Printing…
M109 S198 ; wait for temperature to be reached
G21 ; set units to millimeters
G90 ; use absolute coordinates
M82 ; use absolute distances for extrusion
G92 E0
G1 Z0.300 F9000.000
G1 E-2.50000 F1500.00000
G92 E0
G1 X41.266 Y35.887 F9000.000
G1 E2.50000 F1500.00000
M204 S1200
G1 X43.005 Y34.490 E2.68098 F1080.000

È possibile inserire commenti nel file e Slic3r aiuta molto aggiungendo numerose note all’interno del file. I commenti devono essere sempre preceduti da un punto e virgola.

La sequenza d’istruzioni

M107 – Fan off – Spegne la ventola di raffreddamento dell’estrusore. A volte al posto di questo codice è possibile trovare M106 cui può essere anche aggiunto un parametro per indicare la velocità (da 0 a 255). Per spegnere la ventola si deve impostare la velocità a zero: M106 S0.

M105 S190 – Imposta la temperatura dell’estrusore – La temperatura s’indica nell’unico parametro ammissibile per questo comando. Dopo aver dato questo comando, la macchina non attende che sia raggiunta la temperatura, ma prosegue con le altre operazioni.

G28 – Home – riporta tutti gli assi alla posizione zero. Potete intervenire anche su un asse singolo aggiungendolo come parametro. Per esempio: G28 Z riporta a zero l’asse z.

T0 – Seleziona l’utensile – se avete un solo estrusore, potete utilizzare solo T0. Il secondo estrusore è indicato con T1.

G1 Z10 F1000 – Movimento lineare – I comandi G0 e G1 servono per muovere l’estrusore. G0 si usa per i movimenti accelerati. I parametri che seguono il comando indicano su che asse avverrà il moto (se ne possono impostare anche più di uno per volta). “F1000” indica

che il moto avverrà a 1000 mm/minuto. Se l’estrusore deve anche far fuoriuscire del materiale, allora si aggiunge la lettera E seguita dalla quantità di filo da estrudere. Indicare questi parametri a mano può essere molto difficile perché si deve calcolare la quantità corretta di materiale da far fuoriuscire per garantire il corretto flusso di plastica.

G92 E0 – Imposta la posizione di origine, in modo che corrisponda alla posizione corrente della stampante. In questo caso azzera però solo la coordinata dell’estrusore. G92 senza alcun parametro azzera tutte le coordinate di tutti gli assi.

M117 Printing – Scrive un messaggio sul display Lcd della stampante.

M109 S198 – Attende il raggiungimento della temperatura dell’estrusore. La temperatura si specifica con il parametro S. In questo caso è stata impostata una temperatura di 198 gradi.

G21 – Imposta l’unità di misura in millimetri.

G90 – Utilizza un sistema di coordinate assolute. I movimenti faranno sempre riferimento a un unico punto di origine. Utilizzando un sistema relativo, le coordinate del nuovo spostamento sono riferite alla posizione finale dell’ultimo spostamento.

M82 – Imposta anche per l’estrusore un sistema di misura “assoluto”.

A volte si può incontrare il codice M73 che serve per visualizzare la barra con la percentuale di completamento del lavoro. L’avanzamento s’indica usando il parametro P seguito da un numero che va da 0 a 100.
Segue poi una lunga sequenza di spostamenti impartiti con il comando G1. Alcuni spostamenti prevedono la deposizione di materiale e quindi specificano anche un movimento sull’asse E.
Scorrendo il file a un certo punto s’incontra il passaggio di livello, l’istante in cui la macchina ha terminato la creazione di un layer e quindi si solleva impartendo un G1 con il parametro Z.
G1 Z0.560 F9000.000
Al termine del file si trova la sequenza di chiusura che spegne gli
estrusori e li allontana dall’oggetto terminato.
M107
M104 S0 T0
M190 S0
T0
G1 Z100 F1000

Analisi, modifiche e simulazioni

Per intervenire su un file GCode si può utilizzare un semplice editor di testi, ma serve un po’ di esperienza per leggere attraverso i codici.
Un buon aiuto lo può dare Repetier Host che offre la possibilità di caricare un G-code, analizzarlo, modificarlo e simularlo.
Anche in Slic3r è possibile avere una preview del file in G-code, in due o tre dimensioni. La vista bidimensionale illustra i tracciati della macchina per ogni livello. La vista tridimensionale offerta da Slic3r aiuta a farsi un’idea generale di come sarà costruito l’oggetto, evidenziando i percorsi macchina.
Repetier Host è un programma gratuito che si può utilizzare per la gestione delle stampe. Non ha uno slicer nativo ma si appoggia ad altri programmi come Slic3r. Repetier Host può caricare un file già elaborato, e quindi in formato G-code, visualizzarlo e permettervi di modificarlo.
Una volta caricato un modello si accede a un pannello laterale del programma che riporta un editor di testi in cui è possibile intervenire direttamente sul codice. Portando il cursore su un G-code di tipo G1, potrete vedere evidenziato il corrispondente tratto. È possibile
provare a modificare un G1 e vedere immediatamente la modifica applicata e l’effetto prodotto.
All’interno di Repetier Host è possibile impostare una stampante virtuale da utilizzare per simulare le operazioni di stampa. Si può quindi connettere la stampante e poi avviare il lavoro: il processo scorrerà sotto gli occhi velocemente, simulando la costruzione del pezzo.
Alcune stampanti possono essere controllate anche per il tramite di una console seriale.
Mediante un programma come CoolTerm, utilizzabile anche con sistemi Mac, si può connettere la stampante al computer tramite un cavo Usb e inviare i comandi G-code manualmente. Questa procedura può risultare molto utile anche per verificare sul campo le funzionalità della macchina.

33 COMMENTI

  1. “G1 X10 Y0 Z00 F1000.0 E0
    Qui il comando è “G1” che si tradurrà in un movimento da parte della stampante. Il comando è seguito da un elenco di parametri formati da una lettera e un numero. X10 corrisponderà a un movimento lungo l’asse X di dieci millimetri verso destra.”

    Attenzione, non è detto che sia cosi, dipende se ci si trova nelle coordinate assolute o relative… Normalmente X10 corrisponde vai alla coordinata di X 10. Se il punto attuale è al di là di 10 allora il movimento è a sinistra fino a raggiungere la coordinata 10.
    Scusate se puntualizzo, ma è importante questo…

  2. I really thank you for the valuable info on this great subject and look forward to more great posts. Thanks a lot for enjoying this beauty article with me. I am appreciating it very much! Looking forward to another great article. Good luck to the author! All the best. Check out the best sattaking game and win large amount of money by investing very less at satta king.

  3. I really thank you for the valuable info on this great subject and look forward to more great posts. Thanks a lot for enjoying this beauty article with me. I am appreciating it very much! Looking forward to another great article. Good luck to the author! All the best. Check out the best sattaking game and win large amount of money by investing very less at satta king.

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche

css.php