Le parentesi sono consentite all'interno di un commento in codice G?


9

Mi chiedo se questo pezzo di codice G sia valido:

G0 (Some comment (Its G0 command)) Y10 Z-5

Ho provato questo sulla mia macchina CNC cinese e cancella il commento e funziona alla perfezione.

La macchina elabora questo come quello G0Y10Z-5che mi sembra l'approccio corretto.

Tuttavia, non ho mai visto questo commento nella pratica del CNC. Sarebbe bello se qualcuno fosse in grado di testarlo sulla propria stampante CNC / 3D.

Molti simulatori di codice G su Internet non riescono a elaborare una tale linea nel loro parser, quindi mi confondo. Non ho trovato nulla al riguardo su RepRap Wiki o su Google.


A proposito ... Benvenuti nella stampa 3D! : o)
Pᴀᴜʟsᴛᴇʀ2

1
Perché non usare semplicemente l'inizio della riga ";" ed evitare tutti i rischi?
Carl Witthoft,

Per un costo nominale :-), scriverò una regex che tira fuori tutto "(*)" e lo sostituisce con una nuova riga "; *" Lascia che inizino le guerre di fiamma sed vs awk.
Carl Witthoft,

Hai ragione Carl. Mi occupavo solo del codice di terze parti che avrei potuto dover gestire un giorno. Personalmente uso solo; Commenti. :-)
Jan Vorisek,

Risposte:


12

Questo non è un codice G universalmente valido e il modo in cui viene gestito dipende dall'implementazione. È possibile utilizzare questo stile di commento su alcune macchine, ma non su tutti.

Il modo in cui l'analisi era implementata in Marlin (un firmware di stampante 3D molto comune), funzionava bene a meno che la stringa di commento non includesse un carattere X, Y, Z, E o F. Il parser cerca semplicemente la prima occorrenza di X / Y / Z / E / F e quindi tenta di analizzare un numero di testo che appare dopo quel carattere in un numero. Se la stringa non può essere analizzata come numero, per impostazione predefinita è invece 0. Per esempio,

 G0 (Some comment containing the character Y) Y10 Z-5

verrebbe interpretato come G0 Y0 Z-5e non come G0 Y10 Z-5, perché ")" (la stringa che appare dopo la prima occorrenza di "Y") non analizza alcun numero valido. Il tuo esempio sembra funzionare bene perché la stringa di commento non contiene caratteri speciali.

Marlin supporta i commenti di fine riga, che dovrebbero iniziare con un punto e virgola e continuare fino alla fine della riga.

Funzionava così nelle versioni precedenti di Marlin. Le versioni più recenti di Marlin hanno un parser più avanzato, ma ancora non funzionerebbe bene con questi commenti in stile parentesi. È meglio evitarli, poiché la compatibilità non è garantita.


Mi sembra ancora più strano. Non ci sono commenti su questo comportamento, ad esempio in RepRap reprap.org/wiki/G-code#Comments
Jan Vorisek,

@JanVorisek Ho appena notato che è leggermente diverso nelle nuove versioni di Marlin. Tuttavia, i commenti tra parentesi non sono supportati.
Tom van der Zanden,

1
Hai ragione. Ho appena controllato alcuni parser incluso Marlin. Sono giunto alla conclusione che la maggior parte dei firmware delle stampanti 3D analizza solo i punti e virgola come commenti. Sembra che le parentesi siano / fossero? modo preferito nelle fresatrici a controllo numerico. Mi atterrò al punto e virgola poiché mi preoccupo principalmente della stampa 3D. Grazie comunque per il tuo tempo :-)
Jan Vorisek,

4

Sembra che i commenti tra parentesi non siano consentiti in numerosi parser (es. Marlin). Questo sembra essere vero per la maggior parte delle stampanti 3D. Le classiche fresatrici a controllo numerico utilizzano le parentesi senza problemi.

Dovrebbe funzionare su stampanti Prusa come indicato nel loro Wiki . Sfortunatamente non ci sono parole sull'annidamento dei commenti.

Ho comunque trovato un commento sui forum di cnczone.com in merito alla nidificazione dei commenti tra parentesi.

Caratteri stampabili e spazi bianchi tra parentesi sono un commento. Una parentesi sinistra inizia sempre un commento. Il commento termina alla prima parentesi destra trovata in seguito.

Una volta posizionata una parentesi sinistra su una linea, una parentesi destra corrispondente deve apparire prima della fine della linea.

I commenti non possono essere nidificati; è un errore se viene trovata una parentesi sinistra dopo l'inizio di un commento e prima della fine del commento.

Ecco un esempio di una riga che contiene un commento: G80 M5 (stop motion)

Fonte: cnczone.com

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.