Как пользоваться grbl control

Обновлено: 14.05.2024

В общем, Grbl предполагает, что все символы и потоковые данные, отправленные на него, являются G-code, и проанализирует и попытается выполнить его, как только сможет. Однако Grbl также имеет два отдельных системных типа команд, которые находятся за пределами обычной потоковой передачи G-code. Один тип системных команд передается в Grbl как G-code, но начинается с символа $, чтобы сообщить Grbl, что это не G-code. Другой составлен из специального набора символов, который немедленно выдаст команду Grbl выполнить задачу в режиме реального времени, это не часть потока G-code. Системные команды Grbl выполняют такие функции, как управление состоянием машины, сообщают о сохраненных параметрах или действиях Grbl, сохраняют или печатают настройки машины, запускают цикл возврата в исходное положение или заставляют машину двигаться быстрее или медленнее, чем запрограммировано. Этот документ описывает эти «внутренние» системные команды Grbl, что они делают, как они работают и как их использовать.

Grbl 1.1g['$' for help]
Grbl 1.1g['$' для справки]

где
- Grbl – тип прошивки контроллера.
- 1.1g – версия прошивки Grbl.

При вводе в командную строку '$' и нажатии Enter, Grbl должен вывести примерно следующее, в зависимости от версии прошивки и программы управления могут быть отличия:

Команды «$» - это системные команды Grbl, используемые для настройки параметров, просмотра или изменения состояний и режимов работы Grbl, а также запуска цикла возврата в исходное положение. Последние четыре команды, отличные от '$', представляют собой команды управления в реальном времени , которые можно отправлять в любое время, независимо от того, что делает Grbl. Они либо немедленно изменяют поведение бега Grbl, либо немедленно распечатывают отчет о важных данных в реальном времени, таких как текущая позиция (иначе DRO). Существует более десятка команд управления в реальном времени, но они не доступны для ввода пользователем. Смотрите раздел команд реального времени для деталей.

Сейчас мы попробуем разобраться, что это все значит, как и зачем использовать.

$$ и $x=val - команды вывода и записи настроек прошивки GRBL. Мы рассматривали настройку этих параметров в статье " Прошивка GRBL – настройка параметров ".

Параметры G-code сохраняют значения координат смещения для G54-G59 координируют работу, G28/G30 предопределенных позиций, G92 смещение координат, коррекции длин инструмента, и зондирования. Большинство из этих параметров сразу же записываются в EEPROM. Это означает, что они останутся такими же, независимо от выключения питания, пока они не будут изменены явно. Непостоянные параметры, которые не будут сохранятся при перезапуске или выключении питания и повторном включении в G92, смещение длины G43.1 инструмента, и G38.2 данных зондирования.

G28/G30 предварительно определенные позиции могут быть изменены с помощью G28.1 и G30.1 команд, соответственно.

[G54:4.000,0.000,0.000]
[G55:4.000,6.000,7.000]
[G56:0.000,0.000,0.000]
[G57:0.000,0.000,0.000]
[G58:0.000,0.000,0.000]
[G59:0.000,0.000,0.000]
[G28:1.000,2.000,0.000]
[G30:4.000,6.000,0.000]
[G92:0.000,0.000,0.000]
[TLO:0.000]
[PRB:0.000,0.000,0.000,0]

$G — посмотреть анализ состояния G-code

