Les parenthèses sont-elles autorisées dans un commentaire de code G?

9

Je me demande si ce morceau de G-code est valide:

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

J'ai testé cela sur ma machine CNC chinoise et il supprime le commentaire et fonctionne parfaitement.

La machine traite cela comme ce G0Y10Z-5qui me semble être la bonne approche.

Je n'ai cependant jamais vu un tel commentaire dans la vraie pratique CNC. Ce serait bien si quelqu'un pouvait le tester sur leur imprimante CNC / 3D.

De nombreux simulateurs de code G sur Internet ne parviennent pas à traiter une telle ligne dans leur analyseur, ce qui me rend confus. Je n'ai rien trouvé à ce sujet sur RepRap Wiki ou même Google.

Jan Vorisek
la source
BTW ... Bienvenue dans l'impression 3D! : o)
Pᴀᴜʟsᴛᴇʀ2
1
Pourquoi ne pas simplement utiliser le début de ligne ";" et éviter tout risque?
Carl Witthoft
Pour une somme modique :-), je vais écrire une expression régulière qui extrait tous les "(*)" et les remplace par une nouvelle ligne "; *" Laissez les guerres de flamme sed vs awk commencer.
Carl Witthoft
Tu as raison Carl. Je m'occupais juste du code tiers que je pourrais avoir besoin de gérer un jour. J'utilise personnellement uniquement; commentaires. :-)
Jan Vorisek

Réponses:

12

Ce code G n'est pas universellement valide, et la façon dont il est géré dépend de l'implémentation. Vous pouvez utiliser ce style de commentaire sur certaines machines, mais pas sur toutes.

La façon dont l'analyse était implémentée dans Marlin (un micrologiciel d'imprimante 3D très courant), cela fonctionnerait bien à moins que la chaîne de commentaire comprenne un caractère X, Y, Z, E ou F. L'analyseur recherche simplement la première occurrence de X / Y / Z / E / F, puis essaie d'analyser le bit de texte apparaissant après ce caractère en un nombre. Si la chaîne ne peut pas être analysée en tant que nombre, elle prend par défaut la valeur 0 à la place. Par exemple,

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

serait interprété comme G0 Y0 Z-5et non comme G0 Y10 Z-5, car ")" (la chaîne apparaissant après la première occurrence de "Y") n'analyse aucun nombre valide. Votre exemple fonctionne correctement car la chaîne de commentaire ne contient aucun caractère spécial.

Marlin prend en charge les commentaires de fin de ligne, qui doivent commencer par un point-virgule et se poursuivre jusqu'à la fin de la ligne.

C'est ainsi qu'il fonctionnait dans les anciennes versions de Marlin. Les nouvelles versions de Marlin ont un analyseur plus avancé, mais cela ne fonctionnerait toujours pas bien avec ces commentaires de type parenthèses. Il est préférable de les éviter, car la compatibilité n'est pas garantie.

Tom van der Zanden
la source
Cela me semble encore plus étrange. Il n'y a aucun commentaire sur ce comportement par exemple dans RepRap reprap.org/wiki/G-code#Comments
Jan Vorisek
@JanVorisek Je viens de remarquer qu'il est légèrement différent dans les nouvelles versions de Marlin. Pourtant, les commentaires de type parenthèses ne sont pas pris en charge.
Tom van der Zanden
1
Tu as raison. Je viens de vérifier quelques analyseurs, dont Marlin. Je suis arrivé à la conclusion que la plupart des firmwares d'imprimante 3D analysent uniquement les points-virgules comme commentaires. On dirait que les parenthèses sont / étaient? manière préférée dans les fraiseuses CNC. Je m'en tiendrai au point-virgule car je me soucie principalement de l'impression 3D. Merci pour votre temps quand même :-)
Jan Vorisek
4

Il semble que les commentaires entre parenthèses ne soient pas autorisés dans de nombreux analyseurs (ex. Marlin). Cela semble être vrai pour la plupart des imprimantes 3D. Les fraiseuses CNC classiques utilisent sans problème les parenthèses.

Cela devrait fonctionner sur les imprimantes Prusa comme indiqué dans leur Wiki . Malheureusement, il n'y a pas de mots sur l'imbrication des commentaires.

J'ai cependant trouvé un commentaire sur les forums cnczone.com concernant l'imbrication des commentaires entre parenthèses.

Les caractères imprimables et les espaces blancs entre parenthèses sont un commentaire. Une parenthèse gauche commence toujours un commentaire. Le commentaire se termine à la première parenthèse droite trouvée par la suite.

Une fois qu'une parenthèse gauche est placée sur une ligne, une parenthèse droite correspondante doit apparaître avant la fin de la ligne.

Les commentaires ne peuvent pas être imbriqués; c'est une erreur si une parenthèse gauche est trouvée après le début d'un commentaire et avant la fin du commentaire.

Voici un exemple de ligne contenant un commentaire: G80 M5 (stop motion)

Source: cnczone.com

Jan Vorisek
la source