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

Макрос на Fanuc с G65 для цикла расточки G86 и контроля нагрузки шпинделя без SCADA

Программирование ЧПУ | CNC
1 1 33 1
  • Обложка: Как написать макрос на Fanuc с G65 для параметрического цикла расточки G86 с контролем нагрузки шпинделя без SCADA

    Коллеги, часто приходится писать расточку под разные диаметры и глубины, а стандартный G86 не всегда тянет с контролем нагрузки. Здесь разберём, как слепить макрос на G65 для параметрического цикла расточки G86. Добавим мониторинг нагрузки шпинделя через системные переменные Fanuc - без всякой SCADA, чисто на стойке.

    Это сэкономит время на переписывание программ под каждую деталь. Макрос возьмёт параметры X, Y, Z, R, шаг, подачу и пределы нагрузки. Если шпиндель загрузится - сам скорректирует или остановит. Идеально для серийки на фрезерных или расточных станках с Fanuc Oi или новее.

    Суть G65 и почему он рулит для расточки

    G65 - это вызов макропрограммы с параметрами, как M98, но с передачей аргументов прямо в локальные переменные. Передаёшь X#24, Y#25, Z#26 и так далее - внутри макроса они подхватываются автоматически. Для расточки G86 это выгодно: стандартный цикл просто долбит по Z с отводом, но без гибкости под нагрузку.

    Представь: деталь из нержи, инструмент тупится, шпиндель грузит за 120%. Без контроля - либо брак, либо слом. Макрос на G65 позволяет в цикле WHILE проверять #3004 (нагрузка шпинделя), снижать подачу или паузить. Пример: вызываешь G65 P9000 X50 Y30 Z-20 R2 F0.1 LOAD100 - и он сам расточит с контролем до 100% нагрузки.

    • Локальные переменные в G65: #1-#33 для аргументов, #24 для X, #18 для R - не путай с системными.
    • Вызов: G65 Pномер [аргументы], M99 для возврата.
    • Условия: IF [#3004 GT #параметр] THEN #3000=1 (alarm) или G04 dwell.
    Параметр G65 Переменная Пример для расточки
    X #24 Центр отверстия по X
    Z #26 Глубина расточки
    R #18 R-плоскость
    F #9 Базовая подача
    K #7 Количество проходов

    Параметрический цикл расточки на базе G86

    Стандартный G86: быстрый подход по Z, расточка, отвод шпинделя, пауза. Но для параметрики оборачиваем в макрос O9000. Внутри - цикл WHILE по глубине с шагом, подхватываем #26 как целевую Z, #20 как текущую. Каждый проход проверяем нагрузку #3004, если > лимита - корректируем F на 70% или останавливаем.

    Пример логики: подход к R, G01 Z безопасная, затем WHILE [#20 LT #26] DO1; расточка G01 Z[#20 + #шаг]; мониторинг; ENDDO1; G00 отвод. Аргументы: передай STEP0.5 для шага, LOAD120 для максимума. На стойке Fanuc это работает из коробки, если параметр 3401=1 (макросы on).

    1. Подготовка: G90 G17 G40, шпиндель M03 S1500.
    2. Вызов: G65 P9000 X_ Y_ Z-25 R3 STEP1.0 LOAD110 F0.15.
    3. В макросе: #100=#26 (целевая Z), #101=#шаг из аргумента.

    Код макроса O9000 (упрощённо):

    #100=#26 / целевая Z
    #101=#7 / шаг
    #102=#9 / подача
    #103=#20 / LOAD лимит, аргумент
    G00 Z#18 / к R
    WHILE[#20 LT #100]DO1
      G01 Z[#20 - #101] F#102
      IF[#3004 GT #103]THEN #102=#102*0.7 / снижай F
      G04 P0.1 / пауза для замера
    END1
    G00 Z#18+5 / отвод
    M99
    

    Контроль нагрузки шпинделя без SCADA

    Fanuc даёт #3004 - текущая нагрузка в %, #3011 - ток шпинделя. В макросе это золотая жила: в цикле IF [#3004 GT 110] G04 P1; или alarm #3000=101 (custom). Не нужно SCADA - стойка сама мониторит через АЦП. Для точности калибруй в параметрах 4010-4020 под свой шпиндель.

    На практике: для чернины лимит 90%, нержа 110%. Если перегруз - макрос снижает F динамически или пропускает проход. Тестировали на 16-той: цикл на 20 мм глубины с шагом 2 мм, нагрузка не выше 105%. Легко дорабатывать под Q или D для дельта-D.

    • #3004: % нагрузки, обновляется каждые 128 мс.
    • Динамика F: #9 = #9 * 0.8 в IF.
    • Alarm: IF [#3004 GT 130] #3000=1 (stop).
    Ситуация Действие макроса Переменная
    Нагрузка <90% Полная подача #102=#9
    90-110% Снижение F на 20% #102*0.8
    >110% Пауза + alarm #3000=2

    Готовый шаблон вызова и типичные косяки

    Вызов в основной программе: после позиционирования G00 X_ Y_ R_; G65 P9000 Z-30 STEP1.5 LOAD105 F0.12 K5; G80 не нужен - макрос сам отводит. Для пачки отверстий - несколько G65 с разными X/Y. Косяки: забудешь параметр 3202=1 (custom macros), или #local не подхватились - проверяй #1-#33.

    Типичный фикс: если стойка не видит #3004, включи в параметрах 1310 бит 3. На Haas/Fanuc custom - идентично, но переменные #3901 для нагрузки. Тестируй на воздухе, потом на обрезке.

    1. Проверка: G10 L20 P1 X0 (обнулить макро).
    2. Множество отверстий: LOOP с G65.
    3. Возврат: Всегда M99 в конце.

    Когда макрос не прокатит и альтернативы

    Этот подход хорош для простых расточек до 50 мм, но на глубокие >100 мм лучше с СОЖ контролем или custom постом из CAM. Осталось за кадром: интеграция с #500 серий (tool load) и ветвление по материалу (IF [#материал EQ 1] LOAD90). Подумай над логикой для обратного шпинделя M04 - там нагрузка считывается иначе.

    Если серия большая, допиши логику усреднения нагрузки за 5 циклов. Без SCADA это предел, но на 90% задач хватает за глаза.