Эта команда напечатает все активные режимы GCode в Grbl. При отправке этой команды, Grbl выдаст ответ начинающийся с [GС: и чтото типа:

[GС G54 G17 G21 G90 G94 М0 M5 M9 T0 S0.0 F500.0]

Эти режимы определяют, какой следующий блок G-code или команды будут интерпретироваться анализатором G-code Grbl. Для тех, кто незнаком с G-code и станками с ЧПУ, анализатор устанавливает режимы в определенном состоянии, так что не надо постоянно указывать анализатору как работать. Эти режимы объединены в так называемые «модальные группы», которые не могут быть одновременно логически активными. Например, группа модальных единиц устанавливает интерпретируется ли ваш G-code программы в дюймах или в миллиметрах.
Краткий перечень модальных групп, поддерживаемых Grbl, будет показан ниже, но более полные и подробные описания можно найти на сайте LinuxCNC . G-code команды жирным шрифтом указывают режимы по умолчанию после включения питания контроллера Grbl или его перезагрузки.

В дополнение к режимам синтаксического анализатора G-code, Grbl сообщит активный номер инструмента Т, скорость вращения шпинделя S, и скорость подачи F, установленные после перезагрузки.

Обратите внимание, что этот список не включает немодальную группу команд G-code и они не перечислены в отчете синтаксического анализатора $G, поскольку они влияют только на текущую строку, в которой они вводятся. Для полноты здесь приведены поддерживаемые немодальные команды Grbl:

Поддерживаемые немодальные команды
G4, G10 L2, G10 L20, G28, G30, G28.1, G30.1, G53, G92, G92.1

$I — Показать информацию о программе

Эта команда выводит ответ пользователю Grbl о версии и дату сборки данной версии программы. Опционально, $I может хранить короткие строки, чтобы помочь определить, с каким ЧПУ вы общаетесь , если у вас есть больше одной, машины с использованием Grbl. Чтобы установить эту строку, отправьте Grbl $I = XXX, где XXX это ваша строка с коментарием, которая должна составлять менее 80 символов. В следующий раз когда вы запросите Grbl с командой $I , Grbl напечатает строку о версии сборке и дате дополнив в конце вашим комментарием.

ПРИМЕЧАНИЕ. Некоторые производители могут заблокировать доступ к перезаписи строки информации о сборке, чтобы они могли хранить там информацию о продукте и коды.

$N — посмотреть стартовые блоки

$Nx блоки запуска, которыеGrbl запускает каждый раз включении питания или перезагрузке Grbl. Другими словами, блок запуска является линиями G-кода, которые вы можете хранить в Grbl авто-запуска, чтобы установить ваш G-код с модальными значениями по умолчанию, или что нужно делать Grbl каждый раз, когда вы запускаете вашу машину. Grbl может хранить два блока G-кода в системе по умолчанию.

Так, при подключении к Grbl, и вводе значения $N, Grbl должен дать короткий ответ вида:

Не так много, но это просто означает, что в строке $N0 нет блока G-code, который Grbl мог бы запустить при запуске. $N1 - следующая строка для запуска.

$Nx=значение — сохранить стартовый блок

ВАЖНО: Будьте очень осторожны при сохранении любых команд движения (G0/1,G2/3,G28/30) в блоках запуска. Эти команды движения будут запускаться каждый раз, когда вы сбрасываете или включаете Grbl, поэтому, если у вас возникла чрезвычайная ситуация и вам необходимо выполнить аварийную остановку и сброс, перемещение блока запуска может и, скорее всего, быстро ухудшит ситуацию. Кроме того, не помещайте никакие команды, которые сохраняют данные в памяти, такие как G10/G28.1/G30.1. Это заставит Grbl постоянно перезаписывать эти данные при каждом запуске и сбросе, что в конечном итоге приведет к износу памяти вашего Arduino.

Типичное использование для блока запуска - просто установить предпочтительные модальные состояния, такие как режим дюймов G20, всегда по умолчанию использовать другую систему рабочих координат или предоставить пользователю возможность запустить какую-то уникальную пользовательскую функцию, которая ему нужна. за их сумасшедший проект.

Чтобы установить блок запуска, введите $N0 =, затем допустимый блок G-кода и ввод. Grbl запустит блок, чтобы проверить, является ли он действительным, а затем ответит ok или error: чтобы сообщить вам, успешно ли это или что-то пошло не так. Если есть ошибка, Grbl не сохранит ее.

Например, предположим, что вы хотите использовать свой первый блок запуска $N0, чтобы установить режимы синтаксического анализатора G-code, такие как рабочая координата G54, режим дюймов G20, плоскость XY G17. Вы должны ввести $N0 = G20 G54 G17 с вводом, и вы должны увидеть ответ ok. Затем вы можете проверить, сохранено ли оно, набрав $N, и теперь вы должны увидеть ответ вроде $N0 = G20G54G17.

Как только у вас есть блок запуска, сохраненный в памяти Grbl, каждый раз при запуске или сбросе вы будете видеть, как ваш блок запуска печатается обратно вам, начиная с open-chevron>, и ответа Grbl: ok, чтобы указать, все ли работает нормально. Итак, для предыдущего примера вы увидите:

Grbl 0.9i [ ‘$’ за помощью]
G20G54G17: ok

Если у вас есть несколько блоков запуска G-code, они будут печатать вам по порядку при каждом запуске. И если вы хотите очистить один из блоков запуска (например, блок 0), введите $N0 = без знака равенства.

ПРИМЕЧАНИЕ. Существуют два варианта включения блоков запуска с запуском. Во-первых, он не будет работать, если Grbl инициализируется в состоянии АВАРИЯ или выходит из состояния АВАРИЯ через разблокировку $X по соображениям безопасности. Всегда обращайтесь к режиму АВАРИЯ и отменяйте его, а затем заканчивайте сбросом, при котором блоки запуска будут запускаться при инициализации. Во-вторых, если у вас включен режим самонаведения, блоки запуска будут выполняться сразу после успешного цикла самонаведения, а не при запуске.

$C — Проверить режим G-code

Этот режим переключает анализатор G-code Grbl на прием всех входящих блоков и их полную обработку, как при обычной работе, но он не перемещает оси, игнорирует задержки и отключает шпиндель и охлаждающую жидкость. Это предназначено для того, чтобы предоставить пользователю способ проверить, как его новая программа G-code работает с анализатором Grbl, и следить за ошибками (и проверять нарушения мягкого лимита, если они включены).

При выключении Grbl выполнит автоматический мягкий сброс (^X). Это делается для двух вещей, немного упрощает управление кодом, но это также мешает пользователям начать работу, когда их режимы G-code не такие, как они думают. Сброс системы всегда дает пользователю новый, последовательный старт.

$X — Выключить сигнализацию блокировки

Режим АВАРИЯ Grbl - это состояние, когда что-то пошло не так, как например, нарушена жесткая граница или прерывание во время цикла, или Grbl не знает свое положение. По умолчанию, если вы включили возврата и включили Arduino, Grbl переходит в аварийное состояние, потому что он не знает свое положение. Аварийный режим блокирует все команды G-code до тех пор, пока не будет выполнен цикл возврата в исходное положение $H, или, если пользователю необходимо переопределить блокировку сигнализации, чтобы переместить свои оси от концевых выключателей, например, блокировка аварийной сигнализации «$X» отменяет блокировки и позволяет функциям G-code снова работать.

Будьте осторожны! Это следует использовать только в чрезвычайных ситуациях. Возможна потеря позтционирования, и Grbl может оказаться не там, где вы думаете. Поэтому рекомендуется использовать инкрементальный режим G91 для коротких ходов. Затем выполните цикл возврата в исходное положение или выполните сброс сразу после этого.

Как отмечалось ранее, строки запуска не выполняются после команды $X. Всегда сбрасывайте, когда вы сбросили сигнал тревоги и исправили сценарий, вызвавший его. Когда Grbl переходит в режим ожидания, строки запуска будут работать в обычном режиме.

$H — Запуск цикла возврата

Эта команда - единственный способ выполнить цикл возврата в Grbl. Некоторые другие контроллеры движения назначают специальную команду G-code для запуска цикла возврата в исходное положение, но это неправильно в соответствии со стандартами G-code. Homing (возврат) - это совершенно отдельная команда, обрабатываемая контроллером.

СОВЕТ: После запуска цикла возврата в исходное положение достаточно бегать вручную все время до положения в середине объема рабочей области. Вы можете установить предварительно определенную позицию G28 или G30 в качестве позиции после возвращения в исходное положение, ближе к месту обработки. Чтобы установить их, вам сначала нужно переместить машину туда, куда вы хотите, чтобы она переместилась после возвращения в исходное положение. Введите G28.1 (или G30.1), чтобы Grbl сохранил эту позицию. Итак, после возвращения «$H», вы можете просто ввести «G28» (или «G30»), и он будет двигаться там автоматически. В общем, переместить ось XY в центр и оставить ось Z вверх. Это гарантирует, что инструмент в шпинделе не сможет вмешаться и что он ничего не зацепит.

$Jx = line - запускает режим движения Jog

Впервые в Grbl v1.1, эта команда выполнит специальное движение. Существует три основных различия между Jog движением и движением, управляемым G-code.

- Как и обычные команды G-code, несколько движений Jog режима могут быть поставлены в очередь в буфере планировщика, но Jog режим может быть легко отменен с помощью команды реального времени jog-cancel или feed-hold. Grbl немедленно удержит текущее движение, а затем автоматически очистит буферы от всех оставшихся команд.
- Jog-команды полностью независимы от состояния синтаксического анализатора G-code. Это не изменит режимы, такие как режим увеличения расстояния G91. Таким образом, вам больше не нужно обязательно возвращать его обратно в режим абсолютного расстояния G90. Это помогает снизить вероятность запуска с неправильными включенными режимами G-code.
- Если мягкие ограничения включены, любая команда Jog режима, которая превышает мягкое ограничение, просто вернет ошибку. Он не выдаст сигнал Аварии, как это было бы с обычной командой G-code. Это обеспечивает гораздо более приятное и плавное взаимодействие с графическим интерфейсом или джойстиком.
Выполнение пробежки требует определенной структуры команд, как описано ниже:

- первые три символа должны быть '$J =', чтобы указать режим.

- команда jog следует сразу после '=' и работает как обычная команда G1.

- скорость подачи интерпретируется только в единицах G94 в минуту. Предыдущее состояние G93 игнорируется во это время.

- XYZ: одно или несколько слов оси с заданным значением.
- F - значение скорости подачи. ПРИМЕЧАНИЕ. Каждому движению требуется это значение, и он не рассматривается как модальный.
- Необязательные слова: Jog выполняется на основе текущего состояния синтаксического анализатора G-code G20/G21 и G90/G91. Если передается одно из следующих необязательных слов, это состояние переопределяется только для одной команды.

- G20 или G21 - дюймовый и миллиметровый режим
- G90 или G91 - абсолютные и дополнительные расстояния
- G53 - Перемещение в машинных координатах
- все остальные G-code, М-code и слова значения не принимаются в команде jog.

- пробелы и комментарии разрешены в команде. Они удалены предварительным парсером.

- пример: G21 и G90 - активные модальные состояния перед движением. Это последовательные команды.

ПРИМЕЧАНИЕ. Дополнительные сведения об использовании этой команды для создания интерфейса джойстика с малой задержкой или интерфейса поворотного набора см. в дополнительной документации.

$SLP - включить спящий режим

Эта команда переведет Grbl в отключенное состояние, отключив шпиндели, контакты охлаждающей жидкости и шагового двигателя, и заблокирует любые команды. Выход из него возможен только при мягком сбросе или выключении питания. После повторной инициализации Grbl автоматически войдет в аварийное состояние, потому что он не уверен, где он находится из-за отключения шаговых двигателей.

Эта функция полезна, если вам нужно автоматически отключить все в конце работы, добавив эту команду в конец вашей программы G-code, настоятельно рекомендуется добавить команды, чтобы сначала переместить ваш станок на безопасное место для парковки до этой команды. Также следует подчеркнуть, что у вас должен быть надежный станок с ЧПУ, который будет отключать все, когда он должен, как ваш шпиндель. Grbl не несет ответственности за любой ущерб, который он может причинить. Никогда не стоит оставлять свою машину без присмотра. Поэтому используйте эту команду с предельной осторожностью!

Программы для работы с GRBL(ЧПУ)

Сегодня мы рассмотрим программы для работы с ЧПУ станками на базе GRBL.

Начнем наверное с самого популярного продукта: GRBL Controller

Во многих обзорах вы можете встретить именно эту программу, я не знаю почему ее считают самой классной, но я пробывал ее использовать с разными версиями grbl и разными платами arduino - очень большая задержка. Бывает отправляешь простую команду типа "G01 X100" и пока она дойдет до платы может пройти от 2 до 5 секунд. А что если твоя дорогая фреза движется к шурупу и нужно срочно остановить работу станка?

Следующая программа JCNC:

К сожалению я так и не смог подключить ее к станку, но у этой программы очень классный редактор GCODE с визуализацией. Я эту программу постоянно использую для проверки траектории с арткама и для написания простых программ.

Universal Gcode Sender

У меня стабильно работает только первая версия программы. У этой программы есть несколько преимуществ:

1) Она написана на JAVA, т.е. кроссплатформена

