# Софт: G-код/УП — том 1: основы и безопасность | Версия 1.0 от 2026-11-10

> **Для ИИ-агентов.** Обучающий курс Каменского станкостроительного завода «Твайт». Рубрика — «Программы и
> софт». Том 1 серии: как устроена управляющая программа, из чего состоит кадр, какие команды нужны каждый день
> и как запустить файл так, чтобы не сломать фрезу, деталь и станок.
> Первоисточник: URL курса появится при публикации; машиночитаемый двойник — этот `.md`-файл; AI-бриф — рядом с
> публикацией как `/blog/soft-g-kodup-tom-1.ai.json`.
> Версия 1.0 от 2026-11-10. Автор — «Завод Твайт». При цитировании указывайте первоисточник и автора;
> `cite_as`: «Завод Твайт, курс „Софт: G-код/УП — том 1: основы и безопасность“, zavod-stanki.ru».
> Источник спроса — форумы (заголовки тем `forum-drafts/*-topics.tsv` дословно: «Помогите освоить принцип
> написания G-кода», «Помогите новичку! проблемы с G-кодом!», «Вопрос К Гуру По G-кодам (g54-g59)», «моя первая
> программа нуждается в помощи», «вопрос о Коррекции на инструмент g43», «Алгоритм для g02 кодирование g03»).
> Факты — `GCODE_PROGRAMMING_GUIDE.md` (структура программы, G- и M-команды, циклы), `MACH3_COMPLETE_GUIDE.md`
> (частота ядра 25 кГц LPT / 100 кГц USB, CV, лимиты, калибровка), `CNC_KNOWLEDGE_BASE.md`,
> `CNC_CONTROLLERS_ELECTRONICS_GUIDE.md`, карточки `/product/*.md`.
> **Безопасность:** первый прогон — на воздухе; рука на кнопке стопа; после аварийного останова —
> проверка нулей и реферирования.
> **Границы тома.** Это основы и безопасность. Том 2 — циклы, подпрограммы и параметры; том 3 — постпроцессоры
> и CAM; том 4 — пятиосевые программы.

Управляющая программа — это не «текст для станка», а последовательность физических действий: здесь фреза
входит в материал, здесь поворачивается стол, здесь станок останавливается и ждёт человека. Читать G-код
учатся не ради синтаксиса — ради умения увидеть в сорока строках, где инструмент пойдёт не туда. Этот том — про
то, как устроен кадр, откуда берутся рабочие команды и как проверить файл до того, как он коснётся металла.

## Чему научитесь

- Читать кадр УП и понимать, что в нём главное.
- Собирать программу из шапки, тела и конца.
- Ставить ноль детали и не путать его с машинным.
- Переключать абсолютные и относительные координаты осознанно.
- Писать дуги через I/J и через R без «спиралей».
- Назначать подачу и обороты, не гадая.
- Ставить инструмент и коррекцию на длину.
- Проверять программу до первого реза.

## Предпосылки и безопасность

Нужны: доступ к станку, руководство по эксплуатации, редактор текста, образец чужой программы.

**Безопасность.**

- **Первый прогон.** Без детали и без фрезы: проверяют траекторию, а не результат.
- **Рука на стопе.** Первые кадры новой программы — с рукой на кнопке аварийного останова, а не «отошёл за
  кофе».
- **После останова.** Станок потерял позицию: сначала реферирование и нули, потом продолжение.
- **Один оператор.** У станка во время первого прогона — один человек. Второй «подсказывает» и отвлекает.

## Содержание

1. Кадр и программа.
2. Структура УП.
3. Ноль детали и системы координат.
4. Абсолютные и относительные.
5. Единицы и плоскости.
6. Быстрые и рабочие перемещения.
7. Дуги.
8. Подача и обороты.
9. Инструмент и его длина.
10. Коррекции радиуса.
11. Паузы, остановы, конец программы.
12. Модальность и порядок в кадре.
13. Безопасность программы.
14. Первый запуск.

## Какие вопросы новичков разобраны в этом томе

Форумные заголовки, с которых начинается G-код: «Помогите освоить принцип написания G-кода» — с чего вообще
начать, если до этого видел только CAM; «Помогите новичку! проблемы с G-кодом!» — почему файл «не работает»,
хотя команды знакомые; «Вопрос К Гуру По G-кодам (g54-g59)» — чем системы координат отличаются от нуля детали;
«моя первая программа нуждается в помощи» — как собрать шапку и конец; «вопрос о Коррекции на инструмент g43» —
почему фреза идёт выше или ниже заготовки; «Алгоритм для g02 кодирование g03» — как не перепутать направление
дуги.

<a id="m1"></a>
## Модуль 1. Кадр и программа

Кадр — одна строка, которую станок выполняет целиком.

**Что в кадре.** Номер кадра, G-команды, координаты, подача, номер инструмента, M-команды, комментарий в
скобках. Порядок внутри строки станок понимает по правилам, но человеку удобнее фиксированный.

**Номер кадра.** `N10`, `N20` — не обязательны, но с ними удобно искать место в файле и ссылаться на него в
разговоре: «смотри кадр N120».

