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

Сверление отверстий в сетке: универсальная макропрограмма для ЧПУ Fanuc

Перенесена Fanuc
3 2 220
  • Привет, коллеги! Хочу поделиться с вами своей макропрограммой для сверления группы отверстий, расположенных в виде прямоугольной или круговой сетки. Это одна из тех задач, которые часто возникают в металлообработке, и я решил сделать её максимально гибкой и удобной для использования.

    Ниже приведена моя программа, которая позволяет сверлить отверстия в прямоугольной или круговой сетке. Я постарался сделать её максимально читаемой и удобной для модификации:

    Макропрограмма для сверления отверстий в сетке

    O0002 (Макропрограмма для сверления отверстий в сетке)
    (Используемые переменные:)
    #1=50    (Количество отверстий по X для прямоугольной сетки)
    #2=30    (Количество отверстий по Y для прямоугольной сетки)
    #3=10    (Шаг между отверстиями по X)
    #4=10    (Шаг между отверстиями по Y)
    #5=5     (Глубина сверления)
    #6=200   (Скорость подачи при сверлении)
    #7=10    (Безопасная высота над заготовкой)
    #8=0     (Тип сетки: 0 - прямоугольная, 1 - круговая)
    #9=50    (Радиус круговой сетки)
    
    G21       (Программа в мм)
    G17       (Выбор плоскости XY)
    G90       (Абсолютное программирование)
    G0 Z[#7]  (Подъем на безопасную высоту)
    
    IF [#8 EQ 0] GOTO100 (Переход к прямоугольной сетке)
    IF [#8 EQ 1] GOTO200 (Переход к круговой сетке)
    
    N100 (Прямоугольная сетка)
    #10=0     (Счётчик по X)
    #11=0     (Счётчик по Y)
    WHILE [#10 LT #1] DO1
      WHILE [#11 LT #2] DO2
        G0 X[#10*#3] Y[#11*#4]
        G1 Z-[#5] F[#6]
        G0 Z[#7]
        #11=#11+1
      END2
      #10=#10+1
      #11=0
    END1
    GOTO300
    
    N200 (Круговая сетка)
    #12=0     (Счётчик отверстий)
    #13=360/[#1] (Угловой шаг между отверстиями)
    WHILE [#12 LT #1] DO3
      #14=[#9*COS[#12*#13]] (Вычисление координаты X)
      #15=[#9*SIN[#12*#13]] (Вычисление координаты Y)
      G0 X[#14] Y[#15]
      G1 Z-[#5] F[#6]
      G0 Z[#7]
      #12=#12+1
    END3
    
    N300 (Завершение программы)
    G0 Z[#7]
    M30       (Конец программы)
    

    Пояснения к программ

    Переменные:

    • #1 — количество отверстий по оси X (для прямоугольной сетки) или общее количество отверстий (для круговой).
    • #2 — количество отверстий по оси Y (только для прямоугольной сетки).
    • #3 и #4 — шаг между отверстиями по осям X и Y (для прямоугольной сетки).
    • #5 — глубина сверления.
    • #6 — скорость подачи при сверлении.
    • #7 — безопасная высота над заготовкой.
    • #8 — тип сетки: 0 для прямоугольной, 1 для круговой.
    • #9 — радиус круговой сетки (используется только для круговой сетки).

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

    • Программа проверяет значение переменной #8, чтобы определить, какой тип сетки использовать.
    • Для прямоугольной сетки используется вложенный цикл WHILE, который проходит по всем строкам и столбцам.
    • Для круговой сетки вычисляются координаты каждого отверстия с помощью тригонометрических функций (COS и SIN).
    • После завершения обработки всех отверстий инструмент поднимается на безопасную высоту, и программа завершается.

    Как использовать программу?

    1. Задайте параметры в начале программы:
      1.1 Количество отверстий (#1 и #2 для прямоугольной сетки или только #1 для круговой).
      1.2 Шаг между отверстиями (#3 и #4 для прямоугольной сетки).
      1.3 Глубину сверления (#5), скорость подачи (#6) и безопасную высоту (#7).
      1.4 Тип сетки (#8) и радиус (#9) для круговой сетки.
    2. Загрузите программу в станок и запустите её.

    Мой опыт

    Я применяю эту программу уже несколько месяцев, и она отлично зарекомендовала себя. Особенно удобно работать с круговыми сетками, где нужно точно рассчитывать координаты отверстий. Вместо того чтобы вручную вычислять каждую точку, программа делает всё автоматически.

    Если у вас есть вопросы или предложения по улучшению программы, пишите в комментариях. Буду рад обсудить!

    Надеюсь, эта программа будет полезна вам так же, как и мне. Удачи в работе на станках! 🚀


    Кстати на нашем форуме я написал бесплатный и подробный курс по программированию ЧПУ для систем FANUC и Sinumerik, включающий разбор синтаксиса, примеры кода и практические рекомендации. Курс полностью бесплатный! Для доступа к материалам требуется регистрация на форуме.

  • Добрый день, спасибо Вам за этот пост, очень помогли в написании дипломной работы!

  • Добрый день, спасибо Вам за этот пост, очень помогли в написании дипломной работы!

    @HAKKANARO Доброго дня! Очень рад, что информация оказалась полезной.
    Удачи в написании диплома, пусть всё получится наилучшим образом!

  • KirilljsK Kirilljs переместил эту тему из ПO для чпу в

  • Разбираемся с коррекцией радиуса (G40/G41/G42)

    Программирование ЧПУ | CNC чпу gcode
    1
    4 Голоса
    1 Сообщения
    82 Просмотры
    Нет ответов
  • Как включить GPP Wizard

    SolidCam чпу cam solidcam
    1
    2
    4 Голоса
    1 Сообщения
    82 Просмотры
    Нет ответов
  • G72 Fanuc: программирование резьбы на токарных станках с ЧПУ

    Fanuc
    1
    3 Голоса
    1 Сообщения
    153 Просмотры
    Нет ответов
  • GOTO в ЧПУ-программировании: что это и как работает?

    Программирование ЧПУ | CNC fanuc чпу
    1
    1 Голоса
    1 Сообщения
    234 Просмотры
    Нет ответов
  • Самые распространенные и популярные программы для ЧПУ Fanuc

    Перенесена Fanuc
    1
    0 Голоса
    1 Сообщения
    735 Просмотры
    Нет ответов
  • Список макрокоманд языка Macro-B — система ЧПУ fanuc

    Перенесена Fanuc
    1
    0 Голоса
    1 Сообщения
    816 Просмотры
    Нет ответов
  • Примеры программ на Fanuc для станков с ЧПУ

    Прикреплена Перенесена Fanuc чпу cnc
    2
    1
    0 Голоса
    2 Сообщения
    3k Просмотры
    KirilljsK
    Вы можете найти больше полезных постов о системе Fanuc в разделе -> https://forum.investsteel.ru/category/107/fanuc
  • Основы макропрограммирования

    Перенесена Программирование ЧПУ | CNC чпу cnc
    3
    1
    0 Голоса
    3 Сообщения
    134 Просмотры
    KirilljsK
    Определение входных данных После того как мы определили нашу функциональность и стандартизировали использование таблицы переменных, нам нужно определить входные данные для нашей программы, необходимые для получения желаемых результатов функциональности. Мой метод заключается в том, чтобы поместить входные данные в отдельную подпрограмму от основной рабочей программы. Это помогает предотвратить ошибки при редактировании из-за любопытства или случайных изменений в основном макросе. Входные данные, которые нам нужны для выполнения сверления, следующие: #500: Количество отверстий для сверления #501: Диаметр окружности болтов #502: Угол первого отверстия вдоль оси X при угле координат машины 0. Обычно это направление X+. #503: Абсолютная позиция по оси X для центра окружности болтов #504: Абсолютная позиция по оси Y для центра окружности болтов #505: Глубина отверстия #506: Глубина захода (Pecking Depth) #507: Высота плоскости R (R plane clearance) #508: Скорость подачи (Feedrate) для сверления #509: Высота зазора (над частью Z0) для быстрых перемещений между отверстиями #510: Скорость шпинделя для сверления #511: Функция W в цикле сверления G82 #512: Функция E в цикле сверления G82 #513: Функция V в цикле сверления G82 #514: Функция L в цикле сверления G82 Это все, что я могу придумать на данный момент, что нам нужно для достижения нашей заявленной функциональности. Если кто-то заметит что-то пропущенное, дайте мне знать, так как я пишу это и обдумываю по ходу. Кстати, я пишу это, основываясь на реализации Fanuc на Brother B00.