2) Очень стабильная

Но у нее не хватает всяких "плюшек", таких как редактирование кода, сканирование области обработки. Все это можно сделать с помощью макросов. Данную программу я использую в основном для тестирования и настройки GRBL.

Эта программа наверное одна из самых лучших и кстати именно ее рекомендуют использовать разработчики GRBL. Она написана на Python и тоже кроссплатформенная. Здесь есть все что нужно:

1) Редактор кода

2) Собственная CAM система

3) Умеет работать прямо с DXF файлами

4) Мгновенная отправка кода / Аварийная остановка

5) Работа с Z-щупом и многое другое

Единственный недостаток наверное это то, что некоторые сложные УП (более 2-3мб) не совсем полностью отображаются в окне визуализатора.

А эта программа наверное единственная адекватная для работы с лазерным станком. В программу встроен импорт растровых файлов с различными настройками изображения:

Из векторных файлов поддерживает только SVG, чего по сути достаточно для совместимости с CorelDraw. Функционал программы можно расширить с помощью макросов (настраиваемые кнопки):

В сети еще существует достаточно большое количество программ для работы с GRBL, но как правильно их тяжело установить или уже не поддерживают текущие версии прошивок.

Настройки GRBL arduino контроллера под конкретную механику

Настройки которые нас интересуют выглядит так: $0 и $1 .