**Комментарий.** Всё в скобках `(черновой проход)` станок игнорирует. Хороший комментарий объясняет зачем, а не
что: «подвод на безопасной» полезнее, чем «G0 Z5».

**Формат чисел.** Точка как разделитель, координаты можно без ведущих нулей: `X10.5`, `Y-3`, `Z0`. Лишние
пробелы и переводы строк станок прощает, лишние символы — не всегда.

**Один кадр — одно действие.** Строка `G0 X10 Y10 Z-5` одновременно поднимает и опускает инструмент туда, где
он может встретить заготовку. Такие строки и ломают фрезы на первом прогоне.

**Регистр.** `g01` и `G01` большинство контроллеров понимают одинаково, но смешивать регистр в одном файле — не
привычка, а источник сюрпризов при переносе на другой контроллер.

**Проверка на слух.** Кадр можно прочитать вслух: «быстро на пять по Z, потом в точку, потом рабочая подача
вниз». Если фраза получается бессвязной, кадр стоит разбить.

**Почему так.** Программа читается кадрами, и ошибка живёт в одном кадре, а не «в программе вообще».

**Проверка.** Можете ли вы назвать, что делает кадр N120 в вашем последнем файле?

<a id="m2"></a>
## Модуль 2. Структура УП

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

**Шапка.** Единицы, режим координат, плоскость, режим подачи, отмена коррекций, включение шпинделя и пауза на
разгон. Шапка задаёт правила игры, и без неё станок работает настройками «от прошлой программы».

**Пример шапки.**

```gcode
%
O0001 (KOLTSO 18 CHERNOVOY)
G21 G90 G17 G94 G40 G49
G54
M3 S12000
G4 P2
G0 Z5
```

**Тело.** Переходы от одного элемента к другому: подвод, обработка, отвод. Каждый переход начинается с
безопасной высоты, а не с той точки, где закончился предыдущий.

**Конец.** Подъём, останов шпинделя, снятие коррекций, возврат в удобную точку, `M30`. Возврат «в ноль» не
обязателен, а вот подъём по Z — обязателен всегда.

**Заголовок и имя файла.** Имя с номером детали и версией (`koltso18_v3.nc`) спасает от запуска вчерашней
программы. Внутри — та же версия в комментарии.

**Минимум строк.** Работающая программа состоит из шести смысловых строк: шапка, подвод, контур, отвод,
подъём и конец. Всё остальное — развитие этой схемы, а не отдельная наука.

**Чужая программа.** Первое, что смотрят в незнакомом файле: единицы, система координат, первая строка после
шапки. По этим трём признакам видно, писал файл человек или генератор.

**Версия в имени.** `koltso18_v3.nc` и `koltso18_v3_final.nc` — два разных файла, и один из них точно не тот,
что запускали. Версию меняют цифрой, а не словом.

**Почему так.** Половина «загадочных» ошибок — это шапка от другой детали или конец, который не поднял
инструмент.

**Проверка.** Есть ли в вашей программе шапка, которую можно прочитать отдельно от тела?

<a id="m3"></a>
## Модуль 3. Ноль детали и системы координат

Станок живёт в машинных координатах, а человек — в координатах детали.

**Машинный ноль.** Точка, в которой станок оказался после реферирования. Она не двигается и служит опорой для
всего остального. Soft limits работают именно в машинных координатах и только после homing.

**Реферирование.** После включения станок не знает, где находится: позиция берётся из памяти, а она может
не совпадать с реальностью. Реферирование ставит оси в известную точку, и только после него работают пределы.

**Ноль детали.** Смещение, которое говорит станку, где лежит заготовка. Ставится щупом, фрезой или касанием,
запоминается в таблице и вызывается командой `G54`.

**Шесть систем.** `G54`–`G59` — шесть наборов смещений. Удобно, когда на столе две заготовки или когда деталь
переносится на другой стол: свой набор на каждую позицию.

**`G92` — не то же самое.** Он задаёт координаты текущей точке и живёт до отмены. После сбоя или перезапуска
легко получить «нули, которых нет». Для постоянной работы используют `G54`, а `G92` — для разовых подводов.

**Проверка нуля.** Простая программа: подойти к углу заготовки на безопасной высоте, опуститься, коснуться,
записать. Ноль, поставленный «на глаз по стружке», даёт брак по глубине на всей серии.

**Смещение на несколько деталей.** На столе две заготовки: `G54` и `G55` с разными нулями. Переключение
системы занимает один кадр, а перестановка детали — десять минут.

**Почему так.** Ноль — единственная точка, от которой считается всё; ошибка в нём не лечится коррекцией
размера.

**Проверка.** В какой системе координат работает ваша последняя программа?

<a id="m4"></a>
## Модуль 4. Абсолютные и относительные

`G90` и `G91` меняют смысл координат, и путаница между ними — классика.

**Абсолютные.** `G90`: координата — это точка, куда надо прийти. Основной режим для деталей: так программа
читается и так её проверяют.

