Макропрограммирование в Fanuc: подпрограммы и переменные для ЧПУ
-
Макропрограммирование в Fanuc позволяет упростить сложные задачи на станках с ЧПУ. Мы разберём подпрограммы и переменные, чтобы программы стали короче и гибче. Это решает проблему повторяющегося кода и ручных расчётов.
С подпрограммами и переменными можно создавать универсальные блоки для разных деталей. Вы сэкономите время на редактировании и минимизируете ошибки. Подходит для серийного производства и family of parts.
Что такое переменные в Fanuc Macro B
Переменные в Fanuc — это контейнеры для значений, которые делают G-код параметрическим. Они обозначаются символом #, например, #100 = 5 присваивает переменной #100 значение 5. Такие переменные используются для хранения координат, скоростей или счётчиков циклов.
Есть несколько типов: локальные (#1–#33), общие (#100–#199, #500–#999) и системные. Локальные хороши для временных расчётов внутри подпрограммы, они “исчезают” после завершения. Общие сохраняют значения между вызовами, но сбрасываются при выключении. Системные, как #5021 для текущего инструмента, дают доступ к состоянию станка.
Типы переменных и их применение:
- Локальные (#1–#9, #18–#33): Для параметров при вызове G65 Pxxxx A#1 B#2. Не пересекаются при вложенности.
- Общие (#100+): Идеальны для счётчиков, как #100 = #100 + 1 в цикле.
- Системные (#5000+): Читают модальные G-коды, позиции осей (#5021–#5023).
Тип переменной Диапазон Особенности Пример Локальные #1–#33 Временные, для аргументов #1 = 10.5 Общие #100–#999 Сохраняются в программе #500 = 1 Системные #5000+ Состояние ЧПУ #5021 (текущая X) Важно: Не используйте системные для общих расчётов — они зарезервированы.
Подпрограммы: вызов и базовый синтаксис
Подпрограммы — это отдельные блоки кода, вызываемые из основной программы. В Fanuc используют M98 Pxxxx для обычных или G65 Pxxxx для макро-подпрограмм с параметрами. M98 P1234 L5 вызовет программу O1234 пять раз и вернётся с M99.
В макро-подпрограммах передавайте аргументы буквами: G65 P8001 A10 B20 F100. Внутри подпрограммы #1 получит 10 (A), #2 — 20 (B). Это позволяет одному блоку обрабатывать разные размеры, например, отверстия разного диаметра.
Шаги вызова подпрограммы:
- Создайте файл O8001 с G-кодом и M99 в конце.
- В основной программе: G65 P8001 A[#100] B[#101].
- В O8001: G01 X#1 Z#2 F#9.
Пример простого цикла сверления:
G65 P9000 A5.0 B10.0 L3; (диаметр 5, глубина 10, 3 повторения)В O9000:
WHILE [#33 LT 3] DO1; G01 Z-#2 F50; #33 = #33 + 1; M99 P1;Нюанс: L в M98 задаёт повторения, в G65 — аргумент для #18.
Практические примеры макропрограммирования
Рассмотрим реальный сценарий: нарезка канавок разной ширины. Вместо копирования блоков 10 раз используем макро. Основная программа задаёт ширину в #100, вызывает подпрограмму — и готово для семьи деталей.
Другой пример — автоустановка инструмента с M200, алиасом на O9001. Там системные переменные читают позицию прутка (#5161) и номер инструмента (#3901). Код короче, ошибки реже.
Примеры макросов:
- Счётчик деталей: #500 = #500 + 1; IF [#500 GE 100] GOTO 99;
- Расчёт радиуса: #100 = SQRT[#101 * #101 + #102 * #102];
- Болlean-подобная логика: IF [#100 EQ 1] THEN G01; (ELSE G00).
Операция Код макроса Результат Сумма #3 = #1 + #2 #3=15 при #1=10, #2=5 Цикл WHILE [#4 GT 0] DO2 Повтор до #4=0 Условие IF [#5 NE 0] GOTO 10 Переход по условию Ключевые функции:
- Арифметика: +, -, *, /, SQRT, SIN.
- Логика: EQ, NE, GT, LT, AND, OR.
- Циклы: WHILE/DO, GOTO.
Совет: Ограничение — максимум 8 цифр в переменной.
Системные переменные для продвинутого контроля
Системные переменные дают доступ к внутреннему состоянию Fanuc. #3000–#3029 показывают модальные G-коды (G00=1), #3901 — активный инструмент. Используйте их для динамической корректировки, как чтение позиции для пробинга.
В подпрограммах комбинируйте с общими: сохраните текущую позицию в #500 перед циклом, вернитесь после. Это упрощает отладку и делает код надёжным.
Полезные системные переменные:
- #5021–#5023: Актуальные координаты X Y Z.
- #2000–#2026: Skip signal status.
- #3901: Tool number.
Для отладки смотрите Macro window на пульте — там последние изменённые значения.
Группа Примеры Назначение Позиции #5001–#5026 Machine/Workspace coords Инструмент #3901, #3911 Tool data Модальные #3000+ Current G/M codes Гибкость Fanuc: что ещё можно выжать из макросов
Мы разобрали базу, но макросы позволяют циклы WHILE, условные переходы и даже булеву логику через сравнения. Осталось освоить вложенные подпрограммы и системные параметры для полного контроля.
Дальше думайте о комбинациях с Custom M-кодами вроде M200 для инструментов. Это шаг к полностью параметрическим программам, где меняете одну переменную — и вся семья деталей готова. Экспериментируйте на MDI для тестов.
© 2022 - 2025 InvestSteel, Inc. Все права защищены.