Эти 2 настройки устанавливают А и ось Y.

Нам потребуется вычислить количество шагов, которое нужно для того, чтобы переместить головку на 1 миллиметр в любом направлении.

Мы считаем это так:

Количество шагов = количество шагов на оборот х микрошагов / шаг резьбы

То есть, в нашем случае это будет выглядеть так:

20 шагов на оборот х (18 градусов на шаг) х 8 микрошагов (пины MS1 и MS2 подсоединены к +5v на платах EasyDriver-ов) /на 3-миллиметровый шаг резьбы (путь в 3 мм на один оборот).

(20 x 8) / 3 = 53.333333333

Итак введите в терминал: $0=53.333 и $1=53.333, — чтобы установить оси.

Далее вам необходимо сделать мягкий reset, для того, чтобы изменения вступили в действие ($X).
Или вы можете использовать программу Zapmaker’s Grbl Controller для настройки Grbl.

Вам необходимо также ввести:

$ 4 = 200 — Устанавливает скорость по умолчанию, с которой головка движется по время работы.

$ 5 = 200 — Устанавливает скорость по умолчанию, с которой головка движется по время движения между заданиями.

$ 16 = 1 Это задает возможность конечных остановок.

$ 17 = 1 Это задает возврат на базу ($ H), в моем случае- все зависало. Для включения этой функции вам необходимо изменить исходный код для Grbl и перекомпилировать файл .hex. Инструкции, показывающие, как это сделать находятся в нижней части этого шага.