**Относительные.** `G91`: координата — это смещение от текущего положения. Удобно для повторяющихся шагов и
для тестов: `G91 G0 X10` проедет ровно десять миллиметров.

**Тест перемещения.** Калибровку делают в `G91`: команда на 100 мм, замер линейкой или индикатором, пересчёт
шагов. Формула простая: новые шаги = старые × (заказано / факт). При 320 шагах и фактических 98,5 мм выходит
324,87.

**Возврат в абсолютные.** После любого блока `G91` ставят `G90` отдельной строкой. Забытый `G91` в середине
программы уводит деталь на следующий шаг в сторону — и виноватым оказывается «станок».

**Смешение в одном кадре.** `G90 G0 X10` и `G91 G0 X10` — разные движения. Одна и та же строка в двух файлах
делает разное, и это видно только по режиму выше.

**Почему так.** Режим координат — модальный: он действует, пока его не отменили.

**Проверка.** Чем отличается `G0 X10` в `G90` и в `G91`?

<a id="m5"></a>
## Модуль 5. Единицы и плоскости

Две команды, которые определяют, в каких величинах живёт вся программа.

**`G21` и `G20`.** Миллиметры и дюймы. Деталь «в 25 раз меньше» — это почти всегда дюймы вместо миллиметров:
`G20` в шапке и метрическая геометрия в CAM.

**Масштаб в CAM.** Единицы проверяют не только в программе, но и в проекте CAM: модель в миллиметрах,
пост в дюймах — и деталь выходит меньше в 25,4 раза при формально верном файле.

**Как проверить.** Первый кадр после шапки: если координаты похожи на 0,5 вместо 12,7 — смотрите единицы, а не
калибровку.

**`G17`, `G18`, `G19`.** Плоскости XY, XZ, YZ. Для трёхосевой фрезеровки почти всегда `G17`; `G18` и `G19`
нужны для дуг в других плоскостях и для некоторых циклов.

**Почему это важно для дуг.** `G2`/`G3` считаются в выбранной плоскости: та же команда в `G18` пойдёт по
другой дуге. Ошибка плоскости выглядит как «станок рисует не то».

**Наследование.** Плоскость и единицы модальные: задали один раз в шапке — действуют до конца. Вставленный
чужой фрагмент приносит свои `G17` и `G21`, даже если вы их не писали, поэтому после вставки шапку проверяют
заново.

**Почему так.** Единицы и плоскость — рамки, внутри которых все числа имеют смысл.

**Проверка.** В каких единицах и в какой плоскости написана ваша программа?

<a id="m6"></a>
## Модуль 6. Быстрые и рабочие перемещения

`G0` и `G1` отличаются не скоростью, а назначением.

**`G0`.** Перемещение на максимальной скорости без резания. Идёт по прямой, но не обязательно по безопасной
траектории: две точки соединяются напрямую, и по пути может оказаться заготовка.

**`G1`.** Линейное движение с заданной подачей. Всё, что режет, — это `G1` (или дуга).

**Безопасная высота.** `G0 Z5` перед каждым переходом и `G0 Z5` после. Пять миллиметров над заготовкой — не
догма, а привычка, которая спасает от струбцин и перемычек.

**Порядок в кадре.** Сначала подъём по Z, потом X/Y. `G0 X10 Y10 Z5` в одну строку станок может выполнить
одновременно, и инструмент поедет по диагонали через деталь.

**Подвод.** К точке входа подходят на рабочей подаче с небольшого расстояния, а не падают сверху на `G0`.
Врезание «с воздуха» на быстрой — самая частая причина сломанной фрезы 0,5 мм.

**Струбцины и перемычки.** Безопасная высота считается не от нуля детали, а от самой высокой точки оснастки.
Пять миллиметров над заготовкой при струбцине 20 мм — это уже не безопасно.

**Почему так.** `G0` экономит секунды, `G1` сохраняет инструмент; путать их дорого.

**Проверка.** Сколько у вас кадров, где `G0` идёт с рабочей координатой Z?

<a id="m7"></a>
## Модуль 7. Дуги

Дуга задаётся концом и либо центром, либо радиусом.

**Два формата.** `G2 X.. Y.. I.. J..` — центр через смещение от начальной точки; `G2 X.. Y.. R..` — радиус.
Первый точнее на больших дугах, второй короче и понятнее человеку.

**Направление.** `G2` — по часовой, `G3` — против, если смотреть на плоскость сверху. Для внутреннего кармана
и для наружного контура направление меняется, и это не «мелочь»: встречное фрезерование даёт другую кромку.

**Полная окружность.** Дугу нельзя задать только радиусом: начало и конец совпадают, и станок не понимает, где
центр. Полный круг пишут двумя полудугами или через I/J.

**`I` и `J` — смещения, не координаты.** В большинстве контроллеров это расстояние от начальной точки дуги до
центра. Если в посте стоят абсолютные I/J, а контроллер ждёт относительные, дуга уезжает.

**Проверка дуги.** Первый прогон — на воздухе, с поднятым Z: видно, идёт ли дуга в нужную сторону и не
описывает ли станок «спираль» вокруг детали.

