Описание работы G-кода в прошивке GRBL 1.1

Gromit

МЕСТНЫЙ
ПРОВЕРЕННЫЙ
Регистрация
10.09.2025
Сообщения
13
Решения
1
Реакции
31
Баллы
13
Город
Москва
Имя
NoName

Не буду перечислять ошибки в справочнике, так как текст получился и так большой. После внесения изменений в справочник тему необходимо будет удалить, чтобы не дублировать информацию. А также я бы удалил другие темы, которые есть с аналогичной темой.
Далее опишу раздел G-кода так, как я его вижу более корректным.
Будет описана работа только тех команд, которые поддерживаются прошивкой GRBL 1.1h.
Примечание. В прошивке есть пустые команды, которые обрабатываются прошивкой, но никак не влияют на работу станка. Сделано это по той причине, что некоторые CAD-программы генерируют эти команды, но, чтобы не вызывать ошибку и остановку выполнения УП, эти команды обрабатываются без изменений в работе станка.



Первое, с чего стоит начать, это с определения модальных команд (групп, слов).
Весь G-код делится на несколько так называемых модальных групп.
Модальная команда (группа, состояние, слово) — это такая команда, которая переключает состояние станка и остается в нем постоянно до того момента, пока другая модальная команда из той же группы не заменит её. Это означает, что более одной команды из одной группы не могут быть активными одновременно. Вызов одной команды отменяет действие любой другой из той же группы, которая была активна.

В прошивке GRBL имеются следующие модальные группы:
Группа G0 - команды: G4, G10, G28, G28.1, G30, G30.1, G53, G92, G92.1 - Не является(!) модальной группой
Группа G1 - команды: G0, G1, G2, G3, G38.2, G38.3, G38.4, G38.5, G80 - Движение (Motion)
Группа G2 - команды: G17, G18, G19 - Выбор плоскости (Plane selection)
Группа G3 - команды: G90, G91 - Режим расстояния (Distance mode)
Группа G4 - команды: G91.1 - Режим расстояния дуги IJK (Arc IJK distance mode)
Группа G5 - команды: G93, G94 - Режим подачи (Feed rate mode)
Группа G6 - команды: G20, G21 - Единицы измерения (Units)
Группа G7 - команды: G40 - Компенсация радиуса инструмента (Cutter radius compensation mode), G41/42 не поддерживаются
Группа G8 - команды: G43.1, G49 - Смещение длины инструмента (Tool length offset)
Группа G12 - команды: G54, G55, G56, G57, G58, G59 - Выбор системы координат (Coordinate system selection)
Группа G13 - команды: G61 - Режим управления (Control mode)

Модальные М группы:
Группа M4 - Коды: M0, M1, M2, M30 - Остановка (Stopping)
Группа M7 - Коды: M3, M4, M5 - Вращение шпинделя (Spindle turning)
Группа M8 - Коды: M7, M8, M9 - Управление охлаждением (Coolant control)
Группа M9 - Код: M56 - Управление переопределением (Override control)

Также модальными являются некоторые переменные, например T — выбор инструмента. S — установка скорости шпинделя. F — установка скорости подачи и т. д.


Просмотреть некоторые активные модальные состояния можно при помощи команды $G.
Пример выдачи $G < [GC:G1 G54 G17 G21 G91 G94 M5 M9 T0 F10 S200]:
  • G1 — группа G1: Режим движения (движение инструмента, линейная интерполяция)
  • G54 — группа G12: Выбор системы координат (Coordinate system selection)
  • G17 — группа G2: Выбор рабочей плоскости (Плоскость XY YZ XZ)
  • G21 — группа G6: Единицы измерения (Units, миллиметры)
  • G91 — группа G3: Режим перемещения. (Абсолютный или относительный)
  • G94 — группа G5: Режим подачи (Feed rate mode, подача в минуту)
  • M5 — Группа M7: Состояние шпинделя (Spindle stop)
  • M9 — Группа M8: Управление охлаждением (Coolant off)
  • T0 — Выбор инструмента (Tool selection) (Поддерживаются значения от 0 до 255)
  • F10 — Скорость подачи (Feedrate, задается в коде)
  • S200 — Скорость вращения шпинделя (Spindle speed)​

Например, если в данный момент активна команда G91 (относительный режим перемещения), то её может заменить только G90 (абсолютный режим перемещения). Ни один другой код не может изменить это активное состояние кода G91.
Группа_G0(не путать с командой G0) не является модальной, а это значит что вызывать код (G4, G10, G28, G28.1, G30, G30.1, G53, G92, G92.1) необходимо каждый раз заново. Эти команды выполняют некие действия, но не изменяют активное состояние.

