Код G | Группа | Функция |
G00* | 01 | Позиционирование (ускоренный ход) |
G01 | 01 | Линейная интерполяция (подача на врезание) |
G02 | 01 | Круговая интерполяция против часовой стрелки |
G03 | 01 | Круговая интерполяция по часовой стрелке |
G04 | 00 | Выдержка (пауза) |
G10 | 00 | Ввод данных программы |
G11 | 00 | Ввод данных программы- конец режима |
G18* | 16 | Выбор плоскости ZpXp |
G20 | 01 | Черновой цикл за один проход |
G21 | 01 | Цикл нарезания резьбы за один проход |
G22* | 09 | Запомненный предел перемещения оси активизирован |
G24 | 01 | Цикл подрезания торца за один проход |
G28 | 00 | Возврат к референтной точке |
G30 | 00 | Возврат к базовым 2-й, 3-й и 4-й точке |
G33 | 01 | Нарезание резьбы |
G34 | 01 | Нарезание резьбы с переменным шагом |
G40* | 07 | Окончание компенсация радиуса инструмента |
G41 | 07 | Компенсация радиуса инструмента справа |
G42 | 07 | Компенсация радиуса инструмента слева |
G52 | 00 | |
G53 | 00 | Создание локальной системы координат |
G53 | 00 | Создание станочной системы координат |
G54* | 14 | Выбор системы координат детали 1 |
G55 | 14 | Выбор системы координат детали 2 |
G56 | 14 | Выбор системы координат детали 3 |
G57 | 14 | Выбор системы координат детали 4 |
G58 | 14 | Выбор системы координат детали 5 |
G59 | 14 | Выбор системы координат детали 6 |
G65 | 00 | Макровызов |
G66 | 12 | Модальный макровызов |
G67* | 12 | Окончание модального макровызова |
G70 | 06 | Ввод размеров в дюймах |
G71 | 06 | Ввод размеров в мм |
G72 | 00 | Цикл чистовой обработки |
G73 | 00 | Цикл черновой обработки с несколькими проходами |
G74 | 00 | Цикл подрезки торца с несколькими проходами |
G75 | 00 | Цикл повторения профиля с несколькими проходами |
G76 | 00 | Цикл сверления с с удалением стружки в конце |
G77 | 00 | Цикл сверления наружного/внутреннего диаметра |
G78 | 00 | Цикл для многозаходной резьбы |
G80* | 10 | Отмена цикла сверления |
G83 | 10 | Цикл радиального сверления |
G84 | 10 | Цикл осевого нарезания резьбы |
G86 | 10 | Цикл радиального сверления |
G90* | 03 | Программирование в абсолютных величинах |
G91 | 03 | Программирование в приращениях |
G92 | 00 | Установка координатной системы или макс, скорости вращения шпинделя |
G94 | 05 | Подача в мм/мин |
G95* | 05 | Подача в мм/оборот |
G96 | 02 | Включение постоянной скорости резания |
G97* | 02 | Выключение постоянной скорости резания |
G98 | 11 | Возврат к начальной плоскости цикла сверления |
G99 | 11 | Возврат к плоскости точки R цикла сверления |
G112 | 21 | |
G113 | 21 | |
G112 | 21 | Режим интерполяции в полярных коодинатах |
G113 | 21 | Аннулирование режима интерполяции в полярных коодинатах |
Функции G - это подготовительные функции, которые отражают вид перемещения станка, режим интерполяции и тип размеров. Существует два типа функций G:
Не модальные функции G группы 00, которые активны только в каждом кадре;
Модальные функции G (другие, чем те, которые относятся к труппе 00), действие которых продолжается до тех пор, пока они заменятся другими функциями той же группы.
Функции G, отмеченные звездочкой (*) являются активными при включении станка или после сброса числового управления (RESET).
Если какая-либо функция G запрограммирована, но она не входит в приведенный перечень или если она не соответствует ни одной из деблокированных опций, тогда будет индицироваться аварийное сообщение номер 010.
Многие функции G можно программировать в одном и том же кадре, однако, они не должны принадлежать к одной и той же группе. Если функции G одной и той же группы имеются в одном кадре, тог-да будет отрабатываться только последняя.
G00 - Позиционирование на ускоренном ходу. Инструмент перемещается взапрограммированную координату,заданную либо в абсолютных величинах, либо в приращениях. Вид перемещения инструмента может определяться параметром станка.
нелинейное перемещение происходит отдельно по каждой оси X и Z, траектория движения инструмента не прямая.
линейное траектория инструмента - это линейная интерполяция как при С01.
Позиционирование происходит на подаче, которая требует минимального времени перемещения, но при этом не превышает величины ускоренного хода каждой оси.
G01 - линейная интерполяция (рабочая подача). Данная функция управляет линейным перемещением инструментов. Она может задаваться как в абсолютных величинах, так и в приращениях.
Скорость подачи задаётся функцией F...
G02 - круговая или винтовая интерполяция против часовой стрелки.
G03 - круговая или винтовая интерполяция по часовой стрелке.
Направления перемещения, которое вызывается данными функциями в плоскости ZX. Некоторые коды могут отличатся у разных производителей систем ЧПУ , но это редкость.
В погоне за мощными постт процесорами - CAM-приложениями станочники не замечают недорогой, доступный и легкий в применении и изучении программмный продукт. На всех форумах, куча вопросов умным гуру - как разобраться в настройках универсальных программ, рыская по интернету в поисках взломанных копий дорогих программам, мы почему-то не задумываемся, что легче приобрести недорогой программмный продукт и честно и законно, а что важно - и весьма эффективно, применять его на своем оборудовании.
Всё большее распространение сейчас получают домашние хоббийные и самодельные или ретрофитные станки с ЧПУ или станки конструкторы. С программой управления обычно всё понятно - это MACH, практически, нет альтернатив. А с выбором пост-процессора у домашнего мастера обычно возникают проблеммы.
Рассмотрим использование станка с ЧПУ для создания несложного барельефа.
Недорогое решение вопроса G-кода для этой цели - простая и удобная программа Bmp2Cnc.
G-кодовую управляющую программу (УП G-кодов) Bmp2Cnc создает по полутоновому изображению. В программу также можно закачать и цветную фотографию: есть возможность конвертирования цветной картинки в полутоновую, но мы здесь для примера будем применять уже готовый черно-белый рисунок:
Разберём работу с программой по шагам.
Итак, загружаем картинку в программу . Меняем размер изображения на тот, который соответствует размеру будущей барельефа. Вводим значение 100 мм в окошко "Ширина" и, если в чекбоксе ниже стоит птичка, высота картинки изменяется с тем же масштабом:
Далее выбираем ноль. Проще всего за начало координат УП принимать левый нижний угол картинки. Почему? Удобство заключается в том, что габариты барельефа будут в дальнейшем понятнее отображаться в программе управления Mach3, легче далее будет манипулировать управляющей программой - масштабировать деталь, зацикливать, т.е. выполнять несколько одинаковых обработок одной управляющей программой на одной заготовке, и так далее:
Наступает самый интересный момент. Сейчас мы увидим деталь в объеме. В секции "Глубина" мы задаем глубины для белого и черного цвета изображения. Для нашей барельефа размерами 100 на 100 устанавливаем глубину для самого темного оттенка черного сначала 10 мм, нажимаем кнопку "Применить". Через секунду мы видим полученный рельеф в окне графической визуализации:
Нужно добавить еще объему? Задаем глубину 15 мм. Теперь деталь смотрится достаточно объемно:
В следующем диалоге bmp2cnc выбираем подходящий для нашей системы постпроцессор - Mach2-3 в миллиметрах и переходим к выбору инструмента :
Подбираем подходящую фрезу с острым носиком, которая будет достаточно чисто обрабатывать нашу деталь:
Выбирая диаметр инструмента - фрезы и иту параллельных проходов, не стоит увлекаться и задавать слишком высокие параметры - иначе обработка растянется на часы или даже сутки! Здесь лучше пойти на компромисс, пусть деталь получится слегка шершавой, в конце концов, пройтись шкуркой, в любом случае, придется (так как исходная картинка была невысокого качества), зато станок выполнит обработку гораздо быстрее:
Число проходов по глубине можно задать любое в зависимости от твердости материала, качества инструмента и т.д.
Здесь в шестом диалоге программы есть очень полезная функция, которая, кстати, в других маститых программах и реализуется "со скрипом". Нажатием одной кнопки можно отсечь лишние для обработки плоскости, чем существенно укоротить время обработки. Мы отсекаем нижнюю плоскость - и наша модель принимает окончательный вид :
Нажатие кнопки "Вычислить" - и мы видим полученные траектории обработки. В отдельном окошке - готовая управляющая программа:
Далее можно запустить имитацию обработки . Анимированный инструмент-фреза на экране программы будет перемещаться по созданным в Bmp2Cnc траекториям, предоставляя нам прекрасную визуализацию работы станка:
Вот и всё . Файл УП G-кодов можно отдавать на станок, а результаты работы можно сохранить как Bmp2Cnc-проект для последующих обращений и изменений, или как Stl или Dxf модель.
Готовая УП G-кодов загружена в Mach3:
Программирование обработки на современных станках с ЧПУ осуществляется на языке, который обычно называют языком ИСО (ISO) 7 бит, или языком G- и М-кодов. Коды с адресом G, называемые подготовительными, определяют настройку СЧПУ на определенный вид работы. Коды с адресом М называются вспомогательными и предназначены для управления режимами работы станка.
Например, если программист хочет, чтобы инструмент перемещался по прямой линии, он использует G01. А если необходимо произвести смену инструмента, то в программе обработки он указывает М06.
Для управления многочисленными функциями станка с ЧПУ применяется довольно большое число различных кодов. Тем не менее, изучив набор основных G- и М-кодов, вы легко сможете создать управляющую программу.
В табл. 5.1 приведен список базовых кодов, которые мы подробно рассмотрим в этой и последующих главах. А в главе «Справочник G- и М-кодов» вы найдете подробное описание всех стандартных кодов и примеры их использования.
Таблица 5.1. Базовые коды программирования обработки
Код (функция) | Назначение и пример кадра с кодом |
---|---|
Осевое перемещение | |
G00 | Ускоренный ход – перемещение на очень высокой скорости в указанную точку G00 X10. Y20. Z25. |
G01 | Линейная интерполяция – перемещение по прямой линии на указанной скорости подачи G01 X10. Y20. F100 |
G02 | Круговая интерполяция – перемещение по дуге по часовой стрелке на указанной скорости подачи G02 X10. Y20. R10. F100 |
G03 | Круговая интерполяция – перемещение по дуге против часовой стрелки на указанной скорости подачи G03 X10. Y20. R10. F100 |
Настройка | |
G20 | Ввод дюймовых данных G20 G00 X10. Y20 |
G21 | Ввод метрических данных G21 G00 X10. Y20 |
G90 | Абсолютное позиционирование – все координаты отсчитываются от постоянной нулевой точки G90 G00 X10. Y20 |
G91 | Относительное позиционирование – все координаты отсчитываются от предыдущей позиции G91 G00 X10. Y20 |
Обработка отверстий | |
G81 | Цикл сверления G81 X10. Y20. Z-5. F30 |
G82 | Цикл сверления с задержкой на дне отверстия G82 X10. Y20. Z-5. R1. P2. F30 |
G83 | Прерывистый цикл сверления G83 X10. Y20. Z-5. Q0.25 R1. F30 |
G85 | Цикл растачивания отверстия G85 X10. Y20. Z-5. F30 |
Вспомогательные коды (функции) | |
M00 | Запрограммированный останов – выполнение программы временно прекращается |
M01 | Запрограммированный останов по выбору – выполнение программы временно прекращается, если активирован режим останова по выбору |
М03 | Прямое вращение шпинделя – шпиндель вращается по часовой стрелке |
М04 | Обратное вращение шпинделя – шпиндель вращается против часовой стрелки |
М05 | Останов шпинделя |
М06 | Автоматическая смена инструмента М06 Т02 |
M08 | Включение подачи охлаждающей жидкости |
M09 | Выключение подачи охлаждающей жидкости |
M30 | Конец программы, перевод курсора к началу программы |
Добрый день Уважаемые читатели!
Программа, написанная с использованием G-кода, имеет жесткое строение.
Все команды управления объединяются в кадры - состоящие из одной или более команд.
Кадр завершается символом перевода строки (CR/LF).
Порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды, затем команды перемещения, затем выбора режимов обработки и технологические команды.
Если говорить коротко, то наш ПК через USB, просто посылают команды на порт принтера (микроконтроллера), а принтер без прикословно их выполняет.
Немного забегая вперед скажу, что G-код для принтера местами отличается от привычного G-кода. Какие-то команды были переделаны под нужды принтера, какие-то были удалены, какие-то вообще не используются, но в целом все очень похоже.
Описание команд будет производится для прошивки MARLIN , возможно будет работать и на других прошивках.
Будут рассмотрены самые только самые основные команды (рабочий минимум), в поисках экзотики, можно пройти по ссылке .
Сами команды делятся на группы:
G - Подготовительные (основные) команды;
М - Вспомогательные (технологические) команды.
Эти команды имеют параметры.
X - Координата точки траектории по оси X [G0 X100 Y0 Z0 ]
Y - Координата точки траектории по оси Y [G0 X0 Y100 Z0 ]
Z - Координата точки траектории по оси Z [G0 X0 Y0 Z100 ]
E - Координата точки выдавливания пластика [G1 E100 F100 ]
P - Параметр команды [M300 S5000 P280 ]
S - Параметр команды [G04 S15 ]
F - Параметр команды, подача (скорость) [G1 Y10 X10 F1000 ]
G - команды
G0 - Холостой ход, без работы инструмента [G 0 X 10 ]
G1 - Координированное движение по осям X Y Z E [G 1 X 10 ]
G4 - Пауза в секундах [G4 S15 ]
G28 - Команда Home - паркуем головку [G28 Y0 X0 Z0 ]
G90 - Использовать абсолютные координаты [G90 ]
G91 - Использовать относительные координаты [G91 ]
G92 - Установить текущую заданную позицию [G92 ]
Пояснение:
Относительные координаты - это координаты относительно текущего положения головки.
На пример, если головка находиться в положении X10 Y10, то при подаче команды G91
G1 X10 F1000 , произойдет смещение головы на 10 мм по оси Х на скорости 1000.
Эту команду можно делать много раз, до достижения «софтового» ограничение в прошивке.
Абсолютные координаты - это координаты, строго привязанные к рабочей области.
При выполнении команды G90 G1 X10 F1000 - головка сместиться в координату X10 на скорости 1000.
Команда выполниться только один раз.
Обычные команды
M0 - Сделать паузу и ожидать нажатия кнопки на LCD дисплеи (работает если в прошивку установлен параметр ULTRA_LCD) [G0 X10 Y10 Z10 M0 ]
M17 - Подать ток на двигатели (двигатели руками не вращаются)
M18 - Убрать ток с двигателей (двигатели можно вращать руками, аналог M84)
M42 - Управление контактами ARDUINO MEGA 2560 [M42 P4 S255 ]
M80 - Включить питание, только для ATX - блок питания
M81 - Выключить питания, только для ATX - блок питания
M84 - Выключение всех осей (моторов после простоя) [M84 S10 ]
М112 - Экстренная остановка
M114 - Получить текущие координаты
M115 - Получить версию прошивки
M117 - Написать сообщение на экране [M117 Hello World ]
M119 - Получить статус концевиков
M300 - Проиграть звук [M300 S5000 P280 ]
Команды SD карты
M21 - Инициализировать SD карту
M22 - Использовать SD карту
M23 - Выбрать файл с SD карты [M23 filename.gcode ]
M24 - Начать/возобновить печать с SD карты
M25 - Пауза печати с SD карты
M26 - Установить позицию SD карты в байтах [M 26 S 12345 ]
M27 - Узнать статус печати с SD карты
M28 - Записать файл на SD карту [M 28 filename . gcode ]
M29 - Закончить записать файла на SD карте
M30 - Удалить файл с SD карты [M 30 filename . gcode ]
M31 - Получить значение, сколько прошло времени с последнего M109
M32 - Выбрать файл с SD карты и начать печатать [M 32 / path / filename # ]
M928 - Логирование на SD карту [M 928 filename . gcode ]
Экструдер
M82 - Установить экструдер в абсолютную систему координат
M83 - Установить экструдер в относительную систему координат
M104 - Ожидание нагрева экструдера до определенной температуры [M104 S190 ]
M105 - Получить текущую температуру экструдера [M105 S2 ]
M106 - Включение вентилятора обдува детали [M106 S127 ] - мощность 50%
M107 - Выключение вентилятора обдува детали [M 107 ]
M109 - Нагреть экструдер и удерживать температуру [M109 S215 ]
Стол
M140 - Установить температуру стола [M140 S65 ]
M190 - Нагреть стол и удерживать температуру [M190 S60 ]
В Pronterface можно включить режим ответа в меню Settings / Debug communications , программа будет писать все ответы от принтера.
Можно дописать в слайсерах (Slic3r и Cura) в начале и в конце G-код файла.
Или открыть файл с G-кодом в блокноте и написать все руками. =)
M190 S60 - включаем нагрев стола и ждём, пока он не нагреется до температуры 60 градусов
M109 S210 - включаем нагрев сопла и ждём, пока оно не нагреется до температуры 210 градусов
G21 - устанавливает метрическую систему координат
G90 - устанавливает абсолютную систему координат
M82 - устанавливает абсолютную систему координат для экструдера
M107 - выключаем обдув детали
M300 S5000 P280 – звуковой сигнал
G28 X0 Y0 - команда Home X Y
G28 Z0 - команда Home Z
G1 X100 Y100 Z5 F1000 - центруем сопло относительно стола
G92 E0 - обнуляет количество выдавленного пластика
G1 F300 E4 - выдавливаем 4 мм пластика со скоростью 300 мм
M117 Printing - выводит сообщение на экран
M106 S125 - включаем обдув детали со скоростью 50%
G1 Z0 - опускаем сопло на 0 мм
G1 X96.11 Y110.92 E87.55
G1 Z0.2 - поднимаем сопло на 0.2 мм
G1 X96.11 Y111.00 E89.60 - ездим по координатам и выдавливаем пластик
M140 S50 - изменяем температуру стола
G1 Z4.8 - поднимаем сопло на 4.8 мм
G1 X96.11 Y110.92 E87.55 - ездим по координатам и выдавливаем пластик
G1 Z5 - поднимаем сопло на 5 мм
G1 X96.11 Y111.00 E89.60 - ездим по координатам и выдавливаем пластик
G91 - устанавливает относительную систему координат
G1 E-5 F200 - всасывание экструдером 5 мм прутка
M104 S0 - отключением нагрев экструдера
M140 S0 - отключением нагрев стола
M107 - выключаем обдув детали
M84 - выключаем шаговые двигатели
M300 S5000 P280 – звуковой сигнал
Благодарю Вас за внимание!
На производстве, где работают различные станки с числовым программным управлением, используется множество различного программного обеспечения, но в большинстве случаев весь управляющий софт использует один и тот же управляющий код. Программное обеспечение для любительских станков, так же базируется на аналогичном коде. В обиходе его называют "G-код". В данном материале представлена общая информация по G-коду (G-code)
G-code это условное именование языка для программирования устройств с ЧПУ (CNC)(Числовое программное управление). Был создан компанией Electronic Industries Alliance в начале 1960-х. Финальная доработка была одобрена в феврале 1980-о года как RS274D стандарт. Комитет ИСО утвердил G-code, как стандарт ISO 6983-1:1982, Госкомитет по стандартам СССР — как ГОСТ 20999-83. В советской технической литературе G-code обозначается, как код ИСО-7 бит.
Производители систем управления используют G-code в качестве базового подмножества языка программирования, расширяя его по своему усмотрению.
Программа, написанная с использованием G-code, имеет жесткую структуру. Все команды управления объединяются в кадры — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (ПС/LF) и имеет номер, за исключеним первого кадра программы. Первый кадр содержит только один символ «%». Завершается программа командой M02 или M30.
Сводная таблица кодов
Основные, в стандарте называются подготовительными, команды языка начинаются с буквы G:
- Перемещение рабочих органов оборудования с заданой скоростью (линейное и круговое)
- Выполнение типовых последовательностей (таких, как обработка отверстий и резьб)
- Управление параметрами инструмента, системами координат, и рабочих плоскостей
Подготовительные (основные) команды
Таблица основных команд
Код | Описание | Пример |
---|---|---|
G00 | Ускоренное перемещение инструмента (холостой ход) | G0 X0 Y0 Z100; |
G01 | Линейная интерполяция | G01 X0 Y0 Z100 F200; |
G02 | Круговая интерполяция по часовой стрелки | G02 X15 Y15 R5 F200; |
G03 | Круговая интерполяция против часовой стрелки | G03 X15 Y15 R5 F200; |
G04 | Задержка на P миллисекунд | G04 P500; |
G10 | Задать новые координаты для начала координат | G10 X10 Y10 Z10; |
G11 | Отмена G10 | G11; |
G15 | Отмена G16 | G15 G90; |
G16 | Переключение в полярную систему координат | G16 G91 X100 Y90; |
G20 | Режим работы в дюймовой системе | G90 G20; |
G21 | Режим работы в метрической системе | G90 G21; |
G22 | Активировать установленый предел перемещений (Станок не выйдет за их предел). | G22 G01 X15 Y25; |
G23 | Отмена G22 | G23 G90 G54; |
G28 | Вернуться на референтную точку | G28 G91 Z0 Y0; |
G30 | Поднятие по оси Z на точку смены инструмента | G30 G91 Z0; |
G40 | Отмена компенсации размера инструмента | G1 G40 X0 Y0 F200; |
G41 | Компенсировать радиус инструмента слева | G41 X15 Y15 D1 F100; |
G42 | Компенсировать радиус инструмента справа | G42 X15 Y15 D1 F100; |
G43 | Компенсировать высоту инструмента положительно | G43 X15 Y15 Z100 H1 S1000 M3; |
G44 | Компенсировать высоту инструмента отрицательно | G44 X15 Y15 Z4 H1 S1000 M3; |
G53 | Переключиться на систему координат станка | G53 G0 X0 Y0 Z0; |
G54-G59 | Переключиться на заданную оператором систему координат | G54 G0 X0 Y0 Z100; |
G68 | Поворот координат на нужный угол | G68 X0 Y0 R45; |
G69 | Отмена G68 | G69; |
G80 | Отмена циклов сверления (G81-G84) | G80 Z100; |
G81 | Цикл сверления | G81 X0 Y0 Z-10 R3 F100; |
G82 | Цикл сверления с задержкой | G82 X0 Y0 Z-10 R3 P100 F100; |
G83 | Цикл сверления с отходом | G83 X0 Y0 Z-10 R3 Q8 F100; |
G84 | Цикл нарезание резьбы | |
G90 | Абсолютная система координат | G90 G21; |
G91 | Относительная система координат | G91 G1 X4 Y5 F100; |
G94 | F (подача)- в формате мм/мин. | G94 G80 Z100; |
G95 | F (подача)- в формате мм/об. | G95 G84 X0 Y0 Z-10 R3 F1.411; |
G98 | Отмена G99 | G98 G15 G90; |
G99 | После каждого цикла не отходить на «подходную точку» | G99 G91 X10 K4; |
Таблица технологических кодов
Технологические команды языка начинаются с буквы М. Включают такие действия, как:
- Сменить инструмент
- Включить/выключить шпиндель
- Включить/выключить охлаждение
- Вызвать/закончить подпрограмму
Вспомогательные (технологические) команды
Код | Описание | Пример |
---|---|---|
M00 | Приостановить работу станка до нажатия кнопки «старт» на пульте управления, так называемый "технологический останов" | G0 X0 Y0 Z100 M0; |
M01 | Приостановить работу станка до нажатия кнопки «старт», если включен режим подтверждения останова | G0 X0 Y0 Z100 M1; |
M02 | Конец программы | M02; |
M03 | Начать вращение шпинделя по часовой стрелке | M3 S2000; |
M04 | Начать вращение шпинделя против часовой стрелки | M4 S2000; |
M05 | Остановить вращение шпинделя | M5; |
M06 | Сменить инструмент | M6 T15; |
M07 | Включить дополнительное охлаждение | M3 S2000 M7; |
M08 | Включить основное охлаждение | M3 S2000 M8; |
M09 | Выключить охлаждение | G0 X0 Y0 Z100 M5 M9; |
M30 | Конец информации | M30; |
M98 | Вызов подпрограммы | M98 P101; |
M99 | Конец подпрограммы, возврат к основной программе | M99; |