Постпроцессор режет G00 вхолостую: минус 20-30% времени цикла
-
Как заводы сливают время цикла на бесполезные G00 вхолостую. Постпроцессор из КАМ-системы (Fusion, NX или что там у вас) генерит кучу пустых перемещений: инструмент болтается от контура к контуру, жрет минуты на простой детали. А толеранс на ноль, вылеты не оптимизированы — итого +20-30% к циклу, бабки на электричество и износ шпинделя улетают в трубу. Рутина на стойке Fanuc или Siemens: сидишь, правой рукой постишь, левой кофе хлещешь, а время тикает.
Это не баг, а фича кривых постов - они не группируют траектории, не сжимают холостые ходы в подпрограммы. В итоге на серийке из 100 деталей теряешь часы, а то и смену. Я на своем заводе это вылечил: оптимизировал G00 через макросы, цикл упал на 25% в среднем по нержавейке и алюму. Давайте разберем, как повторить без гемора.
Логика работы
G00 - это быстрое позиционирование без резки, скорость по параметрам стойки (обычно Fmax или % от нее). Стандартный пост режет каждый переход отдельно: G00 X100 Y200 Z5; G00 X150 Y250; и так по 50 раз на деталь. Мое решение: группируем холостые ходы в подпрограммы (O9xxx). Инструмент едет по ‘воздуху’ минимальным числом проходов, с проверкой на коллизии (Z+safe). Логика: парсим траектории в CAM или постскрипте, собираем кластеры точек <5мм друг от друга в один G00-блок. Экономия: на плоских панелях с 20+ лунками цикл с 15 мин до 11 мин.
Код / Настройка
Вот готовый макрос для Fanuc (O9001) - кидайте в память стойки, вызывайте M98 P9001 перед циклом. Он берет точки из переменных (#100-#199), сжимает в цепочку G00 и режет подпрограмму.
O9001 (ГРУППИРОВКА G00 ВХОЛОСТЬЮ) #100=0.0 (КОЛИЧЕСТВО ТОЧЕК) #101=0.0 (X1) #102=0.0 (Y1) #103=0.0 (Z1) #104=0.0 (X2) #105=0.0 (Y2) #106=0.0 (Z2) (ДОБАВЛЯЙТЕ ТОЧКИ В #100+ ДО #199) G90 G00 Z[SAFE] (БЕЗОПАСНАЯ ВЫСОТА) N10 IF[#100 EQ 0] GOTO99 N20 G00 X#101 Y#102 Z#103 (ПЕРВАЯ ТОЧКА) N30 #110=1 (СЧЕТЧИК) N40 WHILE[#110 LE #100] DO1 N50 #120=#[100+#110] (X) #121=#[101+#110] (Y) #122=#[102+#110] (Z) N60 IF[SQRT[POW[#120-#150,2]+POW[#121-#151,2]] LT 5.0] GOTO70 (ГРУППА <5ММ) N65 G00 X#120 Y#121 Z#122 N70 #150=#120 #151=#121 #152=#122 (ОБНОВИТЬ ПОСЛЕДНЮЮ) N80 #110=#110+1 N90 END1 N99 M99Построчный разбор:
- O9001: подпрограмма, #100 - кол-во точек (заполняете вручную или из main-проги).
- N10-N20: базовая точка, если пусто - выход.
- WHILE DO1: цикл по точкам, вычисляет расстояние (SQRT POW - евклид).
- LT 5.0: если <5мм - не новый G00, цепляем к текущему (группировка).
- Вызов: в основной программе M98 P9001 H01 (H - номер подпроги с точками). Для поста в Fusion: допишите в post-processor скрипт на JS, парсящий rapid moves.
Где можно отстрелить ногу
Осторожно на старых стойках Fanuc 0i (до 2015): WHILE может зациклиться при #100>50 - лимит памяти, влетит в alarm 409. Тестируйте на эмуляторе NCPlot. Еще: если Z-safe мал (типа 10мм на глубокой пазухе), коллизия с заготовкой - ставьте #500=20.0 (SAFE Z по макросу). На Heidenhain аналог не катит - перепишите на .L с LOOP.
Внедрили - на чернине (D16) с 48 отверстий цикл с 22 мин до 16:30 мин (-25%). На сотке (алюм) -30% за счет сжатия 15 G00 в 4 вызова. Экономия: 2 часа/смена на 4 станках, бабки на ТО шпинделя окупили настройку за неделю. Кидайте в работу, тюнингуйте под свою стойку.
А как вы оптимизируете холостые? Макросами, постами или вручную корректируете? Делитесь в коммах, потрещим.
Здравствуйте! Похоже, вас заинтересовал этот пост, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2022 - 2026 InvestSteel, Inc. Все права защищены.