Повторяющиеся отверстия редко требуют длинной управляющей программы. Если координаты образуют простой ряд, задачу часто решают стандартный цикл G81, приращения G91 и число повторов L. Но при работе с сеткой отверстий, несколькими типоразмерами детали или часто меняющимся шагом такой код приходится редактировать вручную. Здесь полезно макропрограммирование: постоянная последовательность действий остается в подпрограмме, а размеры и количество отверстий передаются как параметры.
Ниже разобран пример для фрезерной стойки Haas с поддержкой макросов. Синтаксис переменных, циклов и вызова подпрограмм зависит от системы ЧПУ и набора активированных опций. Перед запуском следует проверить руководство именно для своей стойки, выполнить графическую проверку и провести первый прогон над заготовкой.
Когда достаточно стандартного цикла
G81 уже устраняет большую часть повторяющегося кода. После активации цикла стойка выполняет сверление в каждой новой позиции по X и Y, пока цикл не будет отменен командой G80. В документации Haas приведен пример, где приращение по X и параметр L создают ряд равноудаленных отверстий:
G90 G54 X10. Y20.
G43 H01 Z50.
G99 G81 Z-12. R2. F120.
G91 X25. L4
G80
G90
Такой вариант удобен для одного прямого ряда. Важно учитывать, что первое отверстие выполняется в точке, где активирован G81, а строка с G91 X25. L4 добавляет еще четыре позиции. Ошибка в подсчете легко дает лишнее отверстие или смещает весь рисунок.
У стандартных циклов есть и другие средства. G82 добавляет выдержку на дне, G83 применяется для сверления с периодическим выводом сверла, а G98 и G99 определяют уровень возврата. Выбор цикла должен соответствовать инструменту, глубине, материалу и условиям отвода стружки. Макрос отвечает за геометрию и повторение; он не заменяет корректно выбранную технологию сверления.
Что дает параметрический макрос
Для прямоугольной сетки достаточно передать девять величин: координаты первого отверстия, шаг по двум осям, число столбцов и строк, глубину, плоскость R и подачу. Оператор меняет одну строку вызова, а вложенные циклы рассчитывают координаты каждой точки.
В следующем вызове X и Y задают начало сетки, I и J — шаг, A и B — число столбцов и строк:
G65 P9010 X10. Y20. I25. J20. A4. B3. Z-12. R2. F120.
Для Haas аргументы G65 записываются в локальные переменные макропрограммы. В этом примере X соответствует #24, Y — #25, I — #4, J — #5, A — #1, B — #2, Z — #26, R — #18, F — #9. При каждом вызове G65 стойка предоставляет макропрограмме новый набор локальных переменных, поэтому один и тот же код можно использовать с разными параметрами.
Макропрограмма прямоугольной сетки
O09010 (DRILL RECTANGULAR PATTERN)
#30 = 0 (ROW INDEX)
WHILE [#30 LT #2] DO1
#31 = 0 (COLUMN INDEX)
WHILE [#31 LT #1] DO2
#32 = [#24 + #31 * #4] (CURRENT X)
#33 = [#25 + #30 * #5] (CURRENT Y)
G90 G00 X#32 Y#33
G81 Z#26 R#18 F#9
G80
#31 = #31 + 1
END2
#30 = #30 + 1
END1
M99
Внешний цикл считает строки, внутренний — столбцы. Текущая координата получается прибавлением к исходной точке произведения номера позиции на шаг. При A4 и B3 программа выполнит двенадцать отверстий: четыре в каждой из трех строк.
G81 в этом учебном варианте активируется и отменяется для каждой точки. Код получается немного длиннее по времени выполнения, зато состояние цикла явно ограничено одной операцией. В производственной версии цикл можно организовать иначе, но тогда нужно особенно внимательно контролировать первое срабатывание, модальные состояния и отмену G80.
Главная программа и безопасные состояния
Макрос не должен самостоятельно угадывать номер инструмента, корректор длины, обороты или рабочее смещение. Эти данные лучше оставить в главной программе: так наладчику проще проверить подготовку операции.
O01000
G90 G17 G40 G49 G80 G94
G54
T1 M06
S1800 M03
G00 X10. Y20.
G43 H01 Z50.
M08
G65 P9010 X10. Y20. I25. J20. A4. B3. Z-12. R2. F120.
G80
G00 Z50.
M09
M05
G53 G00 Z0.
M30
Здесь перед вызовом заданы плоскость G17, абсолютное программирование G90, рабочая система координат G54 и коррекция длины G43 H01. Конкретные безопасные высоты, способ выхода в машинный ноль и последовательность включения оборудования должны соответствовать станку и принятому на предприятии шаблону.
Проверки, без которых макрос опасен
Параметрический код сокращает ручное редактирование, но одна неверная переменная способна изменить весь рисунок отверстий. Практический макрос стоит дополнить проверками входных данных. Число строк и столбцов должно быть положительным целым, плоскость R — находиться с безопасной стороны поверхности, а рассчитанные X и Y — оставаться в пределах заготовки и хода станка.
- Проверьте соответствие букв аргументов локальным переменным на конкретной стойке.
- Убедитесь, что номера DO и END образуют правильные пары во вложенных циклах.
- Заранее рассчитайте последнюю точку: X + (A − 1) × I и Y + (B − 1) × J.
- Проверьте знак Z, положение R и режим возврата G98 или G99.
- Запустите графическую симуляцию, затем одиночный кадр с уменьшенной подачей быстрых перемещений.
- При наличии тисков или прижимов проверьте не только точки сверления, но и траектории переходов.
Полезна также защита от пропущенных аргументов. На стойках, где незаданные локальные переменные имеют пустое значение, макрос может сформировать аварийное сообщение до начала движения. Конкретный синтаксис проверки пустой переменной и генерации аварии нужно брать из руководства системы ЧПУ.
Когда макрос действительно упрощает работу
Для единственной детали с пятью известными отверстиями обычный G81 и список координат часто читаются лучше. Макрос оправдан, когда рисунок регулярно меняется по понятным правилам: прямоугольные и круговые массивы, несколько размеров одной детали, повторяющиеся отверстия на разных рабочих смещениях или семейство изделий с общей технологией.
Хорошая макропрограмма имеет узкую задачу и понятный интерфейс. Назначение каждого аргумента фиксируют в комментариях или отдельной карте наладки, а пример корректного вызова хранят рядом с программой. Тогда наладчик меняет размеры сетки и режимы обработки, не редактируя формулы и счетчики.
Официальная документация Haas отдельно описывает передачу аргументов через G65 и локальные переменные, а также работу стандартных циклов сверления. Эти разделы следует использовать как исходную точку и сверять с версией программного обеспечения конкретного станка.