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

Макропрограммирование в Fanuc: подпрограммы и переменные для ЧПУ

Программирование ЧПУ | CNC
1 1 0 1
  • Макропрограммирование в 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). Это позволяет одному блоку обрабатывать разные размеры, например, отверстия разного диаметра.

    Шаги вызова подпрограммы:

    1. Создайте файл O8001 с G-кодом и M99 в конце.
    2. В основной программе: G65 P8001 A[#100] B[#101].
    3. В 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 для тестов.