$ 18 = 69 Это установит нулевую точку в левом нижнем углу монтажного стола, когда команда H возврата на базу $ выполняется. Для углубленного понимания этой функции читайте Grbl Wiki.

$ 19 = 200

$ 20 = 200

$ 22 = 2,000 -Это задает расстояние задает дистанцию, на которую оси смещаются от конечных точек после выполнения команды на возврат на базу.

Углубленные объяснения для каждого из параметров Grbl находятся на Grbl Wiki.

Убедитесь в том, что все ваши настройки конфигурации верны, введя $$ в терминал. Вы должны увидеть нечто следующее:

$0=53.333 (x, шагов/мм)
$1=53.333 (y, шагов/мм)
$2=53.330 (z, шагов/мм)
$3=10 (импульс шага, микросекунд)
$4=200.000 (подача по умолчанию, мм / мин)
$5=200.000 (по умолчанию искать, мм / мин)
$6=28 (шаг порт инвертировать маску, Int: 00011100)
$7=50 (задержка простоя шаг, мс)
$8=100.000 (ускорение, мм / сек ^ 2)
$9=0.050 (отклонение перехода, мм)
$10=0.100 (дуги, мм / сегмент)
$11=25 (коррекция н-дуги, целое)
$12=3 (N-десятичные, целое)
$13=0 (отчет дюймов, логическое значение)
$14=1 (автозапуск, логическое значение)
$15=0 (обратный шаг позволен, логическое значение)
$16=1 (жесткие пределы, логическое значение)
$17=1 ( цикл возврата на базу, логическое значение)
$18=69 (самонаведения реж инвертировать маску, Int: 00000000)
$19=200.000 (самонаведение подача, мм / мин)
$20=200.000 (самонаведение искать, мм / мин)
$21=100 (самонаведение дребезга, мс)
$22=2.000 (самонаведение отрыва, мм)