Некоторые ошибки кода связанные c неверной работой модальных групп.
Например хотим переместить фрезу на x50 y50. Произвести зондирование и вернуть фрезу в ноль.
Код:
G90 G0 X50 Y50
G38.2 Z-10 F100
X0 Y0
По окончанию кода система выдаст ALARM:5, так как G0 и G38.2 находятся в одной модальной группе. После того как мы вызвали команду G38.2 (зондирование), она переписала состояние с G0 на G38.2, и станок остался в этом состоянии. И в третьей строчке, в момент перемещения в 0-0, станок продолжает думать, что он пытается произвести зондирование. По достижению точки назначения, прерывание не срабатывает, и станок выдает ошибку, что он не достиг зонда.
Код:
G90 G0
X50 Y50 F100
Z-10
X0 Y0
... и т.д.
Не является ошибкой. Станок будет находиться в режиме холостого перемещения(G0), перемещаясь относительно рабочих координат(G90). Указывать в каждой строчке G90 G0 нет необходимости. скорость подачи F100 будет проигнорировано.

Также прежде чем перейти к описанию кодов стоит упомянуть что G-коды делятся еще на два типа. На команды с обязательными параметрами и без обязательных параметров которые могут выполняться самостоятельно.



Модальная группа №1:
G0
Холостое линейное перемещение шпинделя.
Перемещение шпинделя в этом режиме будет осуществляться без учета скорости подачи Fxxx.
Не требует обязательные параметры.

G1
Рабочее линейное перемещение шпинделя.
Перемещение шпинделя в этом режиме будет осуществляться с учетом скорости подачи Fxxx.
Не требует обязательные параметры. Но может вызывать ошибку, если подача F = 0.

G2, G3
Криволинейное перемещение шпинделя по часовой стрелке (G2) и движение против часовой стрелки (G3). При помощи этой команды можно перемещать шпиндель по окружности или дуге окружности.
Требует обязательные параметры. Ручное написание команды имеет сложный синтаксис, команда выдает ошибку, если между указанными точками невозможно построить дугу.
Важные правила:
1) Начальная точка — это текущее положение. Конечная точка должна лежать на окружности. Полная окружность — задать ту же начальную точку как конечную. Проверка расчета, что конечная точка лежит на окружности с центром (I, J), осуществляется формулой (X — (startX + I) )² + (Y — (startY + J) )² = R²
2) Нельзя смешивать R и I, J, K в одной команде.
3) P работает только с I,J (не с R) в GRBL не поддерживается.
4) Z обычно требует I, J для определения плоскости дуги.
5) Выполнение зависит от того, какая активна команда G91 или G90.
6) По умолчанию интерпретация координат I, J, K выполняется в относительном режиме G91.1 (смотри описание модальной группы 4)
I, J — смещение центра дуги от начальной точки по горизонтали и вертикали (обязательны, если нет R).
R — радиус дуги (альтернатива I, J).
P — параметр который в некоторых системах может задавать, например, количество кругов. Не используется в GRBL

Примеры:
Код:
G2 X0 I1               ; минимальные условия для окружности диаметром 1мм
G2 X1 I1                          ;Ошибка: X1 ≠ X0 (неполная окружность без Y)
G2 X10 Y5 R3 F200           ; Дуга по часовой стрелке до точки (10,5) радиусом 3mm
G2 X0 Y0 I10 P2               ; Ошибка:2 полные окружности радиусом 10mm // P - команды не поддерживаются
G91 G2 X0 Y0 Z-2 I2 F200 ; Простая спираль (только Z + I,J)
G90 G2 X0 Y0 Z-2 I2 F200 ; Ошибка: G90 + Z (только в G91)
В общем, правил много, математика расчета сложная, если нужно вручную что-то больше, чем просто окружность.
Для построения простой окружности можно использовать простой код G2 X0 Y0 I1 F200. В этом случае будет построена окружность. Точка старта построения окружности будет лежать на окружности. I1 — это смещение центра окружности от фактического положения фрезы вправо на 1 мм.

Пример фрезерования цилиндрического кармана в два захода
Код:
G21 G90                      ; Первоначальные настройки
G0 Z5                          ; Поднять фрезу на безопасную высоту
G0 X10 Y10                  ; Переходим в центр окружности фрезерования
M3 S1000                     ; Включаем шпиндель со скоростью 1000 (условных единицы)