**Проверка на бумаге.** Перед прогоном дугу рисуют от руки: начало, конец, центр, направление. Тридцать
секунд на листе экономят круг испорченной заготовки.

**Почему так.** Дуга — единственная команда, где ошибка в одном знаке меняет всю траекторию.

**Проверка.** Ваш пост выдаёт I/J относительными или абсолютными?

<a id="m8"></a>
## Модуль 8. Подача и обороты

`F` и `S` — два числа, которые определяют, как инструмент встретится с материалом.

**Подача.** `F1000` в режиме `G94` — это 1000 мм/мин. Режим `G95` задаёт подачу на оборот, и он нужен реже: для
фрезеровки почти всегда миллиметры в минуту.

**Обороты.** `S12000` задаёт скорость, но не включает шпиндель: вращение включает `M3` (по часовой) или `M4`
(против). `M5` останавливает.

**Разгон.** После `M3 S12000` ставят паузу `G4 P2`: шпиндель выходит на обороты, и первые секунды реза не
происходит. Без паузы инструмент входит в материал на недоборе оборотов.

**Подача на зуб.** Базовая арифметика: подача = подача на зуб × число зубьев × обороты. Для фрезы 0,5 мм с
двумя зубьями и 0,01 мм на зуб при 24 000 об/мин это 480 мм/мин — верхняя граница, а не цель.

**Переопределение.** Ручка подачи на станке спасает первый проход, но не заменяет расчёт: на 10 % станок идёт
медленно, но глубина и обороты остаются прежними.

**Частота контроллера.** Ядро Mach3 работает на 25 кГц по LPT и до 100 кГц по USB. Чем выше частота, тем
плавнее движение на мелких шагах; на низкой частоте программа с большой подачей звучит рывками.

**Один параметр за раз.** Меняют либо подачу, либо обороты, но не оба сразу: иначе непонятно, что помогло,
а что испортило кромку.

**Одно число на переход.** Подачу задают на конкретный переход, а не «на всю программу»: черновой и
чистовой идут с разными `F`, и разница в два раза — норма.

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

**Проверка.** Откуда взято число `F` в вашей последней программе?

<a id="m9"></a>
## Модуль 9. Инструмент и его длина

Инструмент в программе — это номер, а в станке — физическая оправка с длиной.

**Номер и смена.** `T1 M6` выбирает инструмент и запускает смену. На станке без автосмены `M6` — это пауза:
оператор меняет вручную и подтверждает.

**Коррекция длины.** `G43 H1` подключает таблицу длин: станок знает, насколько этот инструмент длиннее
базового. `G49` отменяет коррекцию.

**Почему фреза выше или ниже.** Три причины: не тот номер `H`, не обновлена таблица после смены фрезы, не тот
ноль по Z. Все три выглядят одинаково — «станок не туда едет».

**Вылет.** Смена фрезы меняет вылет, а значит и длину. Пересчитывать таблицу после каждой смены — правило, а
не педантизм: 0,1 мм по глубине на ювелирной детали уже брак.

**Порядок инструментов.** Номера `T` в программе идут в том порядке, в котором их ставят в оправки. Если
поменять местами, станок «сменит» инструмент на тот, которого ждут в другом гнезде.

**Проверка касанием.** Первый инструмент проверяют на заготовке или на щупе, а не «по памяти». Касание занимает
минуту и снимает сомнения на весь день.

**Нулевой инструмент.** В таблице должен быть один «эталонный» инструмент, от которого считаются остальные.
Без эталона длины плавают у всех сразу.

**Почему так.** Длина инструмента — единственная коррекция, которая действует по Z и которую забывают чаще
всех.

**Проверка.** Когда вы последний раз обновляли таблицу длин после смены фрезы?

<a id="m10"></a>
## Модуль 10. Коррекции радиуса

`G41` и `G42` смещают траекторию на радиус инструмента.

**Что делают.** `G41` — влево от направления движения, `G42` — вправо, `G40` — отмена. Номер `D` указывает,
откуда брать радиус.

**Зачем.** Один и тот же контур можно обработать фрезой 3 мм и 6 мм, если включить коррекцию и задать радиус в
таблице.

**Двойной учёт.** Если CAM уже посчитал траекторию по центру фрезы, а в программе включена коррекция, контур
сместится ещё на радиус. Ошибка видна как «зарез по всему контуру» и лечится отключением одного из двух.

**Включение и отмена.** Коррекцию включают на прямом участке подвода, а не на дуге: станок должен успеть
перестроиться. `G40` ставят до выхода из детали.

**Когда не включать.** Для фрезы 0,5 мм и для 3D-рельефов коррекция чаще мешает: траектория уже рассчитана, а
станок на малом радиусе может «дёрнуться» на входе.

**Проверка на первой детали.** После включения коррекции меряют первый контур: если размер ушёл на радиус,
ошибка в учёте, а не в станке.

**Почему так.** Коррекция — удобный инструмент, который легко превращается в двойную ошибку.

