Руководство по программированию макросов Custom Macro B ЧПУ Fanuc
Освойте программирование Custom Macro B для ЧПУ Fanuc. Настройка параметров 6001#6 и 6001#7, устранение ошибок 112 и 118 для защиты от аварий и брака.
Введение
Жесткое столкновение револьверной головки (turret) или шпинделя с зажимными тисками (vise jaw), прижимом (clamp) или патроном (chuck) — это прямое последствие сохранения старых данных в переменных после сброса станка. Когда оператор прерывает выполнение макроса Custom Macro B и нажимает кнопку сброса (Reset), предполагается, что память ЧПУ очищается. Однако, если параметры ЧПУ настроены на сохранение значений локальных или общих переменных, при повторном запуске цикла система выполнит расчеты на основе искаженных координат. Если этот параметр не проверен перед запуском, отклонение размера накапливается с каждым циклом и обнаруживается только при финальном контроле как брак. В худшем случае это приводит к поломке режущего инструмента, повреждению узлов станка и длительному простою оборудования. Обеспечение надежности и безопасности при работе на стойках Fanuc требует точной настройки параметров сохранения переменных, контроля синтаксиса вычислений и правильной обработки аварийных сигналов.
Техническая сводка
| Техническая характеристика | Подробности |
|---|---|
| Коды команд | G65, G66, G66.1, G67 |
| Модальная группа / Модальность | Модальные / Немодальные (G65 — немодальный, G66/G66.1 — модальные, G67 отменяет) |
| Поддерживаемые бренды | Fanuc |
| Критические параметры | 6000#5 (SBM), 6000#3 (V15), 6001#5 (TCS), 6001#6 (CCV), 6001#7 (CLV) |
| Основное ограничение | Математическая точность до 8 знаков после запятой; вложенность скобок макс. 5 уровней; глубина циклов макс. 3 уровня; диапазон переменных от ±10-29 до ±1047. |
Краткий обзор
- Очистка памяти при сбросе: Установите параметры 6001#6 (CCV) и 6001#7 (CLV) в значение 0 для автоматической очистки локальных и общих переменных до состояния vacant (не определено) при сбросе станка. Это предотвратит искажение координат.
- Контроль остановки кадров: Установите параметр 6000#5 (SBM) в значение 1, чтобы разрешить останов в режиме одиночного кадра (single block) при выполнении макрокоманд. Это позволит безопасно проверить программу по шагам.
- Автоматизация по T-коду: Настройте параметр 6001#5 (TCS) в значение 1 для автоматического вызова макроса O9000 с помощью T-кода. При этом номер инструмента будет передан в переменную #149.
- Ограничения вложенности и циклов: Ограничьте глубину вложенности циклов (DO-END) 3 уровнями, а вложенность скобок — максимум 5 уровнями, чтобы избежать мгновенного срабатывания ошибок формата.
- Обратная совместимость корректоров: Установите параметр 6000#3 (V15) в значение 1, чтобы использовать старые адреса переменных коррекции инструмента от систем Series 15 на современных системах управления Series 16/18.
- Безопасность при делении: Убедитесь, что все операции деления проверяют делитель на неравенство нулю. Это предотвратит срабатывание аварии деления на ноль (PS0112) и остановку обработки посреди цикла.
Базовые концепции
Практический эффект программирования Fanuc Custom Macro B заключается в преобразовании статического G-кода в высокодинамичный математический язык программирования. Вместо написания отдельной программы под каждый размер детали программисты могут создавать параметрические процедуры, где координаты X, Y и Z задаются переменными. Оператор просто вводит нужные размеры в один блок вызова макроса G65, и ЧПУ рассчитывает траекторию движения инструмента на лету. Более того, поскольку макросы могут считывать системные переменные (такие как #5021 для машинных координат или #5061 для позиций сигнала пропуска), станок может принимать логические решения, проверять результаты измерений щупом и автоматически пересчитывать корректоры на износ инструмента без вмешательства человека.
Такой параметрический контроль аналогичен стандартным вызовам подпрограмм, но с добавлением возможностей математических и логических операций. В то время как обычные цеха могут полагаться на написание и вызов подпрограмм для повторения статических траекторий, Custom Macro B позволяет переменным динамически рассчитывать координаты. Это представляет собой качественный скачок в автоматизации по сравнению с традиционными циклами, такими как жесткое нарезание резьбы G84/G74 или вложенные подпрограммы M98, поскольку переменные могут на ходу изменять подачи, глубины и количество проходов.
Структура команд
Структура команд макроса Custom Macro B опирается на систематический синтаксис для передачи данных из вызывающей программы в макроподпрограмму. При выполнении простого вызова макроса с помощью G65 система управления открывает целевую программу и заполняет локальные переменные (обычно от #1 до #33) аргументами, переданными в кадре вызова. Синтаксис связывает определенные буквенные адреса с соответствующими локающими переменными. Например, адрес A сопоставляется с переменной #1, B — с #2, а C — с #3, что позволяет программисту напрямую передавать размеры заготовки или технологические допуски. Оказавшись внутри макроса, интерпретатор выполняет математическую логику и смещения координат перед возвратом управления.
Для повторяющихся или непрерывных операций модальный вызов макроса может быть инициализирован с помощью G66 или G66.1. При G66 система управления выполняет макропрограмму сразу после каждого кадра с командой движения, в то время как G66.1 запускает макрос после каждого кадра программы. Это модальное поведение остается активным, передавая обновленные переменные, до тех пор, пока система не считает команду отмены G67. Связывание (aliasing) G- и M-кодов через параметры ЧПУ позволяет выполнять эти макросы скрытно. Интерпретатор ЧПУ преобразует стандартный код для выполнения подпрограмм серии O9000, передавая переменные в фоновом режиме.
Адреса синтаксиса команд:
- Простой вызов макроса:
G65 P_ L_ <arguments> - Модальный вызов макроса (после движения):
G66 P_ L_ <arguments> - Модальный вызов макроса (каждый кадр):
G66.1 P_ L_ <arguments> - Отмена модального вызова макроса:
G67 - Условный переход:
IF [<conditional expression>] GOTO n - Условный цикл:
WHILE [<conditional expression>] DO n...END n
| Параметр / Переменная | Описание | Значение / Диапазон |
|---|---|---|
#1 to #33 | Локальные переменные, сопоставленные с буквенными адресами (например, A сопоставляется с #1, B — с #2). Очищаются при сбросе в соответствии с параметром 6001#7. | ±10-29 to ±1047 |
#100 to #149 | Общие переменные. Очищаются или сохраняются при сбросе в соответствии с параметром 6001#6. | ±10-29 to ±1047 |
#500 to #531 | Общие переменные. Всегда сохраняются при сбросе. | ±10-29 to ±1047 |
Parameter 6000#5 (SBM) | Параметр 6000#5 (SBM). Останов в режиме одиночного кадра при выполнении макрокоманд. 1: Действителен, 0: Недействителен. | 0 or 1 |
Parameter 6000#3 (V15) | Параметр 6000#3 (V15). Отображение переменных коррекции инструмента. 1: Устаревшая спецификация FS15, 0: Стандартная спецификация FS16. | 0 or 1 |
Parameter 6001#5 (TCS) | Параметр 6001#5 (TCS). Вызов пользовательского макроса O9000 по T-коду. Значение T-кода передается в переменную #149. 1: Включен, 0: Выключен. | 0 or 1 |
Parameter 6001#6 (CCV) | Параметр 6001#6 (CCV). Очистка общих переменных от #100 до #149 при сбросе. 0: Очищаются до vacant, 1: Сохраняются. | 0 or 1 |
Parameter 6001#7 (CLV) | Параметр 6001#7 (CLV). Очистка локальных переменных от #1 до #33 при сбросе. 0: Очищаются до vacant, 1: Сохраняются. | 0 or 1 |
Применение на брендах
Fanuc
Fanuc глубоко отличает свою макроархитектуру от других брендов систем управления за счет бесшовной интеграции кодов (aliasing) и встроенной диагностической обратной связи. Во-первых, Fanuc позволяет производителям станков и программистам привязывать стандартные коды G, M, S и T непосредственно к пользовательским макросам. Путем простой настройки параметров (таких как параметр 6050 для G-кодов или активация TCS для T-кодов) оператор может задать стандартный индекс револьверной головки, а система ЧПУ скрытно выполнит сложный макрос серии O9000 в фоновом режиме, автоматически передавая номер инструмента в переменную #149. Во-вторых, Fanuc изначально поддерживает генерацию аварийных сигналов и сообщений из пользовательских макросов. Путем записи значения в системную переменную #3000 макрос может намеренно остановить станок и вывести конкретное текстовое сообщение непосредственно на экран аварий ЧПУ, чтобы предупредить оператора об ошибке измерения детали. Наконец, Fanuc обеспечивает исключительную обратную совместимость с помощью параметра V15: операторы могут настроить современные системы управления так, чтобы адресация переменных полностью соответствовала старой архитектуре Series 15, гарантируя безотказный запуск устаревших макросов на новом оборудовании.
Сравнение брендов
| Функция / Версия | Fanuc Series 15 / Устаревшие системы | Fanuc Series 16 / 18 / 21 / 0i (Современные) |
|---|---|---|
| Системные переменные коррекции инструмента | Использует старую схему распределения переменных коррекции инструмента. | Использует современную схему распределения переменных: #2001–#2200 для обрабатывающих центров, с возможностью переключения на старую эмуляцию с помощью параметра 6000#3 (V15), установленного в 1. |
| Распределение для токарных и фрезерных станков | Требует старых специфических адресов для коррекции. | Фрезерная серия (M-series) использует непрерывные переменные #2001–#2200. Токарная серия (T-series) разделяет корректоры на #2001–#2064 (износ по X), #2101–#2164 (износ по Z) и #2201–#2264 (износ радиуса вершины инструмента). |
| Поведение переменных при сбросе | Временные переменные автоматически очищаются при сбросе станка. | Позволяет настраивать сохранение переменных. Параметры 6001#6 (CCV) и 6001#7 (CLV) определяют, будут ли переменные #100–#149 и #1–#33 очищаться до состояния vacant (0) или сохранять значения (1) при сбросе. |
Технический анализ
Анализ архитектуры Fanuc Custom Macro B указывает на конструкцию, ориентированную на обратную совместимость и безопасную настройку параметров. Основное различие между токарными (T-series) и фрезерными (M-series) применениями заключается в отображении системных переменных коррекции. Фрезерная серия использует единый непрерывный массив от #2001 до #2200. Токарная серия разделяет коррекции для соответствия геометрии многоосевой токарной обработки. Она разделяет износ по X (#2001–#2064), износ по Z (#2101–#2164) и износ радиуса при вершине инструмента (#2201–#2264). Это разделение исключает конфликты координат при токарной обработке, но требует от программистов написания специфических для осей макросов в зависимости от типа станка.
Обратная совместимость поддерживается параметром 6000#3 (V15). Переключение этого параметра в значение 1 заставляет современный контроллер Series 16 или 18 транслировать адреса переменных для соответствия старому оборудованию Series 15. Это позволяет цехам запускать макропрограммы тридцатилетней давности без переписывания кода.
Кроме того, режимы очистки памяти определяются параметрами ЧПУ. В стандартной конфигурации локальные и общие переменные очищаются при сбросе станка для предотвращения выполнения программы с устаревшими данными. Однако установка параметра 6001#6 (CCV) в значение 1 сохраняет общие переменные. Аналогично, установка параметра 6001#7 (CLV) в значение 1 сохраняет локальные переменные, что может привести к смещению координат при перезапуске цикла с середины программы.
Примеры программ
Пример G-кода Fanuc
O9010 (ПРИМЕР FANUC CUSTOM MACRO B) ;
#100 = #1 + #2 ;
IF [#100 GT 10.0] GOTO 5 ;
#1 = 1.0 ;
WHILE [#1 LT 5.0] DO 1 ;
G91 G01 Z-2.0 F150 ;
G90 G01 X#100 F300 ;
G00 Z2.0 ;
G00 X0 ;
#1 = #1 + 1.0 ;
END 1 ;
GOTO 10 ;
N5 #3000 = 1 (СУММА ПРЕВЫШАЕТ ЛИМИТ) ;
N10 M99 ;
Выполнение в режиме пробного прогона (dry run)
Во время пробного прогона макропрограммы G65 контроллер считывает команду G65 P9010 A1.0 B2.0. Адрес A сопоставляется с локальной переменной #1 (1.0), а B — с #2 (2.0). Интерпретатор вычисляет сумму значений #1 и #2, сохраняя результат 3.0 в общей переменной #100. Затем он проверяет условие IF [#100 GT 10.0]. Поскольку 3.0 не превышает 10.0, переход к кадру N5 игнорируется. После этого переменная #1 инициализируется значением 1.0 в качестве счетчика цикла. Начинается цикл WHILE [#1 LT 5.0] DO 1. Инструмент выполняет относительное врезание по оси Z на 2.0 мм, перемещается в абсолютную координату X3.0, отводится и возвращается в точку X0. Переменная #1 увеличивается на 1.0. Этот цикл повторяется четыре раза (для значений #1 = 1.0, 2.0, 3.0 и 4.0), пока #1 не станет равным 5.0. В этот момент цикл прекращается. Интерпретатор переходит к кадру N10 по команде GOTO 10 и выполняет команду M99 для возврата управления в главную программу.
Анализ ошибок
| Бренд | Код ошибки | Условие срабатывания | Симптомы для оператора | Первопричина / Решение |
|---|---|---|---|---|
| Fanuc | 112 (PS0112) | ZERO DIVIDE: в арифметическом выражении макроса задано деление на ноль. | ЧПУ мгновенно останавливает работу посреди цикла и выводит экран ошибки «ZERO DIVIDE». | Убедитесь, что переменная-делитель не равна нулю. Добавьте условную проверку перед делением. |
| Fanuc | 114 (PS0114) | FORMAT ERROR IN MACRO: неопределенный код H в кадре G65 или недопустимый формат выражения. | Интерпретатор приостанавливает выполнение программы и выводит сообщение «FORMAT ERROR IN MACRO». | Проверьте формат математического выражения, соответствие скобок и корректность буквенных адресов в G65. |
| Fanuc | 116 (PS0116) | WRITE PROTECTED VARIABLE: переменная, предназначенная только для чтения, помещена в левую часть оператора присваивания. | Станок блокируется, запрещая движение по осям, и выводит ошибку «WRITE PROTECTED VARIABLE». | Не пытайтесь записывать данные в системные переменные, предназначенные только для чтения (например, координаты осей или сигналы пропуска). |
| Fanuc | 118 (PS0118) | TOO MANY BRACKET NESTING: глубина вложенности квадратных скобок [] превышает предел в 5 уровней. | Контроллер не может разобрать кадр, выдает ошибку «TOO MANY BRACKET NESTING» и останавливается. | Уменьшите глубину вложенности скобок в математических выражениях до 5 уровней или менее. |
| Fanuc | 124 (PS0124) | MISSING END STATEMENT: команда DO запрограммирована без соответствующей команды END. | Выполнение программы ЧПУ останавливается с аварией «MISSING END STATEMENT» перед запуском цикла. | Убедитесь, что каждый блок DO имеет парную команду END с тем же индексом (например, DO 1 и END 1). |
Практическое применение
Аварийная поломка револьверной головки ЧПУ или шпинделя из-за наезда на кулачки патрона, зажимные тиски или прижимы — это прямое механическое следствие сохранения значений переменных при сбросе системы. Если параметры 6001#6 (CCV) и 6001#7 (CLV) настроены на удержание данных в памяти (значение 1), то при перезапускании прерванного макроса система использует старые координаты. Проверка параметров 6001#6 и 6001#7 до начала обработки устраняет наиболее частую причину незапланированных остановок для этой команды. Установка этих параметров в значение 0 гарантирует автоматическую очистку локальных и общих переменных до состояния vacant при каждом нажатии Reset. Регулярная проверка данных настроек при техническом обслуживании станка исключает брак деталей и предотвращает дорогостоящий ремонт механических узлов.
Связанные команды
M98(Вызов подпрограммы): Выполняет стандартные статические подпрограммы без передачи локальных переменных или вычисления арифметической логики, являясь более простой альтернативой вызовам G65. Подробности см. в нашем руководстве по вложенным подпрограммам M98.M198(Вызов подпрограммы с внешнего устройства): Вызывает подпрограммы, хранящиеся на внешних носителях, таких как карты памяти CF или сетевые серверы, что позволяет запускать файлы большего объема, чем вмещает внутренняя память станка. См. наше руководство по написанию и вызову подпрограмм для ознакомления со схемами работы подпрограмм.BPRNT/DPRNT(Вывод внешних данных): Выводит значения переменных и форматированный текст на внешние компьютеры или устройства последовательной связи, позволяя программистам регистрировать данные измерений щупом и параметры цикла.
Заключение
Систематический аудит настроек системных параметров является наиболее эффективным методом обеспечения безопасности при использовании Custom Macro B на станках ЧПУ Fanuc. Поддержание параметров 6001#6 (CCV) и 6001#7 (CLV) в значении 0 гарантирует полную очистку оперативной памяти при сбросе, исключая неконтролируемое накопление погрешности позиционирования. Совмещение этих мер с активацией останова по одиночному кадру (параметр 6000#5) при первой наладке минимизирует риски аварийных столкновений, повышает надежность оборудования и оптимизирует интервалы технического обслуживания в условиях серийного производства.
Часто задаваемые вопросы (FAQ)
Как проверить готовность переменных макроса Custom Macro B на Fanuc перед запуском новой партии деталей?
Сбой в очистке памяти может остаться незамеченным, если перед запуском программы не провести ручной сброс. Даже при правильных параметрах 6001#6 и 6001#7 некоторые переменные общего назначения (#500-#531) сохраняют свои значения при перезагрузке стойки ЧПУ. Практическое действие: Перед пуском первой детали вручную очистите диапазон #500-#531 через экран переменных на стойке управления или добавьте макрокоманды обнуления в начало главного файла.
Как устранить ошибку PS0112 (ZERO DIVIDE) при расчете траектории в макросе Fanuc?
Данный аварийный останов возникает, если в формулу деления передается пустая переменная (vacant), которая интерпретируется системой как математический ноль. Стандартный сброс не решает проблему, если значение переменной зависит от внешних параметров или аргументов вызова G65. Практическое действие: Добавьте в тело макроса перед операцией деления условную строку вида IF [#100 EQ #0] GOTO 999 или проверьте аргументы вызова в главной программе.
Как настроить параметр 6000#5 (SBM) для отладки сложных циклов Custom Macro B?
По умолчанию стойка ЧПУ может выполнять все вычислительные кадры макроса в фоновом режиме без остановки, даже если активна кнопка Single Block, что мешает контролю промежуточных значений координат. Включение SBM заставляет систему останавливать выполнение на каждой строке вычислений макроса. Практическое действие: Войдите в режим редактирования параметров MDI, найдите бит 5 параметра 6000 и установите его в 1 для пошаговой отладки логики.
Проблема все еще не решена?
Задайте вопрос нашему ИИ-ассистенту по этой теме на естественном языке. На основе проверенных источников, без галлюцинаций.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
Имея более чем 25-летний опыт работы во всех областях индустрии станков с ЧПУ, я продолжаю свою деятельность в качестве сооснователя компании CNC CARE, где мы предлагаем независимый от брендов консалтинг, инжиниринг и оригинальные запасные части.
Похожие статьи
Другие статьи по этой теме
Настройка 3D-контроля столкновений Fanuc: параметры и ошибки
Узнайте, как настроить встроенный 3D-контроль столкновений на ЧПУ Fanuc. Параметры 10930, 10930#5, аварийный останов Alarm PS0492 и защита от простоев оборудования.
Параметры активации макросов Fanuc: настройка 0932 и 8135
Как настроить параметры 0932 и 8135 для активации макросов на стойках Fanuc. Руководство по расширению общих переменных и предотвращению столкновений и брака.
Настройка параметров системы управления стойкостью инструмента Fanuc
Руководство по настройке параметров управления стойкостью инструмента на стойках ЧПУ Fanuc. Как настроить G10 L3, G11 и параметры 6800 и 6810 без аварий и брака.
Настройка динамического ускорения жесткого нарезания резьбы Fanuc
Как настроить оптимальное ускорение жесткого нарезания резьбы на ЧПУ Fanuc с помощью параметра 11420#0. Настройка ступеней передач 1-4 и устранение аварии SP0741.