G90 G1 Z-1 F100                 ; Погружение на глубину 1 мм
G91 G0 X-2                  ; смещаемся влево на размер радиуса окружности
G91 G2 X0 Y0 I2 F150   ; Круговое движение по часовой стрелке с радиусом 2 мм. Подачей 150
G91 G1 X-1                  ; Смещаемся еще на 1 мм(общий радиус 3мм)
G91 G2 X0 Y0 I3  F150  ; Круговое движение по часовой стрелке с радиусом 3 мм
G90 G0 Z5                    ; Поднимаем инструмент на безопасную высоту. Переключаемся в режим абсолютных координат

G0 X50 Y50                  ; Перемещаемся на новую точку в режиме абсолютных координат
;... повторяем цикл фрезерования на новом месте если требуется
Прим. Некоторые коды излишни. Например, G91 в каждой строчке. Но это не будет ошибкой писать их вручную. Так сохраняется читабельность и предотвращает путаницу между тем, какого характера будет движение.



G38.2
G38.3
G38.4

G38.5
Зондирование.
  • G38.2 — выполнение перемещения к заданной точке с остановкой при контакте щупа; если контакт не достигнут, считается ошибкой.
  • G38.3 — выполнение перемещения с остановкой при контакте щупа, но без сигнализации ошибки при отсутствии контакта.
  • G38.4 — перемещение с остановкой при потере контакта щупа, с ошибкой, если контакт не теряется.
  • G38.5 — перемещение с остановкой при потере контакта щупа, без сигнализации ошибки при отсутствии потери контакта.
Требует обязательные параметры:
1) Координаты X Y Z(можно перемещать как по одной оси так и по всем сразу). Перемещение может быть как в абсолютных координатах так и в относительных (G91 G90).
2) F - подача

Пример настройки макроса зондирования:
Код:
G21 G91   ; настройка систем станка
G38.2 Z-30 F100 ; Зондирование на -30 мм с подачей 100
G0 Z1                 ; Подъем шпинделя
G38.2 Z-2 F10     ; Повторное зондирование с меньшей подачей для более точного позиционирования.
G92 Z19.28         ; Устанавливаем значение высоты Z на толщину пробника
G90 G0 Z25         ; Поднимаем шпиндель чтобы можно было достать пробник из под фрезы.
Ваши сообщения автоматически объединены:


Остальной текст не вместился из-за ограничения на форуме более 2000 слов.
Так что вопрос к модераторам как опубликовать остальное?
 
Последнее редактирование:
G80
Отмена циклических команд (Canned Cycle Cancel). Запрещает указание координат. Не вызывает никаких функций движения. Не перемещает оси
Циклических команд G81-84 Не поддерживаются GRBL.


Модальная группа №2:
  • G17— выбор плоскости XY (горизонтальная плоскость). Это обычно плоскость по умолчанию. Все дуги и круговые движения будут выполняться в плоскости XY с движениями по осям X и Y. Используется для большинства фрезерных операций.
  • G18— выбор плоскости ZX (вертикальная плоскость). При активации G18 станок рассматривает плоскость ZX для операций. Это важно для вертикальных движений с эффективной обработкой по осям Z и X, как, например, при токарной обработке или глубоких сверлениях.
  • G19 — выбор плоскости YZ (вертикальная плоскость). При выборе G19 операции интерполяции происходят в плоскости YZ (оси Y и Z). Используется для обработки контуров и сложных форм по этой плоскости.
Работа G17, G18, G19 влияет на интерпретацию команд круговой интерполяции G2 и G3 — в какой плоскости будет строиться дуга.
Не требует обязательные параметры.

Код:
; Переход к плоскости XZ (вертикальная) для, например, токарной обработки или вертикального сверления
G18
G0 X0 Z0            ; Перемещение в начало в плоскости XZ
G1 X20 Z-10 F100    ; Линейное перемещение в плоскости XZ
G3 X0 Z0 I-1 F150  ; Круговая интерполяция против часовой стрелки в плоскости XZ


Модальная группа №3:
  • G90 — режим абсолютных координат. В этом режиме все указанные координаты воспринимаются как абсолютные положения относительно нуля рабочих координат. При выполнении команды перемещения инструмент будет стремиться к точной абсолютной позиции. Например, G1 X10 Y10 означает переместиться в точку с координатами X=10, Y=10 относительно начала координат.
  • G91 — режим приращенных (относительных) координат. В этом режиме указанные координаты интерпретируются как смещения относительно текущего положения инструмента. То есть команда G1 X10 Y10 означает переместиться на 10 единиц по X и 10 по Y от текущей позиции.
Не требует обязательные параметры.


Модальная группа №4:
G91.1 - единственная команда в модальной группе. Команда поддерживается, установлена по умолчанию. Является альтернативой G90.1 которая в GRBL не поддерживается. G91.1 G90.1 изменяют режим интерпретации координат (I, J, K) для команд (G2/G3) перемещения по дуге, который задает способ измерения расстояний для параметров центра дуги. Вызов команды G91.1 ничего не изменяет, так как нет альтернатив.