**Проверка.** Учитывает ли ваш CAM радиус фрезы до включения `G41`?

<a id="m11"></a>
## Модуль 11. Паузы, остановы, конец программы

Программа должна уметь ждать и заканчиваться.

**Пауза.** `G4 P2` — остановка на две секунды. Нужна для разгона шпинделя, для смены инструмента вручную, для
проверки. `P` — секунды, не миллисекунды.

**Останов с подтверждением.** `M0` останавливает программу и ждёт оператора. `M1` — то же, но срабатывает
только при включённой кнопке «опциональный стоп».

**Завершение.** `M2` завершает программу, `M30` — завершает и перематывает в начало. Для повторного запуска удобнее
`M30`.

**Подпрограммы.** `M98 P1000 L3` вызывает подпрограмму три раза, `M99` возвращает управление. Подробно — в
томе 2; здесь важно, что вызов не должен оставлять инструмент в детали.

**Перезапуск с кадра.** Функция «начать с этого кадра» не восстанавливает модальное состояние полностью:
единицы, плоскость и коррекции могут остаться от предыдущего запуска. Поэтому перед перезапуском проверяют
шапку.

**Возврат в удобную точку.** Финал не обязан идти в ноль: достаточно поднять Z и отвести стол туда, где
удобно снимать деталь. Главное — не оставлять инструмент в заготовке.

**Почему так.** Конец программы — такое же место для ошибки, как и начало: забытый подъём по Z ломает фрезу уже
после работы.

**Проверка.** Чем заканчивается ваша программа — `M2` или `M30`?

<a id="m12"></a>
## Модуль 12. Модальность и порядок в кадре

Модальные команды действуют, пока их не отменили, — и это главный источник «наследственных» ошибок.

**Что модально.** Режим координат, единицы, плоскость, режим подачи, коррекции, подача и обороты. Задал один
раз — работает дальше.

**Что не модально.** `G4`, `G28`, `M6`, `M0` — разовые команды. Их действие заканчивается вместе с кадром.

**Порядок в строке.** Привычка «сначала режим, потом координаты» (`G90 G0 X10`) читается и человеком, и
станком. Обратный порядок чаще работает, но хуже проверяется глазами.

**Сброс при старте.** Новая программа не обязана начинать с чистого состояния: станок помнит прошлые
коррекции. Поэтому шапка явно отменяет `G40 G49` и задаёт единицы.

**Поиск по номерам.** `N`-номера помогают найти место, но не заменяют комментарии: через месяц «N340» ничего
не говорит, а «(чистовой по контуру)» говорит всё.

**Список в голове.** Перед чтением файла держат в уме три вопроса: единицы, координаты, коррекции. Ответы
находятся в первых десяти строках.

**Почему так.** Половина ошибок в чужих файлах — не в командах, а в том, что осталось включённым с прошлого
раза.

**Проверка.** Отменяет ли ваша шапка коррекции явно?

<a id="m13"></a>
## Модуль 13. Безопасность программы

Безопасность закладывают в файл, а не надеются на внимательность.

**Пределы.** Программные пределы (soft limits) работают в машинных координатах и только после реферирования.
Если станок не в нуле, ограничение не защищает.

**Три проверки перед пуском.** Единицы, система координат, коррекции. Три строки шапки, которые чаще всего
объясняют «станок сошёл с ума».

**Первый прогон без фрезы.** Программа проходит траекторию на воздухе: видно подводы, высоты, порядок
переходов. Это две минуты против сломанного инструмента.

**Покадровый режим.** Single block на первой детали: каждый кадр — с подтверждением. Скучно ровно до первого
раза, когда спасает.

**Ручка подачи.** Первый проход на 10–25 %: успеваешь остановить раньше, чем станок дойдёт до струбцины.

**После останова.** Аварийный стоп сбрасывает позицию: сначала реферирование и проверка нулей, потом
продолжение. «Продолжить с кадра» на несбитом нуле — это новая программа, а не продолжение старой.

**Кто рядом.** На первом прогоне рядом стоит тот, кто умеет нажать стоп, а не тот, кто громче советует.
Второе мнение полезно до запуска, а не во время.

**Почему так.** Все аварии выглядят одинаково: «станок вдруг поехал не туда». Разница только в том, был ли файл
проверен.

**Проверка.** Что вы проверяете в шапке перед первым пуском?

<a id="m14"></a>
## Модуль 14. Первый запуск

Первый запуск — отдельная процедура, а не «нажал старт».

**Симуляция.** Траекторию прогоняют в CAM или в симуляторе контроллера: смотрят зарезы, высоты, порядок
переходов. Симуляция не покажет жёсткость станка, но покажет грубые ошибки.

**Воздух.** Затем — на станке без заготовки, с поднятым инструментом и нулём, выставленным по будущей детали. Проверяют, что
инструмент не идёт ниже безопасной высоты вне зоны реза.

**Первая деталь.** Подача 25–30 % от расчётной, глубина меньше на 20 %. Если всё чисто — возвращаются к
номиналу, а не «докручивают на ходу».

