Перейти к содержанию
  • Лента
  • Популярные
  • Последние
  • Теги
  • Пользователи
  • Сотрудничество
Свернуть
Логотип бренда
Категории
  1. Промышленный форум
  2. Категории
  3. ПO для чпу
  4. Программирование ЧПУ | CNC
  5. Макрос WHILE для G73: параметрический цикл сверления на Fanuc

Макрос WHILE для G73: параметрический цикл сверления на Fanuc

Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC
g73параметрическое программированиемакросы while
1 Сообщения 1 Постеры 2 Просмотры 1 Отслеживают
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    Модератор
    написал отредактировано
    #1

    Обложка: Как написать макрос на Fanuc с WHILE для параметрического цикла G73 глубокого сверления массива с контролем нагрузки без SCADA

    Параметрическое программирование на Fanuc - это не просто удобство, это способ избежать писанины и автоматизировать обработку одинаковых деталей с разными припусками. Когда нужно просверлить массив отверстий с контролем нагрузки на инструмент, вручную переписывать координаты для каждого - дело неблагодарное.

    Цикл G73 в паре с WHILE-циклом параметров ПУ позволяет создать универсальную программу, которая сама подстраивается под входные данные. Глубина сверления, подача, количество проходов - всё это настраивается через переменные без переписывания кода.

    Как работает G73 и зачем нужны параметры

    Цикл G73 - это стружкодробление при сверлении. Сверло углубляется на заданную глубину, потом отскакивает назад на расстояние R, снова заходит и так повторяется нужное количество раз. Это спасает при сверлении глубоких отверстий, потому что стружка не забивает канавки и инструмент живёт дольше.

    Есть проблема: если сверлить разные материалы или разные толщины, каждый раз приходится менять подачу и глубину прохода вручную. Параметры Fanuc решают эту беду - задаёшь значения в переменных, и программа сама переестраивается. Плюс можно сделать логику контроля нагрузки: если ток шпинделя растёт, программа автоматически снижает подачу.

    Основные параметры G73, которые нужно знать:

    • U - припуск на чистовую по диаметру (радиусное значение в половину припуска)
    • W - припуск на чистовую по длине
    • R - расстояние отскока при стружкодроблении
    • Q - глубина каждого прохода в миллиметрах
    • P/Q - номера строк начала и конца контура (для токарного варианта)
    • F - подача в миллиметрах на оборот или в минуту

    Структура параметрического макроса на WHILE

    Параметры в Fanuc - это переменные с номерами от 1 до 33 (локальные) и от 100+ (глобальные). Они хранятся в памяти ПУ и могут передаваться из программы в программу. WHILE - это условный цикл, который повторяет блок кода, пока условие истинно.

    Логика работает так: задаёшь начальные значения в переменных (координаты X, Y, глубину отверстия, подачу), потом запускаешь цикл WHILE, который перебирает массив точек, вызывает G73 и корректирует параметры на лету. Если нужен контроль нагрузки, добавляешь проверку текущей стоимости ока шпинделя через переменную #5002 или используешь сигналы от датчиков.

    Примерная структура выглядит так:

    • Инициализация переменных (начальные координаты, припуски, подача)
    • Расчёт количества отверстий в массиве
    • Цикл WHILE с условием (пока номер текущего отверстия меньше или равен общему количеству)
    • Внутри цикла: вызов G73, сдвиг координат на шаг сетки, проверка нагрузки
    • Конец цикла, возврат в исходную позицию

    Так выглядит скелет макроса:

    G65 P9832 A#1 B#2 C#3 D#4 E#5 F#6
    (P9832 - это вызов параметрического цикла, A-F - параметры в переменные #1-#6)
    
    WHILE [#1 LE #10] DO1
      G00 X#2 Y#3 Z10
      G73 Z-#4 Q#5 F#6
      #2=#2+#7 (сдвиг X на величину шага)
      #1=#1+1
    END1
    

    Контроль нагрузки в цикле

    Когда говорим о контроле нагрузки, имеем в виду две вещи: мониторинг тока шпинделя и автоматическая коррекция подачи. Fanuc позволяет читать ток через переменную #5002 (для некоторых ПУ это может быть другой номер, зависит от конфигурации).

    Если программа видит, что ток превышает пороговое значение, она может снизить подачу, увеличить глубину прохода или выдать сигнал тревоги оператору. Это критически важно при сверлении чугуна или нержавеющей стали, когда стружка может забить отверстие и сломать инструмент за две секунды.

    Вот как организовать контроль в параметрическом цикле:

    • Задаёшь максимально допустимый ток: #20 = 80 (ампер, пример)
    • Перед каждым проходом G73 читаешь текущий ток: #21 = #5002
    • Сравниваешь: IF #21 > #20, то снижаешь подачу на 20-30% и повторяешь проход
    • IF ток остаётся высоким после коррекции, программа выводит сообщение об ошибке и встаёт

    Это выглядит так в коде:

    IF [#5002 GT #20] THEN
      #6 = #6 * 0.8 (снизили подачу на 20%)
      M03 (если нужно, переустановить шпиндель)
    ELSE
      G73 Z-#4 Q#5 F#6
    END
    

    Причём можно делать это не один раз, а с попытками - добавить счётчик попыток и прервать программу, если после 3 коррекций ток всё равно зашкаливает.

    Практический пример: массив отверстий 5x5 с автоподачей

    Возьмём реальную задачу: нужно просверлить 25 отверстий в сетке 5x5 с шагом 50 мм, глубина каждого 80 мм, материал - конструкционная сталь. Сверло диаметр 10 мм, подача примерно 0.15 мм/об. Нужна автоматическая коррекция, если станок сопротивляется.

    Вот как можно это запрограммировать:

    O9001 (параметрическая программа сверления массива)
    #1 = 1 (счётчик отверстий)
    #2 = 50 (начальная координата X)
    #3 = 50 (начальная координата Y)
    #4 = 80 (глубина отверстия)
    #5 = 5 (глубина прохода за один раз, стружкодробление)
    #6 = 0.15 (подача в мм/об)
    #7 = 50 (шаг сетки X)
    #8 = 50 (шаг сетки Y)
    #9 = 25 (всего отверстий, 5x5)
    #10 = 0 (счётчик рядов)
    #11 = 0 (счётчик столбцов)
    #20 = 90 (максимальный допустимый ток, ампер)
    #21 = 0 (текущий ток, переменная для чтения)
    
    G00 Z10 (подвод в быструю, выше детали)
    
    WHILE [#10 LT 5] DO1
      WHILE [#11 LT 5] DO2
        G00 X#2 Y#3 Z10 (подвод в позицию)
        M08 (включили эмульсию)
        M03 S800 (шпиндель 800 об/мин)
        G04 P1 (выдержка 1 секунда)
        
        #21 = #5002 (прочитали ток)
        IF [#21 GT #20] THEN
          #6 = #6 * 0.85 (снизили подачу на 15%)
          M01 (опциональная остановка - оператор может вмешаться)
        END
        
        G01 Z-#4 F#6 (линейное сверление с подачей)
        G01 Z10 F500 (подъём)
        
        #3 = #3 + #8 (сдвиг Y на шаг)
        #11 = #11 + 1 (счётчик столбцов +1)
      END2
      
      #3 = 50 (вернули Y в исходную позицию)
      #11 = 0 (обнулили счётчик столбцов)
      #2 = #2 + #7 (сдвиг X на шаг)
      #10 = #10 + 1 (счётчик рядов +1)
    END1
    
    M09 (выключили эмульсию)
    M05 (остановили шпиндель)
    G00 Z100 (поднялись выше)
    M30 (конец программы)
    %
    

    В этом коде логика простая: два вложенных цикла WHILE - один по строкам (X), второй по столбцам (Y). После каждого отверстия координаты сдвигаются на шаг сетки. Перед сверлением идёт проверка тока, и если он высокий, подача снижается.

    Основные шаги алгоритма:

    1. Инициализация переменных - координаты начальной точки, параметры сверления
    2. Проверка условия WHILE - не превышено ли количество отверстий
    3. Подвод инструмента в позицию через G00 (ускоренный ход)
    4. Включение шпинделя и охлаждающей жидкости
    5. Чтение тока и коррекция подачи при необходимости
    6. Сверление через G01 с контролируемой подачей
    7. Подъём инструмента
    8. Сдвиг координат и увеличение счётчиков
    9. Выход из цикла, когда счётчик достигает нужного значения

    Оптимизация: G73 вместо линейного сверления

    Если глубины отверстий большие (больше 5 диаметров сверла), имеет смысл использовать именно G73 с параметром Q для автоматического стружкодробления, а не просто G01. Fanuc сам разбивает глубину на куски, делает отскоки, и всё это происходит автоматически - нам только нужно указать глубину за один проход.

    Модифицированный вариант с G73:

    G00 X#2 Y#3 Z10
    M08
    M03 S800
    G04 P1
    
    G73 Z-#4 Q#5 F#6
    (Z-#4 - конечная глубина со знаком минус)
    (Q#5 - глубина каждого прохода)
    (F#6 - подача)
    
    G00 Z10
    

    Это заметно экономит время и уменьшает износ инструмента, потому что стружка не забивается и не поломает сверло. Если в программе изменить только переменную #5 (глубину прохода), вся логика стружкодробления пересчитается автоматически.

    Сравнение подходов:

    Подход Преимущества Недостатки
    Линейное G01 сверление Простая логика, полный контроль над движениями Стружка может забить отверстие при больших глубинах
    G73 с Q (стружкодробление) Автоматический отсчёт, экономия времени, меньше износа Нужно правильно рассчитать Q и R параметры
    G83 (полный вывод сверла) Для очень глубоких отверстий, полная гарантия сброса стружки Самый медленный способ, много холостых ходов

    Передача параметров и масштабируемость

    Парамическое программирование на Fanuc позволяет вызывать одну и ту же программу несколько раз с разными переменными. Вместо того чтобы писать 10 разных программ для разных деталей, пишешь одну и просто меняешь входные данные.

    Это делается через G65 (основной вызов) или G66 (модальный вызов с повторением). Например, из основной программы детали можно вызвать подпрограмму сверления так:

    G65 P9001 A25 B50 C80 D5 E0.15 F50 (вызов программы O9001 с параметрами)
    (A=количество отверстий, B=начальная X, C=глубина, D=проход за раз, E=подача, F=шаг)
    

    Подпрограмма читает эти значения из аргументов G65 и распределяет их по переменным. Это очень удобно, когда один и тот же цикл используется для разных деталей - меняешь только аргументы, код не трогаешь.

    Основные преимущества такого подхода:

    • Один код для множества вариантов деталей
    • Быстрое редактирование параметров без риска ошибок в синтаксисе
    • Простота масштабирования - добавил новый размер? Просто вызвал программу с другими параметрами
    • Минимизация времени настройки перед запуском производства

    Отладка и сигналы об ошибках

    Когда макрос работает в реальности, нужны сигналы обратной связи. Программа должна уметь выводить сообщения об ошибках, останавливаться при проблемах и давать оператору информацию, что произошло. В Fanuc для этого есть функция DPRNT (вывод сообщения на экран) и различные коды ошибок.

    Добавим в программу контроль граничных условий:

    IF [#4 GT 200] THEN
      DPRNT (ГЛУБИНА ОТВЕРСТИЯ ПРЕВЫШАЕТ 200 ММ)
      DPRNT (ПРОВЕРЬ ИСХОДНЫЕ ДАННЫЕ)
      M30 (завершение с ошибкой)
    END
    
    IF [#6 LT 0.05] THEN
      DPRNT (ПОДАЧА СЛИШКОМ НИЗКАЯ, МИНИМУМ 0.05)
      #6 = 0.05
    END
    

    Такая защита спасает от критических ошибок - если оператор случайно забыл поменять параметры и запустил программу с неправильными значениями, станок встанет и выведет понятное сообщение вместо того, чтобы ломать инструмент.

    Интеграция с системой мониторинга (без SCADA)

    Если нет полноценной SCADA-системы, можно организовать простой мониторинг прямо в программе. Используешь переменные для хранения статистики: количество просверленных отверстий, общее время работы, количество коррекций подачи.

    Это может выглядеть так:

    #30 = 0 (счётчик успешных отверстий)
    #31 = 0 (счётчик коррекций)
    #32 = 0 (счётчик ошибок)
    
    WHILE [условие] DO
      ... основной цикл ...
      
      IF [коррекция нужна] THEN
        #31 = #31 + 1
      ELSE
        #30 = #30 + 1
      END
    END
    
    DPRNT (ПРОСВЕРЛЕНО ОТВЕРСТИЙ:) #30
    DPRNT (КОРРЕКЦИЙ ПОДАЧИ:) #31
    DPRNT (ОШИБОК:) #32
    

    Из этого логов потом можно вручную или через простой парсер вытащить информацию и занести в таблицу. Если станок подключен к сети и на ПУ есть USB или Ethernet, можно организовать сохранение логов в файл на флешку или отправку на сервер.

    Что нужно помнить при написании макроса

    Параметрическое программирование - это мощный инструмент, но требует внимательности. Вот основные грабли, на которые попадаются даже опытные программисты:

    • Переменные с номерами 1-33 - локальные, существуют только во время выполнения программы и теряются после M30
    • Переменные 100+ - глобальные, сохраняются в памяти ПУ и могут использоваться в других программах
    • WHILE без END приводит к синтаксической ошибке - всегда закрывай цикл
    • Вложенные WHILE нужно закрывать в обратном порядке - сначала внутренний, потом внешний
    • Номера блоков DO1, DO2 и т.д. должны быть уникальными, если используется несколько циклов подряд
    • Проверка условий в IF работает только с операторами сравнения (LT, GT, EQ, NE), не забывай квадратные скобки
    • Операция присваивания: #1 = #1 + 1 работает, но #1 + 1 без присваивания ничего не даст

    Когда это действительно полезно

    Параметрическое сверление с WHILE - это не только про удобство, это про экономику производства. Если нужно обрабатывать несколько деталей подряд с похожей геометрией, разница во времени может быть 2-3 раза. Вместо того чтобы переписывать программу вручную для каждого размера, задаёшь переменные один раз и запускаешь.

    Это особенно актуально для небольших производств и job-shop’ов, где одна и та же операция повторяется для разных партий. Плюс контроль нагрузки через переменные без SCADA даёт относительный мониторинг состояния инструмента - программа автоматически заметит, если материал твёрже обычного или сверло затупилось.

    Если в будущем появится возможность подключить SCADA или более сложную систему мониторинга, такая программа легко интегрируется - достаточно вместо переменных #20 передавать данные с датчиков или заменить DPRNT на сигналы в сеть. Архитектура кода остаётся той же.

    Так что стоит потратить время на написание хорошего параметрического макроса один раз - потом он будет работать на тебя долгие месяцы, экономя время наладки и уменьшая риск ошибок оператора.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовал этот пост, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    • kirilljsxK

      Макрос WHILE на Fanuc для фрезеровки массива отверстий

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC while макрос параметрическая фрезеровка fanuc g-код
      1
      1
      0 Голоса
      1 Сообщения
      5 Просмотры
      Нет ответов
    • kirilljsxK

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

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g65 макрос fanuc расточка контроль нагрузки
      1
      1
      0 Голоса
      1 Сообщения
      6 Просмотры
      Нет ответов
    • kirilljsxK

      Макрос Fanuc для G73: высокоскоростное сверление глубоких отверстий в алюминии 6061 без стружки

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC fanuc макрос g73 сверление алюминий 6061
      1
      1
      0 Голоса
      1 Сообщения
      3 Просмотры
      Нет ответов
    • kirilljsxK

      Настройка G-кодов Fanuc 6050-6059 для макросов сверления без подпрограмм

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC fanuc g-коды макросы сверления параметры 6050
      1
      1
      0 Голоса
      1 Сообщения
      3 Просмотры
      Нет ответов
    • kirilljsxK

      G-код G83: цикл сверления в Fanuc для глубоких отверстий

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g83 fanuc сверление
      1
      0 Голоса
      1 Сообщения
      71 Просмотры
      Нет ответов
    • kirilljsxK

      G75 в Fanuc: цикл автоматической обработки канавок

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g75 fanuc чпу
      1
      0 Голоса
      1 Сообщения
      42 Просмотры
      Нет ответов
    • kirilljsxK

      G-код G73: цикл токарной обработки в Fanuc для черновой обточки

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g73 fanuc токарный цикл
      1
      0 Голоса
      1 Сообщения
      61 Просмотры
      Нет ответов
    • kirilljsxK

      Циклы сверления Fanuc G81: синтаксис, примеры и применение на ЧПУ

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g81 fanuc чпу сверление
      1
      0 Голоса
      1 Сообщения
      37 Просмотры
      Нет ответов

    Категории

    • Главная
    • Новости
    • Объявления
    • ПО и ЧПУ
    • Обсуждение

    Контакты

    • Сотрудничество
    • forum@investsteel.ru

    © 2022 - 2026 InvestSteel, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Популярные
    • Последние
    • Теги
    • Пользователи
    • Сотрудничество