Модальная группа №5:
  • G94 — режим подачи "единиц в минуту" (Units per minute feed rate mode). Это стандартный режим для большинства операций, где F означает скорость перемещения в мм/мин или дюймах/мин. Если активен G94, то F просто задаёт скорость подачи инструмента. Не требует обязательные параметры.
  • G93 — режим подачи "обратного времени" (Inverse time feed rate mode). В этом режиме параметр F (скорость подачи) интерпретируется как время, за которое нужно выполнить движение. Например, если F=2, значит движение должно быть завершено за 1/2 минуты (30 секунд). Для каждого движения с G1, G2 или G3 в этом режиме обязательно указывать F. Этот режим удобен, когда нужно синхронизировать время выполнения движений.
Не требует обязательные параметры.

Пример
Код:
G93 G91    ; Переход в режим  "обратного времени" и режим относительных перемещений
G1 X-1 F5  ; Перемещение  влево на 1мм за 12 секунд F5 = 1/5 = 0.2 минуты = 12 сек
G1 X3 F5   ; Расстояние перемещения увеличилось в три раза, а время перемещения не изменилось и осталось 12 секунд.
G1 X-6 F5  ; Расстояние увеличилось еще в 2 раза. Время перемещения осталось прежним 12 секунд.
(Прим.: не забывайте, что G0 игнорирует значение подачи и перемещается с максимальной скоростью.)

Модальная группа №6:
  • G21 — установка миллиметрового режима. (установлен по умолчанию). Все координаты, скорости подачи и параметры интерпретируются через миллиметры.
  • G20 — установка дюймового режима. При вызове G20 вся обработка перемещений, размеров, подачи и прочих параметров будет интерпретироваться в дюймах
Не требует обязательные параметры.


Модальная группа №7:

G40 - отключение компенсации радиуса. Поддерживается, но ничего не делает. Единственная команда в модальной группе которую нельзя переключить из-за отсутствия альтернатив. Добавлена для того чтобы не вызывалась ошибка при наличии в G-коде.

ПРИМЕЧАНИЕ ИЗ GRBL: Это не обязательно, так как компенсация радиуса фрезы всегда отключена. Здесь только чтобы поддерживать команды G40, которые часто появляются в заголовках G-кода для установки значений по умолчанию.

Модальная группа №8:

G43.1
Динамическое смещение длины инструмента (Tool length offset enable dynamic).
G43.1 Z2 — Изменит рабочие координаты на +2 мм по координате Z. Команда G43.1 устанавливает активное смещение длины инструмента (TLO). Это смещение затем постоянно применяется ко всем последующим движениям по оси Z, пока не будет отменено командой G49
Малая пригодность команды для станков 3018 с ручной заменой фрезы. Ручная установка всегда происходит с некой погрешностью, и заранее нельзя быть уверенным в том, какой фактический вылет инструмента. Проще заново обнулить Z, чем запоминать номера фрез и их номера в настройках ЧПУ.
Команда G43.1 никак не связана с выбором инструмента(T0). В прошивке Grbl есть возможность в любой команде установить номер инструмента путем отправки T0 - T255, но выбор инструмента ни на что не влияет. Добавлено для совместимости. Поддерживается выбор установка от 0 до 255

G49
Отмена смещения длины инструмента (Tool length offset cancel).Не требует обязательные параметры.


Модальная группа №12:
G54, G55, G56, G57, G58, G59 — предустановленные смещения от машинных координат (Machine Coordinates). Каждый номер — свой «ноль» станка.
G54 — первая рабочая система координат, используется по умолчанию. G55, G56 и так далее — дополнительные системы координат, позволяющие переключаться между разными положениями заготовок на одном столе. Значения, сохраненные в эти регистры, остаются и после перезагрузки ЧПУ. Рабочие координаты, относительно которых происходят все перемещения, высчитываются как «машинные координаты» минус «пользовательские координаты G54-G59»..

Код:
G54           ; Выбрать систему координат G54
G90 G0 X0 Y0 Z5   ; Переместиться в нулевую точку системы G54

G55           ; Выбрать систему координат G55
G90 G0 X0 Y0 Z5   ; Переместиться в нулевую точку системы G55
; И так далее...

Для записи значений в регистрах G54-G59 систем координат (например, чтобы задать положение нуля заготовки) в GRBL используется команда G10.