Последним шагом является фокусировка лазера.

Я загрузил небольшой тестовый образец и дал последовательности X запуститься.

Вы можете включать и выключать лазерный диод используя соответствующий флажок Spindle On в программе Zapmaker’s Grbl Controller.

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

Я подложил несколько 3 миллиметровых покладок под лазерным модулем, чтобы немного приподнять его, так как я хотел гравировать трехмиллиметровую фанеру. Это означало, что мне не потребуется каждый раз перенастраивать линзы, когда я захочу поменять материал.

Изменение исходного кода
Во время тестов я обнаружил что программа зависала во время получения команды возврата на базу: $H (homing).
Я подозревал, что проблема заключалась с осью Z, так как мой резак не имел ее.

2. Распакуйте архив

3. откройте файл config.h в вашем текстовом редакторе (можно использовать блокнот)

4. Найдите следующий кусок кода:

5. Замените этот кусок на следующий:

6. Найдите следующий кусок кода:

7. Замените этот кусок на следующий:

8. Сохраните файл

9. Скомпилируйте заново файл grbl.hex . Я использовал Raspberry Pi для компиляции этого hex файла.

Если у вас что то не получится, — я приложил hex файл для вас ниже. Теперь вам надо прошить вашу ардуино, используя файл из этого архива.

Если всё работает корректно и все настройки введены, у вас должно получиться запустить цикл возврата на базу в процессе чего вы увидите как ваш резак установится на ноль. После чего вы можете начать креативить! Удачи !;-)

Как пользоваться grbl control

CNC 3018 (станок с ЧПУ)

CNC 3018 (станок с ЧПУ)

Чтобы вручную изменить например опцию микросекунд шага импульса 10us вы должны ввести , например это:

Примечание: настройки нумерации изменились с версии 0.8с с новой таблицей нумерации

Читайте также: