Перейти к содержанию

G65-макрос для радиусной обводки на Fanuc 0i-TF: без переписывания УП

Программирование ЧПУ | CNC
1 1 57 1
  • Коллеги, задолбался я переписывать УП под каждый новый радиус на Fanuc 0i-TF. Стойка отличная, но без параметризации ты как тотехнолог на пальцах: меняешь R с 5 до 15 мм — и заново копируешь дуги G02/G03, подгоняешь вылет инструмента, рискуешь влететь в стенку или слить нагрузку на фрезе. Заводы теряют часы на рутину, а то и день на правку брака от кривых траекторий.

    Хуже того, без контроля нагрузки (#3901) фреза в нержу или чернину жрёт себя заживо — пики до 80-90%, а SCADA нет, сидишь с часами у стойки. Стандартные циклы G41/G42 дают interference error при смене радиуса, постпроцессор из КАМ-системы генерит мусор. В итоге: время на УП — 30-60 мин на деталь, конверсия в серийку падает, клиенты уходят к конкурентам с автоматизацией.

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

    Макрос G65 P9001 делает параметрическую радиусную обводку: входишь в аргументы — радиус R, шаг по глубине Z, старт/конец дуги (X,Y), подачу F и контролем нагрузки. Логика: WHILE-цикл по шагам Z, внутри G02/G03 с адаптированным радиусом, мониторинг #3901 (AI нагрузка шпинделя). Если нагрузка >80% — пауза G04, сброс F на 50%, тревога #3000 при критике. Без SCADA, чисто на системных переменных Fanuc 0i-TF.

    Подходит для внешней/внутренней обводки: G41/G42 сам переключается по знаку радиуса. Число проходов = ABS[Z/R_step], траектория — четверть круга или произвольный угол по углу A (в градусах).

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

    Вбей макрос в O9001 (стандартный слот Fanuc). Построчно разбираю:

    O9001 (RAD OBVODKA S KONTROLEM NAGRUZKI)
    
    #1=#22 (RADIUS)      /1/
    #2=#24 (Z_GLUBINA)   /2/
    #3=#4  (STEP_Z)      /3/
    #4=#6  (START_X)     /4/
    #5=#8  (START_Y)     /5/
    #6=#10 (END_X)       /6/
    #7=#12 (END_Y)       /7/
    #8=#18 (F_PODACHA)   /8/
    #9=#20 (UGOL_A deg)  /9/
    
    #10=ABS[#2/#3] (PROHODY)
    #11=0 (SCHETCHIK)
    
    WHILE[#11 LE #10] DO1
      G0 Z[#2*#11/#10+5.] (PODNYATIE)
      G1 Z[#2*#11/#10] F#8
      
      #100=#3901 (CHTENIE NAGRUZKI)
      IF[#100 GT 80.0] GOTO99 (Pauza esli peretr)
      
      G41 D1 (KORREKCIYA) / G42 esli vnutr
      G1 X#4 Y#5 F#8
      G02 X#6 Y#7 R#1 J0. K0. (OBVODKA, UGOL PO #9)
      G40
      
      #11=#11+1
    END1
    
    #3000=1 (0=OK,1=ALARM NAGRUZKA)
    M99
    
    N99 G04 P2000 (PAUZA 2s)
       #8=#8*0.5 (SBRos F)
       IF[#100 GT 90.0] GOTO300
       GOTO10 (Povtor)
    N300 #3000=2 (KRIT ALARM)
    M99
    

    /1/ Читаем аргументы #1-#33 стандартно. #22 для R — меняешь без переписывания.
    /2/ Z общая глубина, шаг #3=1-5мм.
    /3-7/ Координаты дуги.
    /8/ Начальная F, адаптируется.
    /9/ Угол для G02 (по умолчанию 90 град).
    Затем цикл: подъем, погружение, чек нагрузки, обводка с коррекцией, выход.

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

    На старых 0i-TF без опции макросов (проверь #34001=1) — alarm 4090. В нержe при R<2мм interference G41. Цикл WHILE жрёт стек, если >50 проходов — alarm 4100, лимит O9000. Нагрузка #3901 лагает на 100мс, в чернине ставь порог 70%. Тести в SINGLE BLOCK (#3002=1).

    Как это внедрить

    1. Включи макропрограммы: PARAM 3401.1=1, 3401.2=1.
    2. Вызов: G65 P9001 R10. Z-15. K2. X50. Y50. I60. J60. F200. A90 L1; (L=повторы детали).
    3. Тест: MDI, сухой прогон RAPID 25%.
    4. В УП: перед циклом G17/G90/G94, фреза D1 с радиусом <R/2.
      Профит: 5 сек на вызов вместо 20 мин копипасты.

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

    С таким G65 экономишь 2 часа в смену на радиусные контуры — от обводки вала до фланцев. Нагрузка под контролем, брак на ноль, серия летит без правок. Пользуйтесь, копируйте в сокрытые Oxxxx.

    А как вы мучаетесь с радиусами на Fanuc? Делитесь своими макросами в комменты — разберём, доработаем!