Передача аргументов в макросах ЧПУ: руководство по G65 и G66
Руководство по передаче аргументов G65 и G66 на стойках Fanuc, Siemens и Mitsubishi. Настройте параметры переменных для защиты станков от столкновения.
Введение
Внезапный удар режущего инструмента в зажимное приспособление vise jaw, жесткое столкновение револьверной turret головки с вращающимся chuck патроном или аварийное повреждение шпинделя spindle — это прямые физические последствия некорректной передачи аргументов при вызове макросов на станках с CNC. Когда управляющая программа передает технологические переменные через G65 или G66, любая ошибка в сопоставлении адресов или неверная настройка параметров приводят к сбою вычислений внутри подпрограммы. До того как оператор успеет нажать кнопку аварийной остановки, система ЧПУ рассчитывает искаженную траекторию и направляет инструмент на рабочей подаче feedrate в элементы оснастки fixture. Подобные инциденты вызывают катастрофический брак деталей, поломку дорогостоящего инструмента и длительный простой оборудования из-за необходимости внепланового технического обслуживания. Если этот параметр не проверен перед запуском, отклонение размера накапливается с каждым cycle и обнаруживается только при финальном контроле как брак. Понимание механизмов передачи переменных на стойках Fanuc, Siemens и Mitsubishi является обязательным условием для обеспечения надежности оборудования и предотвращения аварийных ситуаций.
Техническая сводка
| Спецификация | Технические подробности |
|---|---|
| Коды команд | G65, G66, G66.1, G67 |
| Модальная группа | G65 является не-modal (Группа 00); G66 и G66.1 являются modal (Группа 12); G67 отменяет modal вызовы |
| Поддерживаемые бренды | Fanuc, Siemens, Mitsubishi |
| Критические параметры | Fanuc: 6008#7 (IJK) и 6007#4 (CVA); Mitsubishi: #1241 (Macro argument L/P valid) и #11053; Siemens: $MC_EXTERN_FUNCTION_MASK |
| Основное ограничение | Накопление аргументов ограничено 10 наборами координат I, J, K; конфликтующие коды не могут быть объединены в одном кадре программы |
Краткий обзор
- Выбирайте
G65для разовых простых вызовов макросов иG66для modal вызовов, повторяющихся при каждом движении осей. - Всегда программируйте команду отмены
G67сразу после операций modal макросов для предотвращения случайных движений при переходе на координаты зазора. - Установите параметр Fanuc
6008#7в значение 0, чтобы включить автоматическое определение Argument Specification II для сложных многоточечных координат. - Программируйте адреса
I,JиKстрого в алфавитном порядке при использовании Mitsubishi Argument Designation I для обеспечения правильного сопоставления переменных. - Переключите интерпретатор Siemens в собственный режим с помощью
G290перед чтением системных переменных$C_для предотвращения сбоев разбора. - Избегайте использования запрещенных адресов, таких как
GилиN, в качестве аргументов, если они явно не разрешены специальными параметрами станка.
Базовые концепции
Передача аргументов при вызовах макросов обеспечивает возможность переноса числовых значений непосредственно из вызывающего кадра в локальные переменные внутри подпрограммы. Это позволяет программистам писать универсальные, управляемые параметрами программы, которые можно повторно использовать для различных деталей и операций, просто изменяя входные данные в строке вызова. Используя этот метод, координаты, feedrate, скорости spindle или геометрические входные данные динамически передаются в подпрограмму макроса.
Чтобы понять, как это работает, мы должны обратиться к связи между адресами кадров G-code и внутренними регистрами переменных. Например, в системе Fanuc или Mitsubishi буквенный адрес, такой как A, соответствует переменной #1, а B соответствует #2. В системе Siemens буквенные адреса передаются непосредственно в именованные системные переменные, такие как $C_A и $C_B. Обеспечение правильных настроек параметров, алфавитного порядка аргументов, где это применимо, и предотвращение дублирования сопоставлений переменных являются универсальными требованиями для предотвращения логических ошибок, которые могут привести к механическим столкновениям или браку деталей.
Структура команд
Для запуска вызова подпрограммы макроса и передачи данных интерпретатор CNC должен обработать определенные коды команд, которые определяют как поведение вызова, так и целевую программу. Основными командами являются G65 для простого не-modal вызова и G66 для modal вызова. В то время как простой вызов выполняет подпрограмму макроса ровно один раз в кадре, где он вызван, modal вызов остается активным и выполняет подпрограмму в каждом последующем кадре, содержащем команды движения, пока не будет отменен.
При этих вызовах буквенные адреса, указанные в кадре главной программы, сопоставляются с локальными переменными в подпрограмме. Стандартный кадр вызова должен содержать адрес номера программы P и, при необходимости, количество повторений L. Все остальные буквы действуют как аргументы, передающие значения.
Синтаксис вызовов макросов в различных системах:
- Fanuc/Mitsubishi:
G65 P_ L_ <arguments>; - Siemens:
G65 P_ L_ <Arguments>;
Параметры, используемые в структурах вызовов макросов:
P: Номер подпрограммы (или идентификатор).L: Количество повторений подпрограммы.<arguments>: Буквенные адреса, передающие значения в локальные переменные (такие какA,B,C,I,J,K).
Применение на брендах
Fanuc
В Fanuc Custom Macro B параметр 6008#7 и параметр 6007#4 управляют сопоставлением координат. Эти параметры определяют, использует ли контроллер Argument Specification I или II.
Следующий синтаксис иллюстрирует простой вызов макроса G65 и стековый вызов Argument Specification II:
; Fanuc простой вызов: G65 P1000 A1.0 B2.0 X15.0 Y25.0;
; Fanuc стековый вызов (Argument Spec II): G66 P9100 I10.0 J20.0 K30.0 I40.0 J50.0 K60.0;
| Категория | Элемент / Код | Описание | Значение / Подробности |
|---|---|---|---|
| Параметр | 6008#7 (IJK) | Глобальное поведение аргументов | 0 = автоопределение Spec I/II; 1 = строгое соответствие Spec I |
| Параметр | 6007#4 (CVA) | Разбор десятичного формата | 0 = NC-формат; 1 = макро-формат |
| Параметр | 6020#4 (GAA) | Переопределение запрещенных адресов | Разрешает использование G (сопоставляется с #28-#32) и L (сопоставляется с #12) |
| Параметр | 6009#2 (MAA) | Вызовы макросов с помощью M-кодов | Определяет, становится ли адрес G аргументом |
| Авария | Alarm 129 (PS0129) | Недопустимое использование адреса G | Вызывается, если параметры GAA/MAA запрещают использование G |
| Авария | Alarm 1095 (PS1095) | Превышен лимит стека | Вызывается, если указано более 10 наборов I/J/K |
| Авария | Alarm 114 (PS0114) | Ошибка формата в макросе | Неопределенный код H или недопустимый математический формат |
| Версия | T-Series | Конфигурация токарного станка | Ограничивает адреса строго до A, B, F, H, I, K, M, P, Q, R, S, T |
| Версия | M-Series | Конфигурация обрабатывающего центра | Поддерживает полный расширенный список: A, B, D, F, H, I, J, K, L, M, P, Q, R, S, T, X, Y, Z |
Программисты должны проверять настройки параметров перед выполнением программ, содержащих стековые координаты I, J и K, так как неправильная настройка приведет к перезаписи координат и механическим столкновениям.
Siemens
Контроллеры Siemens Sinumerik не сопоставляют аргументы с пронумерованными локальными переменными. Вместо этого они записывают значения непосредственно в предопределенные системные переменные, такие как от $C_A до $C_Z, при выполнении вызова.
Следующий пример иллюстрирует, как параметры объявляются в кадре вызова G65 и считываются внутри подпрограммы:
; Siemens кадр вызова: N30 G65 P10 F55 X150. Y100. S2000
; Siemens считывание параметров в подпрограмме: N15 X_AXIS = $C_X Y_AXIS = $C_Y SPEED = $C_S FEEDRATE = $C_F
| Категория | Элемент / Код | Описание | Значение / Подробности |
|---|---|---|---|
| Параметр | P | Идентификатор подпрограммы | от 4 до 8 цифр (определяется данными станка) |
| Параметр | L | Количество повторений подпрограммы | Целое число от 1 до 9999 |
| Системная маска | $MC_EXTERN_FUNCTION_MASK | Битовая конфигурация данных станка | Бит 6 задает формат разрядности P; Бит 3 включает вычисление DIN-кода |
| Авария | Alarm 12720 | Отсутствует номер программы | Вызывается, когда в вызове макроса отсутствует адрес P |
| Авария | Alarm 12722 | Смешанный вызов cycle и макроса | Вызывается при совмещении вызовов макросов и canned cycles |
| Авария | Alarm 14016 | Конфликт функций кадра | Конфликт с M98, кодами возврата или завершения программы |
| Версия | Bit 6 = 0 | Строго дополняет P до 4 цифр | Передача номера программы длиной более 4 цифр вызывает аварию |
| Версия | Bit 6 = 1 | Нативно поддерживает 8 цифр | Принимает номера программ длиной до 8 цифр без дополнения нулями |
Операторы должны размещать все параметры аргументов строго после кодов вызова программы во избежание немедленных аварий разбора кода и прерывания циклов.
Mitsubishi
Контроллеры Mitsubishi назначают аргументы локальным переменным от #1 до #33. Программисты могут использовать параметр #1241 для включения переменных L и P.
Следующий кадр представляет собой вызов макроса Mitsubishi с передачей аргументов и демонстрацией приоритета перезаписи в вызовах смешанного формата:
; Mitsubishi простой вызов: G65 P9900 A60. S100. F800;
; Демонстрация перезаписи: G65 A1.1 B-2.2 D3.3 I4.4 I7.7;
| Категория | Элемент / Код | Описание | Значение / Подробности |
|---|---|---|---|
| Параметр | #1241 (set13/bit5) | Действительность аргументов макроса L/P | Включает передачу L/P в переменные #12 и #16 |
| Параметр | #11053 | Место хранения пользовательской программы | 0 = память NC; 1 = жесткий диск |
| Авария | P275 | Превышен лимит стека | Вызывается, если запрограммировано более 10 наборов I/J/K |
| Авария | P33 | Синтаксическая ошибка программы | Вызывается недопустимым L/P в M98 или недопустимыми строками |
| Версия | M800V/M80V Series | Зависимости от режима вызова | G65/G66 запрещают аргументы G и N; G66.1 разрешает аргументы G and N |
Операторы должны задавать переменные I, J и K в алфавитном порядке во время Designation I для предотвращения неправильного сопоставления параметров.
Сравнение брендов
| Функция | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Сопоставление переменных | Локальные переменные #1 to #33 | Системные переменные $C_A to $C_Z | Локальные переменные #1 to #33 |
| Накопление аргументов | Spec II сопоставляет до 10 наборов I/J/K с переменными #4 to #33 | Сохраняет до 10 наборов в $C_I[0]... и отслеживает количество в $C_I_NUM | Designation II сопоставляет до 10 наборов I/J/K с переменными #4 to #33 |
| Приоритет при дублировании | Аргумент, указанный последним в кадре, имеет приоритет | — (no source) | Значение адреса, указанного позже, является действительным |
| Запрещенные адреса | G/L/N/P заблокированы; G/L можно сопоставить с помощью параметра GAA | P, L, O, N должны быть целыми числами; вещественные значения вызывают аварию | G/N заблокированы в G65/G66; L/P можно включить с помощью параметра #1241 |
| Переключение интерпретатора | Нативный Custom Macro B | Требуется G290 для вычисления системных переменных в подпрограмме | Нативный Custom Macro |
Технический анализ
Анализ различий в передаче аргументов в этих системах ЧПУ выявляет три отдельных архитектурных пути. Fanuc в значительной степени полагается на параметрическое переопределение адресов и уникальные возможности мультиплексирования. Благодаря поддержке Argument Specification II, Fanuc позволяет программистам обходить ограничения буквенных адресов, повторяя I, J и K до десяти раз в одном кадре. Контроллер автоматически и невидимо распределяет эти повторяющиеся адреса в локальные переменные от #4 до #33. Параметры, такие как 6020#4 (GAA) и 6009#2 (MAA), также позволяют программистам переопределять стандартный запрет на использование адресов G и L, сопоставляя их напрямую с переменными #28-#32 и #12.
Siemens отказывается от системы пронумерованных локальных переменных в пользу самодокументируемых системных переменных. Вместо записи значений в пронумерованные локальные переменные, Siemens назначает аргументы переменным, названным в честь самих осей или функций, таких как $C_X или $C_S. Для аргументов-массивов Siemens реализует нативную обработку массивов, помещая повторяющиеся входные данные I, J и K в индексированные массивы (такие как $C_I[0]) и отслеживая количество с помощью $C_I_NUM. Siemens также поддерживает динамическую кросс-компиляцию, позволяя программистам переключаться между высокоуровневым режимом (G290) и режимом диалекта ISO (G291) для выполнения сложных математических вычислений с параметрами.
Mitsubishi представляет собой надежную середину со специальной логикой перезаписи и захватом адресов в зависимости от режима вызова. В случаях, когда перекрывающиеся форматы запрограммированы в одном кадре, интерпретатор Mitsubishi приоритизирует и принимает последнее значение без остановки станка. Контроллер также предлагает уникальную гибкость благодаря параметру #1241, который позволяет передавать адреса L и P как переменные #12 и #16. В режиме Modal Call B (G66.1) Mitsubishi позволяет захватывать даже зарезервированные адреса, такие как G и N, в качестве аргументов #10 и #14 при условии, что они следуют после исполняемых кодов NC. Для пробного прогона (dry run) наладчики могут задействовать параметр #8101, чтобы выполнять отладку логики макроса.
Примеры программ
Fanuc Example
G65 P1000 A1.0 B2.0 X15.0 Y25.0;
пробный прогон (dry run)
- Интерпретатор считывает G65 и передает управление программе O1000.
- Значение
1.0присваивается локальной переменной#1. - Значение
2.0присваивается локальной переменной#2. - Значение
15.0присваивается локальной переменной#24. - Значение
25.0присваивается локальной переменной#25. - Программа макроса обрабатывает операции с использованием этих переменных и возвращается в главную программу через M99.
Siemens Example
G65 P1234 A10. C20. X30. Z40. I50. K60. J70. I80.
пробный прогон
- Интерпретатор считывает G65 и вызывает программу номер 1234.
- Значение
10.0сопоставляется с$C_A. - Значение
20.0сопоставляется с$C_C. - Значение
30.0сопоставляется с$C_X. - Значение
40.0сопоставляется с$C_Z. - Переменной массива
$C_I[0]присваивается значение50.0,$C_J[0]—70.0, а$C_K[0]—60.0. - Второе появление адреса I присваивает значение
80.0элементу$C_I[1], а значение$C_I_NUMобновляется до2для отслеживания размера массива.
Mitsubishi Example
G65 A1.1 B-2.2 D3.3 I4.4 I7.7;
пробный прогон
- Интерпретатор обрабатывает простой вызов.
- Значение
1.1сопоставляется с локальной переменной#1(адрес A). - Значение
-2.2сопоставляется с локальной переменной#2(адрес B). - Адрес D сопоставляется с
#7, присваивая значение3.3. - Первое появление адреса I сопоставляется с
#4(значение 4.4). - Второе появление адреса I сопоставляется с
#7(значение 7.7) из-за последовательности Designation II. Поскольку и D, и второй I сопоставляются с#7, логика перезаписи отдает приоритет последнему аргументу, и для переменной#7устанавливается окончательное значение7.7.
Анализ ошибок
| Бренд | Код аварии | Условие срабатывания | Симптомы для оператора | Первопричина / Решение |
|---|---|---|---|---|
| Fanuc | Alarm 129 | Задание адреса G в качестве аргумента, когда это не разрешено | Выполнение программы ЧПУ немедленно прекращается; на экране отображается сообщение об аварии | Параметры GAA/MAA отключены; включите параметр 6020#4 или измените G-code |
| Fanuc | Alarm 1095 | Запрограммировано более 10 наборов I/J/K в Argument Spec II | Система управления прерывает cycle; программа останавливается до начала движения | Превышено накопление Spec II; уменьшите количество пар I/J/K до 10 или менее |
| Siemens | Alarm 12720 | Вызов макроса G65/G66 без адреса номера программы P | Интерпретатор прерывает выполнение; лампа запуска cycle гаснет | Отсутствует адрес P в кадре NC; укажите номер программы P_ в вызове макроса |
| Siemens | Alarm 12722 | Совмещение canned cycles и вызовов макросов G65/G66 в одном кадре | Система управления отклоняет кадр; на дисплее отображается конфликт макроса и cycle | Совмещены команды G81-G89 и G65/G66 в одном кадре; разделите их на два отдельных кадра |
| Mitsubishi | P275 | Задание более 10 наборов I/J/K в Designation II | Движение по осям блокируется; активируется состояние аварии | Превышен лимит накопления; сохраняйте количество повторяющихся наборов I/J/K в пределах 10 или менее |
| Mitsubishi | P33 | Недопустимый адрес L/P в вызове подпрограммы M98 | Программа останавливается с синтаксической ошибкой | Активен параметр #1241, делающий L/P переменными аргументами; используйте стандартный вызов M98 без L/P |
Практическое применение
Смещение координат по оси Z, поломка фрезы и разрушение зажимного chuck патрона происходят в тех случаях, когда при вызове параметрических подпрограмм используются искаженные значения аргументов. Операторы ЧПУ должны контролировать критические настройки стойки для обеспечения надежности оборудования на производстве. В частности, на стойках Fanuc параметр 6008#7 (IJK) должен быть установлен в значение 0, если управляющая программа использует стековый метод Argument Specification II для передачи массива 3D-координат. Проверка параметра 6008#7 до начала обработки устраняет наиболее частую причину незапланированных остановок для этой команды. Если этот параметр ошибочно настроен в значение 1, интерпретатор переключится на Spec I, игнорируя последовательность переменных от #4 до #33, и просто перезапишет координаты в одну и ту же переменную. В результате инструмент на быстрой подаче feedrate врежется в зажимы clamp или тиски vise jaw, вызвав аварийный останов станка. Аналогично, неверная настройка параметра 6007#4 (CVA) приведет к масштабированию координат без десятичной точки в микроскопические доли, что повлечет за собой брак деталей. На стойках Siemens SINUMERIK пропуск команды сброса modal вызовов G67 приводит к тому, что макрос продолжает циклически выполняться на всех последующих кадрах перемещения осей. Это вызывает хаотичные движения инструмента, который врезается в револьверную turret головку или люнет. Своевременная проверка параметров станка позволяет избежать незапланированных простоев оборудования и продлевает межремонтные интервалы дорогостоящих узлов.
Связанные команды
- G65 Custom Macro B: команда простого не-modal вызова макроса, используемая для запуска подпрограмм и передачи значений переменных.
G66: команда modal вызова макроса, которая повторяет выполнение подпрограммы в каждом кадре, содержащем движение по осям, до тех пор, пока не будет отменена.G67: команда отмены modal режима, используемая для деактивации modal циклов G66 или G66.1 и возврата к обычному выполнению интерпретатора.- Написание и вызов подпрограмм: общая команда выполнения подпрограммы, которая вызывает вспомогательные программы, но не позволяет передавать переменные-аргументы.
- Логические операторы в макросах ЧПУ: логические операции, используемые внутри подпрограмм макросов для проверки переданных аргументов и управления ходом программы.
Заключение
Обеспечение стабильности технологического процесса при работе с макросами требует жесткого контроля параметров сопоставления переменных ЧПУ. Перед внедрением новых управляющих программ на производстве технологи должны выполнять проверку конфигурации системных параметров, таких как 6008#7 на Fanuc, $MC_EXTERN_FUNCTION_MASK на Siemens и #1241 на Mitsubishi. Внедрение стандартов покадрового тестирования в режиме пробного прогона (dry run) и обязательное использование команд отмены modal вызовов сводят к минимуму риски столкновения инструмента. Систематический аудит настроек интерпретатора во время планового технического обслуживания гарантирует надежность оборудования и исключает случайный брак деталей.
Часто задаваемые вопросы (FAQ)
Как предотвратить перезапись переменных при использовании нескольких координат I, J, K на Fanuc?
Перезапись происходит, когда параметр 6008#7 (IJK) установлен в значение 1, что отключает Spec II и заставляет систему перезаписывать значения в одни и те же переменные. Чтобы решить эту проблему, измените значение параметра 6008#7 на 0 для автоматического распределения значений по регистрам от #4 до #33, и выполните тестовый прогон без детали.
Почему станок Siemens выдает ошибку 12720 при вызове подпрограммы через G65?
Эта ошибка возникает, когда в кадре вызова макроса отсутствует обязательный адрес P, указывающий на номер программы. Практическое действие: Всегда проверяйте синтаксис кадра вызова в текстовом редакторе ЧПУ и убедитесь, что адрес P указан строго перед аргументами.
Как передать адреса L и P в качестве переменных на стойке Mitsubishi без вызова ошибок?
По умолчанию адреса L и P зарезервированы для циклов повторения и номеров программ, но параметр #1241 позволяет использовать их как локальные переменные #12 и #16. Для активации этой возможности установите бит 5 параметра #1241 в значение 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.