# CNC Code — Исправления в постоянных циклах токарного станка (сентябрь 2026)

# CNC Code — Исправления в постоянных циклах токарного станка (сентябрь 2026)

Antonio Benedetto
Antonio Benedetto
19/09/2026 6 min di lettura 13 visualizzazioni

## Почему это обновление

Пользователь сообщил нам, что симулятор отклонял правильно написанный цикл черновой обработки G71, указывая на отсутствие параметра, который на самом деле присутствовал в строке. Он был прав. Мы проверили этот случай, а затем расширили проверку на все постоянные циклы токарного станка, проведя систематическую кампанию тестирования: для каждого цикла мы взяли варианты синтаксиса, встречающиеся в руководствах Fanuc
(серии 0T/6T/10T/11T/15T и серии 0i/16i/18i/21i/31i) и в учебных пособиях, и выполнили их одну за другой в симуляторе, проверяя, что происходило.

Результатом стала серия исправлений, которые делают интерпретатор более верным поведению реальной стойки: синтаксис, работающий в цехе, должен работать и в симуляторе, а когда строка действительно ошибочна, сигнал тревоги должен указывать на то, чего действительно не хватает, а не на что-то другое.

Исправления касаются движка интерпретации, который единый для всех платформ: поэтому они действуют на десктопе (Windows, macOS, Linux), планшете и смартфоне в одной и той же версии.

---

## G71 / G72 — Циклы продольной и торцевой черновой обработки

**До.** Первый блок цикла распознавался только в том случае, если он содержал и глубину прохода (U для G71, W для G72), и отвод R. `G71 U2` без R — синтаксис, допустимый на Fanuc, где R является необязательным, а отвод берётся из параметра 5133, — не распознавался: в следующем блоке симулятор выдавал сообщение "отсутствует параметр U" при том, что U была прописана в строке. То же самое происходило с однострочным форматом `G71 P.. Q.. U.. W.. D.. F..`, используемым на более старых стойках Fanuc и во многих учебных пособиях, где D означает глубину прохода.

**Теперь.**
- Блок 1 распознаётся при наличии только U (или W для G72); R необязательна, отвод по умолчанию 0,5 мм, если он не указан.
- Однострочный формат с D принимается. D без точки после запятой означает микроны (`D2000` = 2 мм), с точкой — миллиметры (`D2.0` = 2 мм), как на стойке.
- Если блок 1 действительно отсутствует, сигнал тревоги ясно сообщает об этом: "отсутствует блок 1 G71 (G71 U.. R..) перед G71 P.. Q.., либо глубина D в однострочном формате".
- Добавлена проверка: D должна быть больше нуля.

Проверено тестами на паритет: три варианта синтаксиса (два блока с R, два блока без R, одна строка) оставляют одинаковый профиль на детали, точка в точку, как на канале 1, так и на противошпинделе.

---

## G76 — Цикл нарезания резьбы

Здесь проблемы были серьёзнее, так как в некоторых случаях симулятор ничего не сообщал и просто не выполнял резьбу.

**До.** Два блока распознавались с жёстким сравнением всей строки: `G76 P Q R` и `G76 X Z P Q F` в этом точном порядке, со всеми обязательными параметрами.
- Блок 1 без R, с R перед Q, или с Q, написанной с десятичной точкой: сигнал тревоги "P должна быть 6-значной, найдено P010060", при этом P была абсолютно правильной.
- Блок 2 с F перед P и Q, с R конусности, с инкрементальными U/W, с Z перед X, с Q перед P, с P и Q в миллиметрах, либо в однострочном формате `G76 X Z K D F A`, используемом на Fanuc 0T/10T: ни сигнала тревоги, ни цикла. Резьба не нарезалась.
- Блок 2 без Z: сигнал тревоги был корректным, но цикл всё равно запускался.

**Теперь.**
- Слова могут располагаться в любом порядке, с пробелами или без, заглавными или строчными буквами.
- Блок 1: `G76 P{mmrraa} [Q..] [R..]`. Q и R необязательны. P должна содержать 6 цифр и считывается так, как написана, включая начальные нули.
- Блок 2: `G76 X|U.. Z|W.. P|K.. Q|D.. F|E.. [R|I..] [A..]`. Принимаются как двухблочный формат серии 0i/31i (P — высота резьбы, Q — первая проходка), так и однострочный формат серии 0T/10T/15T (K — высота, D — первая проходка, A — угол). E принимается как шаг чистовой проходки.
- P, Q, K, D без десятичной точки означают микроны (`P920` = 0,92 мм), с точкой — миллиметры.
- Инкрементальные U и W вычисляются от текущей позиции инструмента.
- Если отсутствует ось прихода, шаг, высота резьбы или первая проходка, сигнал тревоги указывает на недостающий параметр, и цикл не запускается.
- Конусность (R в двухблочном формате, I в однострочном) считывается, но пока не моделируется: резьба выполняется цилиндрической.

Проверено тестами на паритет: восемь разных синтаксисов блока 2 и три варианта блока 1 дают одинаковую резьбу M48×3, замеренную каждые 0,25 мм, на обоих каналах.

---

## G74, G75, G83, G84, G85, G88, G89 — Циклы сверления, канавок, нарезания резьбы метчиком, растачивания

**До.**
- Блок 2 принимал только абсолютные координаты X и Z. С инкрементальными U или W цикл не запускался, и строка выполнялась как линейное перемещение в рабочем режиме, без сигнала тревоги.
- Слова P и Q всегда интерпретировались в микронах: `Q5.0`, написанная в миллиметрах, превращалась в подачу 0,005 мм.
- G89 (радиальное растачивание по диаметру) был реализован, но не значился среди распознаваемых кодов и вызывал сигнал тревоги "код G не поддерживается".

**Теперь.**
- U и W принимаются в блоке 2 всех этих циклов и приводятся к абсолютным координатам от текущей позиции вершины инструмента на активном канале.
- P и Q подчиняются единому правилу: без десятичной точки — микроны, с точкой — миллиметры. Правило одинаково для всех циклов (G71, G72, G74, G75, G76, G83).
- G89 распознаётся.

Проверено тестами на паритет: сверление G83 с `Z-30`, с `W-35` от позиции Z5 и с `Q10.0` даёт одинаковое отверстие; канавка G75 с `X80 Z-20` и с `U-24 W-10` от позиции X104 Z-10 даёт одинаковую канавку.

---

## Парсер G-кода — Числа с начальной точкой

Значения, написанные без нуля перед точкой, такие как `X.5`, `R.05` или `U-.2`, допустимы на Fanuc, но парсер их не считывал и обрабатывал как ноль. Теперь они считываются правильно для всех слов.

---

## Что НЕ изменилось

- Логика расчёта циклов (проходы, глубины, отводы, порядок нарезания резьбы) осталась прежней. Исправления касаются распознавания синтаксиса и качества сигналов тревоги.
- Уже написанные программы в стандартном двухблочном формате продолжают работать точно так же.

---

## В разработке

Постоянные циклы **системы G-код A** токарных станков Fanuc (G90 цикл точения, G92 цикл нарезания резьбы, G94 цикл подрезки торца), широко используемые в обучении, пока не смоделированы. Они следующие в плане.

---

## Как сообщить об аномалии

Если вы обнаружите строку программы, которую симулятор отклоняет или выполняет иначе, чем реальная стойка, откройте обращение через встроенную в приложение поддержку (меню Поддержка, создание тикета), приложив программу: мы используем её напрямую как тестовый случай. Именно так появился каждый исправленный в этом обновлении цикл.

Поделиться