Ошибки с G90 и G91: как избежать проблем при переключении абсолютных и инкрементальных команд
-
В CNC-программировании команды G90 и G91 определяют, как станок интерпретирует координаты: абсолютно от начала или инкрементально от текущей позиции. Ошибки при переключении между ними приводят к сбоям, столкновениям и браку деталей. Эта статья разберет типичные проблемы и покажет, как их обойти.
Знание этих команд помогает писать надежный код, экономит время на отладку и повышает точность обработки. Мы разберем суть, примеры ошибок и правильные подходы к переключению. Это полезно для всех, кто работает с ЧПУ-станками.
Что такое абсолютный и инкрементальный режимы
Абсолютный режим G90 заставляет станок читать координаты как фиксированные точки от начала системы координат. Это как измерения на чертеже - каждая позиция указана от нуля. Инкрементальный G91 работает иначе: перемещения считаются от текущего положения фрезы или сверла. Такой подход удобен для повторяющихся операций, но требует осторожности.
Представьте программу для сверления ряда отверстий. В G90 вы задаете каждую координату полностью: X10, потом X20, X30. В G91 достаточно сказать +10, +10, +10 - станок сам прибавит к текущей позиции. Но если забыть переключиться обратно, вся программа сломается. G90 и G91 модальные - они действуют до следующей команды, что и создает большинство ошибок.
Вот типичные сценарии:
- Переход от абсолютного к инкрементальному без возврата приводит к неожиданным прыжкам.
- В циклах вроде G81 координаты часто инкрементальные по умолчанию, но контроллер может вести себя по-разному.
Основные различия в таблице
Режим Описание Пример команды Результат перемещения G90 (абсолютный) От начала координат G0 X50 Y30 В точку (50,30) от нуля G91 (инкрементальный) От текущей позиции G0 X20 Y10 +20 по X, +10 по Y от текущего Важно: проверяйте документацию контроллера - не все ведут себя одинаково в циклах.
Типичные ошибки при переключении G90/G91
Самая частая ошибка - запуск программы не с начала, когда режим “висит” с предыдущего блока. Станок в G91 воспримет абсолютные координаты как относительные и улетит в сторону. Например, после смены инструмента без явного G90 фреза может врезаться в заготовку или стол. Еще одна проблема: в подпрограммах G91 не сбрасывается, и повторный вызов ломает позиционирование.
Рассмотрим реальный случай. Вы пишете код для фрезеровки контура: сначала G90 для подхода к началу, потом G91 для равномерных шагов по окружности. Если после цикла забыть G90, следующий абсолютный блок уйдет на 100 мм дальше. Столкновения происходят в 80% случаев из-за таких оплошностей. В MDI-режиме G90/G91 иногда игнорируются, что добавляет хаоса.
- Ошибка 1: Нет G90 после инструмента - станок в G91 выполняет “абсолютные” команды как относительные.
- Ошибка 2: Подпрограмма на G91 без сброса в конце - повторный вызов сдвигает все позиции.
- Ошибка 3: Циклы G81 с L20 (повтор) предполагают G91, но основной код в G90 - несоответствие.
- Ошибка 4: Тестирование в симуляторе не выявляет, так как он стартует с G90 по умолчанию.
Последствия ошибок
Ошибка Причина Как проявляется Нет сброса G90 Модальность Станок едет от текущей точки, а не от нуля G91 в MDI Игнор G-кода Команда выполняется как абсолютная В подпрограмме Нет M99 с G90 Сдвиг при каждом вызове Как правильно переключаться между режимами
Всегда ставьте G90 или G91 перед каждым блоком перемещений, особенно после смены инструмента. Это хорошая привычка для безопасности. В подпрограммах заканчивайте G90 - так при выходе M99 режим сбросится. Для рядов отверстий используйте G91 в цикле G81: задайте первую позицию G90, затем L10 для повторов с инкрементальными шагами.
Пример безопасного кода:
G90 G0 X0 Y0 Z5 (абсолютный подход) G91 G81 Z-5 R1 F100 X10 L5 (инкрементальный цикл) G80 G90 (сброс!)Это экономит время и предотвращает аварии. В симуляторе всегда проверяйте модальные состояния.
- Правило 1: G90 в начале каждой секции после Txx M6.
- Правило 2: G90 в конце подпрограмм перед M99.
- Правило 3: Для циклов читайте мануал контроллера по умолчанию.
- Правило 4: Тестируйте в сухом ходе с видимой траекторией.
Преимущества умелого использования G91
Инкрементальный режим упрощает программирование повторяющихся элементов. Вместо подсчета кумулятивных координат вы пишете простые шаги: +50, -20. Это идеально для рядов отверстий, зубьев шестерни или зеркальных копий. Подпрограммы на G91 вызываются из любой абсолютной позиции - станок сам подстроится.
Но не переусердствуйте: для сложных контуров G90 надежнее. Комбинируйте: абсолют для базового позиционирования, инкремент для серий. Это сокращает код на 30-50% и делает его читаемым, как чертеж. Помните о модальности - один забытый сброс и привет, столкновение.
- Плюс 1: Легко повторять равные расстояния без сложных расчетов.
- Плюс 2: Подпрограммы универсальны для любого места детали.
- Плюс 3: Код короче и ближе к размерам на чертеже.
Сравнение подходов
Задача G90 только G90 + G91 Один ряд отверстий Длинный список X10 X20 X30… G91 X10 L3 - короче! Подпрограмма Пересчет каждый раз Один вызов из G90 Отладка Легче читать Требует проверки модов Практические советы по избежанию ловушек
Тестируйте программы поэтапно: запустите с G90 в начале и проверьте траекторию. Используйте safety lines - первые строки с G90 G17 G21 и т.д. Для Fanuc или Haas читайте специфику: некоторые контроллеры авто-сбрасывают в G90 при старте, но не все. В сложных программах добавляйте комментарии (O1 или
перед переключениями.Не забывайте Z-ось: перемещения в G91 опасны при вертикальных подходах. Всегда возвращайтесь в G90 перед G28 или G00 home. Это базовые правила, но они спасут от 90% ошибок. Если программа большая, разбивайте на блоки с явными режимами.
Надежность превыше всего в G-коде
Мы разобрали ключевые ошибки переключения G90/G91 и способы их фикса. Осталось углубиться в контроллер-специфику - каждый имеет нюансы с циклами и модальностью. Подумайте о симуляторах вроде NCPlot для визуализации траекторий. Правильный баланс режимов сделает ваш код пуленепробиваемым.
© 2022 - 2025 InvestSteel, Inc. Все права защищены.