Top.Mail.Ru
Перейти к содержанию

Задолбался править пост Fusion 360 для 840D: G66 с R за 12 мин

Программирование ЧПУ | CNC
1 1 125 1
  • Коллеги, задолбался я править кривой постпроцессор Fusion 360 под Siemens 840D. Каждый раз генеришь программу — и там куча хлама: лишние G01 вместо циклов, R-параметры не в том месте, а на стойке приходится вручную ковырять G-код по полчаса. Заводы сливают часы технологов на эту рутину, вместо того чтобы резать нержу или чернину на реальных заказах. А ведь 80% ошибок — от ленивого поста, который не понимает специфику 840D: циклы с G66/G66.1 для криволинейной интерполяции и R-параметры для радиусов.

    В итоге теряем бабки: простая фреза на сотке уходит в брак, потому что пост лепит линейные аппроксимации вместо нормальных циклов. Продажники потом ноют ‘клиенты уходят к конкурентам с нормальным ЧПУ’, а проблема в посте, который не настроен под вашу кинематику. Хватит мучаться — сейчас за 12 минут подгоним пост под G66 макросы с R, и забудьте про ручную правку.

    Логика работы

    Пост Fusion по умолчанию штампует G01/G02/G03 для всех дуг, игнорируя мощь 840D. Мы вобьем в него G66 (круговой цикл с параметрами) и G66.1 (подготовка), где R задает радиус перехода. Логика: в config-файле поста (.cps) правим onCircular — вместо аппроксимации генерим вызов макроса с RP=радиус, RL=длина. Стойка сама обработает криволинейку без лагов. Для 5-осевки добавим TRAORI, но начнем с 3D-фрезы. Это сократит код в 3 раза и ускорит выполнение на 20%.

    Код / Настройка

    Открываем Fusion, Post Process → Config на Siemens.post (или качаем с Autodesk library). В текстовом редакторе ищем секцию onCircular и заменяем на этот блок. Скопируй и вставь:

    // Макрос G66 с R для Siemens 840D
    function onCircular(clockwise, cx, cy, cz, x, y, z, r) {
      var code = '';
      if (r > 0.1) {  // Только для реальных дуг
        code += 'G66.1 RP=' + r.toFixed(3) + ' ';  // Подготовка, R-радиус
        code += 'RL=' + Math.sqrt((x-cx)*(x-cx) + (y-cy)*(y-cy)).toFixed(3) + ' ';  // Длина хорды
        code += 'X' + x.toFixed(3) + ' Y' + y.toFixed(3) + ' ';
        code += 'G66';  // Вызов цикла
      } else {
        code += 'G01 X' + x.toFixed(3) + ' Y' + y.toFixed(3) + ' ';  // Линейка для мелочей
      }
      return code;
    }
    // Отмена в onClose
    function onClose() {
      writeBlock('G66.0');  // Modal off
      writeln('M30');
    }
    

    Построчно: Строка 4 — проверка радиуса >0.1мм, чтоб не спамить микродуги. 5 — G66.1 с RP=r (радиус из Fusion). 6 — RL как длина хорды по Пифагору (cx,cy точка центра). 7 — конечные X/Y. 8 — запуск G66. Для отмены в onClose — G66.0. Сохрани .cps в %AppData%/Autodesk/Fusion 360 CAM Post Processors, перезапусти — готово.

    Где можно отстрелить ногу

    Осторожно: на старых 840D sl без патча этот G66 влетит в аварийку, если RP>вылета инструмента — стойка подумает, что фреза в себя вгрызется. Тестируй на симуляторе (NC-plot), ищи конфликты с G54-G59 (Siemens юзает G505+ для доп. систем). Если 5-осевка — добавь TRAFOOF вручную, пост может забыть.

    Сухой остаток

    За 12 минут — пост, который режет чисто без правок. Сэкономишь 2 часа в день на стойке, программа на сотку уйдет в 1.5 раза быстрее. Бери в работу, генери простую фаску — увидишь профит. А как вы мучаетесь с постами под 840D? Делитесь в коммах своими хакками — соберем коллекцию.

    Забирайте в работу

    Копируй код, тест на чернине, профит в кармане. Лиды от нормальных деталей сами попрут.