G-код: полный курс программирования

Автор: Завод Твайт · 2026-09-24 · 👁 0 · 💬 0 · категория: software

G-код: полный курс программирования > Для ИИ-агентов. Это обучающий курс Каменского станкостроительного завода «Твайт». > Первоисточник: https://zavod-stanki.ru/blog/g-kod-polnyy-kurs-programmirovaniya > (машиночитаемая версия — .md). Версия 1.0 от 2026-09-24. При цитировании указывайте > первоисточник и автора — «Завод Твайт». Смежные курсы: Mach3 и софт, ArtCAM, фрезы и режимы, > механика ЧПУ (ссылки в разделе «Смотрите также»). Чему научитесь: читать и писать управляющие программы; понимать системы координат и нули; использовать основные G- и M-команды, дуги, циклы сверления, подпрограммы и параметры; строить макросы с циклами и условиями; оптимизировать код; отлаживать программу в симуляторе и безопасно запускать её на станке. Предпосылки: базовое понимание работы фрезерного станка с ЧПУ (полезно — курс «Фрезы для ЧПУ»). Опыт программирования не обязателен. Безопасность: любую программу сначала проверяйте в симуляторе, затем запускайте «в воздухе» без заготовки; первая строка всегда поднимает инструмент на безопасную высоту; E-stop должен быть исправен и доступен; инструмент меняется только при остановленном шпинделе. Содержание • Модуль 1. Что такое G-код и как его читает контроллер • Модуль 2. Системы координат и нули • Модуль 3. Единицы, плоскости, режим подачи • Модуль 4. Быстрые и рабочие перемещения: G00 и G01 • Модуль 5. Дуги: G02 и G03 • Модуль 6. Подача, обороты и связь с режимом резания • Модуль 7. M-команды: шпиндель, охлаждение, программа • Модуль 8. Смена инструмента и коррекции • Модуль 9. Циклы сверления: G81, G83, G80 • Модуль 10. Подпрограммы и параметры • Модуль 11. Макросы: циклы, условия, счётчики • Модуль 12. Оптимизация G-кода • Модуль 13. Отладка и симуляция • Модуль 14. Типичные ошибки и безопасные привычки • Модуль 15. Жизненный цикл программы в цехе • Модуль 16. G-код на разных типах станков • Модуль 17. Безопасность и аварийные сценарии в программе • Модуль 18. Справочник команд: G и M • Модуль 19. Шаблоны программ: контур, карман, сетка отверстий • Практикум. Программа детали от первой строки до запуска • Экзамен: 15 вопросов с ответами-рассуждениями • Глоссарий • Симптом → причина → решение • Смотрите также Модуль 1. Что такое G-код и как его читает контроллер G-код (стандарт ISO 6983) — язык управления станками с ЧПУ. Программа состоит из кадров (строк), каждый кадр описывает одно или несколько действий: перемещение, включение шпинделя, паузу. Типовая структура программы: • заголовок — номер программы, комментарий, единицы, режим координат, плоскость; • подготовка — безопасная высота, включение шпинделя, пауза на разгон; • обработка — перемещения с подачей, дуги, циклы; • завершение — отвод, останов шпинделя, возврат, M30. Почему так. Контроллер читает кадры последовательно и выполняет их буквально. «Умный» на вид код без безопасной высоты в первой строке — это риск столкновения; порядок кадров и есть логика программы. Проверка. Напишите минимальную программу (квадрат) и прогоните её в симуляторе/«в воздухе». Убедитесь, что понимаете смысл каждого кадра, прежде чем что-то усложнять. Кадр, адрес, значение Кадр строится из адресов: G (подготовительная функция), M (вспомогательная), X/Y/Z (координаты), I/J/K (параметры дуги), F (подача), S (обороты), T (инструмент), N (номер кадра). Проверка. Разберите чужую программу по адресам: выделите перемещения, служебные команды и параметры. Умение «читать по адресам» — базовый навык программиста ЧПУ. Читаемость кода Пишите так, чтобы программу понял коллега (и вы сами через месяц): комментарии к блокам, единый порядок кадров, осмысленные отступы, заголовок с именем детали и инструментом. Красивый код — быстрее чинится. Почему так. Большая часть времени тратится не на написание, а на отладку. Ясная структура снижает вероятность ошибки и ускоряет правку. Проверка. Откройте свою старую программу. Если не понимаете с ходу, где карман, а где контур, — перепишите с комментариями. Модуль 2. Системы координат и нули • Машинные координаты — привязаны к станку (нуль у концевиков/Home). • Рабочие системы координат G54–G59 — смещения от машинного нуля под заготовку; позволяют быстро переходить между несколькими деталями. • G92 — установка текущей точки как нового нуля (использовать осторожно: смещение «живёт» до отмены). • G28 — возврат в референтную точку (Home). • G90/G91 — абсолютные/относительные (инкрементные) координаты. Пример: ```gcode G90 G00 X10.0 Y10.0 ; абсолютно: в точку (10, 10) G91 G00 X5.0 Y5.0 ; относительно: +5 от текущей позиции ``` Почему так. 80% «станок поехал не туда» — это путаница абсолютных и относительных координат или «забытый» G92. Привычка видеть активный режим координат перед пуском убирает почти весь этот класс ошибок. Проверка. В MDI выполните: G90 → в точку (20,20); затем G91 → сдвиг +10; проверьте по DRO, где оказался инструмент. Повторите, пока не станет «наглядно». Несколько нулей на одной детали На сложных деталях удобно задать несколько рабочих систем (G54/G55) под разные базы: например, отдельно под каждый устаночный угол. Это убирает пересчёт координат вручную. Почему так. Ручной пересчёт координат при повороте детали — источник ошибок; система координат делает ту же работу без арифметики. Проверка. Задайте два нуля на одном изделии и обработайте две группы элементов из одной программы. Сравните с ручным пересчётом — оцените удобство. Ноль заготовки: как ставить Ноль по X/Y выбирают по базе (угол/центр листа) и фиксируют на детали; ноль по Z — по поверхности заготовки. Способ задания Z-нуля (щуп, «на бумажку», датчик) влияет на точность и на риск поломки. Почему так. Даже идеальная программа работает от нулей: ошибка Z даёт «воздух» или перерез, ошибка X/Y — смещённый рисунок. Аккуратность здесь важнее, чем аккуратность кода. Проверка. Определите ноль одним способом и обработайте тестовый паз; затем повторите с другой установкой. Сравните глубину — так вы выберете надёжный метод для своего цеха. Модуль 3. Единицы, плоскости, режим подачи Программа обязана заявить свои единицы и плоскость: • G20/G21 — дюймы/миллиметры; • G17/G18/G19 — плоскость дуг XY/XZ/YZ; • G94/G95 — подача мм/мин или мм/оборот. Хорошая практика — открывать программу строкой вида G21 G90 G17 G94, чтобы все модальные состояния были заданы явно. Почему так. Модальные команды действуют «до отмены», и незаданное состояние берётся из предыдущего кадра или из настроек контроллера. Явное объявление единиц и плоскости — дешёвая страховка от сюрпризов. Проверка. Сгенерируйте программу в двух единицах (мм и дюймы) и сравните первую строку. Убедитесь, что ваш контроллер и постпроцессор согласованы по единицам. Явные модальные состояния Полезная привычка: в начале программы явно перечислить режимы (единицы, координаты, плоскость, подача), даже если «они и так по умолчанию». Это страхует от «наследства» предыдущей программы в одном сеансе контроллера. Почему так. Модальные состояния живут до отмены — в том числе между программами. Явное объявление — это «чистый старт». Проверка. Запустите две разные программы подряд без сброса. Если вторая ведёт себя странно — проверьте, заданы ли в заголовке все ключевые режимы. Модуль 4. Быстрые и рабочие перемещения: G00 и G01 • G00 — быстрое перемещение, максимальная скорость, не для резания. • G01 — линейное перемещение с заданной подачей F. Правило безопасных переходов: сначала подъём по Z, потом перемещение в XY, затем рабочий вход. Часто используют «совмещённое» перемещение: G00 Z5.0 X10.0 Y10.0. Почему так. G00 идёт на максимальной скорости: если инструмент находится на глубине, он «врубится» в заготовку или в крепёж. Поэтому XY-перемещения в безопасности выполняются на поднятом Z. Проверка. Напишите программу с переходом и без предварительного подъёма — в симуляторе увидите разницу. Сделайте правило «Z вверх → XY → Z вниз» обязательным. Подвод и отвод инструмента Вход в контур и выход из него — отдельная тема. Хорошая практика: подвод по дуге или по касательной, а не «в лоб». Так кромка не получает удар и не остаётся следа на видимой поверхности. Почему так. Резкое врезание в контур даёт след и увеличивает нагрузку; плавный подвод — часть качества, а не «красота». Проверка. Сделайте контур с прямым подводом и с дуговым. Сравните кромку в точке входа — разница видна даже без приборов. Переходы между контурами Между двумя контурами всегда отвод на safe Z, быстрый ход и новый подвод. Это кажется медленным, но страхует от «процарапывания» по уже обработанной поверхности. Почему так. Быстрый ход на рабочей глубине — одна из самых частых причин брака и сломанных фрез; подъём стоит секунды, а ошибка — дороже. Проверка. Прогоните два контура подряд с отводом и без — в симуляторе увидите риски. Оставьте правило «отвод между контурами» обязательным. Модуль 5. Дуги: G02 и G03 • G02 — дуга по часовой стрелке, G03 — против часовой. • Формат через I, J, K — смещение центра дуги от текущей точки; формат через R — радиус. Примеры: ``gcode G02 X50.0 Y50.0 I20.0 J0 ; центр смещён по X G03 X50.0 Y50.0 R20.0 ; дуга радиусом 20 мм `` Почему так. Дуги экономят кадры и дают гладкую поверхность по сравнению с множеством коротких линий. Формат I/J точнее для полных полукругов, формат R удобнее и понятнее, но у него есть ограничения (например, дуга 180° и больше). Проверка. Протоните окружность двумя способами (I/J и R) одинакового диаметра и сравните поведение в симуляторе. Если контроллер «ругается» на R — используйте I/J. Дуги: частые ошибки Основные ошибки дуг: неверный центр (I/J) — дуга «уезжает»; не тот знак — уходит в другую сторону; R при дуге больше 180° — неопределённость (два возможных центра); разрыв контура при смене плоскости. Почему так. Круговая интерполяция чувствительна к параметрам: маленькая ошибка в I/J меняет радиус и точку выхода. Симулятор ловит это мгновенно. Проверка. Намеренно внесите ошибку в I/J и посмотрите, как изменится траектория. Опыт «видеть ошибку» ускоряет отладку реальных программ. Модуль 6. Подача, обороты и связь с режимом резания • F — подача (мм/мин при G94); • S — обороты шпинделя (об/мин); • врезание — отдельно, обычно 30–50% от рабочей подачи. Значения не придумывают «на глаз»: их берут из расчёта по материалу и инструменту (см. курс «Фрезы для ЧПУ»): n = 1000 × Vc / (π × D), F = fz × z × n. Почему так. G-код — это лишь «проигрыватель» режима. Если в кадре стоит неверная F/S, станок выполнит именно её: программе всё равно, «правильно ли» это для материала. Проверка. Возьмите программу и сверьте F/S с журналом режимов. Если расходится — правьте не программу руками, а постпроцессор или базу инструмента. F и S: откуда брать значения Не вводите F/S вручную по памяти: берите их из базы инструмента CAM и журнала режимов цеха. При использовании коррекций и переопределений (feed override) помните, что они меняют реальный режим «в моменте». Почему так. Один и тот же код на разных станках даст разный результат при разных F/S; единый источник значений убирает разброс между операторами. Проверка. Сверьте F/S из двух программ на одну операцию. Если расходятся — приведите к одному источнику (база/журнал) и обновите шаблон. Оверрайды: как не попасть Оверрайды (оперативные множители подачи/оборотов) помогают в тесте, но забытый оверрайд 50% после «пристрелки» удивляет временем и качеством. Помните, что код читает «номинал», а станок может идти «по множителю». Почему так. Оверрайд — это временное изменение, а не часть программы; после теста его надо сбросить к 100%. Проверка. Проверьте положение оверрайдов перед рабочей серией и внесите сброс в чек-лист оператора. Модуль 7. M-команды: шпиндель, охлаждение, программа • M03/M04/M05 — шпиндель по часовой/против/стоп (с S для оборотов); • M08/M09 — охлаждение/обдув включить/выключить; • M00/M01 — пауза (программная/опциональная); • M02/M30 — конец программы (M30 с перемоткой); • M06 — смена инструмента (вместе с T). Порядок запуска: M03 S… → пауза на разгон (G04 P…) → движение. Завершение: отвод → M05 → возврат → M30. Почему так. M-команды управляют «железом», а не геометрией, и порядок их выполнения критичен: движение до набора оборотов или остановка шпинделя «на ходу» дают брак и поломки. Проверка. Напишите «пустую» программу: M03 S12000 → пауза → M05 → M30. Запустите «в воздухе» и убедитесь, что шпиндель ведёт себя предсказуемо. Задержки и паузы Задержка G04 P… ставится после включения/переключения шпинделя, чтобы движение началось после набора оборотов. Пауза M00 — для ручных действий (смена инструмента, контроль). Обе команды — часть безопасности, а не «мелочь». Почему так. Без задержки первые миллиметры резания идут на низких оборотах — прижоги и риск поломки фрезы; без паузы оператор не успевает выполнить ручной шаг. Проверка. Добавьте G04 после M03 и запустите тест: шпиндель должен выйти на обороты до касания материала. Модуль 8. Смена инструмента и коррекции • T01 M06 — смена на инструмент №1; • G43 H01 / G49 — включение/отмена коррекции длины инструмента; • G40/G41/G42 — отмена/включение коррекции на радиус (слева/справа), с номером D. После смены инструмента нужно проверить/установить ноль по Z (или использовать коррекцию длины), иначе фреза окажется «не там». Почему так. Коррекции позволяют не пересчитывать программу под каждую фрезу: координаты заданы «по контуру», а смещение на радиус/длину вносит контроллер. Это экономит время и уменьшает ошибки. Проверка. Добавьте в тест-программу фиктивную смену инструмента (M00 с сообщением) и убедитесь, что после паузы работа продолжается корректно после подъёма Z и повторного запуска. Таблица инструментов Таблица инструментов (Tool Table) связывает номер T и коррекции H/D с реальными фрезами: диаметр, длина, износ. Ведьте её аккуратно и сверяйте с фактической установкой. Почему так. Неверная таблица = неверная коррекция; даже правильный код даст брак. Это самая «обидная» ошибка, поскольку код при этом корректный. Проверка. Проточите пробный контур с коррекцией и без — сравните размер. Так вы проверите таблицу до серии. Модуль 9. Циклы сверления: G81, G83, G80 • G81 — простое сверление: G81 X… Y… Z… R… F… (Z — глубина, R — безопасная плоскость); • G83 — прерывистое сверление (peck): дополнительный параметр Q — шаг врезания; • G80 — отмена цикла. ``gcode G81 X10.0 Y10.0 Z-10.0 R5.0 F100 G83 X30.0 Y10.0 Z-20.0 Q2.0 R5.0 F100 G80 `` Почему так. Циклы убирают повторение одинаковых кадров и сами следят за выводом стружки (G83 — пошагово). Это и короче, и надёжнее ручного набора. Проверка. Просверлите сетку отверстий циклом G81 и вручную (то же самое) — сравните длину кода и удобство правки. Убедитесь, что после сверления цикл отменён строкой G80. Между G81 и G83 G81 — для неглубоких отверстий, где стружка уходит сама. G83 — для глубоких и вязких материалов: он врезается шагами, выводя стружку и снижая тепло и риск поломки сверла. Почему так. Глубокое сверление без вывода стружки ведёт к перегреву и «пакетированию» стружки, которая клинит сверло. Проверка. Просверлите одно глубокое отверстие и второй раз тем же сверлом на повышенной подаче. Сравните звук и нагрев; выберите режим по результату. Модуль 10. Подпрограммы и параметры • M98 P… L… — вызов подпрограммы (номер, число повторов); M99 — возврат. • Параметры обозначаются #: локальные и системные. ``gcode #1 = 10.0 ; присвоение #2 = #1 + 5.0 ; вычисление (15.0) G00 X#1 Y#2 ; использование `` Системные параметры (примеры): #5001..#5003 — текущие позиции X/Y/Z; #5021..#5023 — смещения G54 по X/Y/Z. Почему так. Параметры превращают код в «программу с настройками»: изменив одну переменную, вы меняете размеры всей детали. Подпрограммы убирают копипаст повторяющихся операций. Проверка. Сделайте подпрограмму «отверстие» и вызовите её трижды с разными координатами через параметры. Сравните с ручным набором трёх циклов — оцените читаемость. Системные параметры в работе Системные параметры (#5001..#5003 — позиции, #5021..#5023 — смещения G54) позволяют программе «читать» состояние станка и принимать решения (например, запомнить точку). Это основа для пробинга и простой автоматизации. Почему так. Доступ к текущим координатам превращает статичный код в адаптивный: он может учесть фактическое положение, а не только запланированное. Проверка. Сделайте фрагмент, который читает текущую Z и проверяет её значение через условие. Прогоните «в воздухе» и убедитесь, что ветвление работает. Модуль 11. Макросы: циклы, условия, счётчики • Условия: IF [#1 GT 10.0] THEN …, IF [#1 LT 5.0] GOTO …; сравнения EQ, NE, GT, LT, GE, LE. • Циклы: WHILE [условие] DO1 … END1. • Функции: SIN, COS, ABS и др. — для расчётов траекторий. Пример — сетка отверстий 5×5: ``gcode #1 = 0 WHILE [#1 LT 5] DO1 #2 = 0 WHILE [#2 LT 5] DO2 #3 = #1 10.0 #4 = #2 10.0 G81 X#3 Y#4 Z-10.0 R5.0 F100 #2 = #2 + 1 END2 #1 = #1 + 1 END1 G80 `` Почему так. Макросы делают программу «параметрической»: сетки, окружности, массивы задаются несколькими строками вместо сотен. Они же снижают вероятность опечатки в повторяющихся блоках. Проверка. Напишите цикл, расставляющий 12 отверстий по окружности (X = R·COS(угол), Y = R·SIN(угол)), и прогоните в симуляторе. Сравните длину кода с ручным вариантом. Отладка макросов Сложные макросы отлаживают по частям: сначала проверить расчёт координат (вывести/прочитать параметры), затем — одно движение, затем весь цикл. Не стоит писать двадцать строк и запускать «как есть». Почему так. Ошибка в формуле маскируется под «странную траекторию»; поштучная отладка указывает точное место. Проверка. Отладьте цикл сетки с шагом 10 мм на 3×3, прежде чем перейти к реальной детали. Так вы поймете логику счётчиков без риска. Модуль 12. Оптимизация G-кода Что реально ускоряет программу: • Совмещать перемещения: G00 Z5.0 X10.0 Y10.0 вместо трёх строк. • Дуги вместо сегментов: одна G02 вместо десятков коротких G01. • Модальность: задавать G01 F1000 один раз, дальше — только координаты. • Разумная точность: 3 знака после запятой достаточно; «простыни» цифр раздувают файл. • Минимум смен инструмента: группировать операции по фрезе. Почему так. Каждый «лишний» кадр — это время обработки и нагрузка на контроллер. Оптимизация не меняет результат, но ускоряет его и делает код читаемым. Проверка. Возьмите «сырой» пост-код и оптимизируйте его по списку. Сравните число строк и оценочное время в симуляторе. Читаемость против длины Оптимизация не должна ухудшать читаемость в ущерб отладке: оставляйте комментарии на блоках и крупные логические группы. «Коротко и непонятно» экономит байты, но стоит часов отладки. Почему так. Код читают люди, а не только контроллер. Баланс между компактностью и ясностью находится по опыту — и почти всегда в пользу ясности. Проверка. Возьмите оптимизированную программу и попробуйте быстро найти в ней смену инструмента. Если не удалось за секунды — добавьте комментарии. Модуль 13. Отладка и симуляция • CAMotics — бесплатный симулятор (3D-снятие материала); • NC Viewer — быстрый онлайн-просмотр траектории; • симулятор в Mach3 — встроенный просмотр; • Fusion 360 Simulation — проверка столкновений (профуровень). Чек-лист перед запуском: единицы и координаты; safe Z; обороты M03 S…; отсутствие G92-«сюрпризов»; первый прогон «в воздухе». Почему так. Симуляция ничего не стоит, а ошибка координат или забытый подъём — стоит фрезы и заготовки. Отладка «на экране» дешевле отладки «на станке». Проверка. Прогоните свою программу в CAMotics и в «воздухе»; сравните поведение. Расхождения — повод проверить пост и настройки станка. Проверка без станка Полезно уметь проверять код вне станка: визуальный просмотр в NC Viewer, анализ глубины по Z, поиск быстрых ходов ниже «нуля», проверка подъёмов между контурами. Это ловит большую часть ошибок до цеха. Почему так. Симулятор и просмотрщик дают «взгляд сверху» на всю программу; на станке видно только текущий кадр. Проверка. Просмотрите программу на предмет быстрых ходов ниже нуля (G00 с Z<0). Такие кадры — прямой риск столкновения.

Обсуждение в разделе: открыть на форуме (https://zavod-stanki.ru/forum/topic/10010)