Код:
G10 L2 P1 X10 Y20 Z0
  • L2 — Режим записи команды. Их два. (Поддерживаются только L2 и L20. Режимы L1 и L10 не поддерживаются )
  • P1 — указание в какой регистр будет производиться запись. (1 — это G54) 2—это G55 и т.д.
  • X10 Y20 Z0 — соответствующие смещения по осям которые будут сохраняться.
L2 — в этом режиме значение X10 Y20 Z0 будет записано непосредственно в регистр G54. После рабочие координаты будут равны путем вычитания из машинных координат, координаты записанные в G54.

Код:
G10 L20 P1 X10 Y20 Z0
L20 - В этом режиме значение X10 Y20 Z0 будут вычтены из машинных координат и записаны в регистр G54.

Для того чтобы создать пользовательский «ноль» в выбранном месте станка, необходимо подвести инструмент и отправить команду.:
Код:
G10 L20 P1 X0 Y0 Z0

Для переключения между пользовательскими системами координат в коде указываются команды G54, G55, G56, G57, G58, G59.


Модальная группа №13:
G61 — режим точной остановки в каждой точке. Поддержка присутствует, но команда ничего не делает. G61.x — не поддерживается, выдаст ошибку.



Не Модальная группа №0:


G4
Задержка выполнения программы. Останавливает выполнение программы на указанное время. Движение прекращается, но система остается включенной. В режиме проверки (Check Mode) G4 пропускается полностью, программа сразу продолжается.

Требует обязательный параметр P — в секундах (можно передавать нецелые значения кратные 0,05сек. Задержка от 50 мс до 54,6 минут).
Применяется, например, после команды запуска шпинделя M3. Шпиндель имеет некую инерцию и раскручивается не мгновенно. Поэтому стоит дать хотя бы 1 секунду на раскручивание шпинделя перед тем, как врезаться в материал.
Код:
 G4 P5 ; задержка на 5 секунд.

G10
Команда установки значений смещений пользовательских систем координат. Работа и синтаксис, описаны выше в "Модальной группе 12". Сама команда модальной не является. Единственная задача записать значение смещений координат XYZ относительно машинных координат в энергонезависимую память станка.

G53
Команда для движения в машинной системе координат, минуя все активные смещения рабочих систем координат (например, G54, G55 и т.д.). Удобно использовать G53, если, например, нужно безопасно поднять шпиндель и не выйти за «софт лимиты», так как работая в рабочих координатах не всегда понятно, на каком расстоянии от края находится шпиндель.
Код:
G53 G0 Z0    ; Быстрое перемещение по оси Z в машинный нулевой уровень
G53 G0 X0 Y0 ; Быстрое перемещение по осям X и Y в машинную нулевую точку

G92
Установка "временного" смещения рабочих координат. Переназначает текущие рабочие координаты без физического движения. Часто используется после зондирования. По сравнению с G54-G59 имеет более быстрый способ ввода кода вручную. Не сохраняется после перезагрузки. G92.1 обнуляет любые изменения внесенные в G92. Просмотреть какое смещение задано в G92 можно при помощи команды $#.
Значения в регистре G92 оказывают влияние на рабочие координаты всегда. Единственный способ "отключить" воздействие на рабочие координаты обнулить значение в G92 при помощи команды G92.1 либо G92 X0 Y0 Z0.
Требует обязательные параметры. С командой G92 необходимо указать как минимум один параметр из XYZ.

Математика рабочих координат:
WPos = MPos - WCS - G92 - TLO
G92 = MPos - WCS - TLO - WPos
  • WPos - Рабочие координаты (Working Position)
  • MPos - Машинные координаты (Machine Position)
  • WCS - Смещение системы координат (Work Coordinate System offset - G54/G55 и т.д.)
  • G92 - Смещение G92
  • TLO - Компенсация длины инструмента (Tool Length Offset)

Код:
$H                             ; Поиск домашнего положение
G90 G0 X20 Y20 Z-5   ; Перемещаемся в позицию x20 y20 z-5
G92 X0 Y0 Z0             ; Установка значение рабочих координат x0 y0 z0
G92.1                        ; Сброс временного смещения. Значения в регистре G92 будут обнулены.
Ваши сообщения автоматически объединены:

просто дальше нажать кнопку "ответить" и печатать дальше.
нет. тут так не работает. выдает ошибку из-за превышения лимита в 2000 слов
 
нет. тут так не работает. выдает ошибку из-за превышения лимита в 2000 слов
Это если Вы пытаетесь сразу, то происходит попытка объединения сообщений. Если подождать какое то время, то сообщения не будут объединятся и все получится.
 
