Вложенные подпрограммы на ЧПУ: программирование и вызов M98
Руководство по вложенным подпрограммам ЧПУ для Fanuc, Siemens и Mitsubishi. Настройка параметров 3457 и 0010#4, устранение ошибок 0077, 14012 и P230 без аварий.
Введение
Внезапное смещение траектории инструмента, приводящее к жесткому столкновению револьверной головки (turret) с кулачками патрона (chuck), зажимными тисками (vise jaw) или прижимом (clamp) — это прямое физическое последствие неконтролируемого переноса модальных состояний между уровнями вложенных подпрограмм. Если глубоко вложенная процедура переключает систему координат в относительный режим позиционирования (G91) или вводит новые смещения осей, но завершает работу без восстановления абсолютного программирования (G90) перед считыванием команды возврата (M99 или M17), все последующие перемещения главной программы будут рассчитаны с критической пространственной погрешностью. Если этот параметр не проверен перед запуском, отклонение размера накапливается с каждым циклом и обнаруживается только при финальном контроле как брак. В худшем сценарии это заканчивается разрушением дорогостоящего шпинделя, поломкой режущей головки инструмента и длительным незапланированным простоем оборудования. Безаварийная эксплуатация станков с ЧПУ Fanuc, Siemens и Mitsubishi требует от программиста и наладчика соблюдения жестких правил изоляции координат, знания ограничений уровней вложенности и блокировки системных параметров.
Техническая сводка
| Технические характеристики | Подробности |
|---|---|
| Коды команд | Fanuc: M98, M198, M99Siemens: буквенно-цифровое имя, PROC, M17, RETMitsubishi: M98, M198, M99 |
| Модальная группа / Модальность | Управление вызовом и возвратом подпрограмм / Modal-Code |
| Поддерживаемые бренды | Fanuc, Siemens, Mitsubishi |
| Критические параметры | Fanuc: 3457 (путь поиска), 0010#4 (PRG9)Siemens: атрибут SAVE, ключевое слово VARMitsubishi: #8876 (устройство M198), #8129 (приоритет поиска) |
| Основное ограничение | Глубина вложенности: макс. 4 уровня (Fanuc), макс. 8/16 уровней (Siemens), макс. 8/10 уровней (Mitsubishi). Вложенные внешние вызовы M198/EXTCALL запрещены. |
Краткий обзор
- Восстановление модального состояния: явно восстанавливайте абсолютные координаты (G90) и отменяйте компенсации непосредственно перед блоком возврата из подпрограммы, чтобы предотвратить смещение и наложение координат.
- Пределы глубины вложенности: удерживайте вложенные вызовы в пределах строгих аппаратно определенных лимитов глубины: 4 уровня для Fanuc, от 8 до 16 для Siemens и от 8 до 10 для Mitsubishi.
- Блокировка параметров подпрограмм: заблокируйте права на редактирование макросов серий O8000 и O9000 на Fanuc, установив параметры 0389#2 (PRG8) и 0010#4 (PRG9) в значение 1.
- Вызовы с внешних носителей: выполняйте файлы большого объема напрямую с карт памяти или серверов данных с помощью M198 (Fanuc/Mitsubishi) или EXTCALL (Siemens), чтобы обойти ограничения внутренней памяти.
- Прямая маршрутизация хранения: направляйте подпрограммы Mitsubishi на определенные физические носители данных непосредственно в блоке вызова с помощью локального адреса
,D(от 0 до 4). - Автоматическое сохранение модальных режимов: объявляйте атрибут
SAVEв заголовкахPROCдля Siemens, чтобы автоматически сохранять и восстанавливать фреймы координат и модальные G-коды.
Базовые концепции
Практический эффект программирования вложенных подпрограмм заключается в возможности значительно сжимать сложные, повторяющиеся траектории инструмента путем вложения подпрограмм друг в друга, что существенно снижает расход памяти и упрощает редактирование для таких элементов, как сетки отверстий или черновые проходы. Вместо дублирования идентичных геометрических блоков в главной программе разработчики могут написать эти программы один раз в виде отдельных файлов и вызывать их последовательно. Такая модульная структура сохраняет размеры программ небольшими и позволяет программистам обновлять конкретные участки обработки без изменения всего мастер-файла. Если вы только начинаете работать с подпрограммами, ознакомьтесь с нашим руководством по написанию и вызову подпрограмм, чтобы понять основы.
Различные бренды систем ЧПУ отличаются по способу поиска, вызова и выполнения этих файлов подуровня. Устаревшие платформы требуют строгого числового именования в формате O-number, в то время как современные системы управления допускают описательные буквенно-цифровые имена. Подпрограммы также могут выполняться модально на различных координатах или транслироваться динамически с внешних аппаратных интерфейсов в обход ограничений внутренней памяти. Поскольку подпрограмма выполняется как активное продолжение вызывающей программы, модальные состояния, такие как feedrate и координаты позиционирования, плавно перетекают с уровня на уровень, требуя строгого соблюдения правил программирования для предотвращения переноса и смещения координат. Для ознакомления со смежными методами циклов вы можете обратиться к руководствам на цикл глубокого сверления G83 с периодическим выводом сверла и цикл жесткого нарезания резьбы G84/G74.
Структура команд
Синтаксис и структура вызова вложенной подпрограммы требуют от интерпретатора ЧПУ распознавания имени или номера целевой программы, начального блока и количества повторений. В традиционных системах команда M98 инициирует переход, перенаправляя выполнение на подпрограмму, хранящуюся в памяти ЧПУ. Как только интерпретатор считывает подпрограмму, он выполняет ее кадры последовательно. По достижении конца подпрограммы блок возврата перенаправляет указатель выполнения обратно в вызывающую программу. Если задано число повторений, интерпретатор выполняет цикл подпрограммы указанное количество раз перед возобновлением последовательности главной программы.
Системы управления Siemens используют высокоуровневую буквенно-цифровую систему именования, в которой подпрограммы вызываются непосредственно по именам их файлов. Вместо привязки к жестким номерам O-numbers подпрограммы Siemens могут принимать параметры, передаваемые по значению или ссылке, которые объявляются в заголовке PROC. Выход из подпрограммы Siemens завершается с помощью M17 или RET. Напротив, Fanuc и Mitsubishi используют устаревшую регистровую архитектуру, требуя применения макрокоманд для передачи значений или вынуждая программистов полагаться на нестабильные общие или глобальные переменные. Параметры и адреса синтаксиса определяют то, как система ЧПУ осуществляет поиск, повторение и возврат из этих процедур.
Адреса синтаксиса команд:
- Стандартный вызов Fanuc:
M98 P_ L_ ; - Внешний вызов Fanuc:
M198 P_ ; - Возврат Fanuc:
M99 ; - Определение Siemens:
PROC <имя программы> (<тип параметра> <имя параметра>, VAR <тип параметра> <имя параметра>) [SAVE] - Вызов Siemens:
<имя программы> (<параметр 1>, <параметр 2>)илиMCALL <имя программы> - Возврат Siemens:
M17илиRET - Стандартный вызов Mitsubishi:
M98 P__ H__ L__ ,D__ ;илиM98 <имя файла> H__ L__ ,D__ ; - Внешний вызов Mitsubishi:
M198 P__ L__ ;илиM198 <имя файла> L__ ; - Возврат Mitsubishi:
M99 P__ ;
| Параметр / Адрес | Бренд ЧПУ | Описание | Диапазон значений / Настройки |
|---|---|---|---|
P | Fanuc / Mitsubishi | Идентификатор номера программы вызываемой подпрограммы. | До 8 цифр |
L | Fanuc / Mitsubishi | Количество повторений выполнения подпрограммы. | От 1 до 9999 |
H | Mitsubishi | Начальный номер последовательности (номер N-number) внутри вызываемой подпрограммы. | Действительный N-number |
,D | Mitsubishi | Явное указание номера устройства для поиска файлов. | От 0 до 4 |
<file name> | Mitsubishi | Прямой вызов подпрограммы по буквенно-цифровому имени файла. | До 32 символов |
Типы параметров PROC | Siemens | Типы данных формальных параметров, принимаемые подпрограммой (например, REAL, INT, CHAR, BOOL). | Стандартные типы переменных |
VAR | Siemens | Ключевое слово для объявления передачи формального параметра по ссылке. | Ключевое слово |
SAVE | Siemens | Атрибут для автоматического сохранения и восстановления активных модальных настроек и фреймов. | Флаг атрибута |
Применение на брендах
Интеграция ЧПУ Fanuc
Среда вложенных подпрограмм Fanuc использует механизмы управления на базе параметров для контроля доступа и обеспечения безопасности. В этой системе параметр 0010#4 (PRG9) ограничивает доступ к макропрограммам серии 9000, в то время как параметр 0389#2 (PRG8) выполняет ту же функцию для программ серии 8000.
Чтобы вызвать стандартную вложенную подпрограмму, программисты задают кадр M98 с указанием номера программы и количества циклов повторения, например: M98 P1000 L5 ;. Внешние подпрограммы транслируются с помощью: M198 P50 ;, а возвращаются подпрограммы командой: M99 ;.
| Тип | Имя / Код | Описание и настройки |
|---|---|---|
| Параметр | 0010#4 (PRG9) | Запрещает редактирование подпрограмм от 09000 до 09999 при значении 1 (не запрещено при 0). |
| Параметр | 0389#2 (PRG8) | Запрещает редактирование подпрограмм от 08000 до 08999 при значении 1 (не запрещено при 0). |
| Параметр | 3404#2 (SBP) | Определяет, указывает ли адрес P в M198 на номер файла (0) или номер программы (1). |
| Параметр | 6005#0 (SQC) | Определяет, не используется (0) или используется (1) вызов номера последовательности подпрограммы. |
| Параметр | 3457 | Настраивает пути поиска в иерархии папок (папки LIB, MC1/MC2, SYS) для поиска файлов. |
| Аварийный сигнал | 0077 | TOO MANY SUB, MACRO NESTING: превышена глубина вложенности или выполнен вложенный вызов M198. |
| Аварийный сигнал | 1080 | DUPLICATE DEVICE SUB PROGRAM CALL: вложенный вызов M198 внутри активной программы M198. |
| Аварийный сигнал | 1091 | DUPLICATE SUB-CALL WORD: в одном кадре обнаружено несколько слов вызова подпрограммы. |
| Аварийный сигнал | 0076 | PROGRAM NOT FOUND: вызываемый номер подпрограммы не найден в памяти или путях поиска. |
| Версия | 0001#1 (FCV) | Совместимость с устаревшим форматом перфоленты. Установка в 1 анализирует P-код для слияния количества повторений и номера программы. |
Внимание: игнорирование переключения из относительного позиционирования обратно в абсолютное позиционирование перед выполнением команды M99 приведет к смещению систем координат и вызовет жесткое столкновение.
Интеграция Siemens SINUMERIK
Системы Siemens SINUMERIK не используют числовые O-numbers, вместо этого вызывая подпрограммы напрямую по их буквенно-цифровым именам. Параметры программы могут передаваться в эти подпрограммы с помощью команды PROC в объявлении подпрограммы.
Чтобы вызвать подпрограмму по имени, используйте синтаксис: SUB_NAME(параметры). Блок возврата записывается как: M17 или RET, причем RET позволяет выполнять прыжки через несколько уровней, например: RET("N200", 2) ;.
| Тип | Имя / Код | Описание и настройки |
|---|---|---|
| Параметр | Типы параметров PROC | Типы данных формальных параметров, принимаемые подпрограммой (например, REAL, INT, CHAR, BOOL). |
| Параметр | VAR | Ключевое слово для объявления передачи формальных параметров по ссылке, а не по значению. |
| Параметр | SAVE | Атрибут, который автоматически сохраняет и восстанавливает модальные G-коды и фреймы координат при возврате. |
| Аварийный сигнал | 14012 | Maximum subroutine level exceeded: превышена максимальная глубина вложенности подпрограмм (8 уровней для 808D, 16 уровней для 840D/828D). |
| Аварийный сигнал | 14011 | Program not existing or will be edited: файл подпрограммы отсутствует, не запущен в работу или открыт для редактирования в редакторе HMI. |
| Аварийный сигнал | 14013 | Number of subroutine passes invalid: неверное или выходящее за допустимый диапазон количество повторений выполнения подпрограммы. |
| Версия | 808D против 828D/840D sl | Система SINUMERIK 808D ограничивает вложенность 8 уровнями, тогда как 828D и 840D sl поддерживают до 16 уровней. |
Внимание: вызов активного файла подпрограммы, который в данный момент редактируется на панели HMI, мгновенно вызовет аварийный сигнал Alarm 14011 и остановит работу станка.
Интеграция ЧПУ Mitsubishi
Контроллеры Mitsubishi поддерживают прямую адресацию физических накопителей данных внутри кадра вызова. Программисты настраивают целевые устройства с помощью параметров #8876 и #8880, чтобы сопоставить пути поиска с локальным адресом ,D.
Чтобы вызвать подпрограмму с карты памяти (Card Reader) с запуском от кадра N100, запрограммируйте: M98 <PATTERN.PRG> H100 ,D1 ;. Возврат в вызывающую программу завершается с помощью: M99 ;.
| Тип | Имя / Код | Описание и настройки |
|---|---|---|
| Параметр | #8876 | Настройка устройства хранения для внешних вызовов подпрограмм M198 (G=HD, R=M-Card, D=Server, N=USB). |
| Параметр | от #8880 до #8884 | Сопоставляет устройства хранения с адресами от ,D0 до ,D4 (M=Memory, E=Memory 2, G=HD, R=M-Card, D=Server). |
| Параметр | #8129 | Приоритет поиска подпрограмм при выборе номера программы (0=заданный номер программы, 1=4-значный номер O, 2=8-значный номер O). |
| Аварийный сигнал | P230 | Subprogram nesting over: превышена глубина вложенности подпрограмм или выполнен вызов M198 внутри программы на сервере данных. |
| Аварийный сигнал | P231 | No sequence No.: номер последовательности возврата (M99 P) не найден в вызывающей программе. |
| Аварийный сигнал | P232 | No program No.: заданный номер программы P или имя файла в угловых скобках не найдены в указанном устройстве. |
| Версия | M70V против M80V | Модели серии M70V/M700V поддерживают вложенность до 8 уровней, в то время как современные M80V/M800V поддерживают до 10 уровней. |
| Версия | M800VW против M800VS | Если параметр #8876 пуст, M800VW/M80VW по умолчанию осуществляет поиск на сервере данных (Data server), в то время как M800VS/M80V по умолчанию считывает данные с передней SD-карты. |
Внимание: сбой соединения с внешним запоминающим устройством в процессе выполнения программы приведет к срабатыванию аварийного сигнала P232 и вызовет опасный аварийный останов посреди рабочего цикла.
Сравнение брендов
| Критерий | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Команда вызова подпрограммы | M98 (внутренняя), M198 (внешняя) | Буквенно-цифровое имя программы или CALL / PCALL / MCALL | M98 (внутренняя/внешняя), M198 (внешняя) |
| Команда возврата | M99 | M17 или RET | M99 |
| Буквенно-цифровые имена | — (no source) | Да (прямое указание имени) | Да (с использованием синтаксиса <filename>) |
| Макс. глубина вложенности | 4 уровня (8 с макросами) | 8 уровней (808D), 16 уровней (840D sl / 828D) | 8 уровней (M70V), 10 уровней (M80V) |
| Передача параметров | — (no source) | Да (локальные параметры объявляются в PROC) | — (no source) |
| Выбор накопителя при вызове | Глобальный параметр папки поиска (3457) | Поиск по путям / Память | Да (через адрес устройства ,D в кадре) |
| Сохранение режимов при возврате | Ручное восстановление | Автоматическое (через атрибут SAVE в PROC) | Ручное восстановление |
Технический анализ
Аналитический обзор этих трех архитектур ЧПУ выявляет различные подходы к выполнению подпрограмм, управлению областью видимости памяти и передаче параметров. Система Siemens основывает свое выполнение на концепциях высокоуровневых компьютерных языков программирования, позволяя разработчикам определять локальные области видимости и механизмы передачи параметров непосредственно в заголовке подпрограммы. Используя ключевое слово VAR в строке PROC, Siemens активирует выполнение с передачей аргументов по ссылке, позволяя подпрограммам изменять переменные и возвращать результаты вычислений в родительскую программу. Напротив, Fanuc и Mitsubishi используют традиционные регистровые архитектуры, требующие применения макроопций, таких как G65 или G66, для передачи значений или вынуждающие программистов полагаться на нестабильные общие или глобальные переменные, что увеличивает риск повреждения модальных данных.
Иерархия вложенности также отражает различную философию разработчиков оборудования. Лимит вложенности Fanuc в 4 уровня требует от программистов построения упрощенных, неглубоких деревьев вызовов. Siemens предлагает до 16 уровней вложенности, однако, поскольку эти уровни динамически распределяются между пользовательскими подпрограммами, стандартными встроенными циклами и фоновыми процедурами OEM-производителя оборудования (такими как ограничения скорости шпинделя или макросы смены инструмента револьверной головки), этот лимит может быстро исчерпаться. Mitsubishi занимает промежуточное положение, offering 8 уровней на устаревших сериях M70V и 10 уровней на более новых системах управления M80V. Превышение этих лимитов на любой стойке ЧПУ мгновенно останавливает выполнение программы, что подчеркивает необходимость отслеживания глубины вызова во всех активных системах.
Маршрутизация директорий и контроль безопасности также различают эти платформы. Fanuc задействует параметр 3457 для поиска по жесткой автоматической иерархии папок, тогда как Mitsubishi допускает прямое физическое указание путей через адрес ,D или имена файлов в угловых скобках, такие как <PART.PRG>. Siemens изолирует вызовы подпрограмм локальной рабочей директорией детали, если не объявлена директива EXTERN. Siemens также использует защитную блокировку редактирования HMI (версия 5 и выше), которая запрещает запуск программы с пульта ЧПУ (NC Start), если вызываемый файл открыт на экране редактора — функция, которая изначально отсутствует на системах Fanuc или Mitsubishi.
Примеры программ
Пример вложенной подпрограммы Fanuc
Этот пример демонстрирует вызов главной программой (O0001) вложенной подпрограммы (O1000) пять раз для выполнения повторяющихся проходов со смещением координат.
O0001 (MAIN PROGRAM) ; G90 G54 G00 X0 Y0 Z10.0 ; Предварительное позиционирование осей в абсолютный ноль детали M98 P1000 L5 ; Последовательный вызов подпрограммы O1000 пять раз G00 Z50.0 M30 ; Отвод оси Z и завершение главной программы
O1000 (SUBPROGRAM) ; G91 G01 Z-2.0 F150 ; Переключение в относительный режим, подача оси Z вниз на 2.0 мм G90 G01 X50.0 F300 ; Возврат в абсолютное позиционирование, подача оси X до 50.0 мм G91 G01 Z2.0 ; Относительный отвод оси Z на 2.0 мм G90 G01 X0 ; Абсолютный возврат оси X в ноль M99 ; Возврат управления в главную программу
Пробный прогон (dry run)
Во время пробного прогона (dry run) контроллер Fanuc перемещает оси станка в точки X0, Y0 и Z10.0 в режиме абсолютного позиционирования. При считывании кадра M98 P1000 L5 выполнение переходит на подпрограмму O1000. В подпрограмме O1000 система ЧПУ переключается в относительный режим (G91) для врезания по оси Z на 2.0 мм, а затем возвращается в абсолютный режим (G90) для прохода до координаты X50.0. После относительного отвода оси Z на 2.0 мм инструмент возвращается в X0 в абсолютном режиме. Контроллер выполняет этот цикл подпрограммы пять раз, что дает суммарную глубину врезания по оси Z в 10.0 мм. Затем выполнение возвращается в главную программу, инструмент отводится к Z50.0, и цикл завершается по команде M30.
Пример буквенно-цифровой подпрограммы Siemens
Эта программа демонстрирует правила вызова буквенно-цифровых подпрограмм Siemens с передачей параметров в заголовке PROC и автоматической защитой системы координат с помощью атрибута SAVE.
; Главная программа (MAIN_PROG.MPF) N10 G90 G54 G00 X0 Y0 Z10.0 ; Предварительное позиционирование инструмента в абсолютный ноль N20 MCALL CUT_POCKET(3.0, 150.0) ; Модальная регистрация подпрограммы CUT_POCKET N30 X50.0 Y50.0 ; Автоматическое выполнение подпрограммы в координате 1 N40 X100.0 Y50.0 ; Автоматическое выполнение подпрограммы в координате 2 N50 MCALL ; Отмена вызова модальной подпрограммы N60 G00 Z50.0 M30 ; Отвод Z и завершение главной программы
; Подпрограмма CUT_POCKET.SPF (хранится в директории SPF) PROC CUT_POCKET(REAL DEPTH, REAL FEED) SAVE DISPLOF ; G91 G01 Z=-DEPTH F=FEED ; Относительное врезание на основе параметра DEPTH G90 G01 G41 X0 Y0 ; Абсолютное позиционирование с активной компенсацией радиуса инструмента G03 X0 Y0 CR=25.0 ; Интерполяция кругового профиля кармана G40 G01 X0 Y0 ; Отмена компенсации радиуса инструмента G91 G01 Z=DEPTH ; Относительный отвод оси Z M17 ; Завершение подпрограммы и возврат управления
Пробный прогон
При пробном прогоне программы Siemens контроллер сначала выполняет абсолютное позиционирование в точки X0, Y0 и Z10.0. Команда MCALL в кадре N20 регистрирует CUT_POCKET как модальную подпрограмму. Перемещение к кадру N30 (X50.0 Y50.0) позиционирует оси, приостанавливает движение и вызывает подпрограмму с переданными значениями параметров 3.0 и 150.0. Подпрограмма начинает выполнение с активным атрибутом SAVE, который фиксирует текущее абсолютное состояние родительской программы. Она выполняет фрезерование кармана с использованием относительных перемещений, отводится и возвращается по команде M17. Система управления автоматически восстанавливает исходное абсолютное состояние G90 и переходит к кадру N40 (X100.0 Y50.0) для повторения процесса. Наконец, кадр N50 отменяет модальный вызов процедуры перед тем, как ось Z отойдет на 50.0 мм и завершится по M30.
Пример буквенно-цифровой подпрограммы Mitsubishi
Эта программа демонстрирует возможность систем Mitsubishi вызывать файлы по буквенно-цифровым именам с определенных устройств хранения данных с помощью параметра адреса ,D.
O0002 (MAIN PROGRAM) ; G90 G54 G00 X0 Y0 Z10.0 ; Предварительное позиционирование инструмента в абсолютный ноль детали M98 <ROUGH-CUT.PRG> H200 L3 ,D1 ; Вызов файла ROUGH-CUT.PRG с устройства 1 начиная с кадра N200 G00 Z50.0 M30 ; Отвод оси Z и завершение главной программы
; ROUGH-CUT.PRG (хранится на карте CF - устройство 1) O2000 (SUBPROGRAM) ; N100 G01 Z-5.0 F100 ; Этот кадр пропускается из-за поиска кадра H200 N200 G91 G01 Z-2.0 F120 ; Начало выполнения подпрограммы; относительная подача N300 G90 G01 X30.0 Y30.0 F250 ; Проход обработки в абсолютном позиционировании N400 G91 G01 Z2.0 ; Относительный отвод оси Z на 2.0 мм N500 G90 G01 X0 Y0 ; Возврат в абсолютные координаты X0 Y0 M99 ; Возврат управления в главную программу
Пробный прогон
Во время пробного прогона на системе Mitsubishi инструмент предварительно позиционируется в точках X0, Y0 и Z10.0. При выполнении кадра M98 контроллер обращается к устройству 1 (карте CF), чтобы открыть файл ROUGH-CUT.PRG. Он выполняет поиск кадра N200 в подпрограмме, как указано адресом H200. Кадр N100 полностью пропускается. Выполнение начинается с кадра N200 с относительного перемещения по оси Z, за которым следуют проходы абсолютного профилирования. Затем инструмент отводится, возвращается в абсолютные координаты и считывает команду M99. Контроллер повторяет этот цикл три раза перед возвратом в главную программу для отвода оси Z и завершения работы по M30.
Анализ ошибок
| Бренд | Код ошибки (Alarm Code) | Условие срабатывания | Симптомы для оператора | Первопричина / Решение |
|---|---|---|---|---|
| Fanuc | 0076 | Вызываемый номер программы не найден в памяти или папках поиска. | Станок мгновенно останавливается, выводя ошибку «PROGRAM NOT FOUND». | Проверьте пути поиска в параметре 3457 и убедитесь, что файл с номером O присутствует в памяти. |
| Fanuc | 0077 | Глубина вложенности подпрограмм или макросов превышает максимально допустимый предел. | ЧПУ останавливается посреди цикла, выводя ошибку «TOO MANY SUB, MACRO NESTING». | Убедитесь, что уровни вложенности не превышают 4 (или 8, включая макровызовы). |
| Fanuc | 1080 | Вложенный вызов внешнего устройства M198 выполнен внутри уже активной подпрограммы M198. | Контроллер блокирует выполнение и выводит ошибку «DUPLICATE DEVICE SUB PROGRAM CALL». | Избегайте вложенных вызовов M198. Перенесите вспомогательные подпрограммы во внутреннюю память SRAM. |
| Fanuc | 1091 | В одном и том же кадре задано более одной инструкции вызова подпрограммы. | Интерпретатор останавливается и выводит ошибку «DUPLICATE SUB-CALL WORD». | Разделите вызовы подпрограмм на отдельные кадры. |
| Siemens | 14011 | Вызываемая подпрограмма отсутствует, не запущена в работу или открыта для редактирования. | Контроллер останавливает выполнение программы, выводя сообщение «program not existing or will be edited». | Закройте файл на панели HMI для снятия блокировки редактирования. Проверьте путь файла в _N_SPF_DIR. |
| Siemens | 14012 | Превышен лимит уровней вложенности подпрограмм. | Система останавливается с сообщением «maximum subroutine level exceeded». | Проанализируйте уровни вложенности. Технологические циклы Siemens потребляют до 3 уровней; структурируйте вызовы на уровне 12 или выше. |
| Siemens | 14013 | Неправильно задано или выходит за допустимые пределы количество проходов подпрограммы. | Система управления отклоняет выполнение программы, выводя «Number of subroutine passes invalid». | Проверьте и исправьте значение количества проходов в вызове подпрограммы. |
| Mitsubishi | P230 | Превышена глубина вложенности подпрограмм или вызов M198 сделан внутри программы сервера данных. | Стойка ЧПУ останавливается, выводя ошибку «Subprogram nesting over». | Убедитесь, что уровни вложенности не превышают 8 (M70V) или 10 (M80V). Реструктурируйте вызовы M198. |
| Mitsubishi | P231 | Номер последовательности (кадра), указанный в качестве адреса возврата, не найден в вызывающей программе. | Интерпретатор завершает работу по ошибке, выводя сообщение «No sequence No.». | Убедитесь, что номер кадра, запрограммированный после адреса P в кадре с M99, существует в вызывающей программе. |
| Mitsubishi | P232 | Указанный номер программы или имя файла не найдены на выбранном устройстве. | Выполнение программы останавливается с выводом ошибки «No program No.». | Проверьте подключение накопителя, параметрическое сопоставление адресов и длину имени файла (менее 32 символов). |
Практическое применение
Списание партии обработанных деталей в неисправимый брак и аварийная остановка производства по тревоге 0077 на стойках Fanuc или P230 на пультах Mitsubishi становятся прямым результатом игнорирования лимитов глубины вложенности. Проверка параметров блокировки редактирования, таких как 0010#4 (PRG9) и 0389#2 (PRG8) на Fanuc, до начала обработки устраняет наиболее частую причину незапланированных остановок для этой команды, исключая случайное повреждение оператором системных макросов смены инструмента или измерительных циклов. На системах Siemens запуск шпинделя без использования защитного атрибута SAVE в строке PROC приводит к неконтролируемому переносу G91 в родительские программы, вызывая аварийный наезд режущей пластины на зажимные приспособления. Дополнительно наладчик должен гарантировать, что ни одна активная подпрограмма не открыта для редактирования в SINUMERIK HMI, иначе вызов файла мгновенно остановит цикл по ошибке 14011. При работе с внешними накопителями на Mitsubishi сбой связи с флеш-картой или жестким диском (параметр #8876 и адреса устройств ,D) прерывает считывание блоков и аварийно выбивает ошибку P232, создавая опасность поломки шпинделя из-за экстренной остановки на подаче.
Связанные команды
- writing-and-calling-subprograms: устанавливает базовую логику организации подпрограмм, демонстрируя переход от одиночных программ к модульным вызовам.
- g83-deep-hole-peck-drilling-cycle: вызывает стандартный цикл глубокого сверления с периодическим выводом сверла, который может быть встроен в пользовательские подпрограммы для обработки сеток глубоких отверстий.
- g84-g74-rigid-tapping: выполняет цикл жесткого нарезания резьбы в составе вложенных подпрограмм для автоматизации создания внутренней резьбы на различных координатах детали.
- Простой макровызов
G65: выполняет макропрограмму для одного кадра с одновременной передачей локальных аргументов в макрорегистры, аналогично вызову подпрограммы, но с поддержкой параметров. - Модальный макровызов
G66: предписывает системе ЧПУ модально выполнять макроподпрограмму после каждого последующего кадра перемещения до тех пор, пока режим не будет отменен.
Заключение
Повышение надежности станочного парка и стабильное выполнение межремонтных интервалов напрямую зависят от дисциплины программирования вложенных подпрограмм. Рекомендуется внедрить обязательное правило сброса всех модальных изменений — в первую очередь команд G90 и отмены компенсаций G40/G49 — непосредственно перед каждым блоком возврата M99 или M17. Аппаратная блокировка параметров редактирования серий O8000/O9000 и регулярное тестирование траекторий в режиме пробного прогона предотвращают аварийный брак и исключают дорогостоящий ремонт механических узлов ЧПУ.
Часто задаваемые вопросы (FAQ)
Как заблокировать редактирование циклов смены инструмента на стойке Fanuc во избежание аварий?
Случайное изменение программ смены инструмента (macros серий 8000 и 9000) операторами во время наладки является частой причиной поломок револьверной головки и простоев. Ограничение доступа на редактирование этих файлов защищает важные машинные циклы от несанкционированного вмешательства. Практическое действие: Активируйте режим MDI, включите разрешение записи параметров (Parameter Write Enable) и установите параметр 0010#4 (PRG9) в 1 для защиты программ 9000-й серии, а параметр 0389#2 (PRG8) в 1 для защиты программ 8000-й серии.
Что делать при возникновении ошибки 14012 на системе Siemens Sinumerik?
Эта авария означает превышение максимального лимита уровней вложенности подпрограмм, который для стойки 840D составляет 16 уровней. Важно помнить, что встроенные технологические циклы (например, ShopMill или ShopTurn) при выполнении автоматически задействуют до 3 уровней вложенности, что быстро исчерпывает стек памяти. Практическое действие: Оптимизируйте структуру вызовов в управляющей программе, избегайте дублирования циклов и выполняйте вызовы сложных технологических подпрограмм на уровне не ниже 12-го.
Как правильно настроить вызов подпрограмм с внешней карты памяти на Mitsubishi, чтобы избежать аварийного останова?
При использовании внешних носителей ЧПУ Mitsubishi ограничивает глубину вложенности вызовов M198 строго одним уровнем, и любой сбой связи с картой памяти вызывает аварийную блокировку осей. Для стабильного считывания файлов необходимо сопоставить физическое устройство с адресами маршрутизации. Практическое действие: Укажите значение R (карта памяти) в параметре #8876, а в кадре вызова M98 принудительно добавьте адрес устройства `,D1` или `,D2` (в соответствии с картой параметров #8880-#8884) для прямого обращения к CF-карте.
Проблема все еще не решена?
Задайте вопрос нашему ИИ-ассистенту по этой теме на естественном языке. На основе проверенных источников, без галлюцинаций.

- 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.