Открыть сервис

Язык Fanuc Macro B

Язык Fanuc Macro B — это встроенный язык программирования высокого уровня, используемый в системах числового программного управления (ЧПУ) производства компании Fanuc, а также в совместимых контроллерах других производителей (например, Haas, Okuma, Mazak в режиме эмуляции). Он предназначен для создания гибких, параметрических и адаптивных управляющих программ для металлорежущих станков (токарных, фрезерных, многоцелевых). Язык основан на синтаксисе BASIC и предоставляет возможность использования переменных, арифметических и логических операций, условных переходов и циклов, что существенно расширяет возможности стандартного G-кода.

История и происхождение

Разработка Macro B началась в 1970-х годах, когда компания Fanuc, один из мировых лидеров в производстве систем ЧПУ, стремилась повысить гибкость программирования станков. До появления макросов программисты были вынуждены писать жёсткие программы с фиксированными координатами, что делало их непригодными для обработки однотипных деталей разных размеров. Первые версии Macro B появились в контроллерах серии Fanuc 6 (1979 год) и Fanuc 10/11 (1980-е годы). Язык быстро стал отраслевым стандартом благодаря своей простоте, эффективности и совместимости с большинством станков с ЧПУ. В отличие от более раннего Macro A, который был менее функциональным и использовал косвенную адресацию через G-коды, Macro B ввёл прямой синтаксис с переменными и операторами, что сделало его доступным для широкого круга технологов.

Синтаксис и основные элементы

Переменные

В Macro B используются три типа переменных, обозначаемых знаком решётки (#):

  • Локальные переменные (#1#33): используются внутри одного макроса и передаются при его вызове. Они не сохраняются после завершения программы.
  • Глобальные переменные (#100#199, #500#999): доступны из любой программы и сохраняются после выключения станка (для диапазона #500 и выше). Используются для хранения общих настроек, коррекций инструментов или данных о деталях.
  • Системные переменные (#3000#3999, #4000#4999): предоставляют доступ к внутренним параметрам ЧПУ, таким как текущие координаты, номер инструмента, состояние шпинделя, время работы и т.д. Например, #5021 содержит текущую координату X в системе станка.

Переменные могут быть целыми или дробными числами. Инициализация выполняется присваиванием: #1 = 10.5.

Арифметические и логические операции

Язык поддерживает стандартные математические операции:

  • Сложение: #1 = #2 + #3
  • Вычитание: #1 = #2 - #3
  • Умножение: #1 = #2 * #3
  • Деление: #1 = #2 / #3
  • Остаток от деления: #1 = #2 MOD #3
  • Возведение в степень: #1 = #2 ** #3

Также доступны тригонометрические функции (SIN, COS, TAN, ATAN), логарифмы (LN, EXP), округление (ROUND, FIX, FUP), квадратный корень (SQRT) и абсолютное значение (ABS).

Логические операции включают сравнение (EQ, NE, GT, GE, LT, LE) и булевы операторы (AND, OR, XOR, NOT). Результатом сравнения является 1 (истина) или 0 (ложь).

Управляющие конструкции

  • Условный переход IF:

IF [условие] GOTO n — переход на строку с номером n, если условие истинно. IF [условие] THEN [действие] — выполнение действия при истинности условия.

  • Цикл WHILE:

WHILE [условие] DO1 ... END1 — повторение блока, пока условие истинно. Допускается до трёх вложенных уровней (DO1, DO2, DO3).

  • Безусловный переход GOTO:

GOTO n — переход на строку с номером n.

Комментарии и метки

Комментарии заключаются в круглые скобки (...) или начинаются с точки с запятой ;. Метки строк обозначаются буквой O и номером (например, O100). Внутри макроса метки задаются числом после GOTO или IF.

Применение

Параметрическое программирование

Основное назначение Macro B — создание программ, которые могут обрабатывать детали с изменяемыми размерами без переписывания кода. Например, для фрезерования прямоугольного кармана программист задаёт переменные для длины, ширины, глубины и радиуса инструмента. При смене детали достаточно изменить значения переменных, а не всю программу.

Циклы и повторяющиеся операции

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

Адаптивное управление

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

Создание пользовательских циклов

Macro B позволяет объединять стандартные G-коды в собственные макросы, которые вызываются командами G65 или G66. Например, можно создать макрос G65 P1000 A10 B20 для сверления отверстий с автоматическим пересчётом координат.

Пример программы

Ниже приведён простой пример макроса для фрезерования квадратного контура с переменными размерами:

``` O1000 (Макрос квадрата)

1 = 100.0 (Длина)

2 = 80.0 (Ширина)

3 = 5.0 (Глубина)

4 = 10.0 (Радиус инструмента)

G90 G00 X0 Y0 Z5.0 G01 Z-#3 F100 G01 X#1 F200 G01 Y#2 G01 X0 G01 Y0 G00 Z5.0 M99 ```

Вызов макроса: G65 P1000 A100 B80 C5 D10, где A, B, C, D — локальные переменные #1, #2, #3, #4.

Преимущества и недостатки

Преимущества

  • Гибкость: одна программа может обслуживать семейство деталей.
  • Экономия времени: сокращение объёма кода и времени на отладку.
  • Автоматизация: возможность реализации сложных алгоритмов без внешних систем.
  • Совместимость: поддерживается большинством современных контроллеров ЧПУ.

Недостатки

  • Ограниченная производительность: интерпретируемый язык медленнее, чем G-код, особенно при большом количестве вычислений.
  • Сложность отладки: отсутствие встроенного отладчика и ограниченные средства диагностики.
  • Ограниченный набор типов данных: отсутствуют строки, массивы (кроме косвенной адресации) и структуры.
  • Риск ошибок: неправильное использование переменных может привести к аварии станка.

Сравнение с аналогами

Помимо Macro B, существуют другие языки параметрического программирования для ЧПУ:

  • Heidenhain TNC (язык HEIDENHAIN) — более высокоуровневый, с поддержкой массивов и строк, но менее распространён в России.
  • Siemens Sinumerik (язык SINUMERIK) — использует синтаксис, близкий к Pascal, и поддерживает вложенные вызовы макросов.
  • Haas Macro — практически идентичен Fanuc Macro B, но имеет некоторые расширения (например, поддержка условных операторов ELSE).

Macro B остаётся самым популярным благодаря своей простоте и широкой аппаратной поддержке.

Интересные факты

  • Макросы Macro B могут быть вызваны не только из основной программы, но и из других макросов, что позволяет создавать иерархические структуры.
  • Системная переменная #3000 используется для генерации аварийных сообщений на экране ЧПУ (например, #3000 = 100 (Ошибка: инструмент не найден)).
  • В некоторых контроллерах Fanuc поддерживается до 999 глобальных переменных, что позволяет хранить большие объёмы данных, например, таблицы коррекций.
  • Язык Macro B лёг в основу многих современных CAM-систем, которые генерируют макросы для автоматической обработки.

Источники

  • Руководство пользователя Fanuc Series 0i/16i/18i — Macro Compiler/Macro Executor.
  • Смирнов В.А. «Программирование станков с ЧПУ. Язык Macro B», 2015.
  • Документация Haas Automation — Macro Programming Manual.
  • Стандарт ISO 6983 (G-код) и расширения для макросов.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →