Interpretazione comandi G-Code G17-G18-G19

Spazio dedicato a tutte le discussioni di carattere tecnico-informativo vario, che per loro natura non hanno corrispondenza specifica con le altre Sezioni del Forum.
Rispondi
plinio
Newbie
Newbie
Messaggi: 7
Iscritto il: lunedì 1 luglio 2019, 13:33

Interpretazione comandi G-Code G17-G18-G19

Messaggio da plinio » sabato 9 gennaio 2021, 12:02

Ciao a tutti, chi mi aiuta a capire cosa significa "cambiare il piano di lavoro"? Da solo non ci arrivo e non ho trovato in rete una spiegazione chiara e semplice. Devo interpretare questo comando per fornire delle istruzioni alla CNC e non capisco cosa mi viene chiesto.
Pensavo che dopo aver risolto l'avanzamento dei motori per traiettorie interpolate lineari e circolari, il calcolo delle accelerazioni, l'interpolazione contemporanea di tre assi, ecc., il resto del G-Code fosse una formalità, ma evidentemente non è così.

Non ne capisco proprio il significato, l'esigenza di un simile comando. Perché mai dovrei cambiare il piano di lavoro? Che senso ha? Mi muovo già in un ambiente tridimensionale, non basta inserire le solite istruzioni G01, G02, G03? Cioè, se il piano di lavoro della macchina è X,Y scrivo G01 X100 Y100 per disegnare una retta inclinata di 45°, se voglio usare il piano di lavoro X,Z scrivo G01 X100 Z100 e ottengo la stessa cosa su un altro piano. A cosa mi serve il G18? Forse per scrivere G01 X100 Y100 e la quota in Y va interpretata come Z? Mah...

plinio
Newbie
Newbie
Messaggi: 7
Iscritto il: lunedì 1 luglio 2019, 13:33

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da plinio » sabato 9 gennaio 2021, 13:24

Credo di aver trovato una parziale risposta in rete.

Indicando il piano di lavoro nel quale deve essere eseguito il profilo voluto, si definiscono contemporaneamente anche le seguenti funzioni:

- il piano per la correzione del raggio utensile
- la direzione d'incremento per la correzione di lunghezza utensile in funzione del tipo di utensile
- il piano per l'interpolazione circolare.

Cioè, serve quando è attivo il comando modale G41/G42. L'interprete deve sapere quale è la direzione della compensazione e può saperla solo in base al piano di lavoro attivo.
- G17 (piano X,Y) la compensazione della lunghezza utensile deve essere fatta lungo l'asse Z e quella del raggio utensile sui piani X e Y
- G18 (piano X,Z) la compensazione della lunghezza utensile deve essere fatta lungo l'asse Y e quella del raggio utensile sui piani X e Z
- G19 (piano Y,Z) la compensazione della lunghezza utensile deve essere fatta lungo l'asse X e quella del raggio utensile sui piani Y e Z

Peccato che non ho ancora il supporto per i comandi G41 e G42 :) Sono piuttosto complicati da implementare e bisognerebbe anche gestire i conflitti di percorso, ho una soluzione geometrica in testa, ma non l'ho ancora tradotta in codice.

qandro
Member
Member
Messaggi: 252
Iscritto il: lunedì 29 ottobre 2018, 9:54

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da qandro » sabato 9 gennaio 2021, 15:14

Terra terra il cambio del piano ha effetto in poche cose, almeno nei tre assi quindi con G17/G18/G19.

In pratica cambia come viene interpretato il comando di arco G02/G03 e come questo si sviluppa nello spazio (XY o XZ o YZ).
Il G41 e G42 nella gran parte di CNC non lavora se non nel piano G17.

Cosa diversa invece se si lavora in CNC che hanno i piani inclinati (G68.2) il quale di fatto permette di esprimere qualsiasi vettore di direzione
e una volta attivo possono essere indistintamente utilizzati G41/G42/G43 (e sotto funzioni), cicli, etc come se si lavorasse sempre in G17 ma
con il versore definito tramite gli angoli di eulero.

plinio
Newbie
Newbie
Messaggi: 7
Iscritto il: lunedì 1 luglio 2019, 13:33

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da plinio » sabato 9 gennaio 2021, 17:31

Se stato chiarissimo. Penso che stando così le cose provo a implementare il G42/G43 (se ci riesco), mi sembra già abbastanza sfidante. Il cambio di piano non mi sembra prioritario.

qandro
Member
Member
Messaggi: 252
Iscritto il: lunedì 29 ottobre 2018, 9:54

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da qandro » sabato 9 gennaio 2021, 22:29

Intanto complimenti per il progetto rapidcnc, partire da zero lo sviluppo di un controllo CNC non è cosa da tutti ma ci si diverte da matti e soprattutto si capisce meglio di altri quanto lavoro e ricerca c'è dietro ogni funzionalità, anche quelle apparentemente banali.