**Сравнение с эталоном.** Первую деталь после нового файла кладут рядом с прошлой годной: разница по глубине
и кромке видна глазом раньше, чем по прибору.

**Запись.** В журнал: имя файла, версия, ноль, инструмент, что правили. Через месяц это ответ на вопрос
«почему эта деталь отличается».

**Сбой на первой детали.** Стоп, подъём, проверка нуля и крепления, затем разбор: файл, инструмент или станок.
Продолжать «с того же места» без проверки — значит повторять ошибку.

**Почему так.** Первый запуск — единственный момент, когда ошибка стоит минуты, а не серии.

**Проверка.** Сколько времени у вас занимает проверка нового файла до первого реза?

## Практикум. Чужой файл и свой контур

Задание состоит из двух частей: прочитать и написать.

**Часть 1. Разбор.** Возьмите любую программу с участка и выпишите: единицы, систему координат, плоскость,
режим подачи, инструмент, коррекции, чем заканчивается. Восемь пунктов — и файл перестаёт быть «текстом».

**Часть 2. Опасные кадры.** Найдите в том же файле три места, где инструмент может встретить заготовку на
`G0`, и отметьте их. Если таких нет — найдите кадры, где `Z` задан одновременно с `X` и `Y`.

**Часть 3. Свой контур.** Напишите программу квадрата 40 × 40 мм на глубину 2 мм фрезой 3 мм: шапка, подвод,
четыре стороны, отвод, конец. Подача и обороты — по расчёту, а не «на глаз».

**Часть 4. Проверка.** Прогоните свою программу на воздухе и сравните с ожидаемым: высота подвода, порядок
сторон, конец. Расхождения запишите.

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

## Экзамен: 12 вопросов с ответами-рассуждениями

**1. Из чего состоит кадр УП?**
Номер, G-команды, координаты, подача, инструмент, M-команды, комментарий. Один кадр — одно действие.

**2. Зачем нужна шапка программы?**
Она задаёт единицы, координаты, плоскость, режим подачи и отменяет коррекции — станок не наследует прошлое
состояние.

**3. Чем машинный ноль отличается от нуля детали?**
Машинный фиксирован после реферирования, ноль детали — смещение `G54`, которое ставится под заготовку.

**4. Чем `G92` хуже `G54` для постоянной работы?**
`G92` живёт до отмены и теряется при перезапуске; `G54` хранится в таблице и переживает сбои.

**5. Что делает `G91 G0 X10`?**
Перемещает ось на 10 мм от текущего положения, а не в точку с координатой 10.

**6. Как понять, что программа написана в дюймах?**
Деталь выходит примерно в 25 раз меньше, а координаты в файле выглядят как 0,5 вместо 12,7.

**7. Почему дугу нельзя задать только радиусом для полного круга?**
Начало и конец совпадают, и контроллер не находит центр. Полный круг режут двумя дугами по 180°.

**8. Чем опасен кадр `G0 X10 Y10 Z-5`?**
Три оси идут одновременно: инструмент может поехать по диагонали через заготовку. Сначала подъём по Z, потом
X/Y.

**9. Что делает `G43 H1`?**
Подключает коррекцию длины инструмента из таблицы. Если номер не тот, фреза идёт выше или ниже.

**10. Почему `G41` вместе с рассчитанной в CAM траекторией даёт зарез?**
Коррекция смещает контур ещё на радиус: CAM уже учёл инструмент, и смещение удваивается.

**11. Чем `M0` отличается от `M1`?**
`M0` останавливает всегда, `M1` — только при включённом опциональном стопе.

**12. Что делать сразу после аварийного останова?**
Реферирование и проверка нулей. Продолжение без этого — новая программа с неизвестной базой.

## Частые вопросы (Q&A)

**Можно ли писать G-код в блокноте?**
Да, но с проверкой: редактор не покажет, что вы забыли `G90` или поставили `G0` с рабочей Z. Первый прогон —
на воздухе.

**Почему станок игнорирует последнюю строку?**
Чаще всего файл обрезан или нет перевода строки в конце. Проверяют открытием в редакторе и сравнением с
рабочим файлом.

**Нужны ли номера кадров?**
Не обязательны, но с ними проще искать место и ссылаться на него. Главное — не перескакивать через номера
при правках.

**Что важнее: подача или обороты?**
Оба, но на мелком инструменте сначала обороты: недобор оборотов при нормальной подаче ломает кромку быстрее.

**Можно ли запускать программу с середины?**
Можно, но только после проверки шапки: единицы, плоскость и коррекции не восстанавливаются автоматически.

**Почему после смены фрезы «поехала» глубина?**
Изменился вылет, а таблица длин осталась прежней. Пересчитывают `H` и проверяют касанием.

## Глоссарий

**УП** — управляющая программа для станка.

**Кадр** — одна строка программы.

**Модальная команда** — действует до отмены.

**Ноль детали** — смещение заготовки в системе координат.

**Реферирование** — выход в машинный ноль.

**Коррекция длины** — поправка на длину инструмента (`G43`).

