В данной статье мы рассмотрим основы языка G-кода, его самые важные и распространенные команды и объясним как они работают. Понимание принципов работы G-кода необходимо тем, кто так или иначе связан связан со станками с ЧПУ (плоттерами) или 3D-принтерами. Несколько вариантов подобных плоттеров на основе платы Arduino ранее мы уже рассматривали на нашем сайте - в них вы можете наглядно посмотреть пример практического использования G-кода:
- плоттер с ЧПУ на основе Arduino Uno;
- самодельный лазерный гравер с ЧПУ на Arduino Uno;
- плоттер с ЧПУ на Arduino с автоматической сменой инструмента.
Что такое G-код?
G-код — это язык программирования для станков с числовым программным управлением (ЧПУ). G-код означает «геометрический код». Мы используем этот язык, чтобы сказать машине, что делать или как что-то делать. Команды G-кода указывают машине, куда двигаться, как быстро двигаться и по какому пути следовать.
В случае станка, такого как, например, токарный станок или фрезерный станок, режущий инструмент приводится в действие этими командами, чтобы следовать определенной траектории инструмента, вырезая материал для получения желаемой формы.
Точно так же в случае использования 3D-принтеров команды G-кода предписывают машине наносить материал слой за слоем, формируя точную геометрическую форму.
Как читать команды G-кода?
На первый взгляд, когда вы видите файл G-кода, он может показаться довольно сложным, но на самом деле его не так уж сложно понять если знать основные принципы его формирования.
Если внимательно посмотреть на код, то можно заметить, что большинство строк имеют одинаковую структуру. Кажется, что «сложная» часть G-кода — это все те числа, которые мы видим. На самом деле они являются просто декартовыми координатами.
Давайте посмотрим на одну такую строку и объясним, как она работает.
G01 X247.951560 Y11.817060 Z-1.000000 F400.000000
Строка имеет следующую структуру:
G## X## Y## Z## F##
- во-первых, это команда G-кода, и в данном случае G01 означает «переместиться по прямой линии в определенное положение»;
- далее мы объявляем позицию или координаты со значениями X , Y и Z;
- наконец, с помощью значения F мы устанавливаем скорость подачи или скорость, с которой будет выполняться перемещение исполнительного механизма.
Подводя итог можно сказать, что строка G01 X247.951560 Y11.817060 Z-1.000000 F400 указывает станку с ЧПУ двигаться по прямой от текущего положения к координатам X247.951560, Y11.817060 и Z-1.000000 со скоростью 400 мм/мин. Единицей является мм/мин, потому что, если мы вернемся к примеру изображения G-кода, мы увидим, что мы использовали команду G21 (вверху рисунка), которая устанавливает единицы измерения в миллиметры. Если нам нужны единицы измерения в дюймах, вместо этого необходимо использовать команду G20.
Самые важные/распространенные команды G-кода
Итак, теперь, когда мы знаем, как читать строку G-кода, мы можем взглянуть на наиболее важные или часто используемые команды G-кода. Мы узнаем, как каждый из них работает на нескольких примерах, и к концу этой статьи вы сможете полностью понять, как работает G-код, как его читать, как его модифицировать и даже как написать собственный G-код.
G00 — Быстрое позиционирование
Команда G00 перемещает исполнительный механизм с максимальной скоростью перемещения из текущего положения в указанную точку или координаты, указанные командой. Станок будет перемещать все оси одновременно, поэтому они совершают перемещение одновременно. Это приводит к прямолинейному движению к новой точке положения.
G00 — это движение без резки, и его цель — просто быстро переместить исполнительный механизм в нужное положение, чтобы начать какую-либо работу, например резку или печать.
G01 — линейная интерполяция
Команда G-кода G01 дает указание станку двигаться по прямой линии с заданной скоростью подачи или скоростью. Мы указываем конечную позицию значениями X , Y и Z , а скорость — значением F. Контроллер машины вычисляет (интерполирует) промежуточные точки, через которые нужно пройти, чтобы получить эту прямую линию. Хотя эти команды G-кода просты и интуитивно понятны, за ними контроллер станка выполняет тысячи вычислений в секунду, чтобы выполнять эти движения.
В отличие от команды G00, которая используется только для позиционирования, команда G01 используется когда станок выполняет свою основную работу. В случае токарного станка или фрезерного станка резка материала по прямой линии, а в случае 3D-принтера — экструдирование материала по прямой линии.
G02 — круговая интерполяция по часовой стрелке
Команда G02 указывает станку двигаться по часовой стрелке по кругу. Это та же концепция, что и у команды G01, и она используется при выполнении соответствующего процесса обработки. В дополнение к параметрам конечной точки здесь также необходимо определить центр вращения или расстояние начальной точки дуги от центральной точки дуги. Начальная точка на самом деле является конечной точкой предыдущей команды или текущей точкой.
Для лучшего понимания мы добавим команду G02 после команды G01 из предыдущего примера.
Итак, в первом примере у нас есть команда G01, которая перемещает станок в точку X5, Y12. Теперь это будет отправной точкой для команды G02. С помощью параметров X и Y команды G02 мы устанавливаем конечную точку. Теперь, чтобы добраться до этой конечной точки, используя круговое движение или дугу, нам нужно определить ее центральную точку. Мы делаем это, используя параметры I и J. Значения I и J относятся к начальной или конечной точке предыдущей команды. Итак, чтобы получить центральную точку X5 и Y7, нам нужно сделать смещение 0 по оси X и смещение -5 по оси Y.
Конечно, мы можем установить центральную точку в любом другом месте, таким образом, мы получим другую дугу, которая заканчивается в той же конечной точке. Вот пример этого:
Итак, здесь у нас по-прежнему та же конечная точка, что и в предыдущем примере (X10, Y7), но центральная точка теперь находится в другом положении (X0, Y2). Благодаря этому мы получили более широкую дугу по сравнению с предыдущей.
G00, G01, G02 - пример программирования G-кода вручную
Давайте рассмотрим простой пример фрезерной обработки с ЧПУ, используя рассмотренные нами три основные команды G-кода: G00, G01 и G02.
Чтобы получить траекторию для формы, показанной на рисунке выше, нам нужно выполнить следующие команды G-кода:
1 2 3 4 5 6 |
G00 X5 Y5 ; point B G01 X0 Y20 F200 ; point C G01 X20 Y0 ; point D G02 X10 Y-10 I0 J-10 ; point E G02 X-4 Y-8 I-10 J0 ; point F G01 X-26 Y-2 ; point B |
С помощью первой команды G00 мы быстро переводим исполнительный механизм из исходного положения в точку B(5,5). Отсюда мы начинаем с «резки» со скоростью подачи 200, используя команду G01 . Здесь мы можем отметить, что для перехода из точки B(5,5) в точку C(5,25) мы используем значения для X и Y относительно начальной точки B. Таким образом, +20 единиц в направлении Y приведут нас к точке C(5,25). На самом деле это зависит от того, выбрали ли мы машину для интерпретации координат как абсолютных или относительных. Мы объясним это в следующем разделе.
Как только мы достигаем точки C(5,25), у нас есть еще одна команда G01 для достижения точки D(25,25). Затем мы используем команду G02, круговое движение, чтобы добраться до точки E(35,15) с центральной точкой (25,15). На самом деле у нас есть та же самая центральная точка (25,15) для следующей команды G02, чтобы добраться до точки F(31,7). Однако мы должны отметить, что параметры I и J отличаются от предыдущей команды, потому что мы смещаем центр от последней конечной точки или точки E. Мы заканчиваем траекторию с помощью другой команды G01, которая доставит нас из точки F(31, 7) в точку B(5,5).
Итак, теперь мы можем вручную запрограммировать G-код для создания рассмотренной формы. Однако мы должны отметить, что это не полный G-код, потому что нам не хватает еще нескольких основных команд. Мы создадим полный G-код в следующем примере, так как сначала нам нужно рассмотреть еще ряд команд G-кода.
G03 — круговая интерполяция против часовой стрелки
Как и G02, команда G-кода G03 определяет движение машины по круговой схеме. Единственная разница здесь в том, что движение происходит против часовой стрелки. Все остальные функции и правила аналогичны команде G02.
Итак, с помощью этих трех основных команд G-кода, G01 , G02 и G03, мы можем сгенерировать траекторию буквально для любой формы, которую захотим. На первый взгляд вам показаться это сложной задачей, но на самом деле с ней очень просто справляется специализированное программное обеспечение (CAM) на компьютере. Да, конечно можно и самому вручную программировать программировать команды G-кода, но амного проще и безопаснее доверить это компьютеру.
Но, тем не менее, далее мы рассмотрим еще несколько важных и часто используемых команд G-кода, а в конце статьи приведем реальный пример G-кода.
G20/ G21 – выбор единиц измерения
Команды G20 и G21 определяют единицы измерения G-кода: дюймы или миллиметры.
- G20 = дюймы
- G21 = миллиметры
Необходимо заметить, что единицы измерения должны быть установлены в начале программы. Если мы не укажем единицы измерения, машина будет считать значения по умолчанию, установленные предыдущей программой.
G17/ G18/ G18 – выбор плоскости G-кода
С помощью этих команд G-кода мы выбираем рабочую плоскость станка.
- G17 - плоскость XY
- G18 - плоскость XZ
- G19 - плоскость YZ
G17 используется по умолчанию для большинства станков с ЧПУ, но две других команды также можно использовать для выполнения определенных движений.
G28 — возвращение домой
Команда G28 указывает станку переместить инструмент в исходную точку или исходное положение. Чтобы избежать столкновения с каким-нибудь выступом, мы можем включить промежуточную точку с параметрами X, Y и Z. Инструмент пройдет через эту точку, прежде чем перейти к контрольной точке. G28 X## Y## Z##
Исходное положение можно определить с помощью команды G28.1 X## Y## Z##
.
G90/G91 – команды режима позиционирования G-кода
С помощью команд G90 и G91 мы сообщаем станку как интерпретировать координаты: G90 - абсолютный режим, G91 - относительный режим .
В абсолютном режиме позиционирование инструмента всегда происходит от абсолютной точки или нуля. Таким образом, команда G01 X10 Y5
переместит инструмент точно в эту точку (10,5), независимо от предыдущей позиции.
С другой стороны, в относительном режиме инструмент позиционируется относительно последней точки. Таким образом, если станок в данный момент находится в точке (10,10), команда G01 X10 Y5
переместит инструмент в точку (20,15). Этот режим также называют «инкрементным режимом».
Дополнительные команды и правила
Итак, команды G-кода, которые мы объяснили выше, являются наиболее распространенными, но их намного больше. Существуют такие команды, как компенсация режущего инструмента, масштабирование, рабочие системы координат, выдержка и т. д.
В дополнение к G-коду существуют также команды М-кода, которые используются при создании реальной полноценной программы G-кода. Вот несколько общих команд М-кода:
- M00 – остановка программы
- M02 – конец программы
- M03 — шпиндель ON — по часовой стрелке
- M04 — шпиндель ON — против часовой стрелки
- M05 — останов шпинделя
- M06 — смена инструмента
- M08 – подача охлаждающей жидкости ON
- M09 – охлаждающая жидкость OFF
- M30 – конец программы
В случае 3D-принтера:
- M104 — pапустить нагрев экструдера
- M109 — подождать, пока экструдер не достигнет T0
- M140 — запустить подогрев нагревательного элемента
- M190 — подождать, пока кровать не достигнет T0.
- M106 — установить скорость вентилятора
Некоторым из этих команд нужны соответствующие параметры. Например, при включении шпинделя с помощью M03 мы можем установить скорость шпинделя с помощью параметра S. Таким образом, команда M30 S1000
будет включать шпиндель на скорости 1000 об/мин.
Мы также можем отметить, что многие коды являются модальными , что означает, что они остаются в силе до тех пор, пока не будут отменены или заменены другим кодом. Например, предположим, что у нас есть код для линейного движения резки G01 X5 Y7 F200
. Если следующим движением снова будет линейная резка, мы можем просто ввести координаты X и Y без надписи G01 впереди.
1 2 3 4 5 |
G01 X5 Y7 F200 X10 Y15 X12 Y20 G02 X5 Y5 I0 J-5 X3 Y6 I-2 J0 |
То же самое относится и к параметру скорости подачи F. Нам не нужно включать его в каждую строку, если только мы не хотим изменить его значение.
В некоторых файлах G-кода вы также можете увидеть «N##» перед командами. Слово N служит просто для нумерации строки или блока кода. Это может быть полезно для определения конкретной строки в случае ошибки в огромной программе.
Пример простой программы G-кода
Теперь, прочитав все изложенное выше, мы можем вручную сделать настоящий, актуальный код. Вот его пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
% G21 G17 G90 F100 M03 S1000 G00 X5 Y5 ; point B G01 X5 Y5 Z-1 ; point B G01 X5 Y15 Z-1 ; point C G02 X9 Y19 Z-1 I4 J0 ; point D G01 X23 Y19 Z-1 ; point E G01 X32 Y5 Z-1 ; point F G01 X21 Y5 Z-1 ; point G G01 X21 Y8 Z-1 ; point H G03 X19 Y10 Z-1 I-2 J0 ; point I G01 X13 Y10 Z-1 ; point J G03 X11 Y8 Z-1 I0 J-2 ; point K G01 X11 Y5 Z-1 ; point L G01 X5 Y5 Z-1 ; point B G01 X5 Y5 Z0 G28 X0 Y0 M05 M30 % |
Описание представленного кода:
- Инициализация кода. Символ % всегда присутствует в начале и в конце программы.
- Пустая строка - не нужна, присутствует здесь из-за ограниченных возможностей инструмента показа кода в веб-браузере.
- Настройки кода: задаем программирование в метрической системе (все размеры в мм), плоскость XY, абсолютное позиционирование и скорость подачи 100 дюймов/мин.
- Шпиндель по часовой стрелке со скоростью 1000 об/мин.
- Быстрое позиционирование на B(5,5).
- Контролируемое движение в том же положении, но с опусканием инструмента на -1.
- Линейное режущее движение в положение C(5,15).
- Круговое движение по часовой стрелке к точке D(9,19) с центром в точке (9,15).
- Линейный разрез до точки E(23,19).
- Линейный разрез до точки F(32,5).
- Тот же прямой разрез до точки G(21,5).
- Еще один прямой переход к точке H(21,8).
- Круговая интерполяция против часовой стрелки до позиции I(19,10) с центральной точкой (19,8).
- Линейный разрез до точки J(13,10).
- Круговая резка против часовой стрелки до позиции K(11,8) с центром в точке (13,8).
- Линейная резка в положение L(11,5).
- Заключительное линейное движение резки в положение B(5,5).
- Поднимем инструмент.
- Перейдем в исходное положение.
- Выключим шпиндель.
- Конец основной программы.
А вот как этот код выглядит готовым к отправке на наш станок с ЧПУ через программное обеспечение Universal G-code Sender:
Итак, используя рассмотренные основные команды G-кода, нам удалось написать собственный полноценный G-код. Конечно, этот пример довольно прост, и для более сложных форм нам нужно будет использовать программное обеспечение CAM. Вот пример сложного G-кода формы лошади:
Для сравнения, в этом коде около 700 строк, но все они сгенерированы автоматически. G-код был сделан с использованием программного обеспечения Inkscape. С его помощью можно, например, создать вот такую фигуру из пенопласта:
Заключение
Итак, мы рассмотрели основы G-кода, объяснили наиболее важные и распространенные команды G-кода и вручную создали собственный настоящий G-код. В конце концов, я думаю, что понять G-код не так уж и сложно. Конечно, существует так много других команд и функций, используемых в обработке с ЧПУ или 3D-печати, о которых вы должны знать, но я, думаю, их вы, если понадобится, сможете изучить в специализированных руководствах.
6 265 просмотров
Спасибо, все понятно. Но есть сдвиг в пунктах описания кода.
Подскажите плз в каком месте
в коде 22 строки в описании 20. Всё понятно если вчитываться, но если хочется сравнить определенную строку то возникают проблемы. Смещение начинается со строки 02. она пустая )
Хорошо, спасибо, увидел. Вставил в описание кода что пустая строка не нужна и ее можно убрать. Убрать ее из материала я не смог, инструмент для показа кода почему то не дает это сделать. Видимо, он воспринимает знак "%" как какой то управляющий символ
Спасибо! Объяснения легко усваиваются.
Спасибо. Хорошая понятная статья.