Alcune soluzioni sono vincenti, altre saranno causa di frustrazione e un mare di tempo perso, ma questo è il gioco.

Per fortuna in rete ci sono tonnellate di documenti accademici, che sebbene non vadano mai presi alla lettera, sono comunque fonte di ispirazione.

La compensazione raggio utensile è una brutta bestia e purtroppo gli algoritmi per di "entrata" in compensazione sono sempre come una coperta corta, o scopri i piedi e tieni al caldo la pancia, o il contrario.

Spesso le CNC ne implementano più di uno e poi dipende dall'operatore quali usare. La compensazione in cam è ottima in quanto il CAM sa esattamente come entrare ed uscire dalla stessa ma pone il limite di dover inserire esattamente il diametro utensile ma questo può variare dal reale e richiede di tornare al CAM se tutto non coincide.

Avanti così !!!

torn24
God
God
Messaggi: 5046
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da torn24 » domenica 10 gennaio 2021, 7:11

Non è proprio banale e ha tante funzioni diverse, se sei in G17 hai gli assi x y z su una macchina a 3 assi, ma i tre assi non vengono usati per lo stesso scopo, ad esempio in un ciclo di foratura x y sono il posizionamento la z la profondità. Se volessi forare in G18 XZ questi sarebbero il piano di posizionamento e la Y la profondità.

In pratica tutte le cose che fai con gli assi x y in G17, le faccio fare a un altra coppia di assi G18 XZ , G19 YZ.

A me è capitato di forare su una macchina a tre assi con una testa a 90, per cui quello che doveva fare l'asse Z doveva essere fatto con l'asse Y, da qui selezione piano G18 xz
CIAO A TUTTI !

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da hellfire39 » domenica 10 gennaio 2021, 9:22

piccolo OT:
mi unisco ai complimenti per il progetto rapid-cnc. =D>

torn24
God
God
Messaggi: 5046
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da torn24 » domenica 10 gennaio 2021, 11:46

off topic
Dopo i complimenti ho guardato il sito del tuo progetto, complimenti.
Tu hai trovato lentezza nella trasmissione dati tra pc e arduino, il tuo sistema è basato su pc che calcola gli impulsi da dare al motore. Sul sito colibri cnc, c'è un interessante spiegazione del perché con sistemi windows si usano schede con processore, dove lato software PC interpreto il Gcode e invio "dati" alla scheda, la scheda genera gli impulsi per il motore. Il fatto e questo, con sistemi msdos il sistema operativo eseguiva un unico processo alla volta e poteva comandare una cnc senza nessun ritardo, i sistemi windows eseguono più processi concorrentemente e questo crea un piccolo ritardo sul comando di motori. La tua soluzione mi sembra più simile a quella usata dai primi sistemi per cnc amatoriali basate su msdos.
CIAO A TUTTI !

qandro
Member
Member
Messaggi: 252
Iscritto il: lunedì 29 ottobre 2018, 9:54

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da qandro » domenica 10 gennaio 2021, 16:35

Ci sono modi molti di ottenere le stesse cose e le cose poi ottenute non sono uguali :)

Spostare cose come interpolatore, generatore step, panificatore percorso, raccordi, etc a PC, perché questo è potente, è uno delle cose errate da non fare per vari motivi:

- I PC e relativi OS non sono deterministici (hard real-time).
- Anche usando un OS real-time i processori per PC e tutta l'infrastruttura di corredo non sono progettati per questo tipo d'uso.
- I sistemi operativi real-time di qualità costano un botto (VxWorks, QNX, etc. e danno il massimo solo con certi processori e schede fatte ad hoc).
- Le estensioni real-time di Linux non sono realmente hard real-time anche se si avvicinano, ma non lo sono.
- In un sistema OS real-time che non sia sviluppato da zero e privo di componenti di terze parti (drivers, etc) è sempre in balia di cosa fa un driver o un'estensione di terze parti.

Vince la soluzione di porre un sistema realmente hard real-time su una scheda embedded che usi componenti (processori, chip rete, etc.) che
sono nati per questo scopo e quindi a bassa latenza, stabilità, etc e non sono molti.

Arduino non lo è come non lo sono tante architetture di chip ARM ad esclusione della Cortex-R nata apposta per applicazioni hard real-time.
Quando si sviluppa con un chip adeguato per fare attività hard real-time bisogna anche usare librerie, tool che siano adeguati e non sempre
sono accessibili gratuitamente ma hanno costi elevati.

Cosa migliore in questo caso è farsi da zero un sistema operativo hard real-time di cui si conoscono fino all'intimo ogni attività e caratteristica.
Spesso per sgravare il compito del processore si delegano funzionalità ad altri chip del sistema come FPGA o chip SOC per comunicazione LAN con gli stack già implementati di modo che il processore/processori principali siano completamente liberi da ogni carico inaspettato.