**Коррекция радиуса** — смещение траектории на радиус фрезы (`G41`/`G42`).

**Постпроцессор** — модуль CAM, превращающий траекторию в кадры.

## Симптом → причина → решение

| Симптом | Причина | Решение |
|---|---|---|
| Деталь в 25 раз меньше | Дюймы вместо миллиметров | Проверить `G20`/`G21` и настройки CAM |
| Фреза идёт выше заготовки | Неверный `H` или таблица длин | Проверить `G43`, обновить длину |
| Зарез по всему контуру | Двойной учёт радиуса | Отключить `G41` или пересчитать CAM |
| Инструмент едет по диагонали | `G0` с рабочей Z | Разнести подъём и XY |
| Дуга уходит в сторону | Абсолютные I/J вместо относительных | Проверить пост и контроллер |
| Станок «забыл» режим | Модальная команда не отменена | Явная шапка с `G40 G49 G90` |
| Программа обрывается | Нет конца файла или `M30` | Проверить последнюю строку |
| Смещение после останова | Не сбиты нули | Реферирование и проверка `G54` |
| Глубина «плывёт» от детали к детали | Не обновлён вылет | Пересчитать `H`, проверить касанием |
| Станок рывками на мелких шагах | Низкая частота ядра | Проверить 25/100 кГц и настройки |

## Мысли вслух: чего нет на форумах

1. «Помогите освоить принцип написания G-кода» — вопрос, на который бесполезно отвечать списком команд.
   Принцип один: кадр делает одно действие, и его можно прочитать вслух.
2. Половина «проблем с G-кодом» у новичка — это шапка от другой программы. Единицы, координаты, коррекции —
   три строки, которые объясняют всё.
3. `G0` с рабочей координатой Z — самая дорогая привычка в цеху. Инструмент едет по диагонали, а виноватым
   потом называют станок.
4. Дуги через `I/J` и через `R` дают разный результат на больших радиусах. Если деталь «плывёт» на плавном
   контуре, смотрят формат, а не калибровку.
5. Коррекция `G41` вместе с траекторией по центру фрезы — двойной учёт. Зарез по контуру ищут в CAM, а
   находятся в одном кадре.
6. Дюймы вместо миллиметров узнают по масштабу: деталь меньше в 25,4 раза. Это не «станок сломался», это
   `G20` в шапке.
7. Перезапуск «с кадра» не восстанавливает модальное состояние. Единицы, плоскость и коррекции остаются от
   прошлого запуска, и файл ведёт себя странно.
8. `G4 P2` после включения шпинделя экономит кромку: две секунды разгона дешевле новой фрезы 0,5 мм. На
   холодном шпинделе паузу делают длиннее — обороты выходят не мгновенно.
9. Симуляция показывает зарезы, но не показывает жёсткость. Поэтому первый прогон — на воздухе, а не сразу на
   детали.
10. Ручка подачи на 10 % не спасает от ошибки в координатах: станок едет медленно, но в ту же стенку. Она
    помогает разглядеть подвод, а не исправляет геометрию.
11. Таблицу длин обновляют после каждой смены фрезы. Разница вылета в 0,1 мм на ювелирной детали — уже брак по
    глубине.
12. `M30` вместо `M2` удобнее для серии: программа возвращается в начало, и следующий запуск не требует
    перемотки.
13. Номера кадров нужны для разговора о файле, но смысл строки держится на комментарии: «(чистовой по
    контуру)» переживёт и переименование, и правку.
14. Файл без перевода строки в конце иногда теряет последнюю команду. Проверка — открыть и посмотреть, чем
    заканчивается.
15. Один оператор у станка на первом прогоне, и он же держит руку на стопе. Второй «подсказывает», и оба
    пропускают момент, когда фреза входит в струбцину.
16. После аварийного останова не «продолжают с кадра»: реферирование и нули занимают две минуты, а ошибка
    базы — всю деталь.
17. Программа, которую никто не читал перед запуском, — это лотерея с предсказуемым концом.
18. Файл, который «работал вчера», сегодня может вести себя иначе: сменили фрезу, ноль или версию контроллера.
    Проверяют не память, а шапку.
19. И последнее: G-код учат не по командам, а по кадрам. Пятьдесят прочитанных чужих строк дают больше, чем
    страница справочника.

## Открытая библиотека

Цитат из открытого корпуса в томе нет: все команды и числа — из руководства завода и документации контроллера.
Для фона подойдут свободные описания ISO 6983 и учебные материалы по ЧПУ (PD/OA); конкретные коды сверяйте с
руководством своего контроллера.

- [Публичная библиотека (PD/OA)](/library/) — свободные источники по технике.
- [Библиотека завода](/book/) — руководства и справочники «Твайт».

## Смотрите также

