Допускаются ли круглые скобки в комментарии G-кода?

Мне интересно, действителен ли этот фрагмент G-кода:

G0 (Некоторый комментарий (его команда G0)) Y10 Z-5

Я протестировал это на своем китайском станке с ЧПУ, и он удаляет комментарий и работает безупречно.

Машина обрабатывает это как G0Y10Z-5, что кажется мне правильным подходом.

Однако я никогда не видел такого комментария в реальной практике ЧПУ. Было бы неплохо, если бы кто-нибудь смог протестировать его на своем ЧПУ/3D-принтере.

Многие симуляторы G-кода в Интернете не могут обработать такую строку в своем парсере, так что это меня смущает. Я ничего не нашел об этом ни в RepRap Wiki, ни даже в Google.

, 👍10

Обсуждение

КСТАТИ ... Добро пожаловать в 3D-печать! :o), @Pᴀᴜʟsᴛᴇʀ2

Почему бы просто не использовать start-of-line " ; " и избежать всех рисков?, @Carl Witthoft

За символическую плату : -) я напишу регулярное выражение , которое вытащит все "( * )" и заменит новой строкой "; * " Пусть начнутся войны пламени sed vs awk., @Carl Witthoft

Ты прав, Карл. Я просто заботился о стороннем коде, который мне, возможно, когда-нибудь понадобится обработать. Я лично использую только ; комментарии. :-), @Jan Vorisek


2 ответа


Лучший ответ:

4

Похоже, что комментарии внутри круглых скобок не допускаются в многочисленных парсерах (т. е. Марлин). Это, по-видимому, верно для большинства 3D-принтеров. Классические фрезерные станки с ЧПУ используют скобки без проблем.

Он должен работать на принтерах Prusa, как указано в их Вики. К сожалению, о вложенности комментариев нет ни слова.

Однако я нашел комментарий к cnczone.com форумы, касающиеся вложенности комментариев в круглые скобки.

Печатные символы и пробел внутри круглых скобок-это комментарий. Левая скобка всегда начинает комментарий. Комментарий заканчивается первой правой скобкой, найденной после этого.

Как только левая скобка помещается в строку, соответствующая правая скобка должна появиться перед концом строки.

Комментарии не могут быть вложенными; это ошибка, если левая скобка найдена после начала комментария и до конца комментария.

Вот пример строки, содержащей комментарий: G80 M5 (stop motion)

Источник: cnczone.com


,

12

Это не универсально допустимый G-код, и то, как он обрабатывается, зависит от реализации. Вы можете использовать этот стиль комментариев на некоторых машинах, но не на всех.

В отличие от того, как синтаксический анализ был реализован в Marlin (очень распространенная прошивка 3D-принтера), он будет работать нормально, если строка комментария не содержит символов X, Y, Z, E или F. Парсер просто ищет первое вхождение X/Y/Z/E/F, а затем пытается разобрать бит текста, появляющийся после этого символа, в число. Если строка не может быть проанализирована как число, то по умолчанию она равна 0. Например,

 G0 (Некоторый комментарий, содержащий символ Y) Y10 Z-5

будет интерпретироваться как G0 Y0 Z-5, а не как G0 Y10 Z-5, потому что ") " (строка, появляющаяся после первого вхождения "Y") не анализирует ни одно допустимое число. Ваш пример работает нормально, потому что строка комментария не содержит никаких специальных символов.

Marlin поддерживает комментарии в конце строки, которые должны начинаться с точки с запятой и продолжаться до конца строки.

Вот как это работало в старых версиях Marlin. Более новые версии Marlin имеют более продвинутый парсер, но он все равно не будет хорошо работать с этими комментариями в стиле скобок. Лучше всего избегать их, так как совместимость не гарантируется.

,

Для меня это звучит еще более странно. Нет никаких комментариев по поводу такого поведения, например, в RepRap https://reprap.org/wiki/G-code#Comments, @Jan Vorisek

@JanVorisek Я только что заметил, что в новых версиях Marlin он немного отличается. Тем не менее, комментарии в стиле скобок не поддерживаются., @Tom van der Zanden

Вы правы. Просто проверил несколько парсеров, включая Марлина. Я пришел к выводу, что большинство прошивок 3D-принтеров анализируют только точки с запятой в качестве комментариев. Похоже, скобки есть/были? предпочтительный способ работы на фрезерных станках с ЧПУ. Я буду придерживаться точки с запятой, так как в основном забочусь о 3D-печати. Спасибо за ваше время в любом случае :-), @Jan Vorisek