G28
Команда используется для управления возвратом инструмента в сохраненное положение или обход препятствий. Команды G28 и G30 имеют одинаковую логику работы. Отличаются только возможностью записать координаты независимо друг от друга в разные регистры.
Предназначение: дать пользователю две независимые «закладки» для разных целей (например, G28 — точка смены инструмента, G30 — точка для обдува/контроля). Значения в регистре сохраняются в энергонезависимую память станка.
Координаты в регистре G28 можно просмотреть, используя команду $#.
Для записи координат в регистр G28 необходимо использовать команду G28.1.
После вызова G28.1 в регистр будут записаны машинные координаты станка. Перемещение, вызванное командой G28, происходит не в системе рабочих координат, а относительно машинных координат. Поэтому вне зависимости от выбранной пользовательской системы координат G54–G59 вызов G28 всегда приведет в одну позицию относительно машинных координат.
Код:
$H                                    ; Поиск домашнего положения
G21 G90 G0 X20 Y20 Z-5   ; Перемещаемся в нужную точку
G28.1                               ; Сохраняем эту позицию в память
G0 X100 Y100 Z-50            ; Выполняем перемещение/обработку материала в этой точке
G55                                  ; Можем изменить систему координат или сбросить в ноль через G92, неважно.
G28                                  ; Шпиндель вернется в x20 y20 z-5 (машинных координат) независимо от того какие в данный момент рабочие координаты


Внимание! Сохранение координат должна производиться без дополнительных аргументов X Y Z F P и т.д. Поведение может быть непредсказуемым в зависимости от указанных аргументов.
Код:
G28.1 G0 X20 Y20 Z-10 ; Сначала сохранит текущую позицию, после произведёт перемещение по указанным координатам. Ошибку не выдаст.
G28.1 G1 X20 Y20 Z-1    ; Выдаст ошибку.

Вызвать команду G28 можно с дополнительными аргументами X, Y, Z и производить изменение модальных состояний. В этом случае будет активирован возврат инструмента через указанную промежуточную точку.
Код:
; Допустим в G28 уже сохранено положение X50 Y50 Y-10
G21 G90 G0 X20 Y20 Z-5   ; Перемещаемся в нужную точку X20 Y20 Z-5
G28 X0 Y5 Z-10                 ; Шпиндель сначала переместится в предварительную точку X0 Y5 Z-10 относительно рабочих координат, после начнет перемещаться в точку сохраненную в регистре G28
G28 G91 X0 Y5 Z-10          ; Шпиндель переменится на X0 Y5 Z-10 относительно текущей позиции, после переместится в точку сохраненную в регистре G28
G28 G90 G0 X0 Y5 Z-10     ; Ошибка. Нельзя комбинировать с G0 и G1

G30
Команда используется для управления возвратом инструмента в сохраненное положение.
Логика работы команды аналогична G28. Сохранение координат производится при помощи команды G30.1.


Модальная группа M №4:

M0

Команда M0 предназначена для приостановки работы станка до дальнейшего подтверждения оператора.

М1
Поддерживается но ничего не делает. Игнорируется прошивкой. Код переходит к следующей строчке.

M2 и M30
Команда M2 и M30 предназначена для окончания УП. В терминал будет выдано сообщение об окончании УП. В данной реализации GRBL нет различий между M2 и M30, они выполняют ровно одинаковые действия.
  • Программа останавливается
  • В терминал выводится сообщение об окончании УП
  • Выполняется сброс настроек:
    • Режимы движения (G0/G1/G2/G3) сбрасываются на G1 (линейное перемещение)
    • Плоскость выбирается XY (G17)
    • Система координат устанавливается в G54
    • Режим подачи - мм/мин (G94)
    • Шпиндель и охлаждение выключаются
Примечание из прошивки:
"При завершении программы только подмножество G-кодов сбрасывается к определенным значениям по умолчанию, в соответствии с описаниями окончания программы в LinuxCNC и тестированием. Сбрасываются только модальные группы [G-code 1,2,3,5,7,12] и [M-code 7,8,9] к [G1,G17,G90,G94,G40,G54,M5,M9,M48]. Остальные модальные группы [G-code 4,6,8,10,13,14,15] и [M-code 4,5,6] и модальные слова [F,S,T,H] не сбрасываются."


Модальная группа M №7:
M3 M4 M5
M3 — Включение шпинделя по часовой стрелке. Запускает вращение шпинделя в прямом направлении (обычно по часовой стрелке).
M4 — Включение шпинделя против часовой стрелки
M5 — Остановка вращения шпинделя

В сочетании с параметром S задаёт скорость вращения шпинделя, например: M3 S1500
Параметр S задает скорость в абстрактных значениях. Зависит от установки значений параметров $30 $31(Смотри отдельные статьи по настройке параметров $)
Режим проверки: В режиме STATE_CHECK_MODE(команда $C) физического включения/выключения шпинделя не происходит. Включение и отключение режима CHECK_MODE происходит путем отправки команды $С