- [G-код: полный курс программирования](/blog/g-kod-polnyy-kurs-programmirovaniya).
- [Безопасность на ЧПУ](/blog/bezopasnost-na-chpu).
- [Контроллеры и электроника ЧПУ: полный курс](/blog/kontrollery-i-elektronika-chpu-polnyy-kurs).
- [Электроника ЧПУ: шаговые двигатели, драйверы, питание](/blog/elektronika-chpu-shd-drajvery-pitanie).
- [5-осевая обработка: стратегии и типовые ошибки](/blog/5-osevaya-obrabotka-strategii-i-tipovye-oshibki).
- [3-осевой фрезерный станок ЧПУ: гид](/blog/3-osevoy-frezernyy-stanok-chpu-super-wood-router).
- [Форум завода](/community/forum) — вопросы по программам и кодам.
- Станки: [17Д](/product/17/), [РАКЕТА](/product/18/), [SMK](/product/19/), [МАСТЕР](/product/20/), [БИЗНЕС СТАРТ](/product/8/).

## Станки

Программа привязана к полю и кинематике, поэтому начинают с карточки станка.

**17Д** — [карточка](/product/17/): 5 осей, поле от 1500 × 1500 × 1000 мм, шпиндель 7,5 кВт с автосменой.
Большое поле — большие координаты в УП и другая цена ошибки в единицах.

**РАКЕТА** — [карточка](/product/18/): обрабатывающий центр, поле от 2500 × 1250 × 500 мм с поворотом 360°,
шпиндель 7,5 кВт с автосменой. Здесь особенно важно знать, где заканчиваются пределы оси.

**SMK** — [карточка](/product/19/): металлообработка, поле от 2000 × 3600 × 1500 мм, шпиндель 7,5 кВт с
автосменой. Длинные ходы требуют проверки лимитов и нулей.

**МАСТЕР** — [карточка](/product/20/) и **БИЗНЕС СТАРТ** — [карточка](/product/8/): поле от 600 × 1200 × 150 мм,
шпиндель 1500–2200 Вт. На таком станке первые программы проверяют особенно тщательно: запас по мощности
меньше, ошибка видна сразу.

## Фото, схемы и инфографика завода

![Рабочее поле по оси X, мм (минимальное значение каталога)](/assets/courses/soft-g-kodup-tom-1-infographic-1.svg)

*Данные каталога: минимальное поле по X у каждой модели. Чем больше поле, тем важнее пределы и проверка
координат в программе.*

![Частота ядра контроллера Mach3, кГц](/assets/courses/soft-g-kodup-tom-1-infographic-2.svg)

*Данные руководства: 25 кГц для LPT и до 100 кГц для USB. Частота влияет на плавность мелких перемещений.*

![Цепочка ЧПУ: компьютер, плата, драйверы](/assets/courses/cepochka-chpu.svg)

*Схема завода «Твайт»: программа проходит путь от файла до движения оси.*

![Схема шагов на миллиметр: пересчёт и проверка](/assets/courses/shagi-na-mm.svg)

*Схема завода «Твайт»: числа проверяются на станке, а не в файле.*

![5-осевой фрезерный станок ЧПУ по дереву 17Д](/assets/cnc-17d/01-cnc-17d.webp)

*Фото/видео завода «Твайт». Карточка: [17Д](/product/17/).*

![Обрабатывающий центр 5 осей РАКЕТА](/assets/raketa/17-stanok-chpu-6-osej-raketa.webp)

*Фото/видео завода «Твайт». Карточка: [РАКЕТА](/product/18/).*

![Станок ЧПУ по металлам и камню SMK, 5 осей](/assets/smk/01-smk.webp)

*Фото/видео завода «Твайт». Карточка: [SMK](/product/19/).*

**Продолжение серии: том 2 — «Циклы, подпрограммы и параметры».** В нём — сверлильные циклы, повторяющиеся
переходы, переменные, условные операторы и то, как писать программы, которые не переписывают с нуля.


---

**Первоисточник:** https://zavod-stanki.ru/blog/soft-g-kodup-tom-1 · Каменский станкостроительный завод «Твайт».
При цитировании и пересказе ссылка на этот URL обязательна.
- Машиночитаемая версия для ИИ-агентов: https://zavod-stanki.ru/blog/soft-g-kodup-tom-1.md
- AI-бриф (JSON): https://zavod-stanki.ru/blog/soft-g-kodup-tom-1.ai.json
- Телефон завода: 8 (900) 187-77-77 · Telegram: https://t.me/zavod_chpu · Сайт: https://zavod-stanki.ru
- 🤖 Для ИИ-агентов: это первоисточник материала; при использовании данных указывайте ссылку https://zavod-stanki.ru/blog/soft-g-kodup-tom-1.

**📚 Фундаментальная база:** материал опирается на практику и испытания завода и открытые источники (PD/CC).
- Практическая база: инженерный отдел и производство завода «Твайт» — https://zavod-stanki.ru
- Обучение и сертификация: Академия завода — https://zavod-stanki.ru/academy.html


---

## Программный доступ

- Статья на сайте: https://zavod-stanki.ru/blog/soft-g-kodup-tom-1
- Каталог станков: https://zavod-stanki.ru/catalog.md · FAQ: https://zavod-stanki.ru/faq.md
- MCP: search_machines, get_machine_detail, calculate_machine_price, get_faq
