Skip to main content
CNC.wiki

Передача аргументов в макросах ЧПУ: руководство по G65 и G66

Руководство по передаче аргументов G65 и G66 на стойках Fanuc, Siemens и Mitsubishi. Настройте параметры переменных для защиты станков от столкновения.

Hakan Gündoğdu
Hakan Gündoğdu

Сооснователь CNC CARE

Введение

Внезапный удар режущего инструмента в зажимное приспособление 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 для предотвращения неправильного сопоставления параметров.

Сравнение брендов

ФункцияFanucSiemensMitsubishi
Сопоставление переменныхЛокальные переменные #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_NUMDesignation II сопоставляет до 10 наборов I/J/K с переменными #4 to #33
Приоритет при дублированииАргумент, указанный последним в кадре, имеет приоритет— (no source)Значение адреса, указанного позже, является действительным
Запрещенные адресаG/L/N/P заблокированы; G/L можно сопоставить с помощью параметра GAAP, 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.

Анализ ошибок

БрендКод аварииУсловие срабатыванияСимптомы для оператораПервопричина / Решение
FanucAlarm 129Задание адреса G в качестве аргумента, когда это не разрешеноВыполнение программы ЧПУ немедленно прекращается; на экране отображается сообщение об аварииПараметры GAA/MAA отключены; включите параметр 6020#4 или измените G-code
FanucAlarm 1095Запрограммировано более 10 наборов I/J/K в Argument Spec IIСистема управления прерывает cycle; программа останавливается до начала движенияПревышено накопление Spec II; уменьшите количество пар I/J/K до 10 или менее
SiemensAlarm 12720Вызов макроса G65/G66 без адреса номера программы PИнтерпретатор прерывает выполнение; лампа запуска cycle гаснетОтсутствует адрес P в кадре NC; укажите номер программы P_ в вызове макроса
SiemensAlarm 12722Совмещение canned cycles и вызовов макросов G65/G66 в одном кадреСистема управления отклоняет кадр; на дисплее отображается конфликт макроса и cycleСовмещены команды G81-G89 и G65/G66 в одном кадре; разделите их на два отдельных кадра
MitsubishiP275Задание более 10 наборов I/J/K в Designation IIДвижение по осям блокируется; активируется состояние аварииПревышен лимит накопления; сохраняйте количество повторяющихся наборов I/J/K в пределах 10 или менее
MitsubishiP33Недопустимый адрес 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 на странице настроек параметров ЧПУ и перезапустите стойку.

Проблема все еще не решена?

Задайте вопрос нашему ИИ-ассистенту по этой теме на естественном языке. На основе проверенных источников, без галлюцинаций.

Спросить ИИ-ассистента
Hakan Gündoğdu
Hakan Gündoğdu
  • 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 и защита от простоев оборудования.

FanucProgramming

Параметры активации макросов Fanuc: настройка 0932 и 8135

Как настроить параметры 0932 и 8135 для активации макросов на стойках Fanuc. Руководство по расширению общих переменных и предотвращению столкновений и брака.

FanucProgramming

Настройка параметров системы управления стойкостью инструмента Fanuc

Руководство по настройке параметров управления стойкостью инструмента на стойках ЧПУ Fanuc. Как настроить G10 L3, G11 и параметры 6800 и 6810 без аварий и брака.

FanucProgramming

Настройка динамического ускорения жесткого нарезания резьбы Fanuc

Как настроить оптимальное ускорение жесткого нарезания резьбы на ЧПУ Fanuc с помощью параметра 11420#0. Настройка ступеней передач 1-4 и устранение аварии SP0741.

FanucProgramming