M7 M8 M9
M7 — Включение туманного охлаждения (Mist Coolant On). По умолчанию команда отключена в конфиге
M8 — Включение полного (поточного) охлаждения (Flood Coolant On)
M9 — Отключение охлаждения (Coolant Off). Выключает обе команды и M8 и M7

M56
M56 (отключен по умолчанию в config.c) — управляет «парковкой» осей: перемещает инструмент/каретку в заранее заданную безопасную позицию (например, в сторону, наверху или в парковочное гнездо) и держит там, пока режим парковки включён.
Включение команды M56 требует более глубокой настройки конфига. При активации #define PARKING_ENABLE имеющейся памяти в Atmega328 не хватает. Поэтому разбор команды будет пропущен.

Системные Команды
  • Команды реального времени (real-time commands) - ~, !, ?, $X
  • Системные команды (system commands) - $, $$, $#, $G, $I, $N, $C, $H
  • Команды настройки (settings commands) - $x=val
  • Jog команды (jog commands) - $J=

Команда !
Команда паузы во время выполнения УП.
  • Останавливает движение в любой момент
  • Система переходит в STATE_HOLD
  • Шпиндель и охлаждение продолжают работать
  • Координаты сохраняются
  • ! - отмена jog (только в STATE_JOG)

Команда ~
Команда возобновления движения и выхода из паузы.
  • Возобновляет движение с места остановки
  • Система возвращается в STATE_IDLE
  • Движение продолжается с тех же координат
  • ~ - не используется для jog
Команда ?
Команда ? в GRBL — это команда реального времени для запроса отчёта о состоянии станка.
Пример ответа на запрос <Idle|MPos:0.000,0.000,0.000|Bf:15,127|FS:0,0|WCO:0.000,0.000,0.000>
  • Idle — текущее состояние станка (в данном случае — "ожидание", то есть станок не выполняет движения).
  • MPos:0.000,0.000,0.000 — текущие координаты инструмента в машинной системе координат (Machine Position).
  • Bf:15,127— состояние буферов Grbl:
    • первое число (15) — количество доступных секций в буфере планировщика (Planner Buffer),
    • второе число (127) — количество байт доступных в буфере приема последовательного порта (Serial RX Buffer).
  • FS:0,0 — текущие значения подачи (Feedrate) и скорости шпинделя (Spindle speed). В вашем примере они равны 0.
  • WCO:0.000,0.000,0.000 — смещение рабочей координатной системы (Work Coordinate Offset), то есть смещение между машинными и рабочими координатами.
Примечание: В Candle команда отрабатывается но не выводится в терминале. в UGS команда выводит информацию в терминал

Ctrl-Х
Команда для экстренной остановки.
Команду Ctrl-X нельзя ввести через терминал и клавиатуру в программе Candle. Ctrl-X — это название из старых систем, которые при нажатии Ctrl-X отправляли символ 0x18 из таблицы символов ASCII. Также этот символ еще называют CAN (cancel). Не имеет графического отображения и является служебным непечатаемым. В программе Candle для отправки этого символа используется кнопка reset в интерфейсе программы.


Команда $X
Команда $X - разблокировка после аварии. Срабатывает только в том случае если система находится в STATE_ALARM. В любых других состояниях команда $X игнорируется в выдается сообщение "ok"

Команда $
Выдает список системных команд.

$$
Команда в GRBL используется для вывода текущих настроек контроллера. По умолчанию существует около 30 основных настроечных параметров. Подробно все настройки описаны в другой статье.

$#
Команда в GRBL используется для вывода информации о текущих сохранённых пользовательских координат G54-G59, а также G28 G30 G92 TLO PRB