Fanno cosi anche le CNC Pro dove ormai delegano la UI a Linux/Windows ma poi il core gira su processori/schede embedded cha lavorano in parallelo e si limitano a condividere i dati con la UI tramite vari sistemi di ECC.

turbina

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da turbina » domenica 10 gennaio 2021, 16:49

Seguirò il tuo lavoro su G41-42-40 e su G43 , anche se ritengo non sia utile più di tanto se non intendi programmare a bordo macchina

Comunque sai che poi dovrai per forza affrontare i comandi per la foratura , e perché no anche per la maschiatura e la barenatura

Per quanto riguarda gli M niente M6 per il cambio utensili? Inoltre ci sono altri comandi M importanti non sono solo on/off

Ci sarebbe ancora una lista piuttosto lunga sulle cose TODO ma non vorrei scoraggiarti anche perché sei uno dei pochi , anzi pochissimi in questo forum che hanno iniziato questo percorso, anzi finora ho visto un buon lavoro anche se prima sposterai il motion controller dalla CPU del PC al microcontroller di Arduino meglio sarà.

I piani G18 e G19 per un pantografo classico o una fresa classica a 3 assi come per il 99.9 % delle macchine qui presenti , non servono.

torn24
God
God
Messaggi: 5046
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da torn24 » lunedì 11 gennaio 2021, 9:46

Per i comandi di foratura G81 ecc... si possono realizzare utilizzando le funzioni già esistenti G0 G1.
In un cnc Z16 i cicli di foratura erano proprio sottoprogrammi che utilizzavano G0 e G1 utilizzando variabili al posto di valori numerici.
Abbastanza semplici da realizzare con VB e le funzioni G0 e G1.
CIAO A TUTTI !

turbina

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da turbina » lunedì 11 gennaio 2021, 10:34

Certamente, anche G41-G42-G40 e G43 penso intenda realizzarlo con lo stesso metodo, è il metodo più di semplice, ma anche l'M6 andrà sviluppato sul PC in VB

plinio
Newbie
Newbie
Messaggi: 7
Iscritto il: lunedì 1 luglio 2019, 13:33

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da plinio » giovedì 14 gennaio 2021, 16:40

Sul real-time ho delle riserve, nel senso che lo è molto più di quel che sembra all'apparenza.
Il calcolo è tutto preventivo lato pc. Creo un binario da inviare ad Arduino complessivo di tutta la lavorazione dove non sono più presenti istruzioni G-Code da interpretare, ma essenzialmente per quanto riguarda l'avanzamento, la durata dello step. Il costo in cicli di clock della fase di interpretazione su Arduino non è presente, o almeno l'impatto è molto meno significativo. Questo mi porta a dire che sulla frequenza dei motori posso spingermi anche molto in là, ma non in tutte le condizioni. Soffro molto le variazioni di velocità (più informazione da trasferire), non scalo molto bene in queste condizioni, nonostante abbia fatto di tutto, i limiti ci sono.
Non ho mai fatto delle prove comparative, non so dirvi rispetto all'uso di GRBL pregi o difetti, ma ha dimostrato sul campo di essere valida come soluzione alternativa. Ho un ritardo solo se imposto elevate velocità ed ho cambi repentini di traiettoria con elevato numero di passi giro, ma l'ho gestito. Se arrivo in queste condizioni vicino allo svuotamento del buffer su Arduino, semplicemente aspetto l'arrivo dalla porta dei byte che avevo richiesto precedentemente e lo faccio in posizioni sicure, cioè a motori fermi. Ma ripeto non ho ritardi, macino quello che arriva dalla porta alla velocità della luce (normale condizione di lavoro), quando arrivo alla metà del buffer (che è da 1.600 byte) mi faccio inviare un altro blocco (800 byte), nel frattempo elaboro la restante metà.

plinio
Newbie
Newbie
Messaggi: 7
Iscritto il: lunedì 1 luglio 2019, 13:33

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da plinio » giovedì 14 gennaio 2021, 16:46

turbina ha scritto:
domenica 10 gennaio 2021, 16:49
Per quanto riguarda gli M niente M6 per il cambio utensili? Inoltre ci sono altri comandi M importanti non sono solo on/off
Qui hai ragione, mi sono un pò perso, sarà un annetto che mi giro i pollici (colpevolmente). Sono sempre a chiedermi; faccio questo ulteriore step o mi fermo qui? Devo ritrovare un pò di entusiasmo, sarà colpa del covid-19, ma mi sono perso per strada :cry:

qandro
Member
Member
Messaggi: 252
Iscritto il: lunedì 29 ottobre 2018, 9:54

Re: Interpretazione comandi G-Code G17-G18-G19

Messaggio da qandro » giovedì 14 gennaio 2021, 18:08

I "fermi" per Covid sono ideali per buttarsi sulla tastiera anziché annoiarsi davanti alla TV :)

Avanti cosi, sei nella direzione giusta!

Rispondi

Torna a “Miscellaneous”