$G
Команда показывает текущее состояние G-кода: активные модальные команды, систему координат, единицы измерения, режимы движения, состояние шпинделя и охлаждения.
Формат вывода: [GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
  • G0-режим движения,
  • G54-система координат,
  • G17-плоскость XY,
  • G21-миллиметры,
  • G90-абсолютные координаты,
  • G94-подача мм/мин,
  • M5-шпиндель выключен,
  • M9-охлаждение выключено,
  • T0-инструмент,
  • F0-текущая подача,
  • S0-скорость шпинделя.

$I
Команда используется для запроса информации о версии прошивки и дате её сборки

$N
Команда в GRBL используется для просмотра регистра стартовых команд. Используется для инициализации системы - установки систем координат, единиц измерения, режимов работы.

Код:
$N0=G54 G21 G90 G94     ;Запись в регистр N0: рабочая система G54, XY плоскость, мм, абсолютные, мм/мин
$N1=G0 X100 Y100           ;Запись в регистр N1: После запуска прошивки перемещение шпинделя в X100 Y100
$N0=                                ;Очистка регистра N0. После "=" не должно быть символов
Код в стартовых регистрах выполняется только после выполнения поиска домашнего положения по всем осям ($H). Либо если при старте системы отключен в конфиге запуск станка с предварительно включенным статусом ALARM. В режиме поиска домашнего положения отдельно по осям ($HX) не работает.

$C
Переключает состояние станка в режим "проверки" (check mode). При активации Grbl парсит G-код без выполнения физических движений. Проверяет корректность программы на ошибки. При повторной отправке(отмены режима "проверки") $C проверочный режим отключается и выполняется сброс системы аналогичный команде "Ctrl-Х" . Работает только когда станок не выполняет движения.
Поведение системы:
  • Все движения парсятся, но не выполняются физически
  • Шпиндель и охлаждение остаются выключенными
  • Проверяются soft limits и корректность G-кода
  • Команда зондирования возвращает "ок"
  • Система показывает состояние Check в статусе
Назначение: Безопасная проверка УП без риска столкновений или движения.

$H
Команда поиска домашнего положения.
Команда зависит от множества переменных настроек $xx.
Основные настройки:
  • $22=1 - разрешение homing (0-выкл, 1-вкл)
  • $23=3 - направление homing (битовая маска инверсии осей)
  • $24=100.000 - скорость поиска (locate feed rate, mm/min)
  • $25=3000.000 - скорость подхода (seek rate, mm/min)
  • $26=250 - задержка дребезга (debounce delay, ms)
  • $27=1.000 - отвод от концевика (pull-off distance, mm)
Также в config.h имеется множество настроек поиска домашнего положения. Например, параметр #define HOMING_SINGLE_AXIS_COMMANDS отвечает за включение возможности производить поиск домашнего положения отдельно по одной выбранной оси, а не все сразу. Его нужно раскомментировать, и тогда станут доступны команды $HX, $HY и $HZ.

$x=val
Способ записи(изменения) переменных для настройки системы станка. Длительность импульсов. Программные ограничения рабочей зоны. Максимальные скорости по осям и многое другое. Настройка этих параметров описана в другой статье. Просмотреть значения в переменных можно при помощи команды $$. (Смотри отдельную статью по настройке переменных)

$J=
Jog (от англ. jog — "подвинуть") — это команда для ручного перемещения инструмента на станке. В Grbl она подается через строку вида $J= со значениями координат и скоростью (feed rate). Команда работает только в том случае если система находится в режиме ожидания(STATE_IDLE) или в режиме перемещения(STATE_JOG). Основное предназначение отделить в прошивке команды от УП и команды от терминала станка(Специальная стойка или графический интерфейс программы). Jog-команда не "перехватывает" движение, она не ставит задачу в очередь планировщика наряду с программой — она просто исполняется сразу, когда станок не занят. Если станок выполняет работу и на стойке ЧПУ случайно была отправлена команда на перемещение, то она будет проигнорирована.
Код:
$J=G21 G90 X10 Y0.0 Z0.0 F2000
$J=G91 X50 Y20 Z-5 F20

$J= - работает только с командами из модальных групп:
MODAL_GROUP_G3 [G90,G91]
MODAL_GROUP_G6 [G20,G21]
MODAL_GROUP_G0 [G4,G10,G28,G28.1,G30,G30.1,G53,G92,G92.1]

$RST=
Команда сброса настроек. Варианты:
  • $RST=* - Сброс всех настроек к заводским. Полный сброс всего.
  • $RST=$ - Сброс только параметров $x к заводским.
  • $RST=# - Сброс всех смещений (G54-G59, G28, G30) к нулю.





Просьба сразу закрыть тему.
 
После G3 можно добавить -
G4
Используется для формирования паузы (задержки) перед выполнением дальнейших команд.
Например, G04 P0.3 - пауза 0.3 секунды
 
Последнее редактирование:
Дописывать надо.
Команда ? в GRBL — это команда реального времени для запроса отчёта о состоянии станка.
Ниже надо указать какая программа сендер с какой периодичностью её выдаёт.
Пример ответа на запрос <Idle|MPos:0.000,0.000,0.000|Bf:15,127|FS:0,0|WCO:0.000,0.000,0.000>
Есть конкретные ответы в определённой последовательности.
Плюс зависимость от $10.

$H
Команда поиска домашнего положения.
Добавить про: HOMING_FORCE_SET_ORIGIN
 

Во налетели, как мёд так ложкой.... :D

оффтоп
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

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

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать