Написание и вызов подпрограмм на ЧПУ Fanuc, Siemens и Mitsubishi
Как писать подпрограммы ЧПУ на Fanuc, Siemens и Mitsubishi. Разбор синтаксиса M98, MCALL, настройки параметров 0010, 0389, 8129 и устранение ошибок 0077 и 14012.
Введение
Сбой позиционирования из-за сохранения инкрементального режима (G91) после выхода из подпрограммы ЧПУ создает непосредственную угрозу столкновения револьверной головки (turret) или шпинделя с элементами технологической оснастки. Когда интерпретатор ЧПУ считывает команду возврата M99 или M17 в тот момент, когда активное состояние системы координат все еще установлено в инкрементальный режим, основная управляющая программа возобновляет движение относительно последней точки подпрограммы, а не в абсолютной системе координат детали (G54). Это приводит к тому, что режущий инструмент на рабочей подаче врезается в зажимной патрон (chuck), губки тисков (vise jaw) или прижим. В результате жесткого удара ломается дорогостоящий инструмент, сгибается вал шпинделя, а заготовка отправляется в брак, что вызывает незапланированный простой оборудования. Обеспечение надежности оборудования требует строгого контроля модальных состояний, использования защитных блокировок и верификации параметров вложенности подпрограмм на системах Fanuc, Siemens и Mitsubishi.
Техническая сводка
| Технические характеристики | Подробности |
|---|---|
| Коды команд | Fanuc: M98, M99, M198Siemens: L<number>, <program name>, MCALL, EXTCALL, M17, RETMitsubishi: M98, M99, M198 |
| Модальная группа / Режим | Команды вызова и возврата подпрограмм |
| Поддерживаемые бренды | Fanuc, Siemens, Mitsubishi |
| Критические параметры | Fanuc: 3404#2 (SBP), 6001#5/7000#0 (TCS)Siemens: P (INT), VAR keywordMitsubishi: #8876 (M198 device), #8129 (Search priority) |
| Основное ограничение | Пределы вложенности: макс. 4 уровня (Fanuc), макс. 11/16 уровней (Siemens), макс. 8/10 уровней (Mitsubishi). Вложенные вызовы M198 на внешних носителях данных запрещены. |
Краткий обзор
- Сброс модальных режимов: Обязательно восстанавливайте абсолютное позиционирование (G90) и сбрасывайте измененные модальные подачи перед выходом из подпрограммы, чтобы предотвратить катастрофический уход инструмента с траектории.
- Предел вложенности: Ограничивайте уровни вложенности подпрограмм до 4 на Fanuc, от 8 до 10 на Mitsubishi и от 11 до 16 на Siemens во избежание переполнения памяти интерпретатора.
- Вызов с внешнего накопителя: Программируйте команду
M198(Fanuc/Mitsubishi) илиEXTCALL(Siemens) для выполнения больших программ напрямую с внешних карт памяти или серверов данных. - Защита параметров блокировкой: Блокируйте права на редактирование макропрограмм серий 8000 и 9000 на стойках Fanuc с помощью параметров
PRG8(0389#2) andPRG9(0010#4) для предотвращения их случайного изменения. - Кастомизация через псевдонимы: Используйте пользовательские коды M, S, T или B для автоматического назначения псевдонимов и запуска фоновых подпрограмм, например, циклов вращения револьверной головки.
- Модальный вызов Siemens MCALL: Применяйте команду
MCALLна системах Siemens для автоматического выполнения подпрограммы в каждой координатной точке, указанной в последующих кадрах, до её отмены.
Базовые концепции
Практический эффект программирования подпрограмм заключается в возможности модульного представления повторяющихся циклов обработки, что значительно сокращает размер файлов управляющих программ и упрощает внесение будущих инженерных изменений. Вместо многократного копирования и вставки одних и тех же черновых проходов, циклов обработки пазов или последовательностей смены паллет в одну большую программу, разработчики сохраняют эти действия как независимые файлы нижнего уровня. Главная программа просто вызывает эти подпрограммы по мере необходимости и мгновенно возобновляет выполнение исходной траектории после завершения подпрограммы, что позволяет получать чистые, оптимизированные файлы, потребляющие минимум памяти.
Производители систем ЧПУ по-разному подходят к поиску, вызову и выполнению этих файлов нижнего уровня. Устаревшие платформы требуют строгого числового именования с использованием O-номеров, тогда как современные стойки допускают понятные буквенно-цифровые имена. Подпрограммы также могут выполняться модально по различным координатам или динамически считываться с внешних аппаратных интерфейсов в обход ограничений внутренней памяти. Поскольку подпрограмма выполняется как активное продолжение вызывающей программы, модальные состояния, такие как подачи и координаты позиционирования, беспрепятственно переносятся между уровнями, что требует строгого соблюдения правил программирования для предотвращения нежелательного переноса модальных данных.
Структура команд
Для вызова подпрограммы интерпретатор ЧПУ должен распознать специальный код команды вместе с идентификатором целевой программы и количеством повторений. В стандартных средах Fanuc и Mitsubishi этот переход инициирует код M98, передавая управление программе, указанной по адресу P. Контроллер отслеживает каждую итерацию подпрограммы с помощью счетчика циклов перед выполнением финальной последовательности возврата. По достижении конца подпрограммы код возврата останавливает выполнение подпрограммы и возвращает указатель программы обратно в кадр, непосредственно следующий за исходной командой вызова.
Системы управления Siemens поддерживают более гибкую структуру, позволяя вызывать подпрограммы напрямую по их имени или адресу L. Определение подпрограммы Siemens может включать заголовок PROC, который задает типы и имена параметров для передачи значений между уровнями программы. Переход назад выполняется с помощью M17 или RET. В системах всех брендов внешние вызовы, такие как M198 или EXTCALL, позволяют считывать данные с карт памяти или сетевых дисков. Параметры и адреса синтаксиса определяют, как ЧПУ осуществляет поиск, повторение и возврат из этих подпрограмм.
Адреса синтаксиса команд:
- Стандартный вызов Fanuc:
M98 P_ L_ ; - Внешний вызов Fanuc:
M198 P_ ; - Возврат Fanuc:
M99 ; - Определение Siemens:
PROC <program name> (<ParamType> <ParamName>, VAR <ParamType> <ParamName>) [SAVE] [DISPLOF] [SBLOF] [ACTBLOCNO] - Вызов Siemens:
<program name> (<Param1>, <Param2>)orL<number>orMCALL <program name> - Возврат Siemens:
M17orRET - Стандартный вызов Mitsubishi:
M98 P__ H__ L__ ,D__ ;orM98 <file name> H__ L__ ,D__ ; - Внешний вызов Mitsubishi:
M198 P__ L__ ;orM198 <file name> L__ ; - Возврат Mitsubishi:
M99 P__ ;
| Адрес параметра | Бренд ЧПУ | Описание | Допустимые настройки |
|---|---|---|---|
P | Fanuc / Mitsubishi | Указывает номер целевой программы для вызова | До 8 цифр |
L | Fanuc / Mitsubishi | Определяет количество повторений подпрограммы | от 1 до 9999 (по умолчанию: 1) |
H | Mitsubishi | Указывает начальный номер кадра внутри подпрограммы | Код кадра (например, H100 соответствует N100) |
,D | Mitsubishi | Явно направляет вызов на конкретное физическое устройство хранения | от 0 до 4 (настраивается через параметры) |
<file name> | Mitsubishi | Задает буквенно-цифровое имя файла в угловых скобках | До 32 символов |
P (в вызове) | Siemens | Контролирует количество повторений программы | от 1 до 9999 (например, P3) |
VAR | Siemens | Объявляет передачу параметров по ссылке в заголовке PROC | Н/Д (ключевое слово) |
SAVE | Siemens | Автоматически сохраняет и восстанавливает активные модальные G-функции и фреймы | Н/Д (атрибут) |
DISPLOF | Siemens | Подавляет отображение кадров на HMI во время выполнения подпрограммы | Н/Д (атрибут) |
SBLOF | Siemens | Отключает пошаговый режим одиночного кадра во время выполнения | Н/Д (атрибут) |
Применение на брендах
Интеграция ЧПУ Fanuc
Системы управления Fanuc поддерживают псевдонимы (aliases), управляемые параметрами, для вызова подпрограмм. Система может выполнять фоновые подпрограммы, используя параметр 6001#5 (TCS) для сопоставления вызовов инструмента с программой O9000.
Стандартные подпрограммы вызываются с помощью M98, файлы на внешней карте памяти — с помощью M198, а возврат осуществляется по команде M99.
| Параметр / Ошибка / Версия | Тип | Описание | Настройки / Подробности |
|---|---|---|---|
Parameter 0010#4 (PRG9) | Параметр | Определяет, запрещено ли редактирование подпрограмм с O9000 по O9999. | 0 (не запрещено), 1 (запрещено) |
Parameter 0389#2 (PRG8) | Параметр | Определяет, запрещено ли редактирование подпрограмм с O8000 по O8999. | 0 (не запрещено), 1 (запрещено) |
Parameter 3404#2 (SBP) | Параметр | Определяет, указывает ли адрес P в команде M198 номер файла или номер программы. | 0 (номер файла), 1 (номер программы) |
Parameter 3457 | Параметр | Конфигурация иерархии папок поиска (например, папки пользователя, папки производителя станка (MTB), системные папки). | Битовые значения |
Parameters 6071 to 6079 | Параметр | Назначает определенные M-коды для автоматического вызова подпрограмм с O9001 по O9009. | от 3 до 99999999 (исключая зарезервированные M-коды) |
Alarm 0076 | Ошибка | ПРОГРАММА НЕ НАЙДЕНА: Вызываемая программа не найдена в памяти или папках поиска. | Проверьте параметр 3457 и убедитесь в регистрации O-номера. |
Alarm 0077 | Ошибка | СЛИШКОМ МНОГО ВЛОЖЕННЫХ ПОДПРОГРАММ/МАКРОСОВ: Превышен предел уровней вложенности. | Макс. 4 вложенные подпрограммы (8, включая вызовы макросов). |
Alarm 1080 | Ошибка | ДВОЙНОЙ ВЫЗОВ ПОДПРОГРАММЫ С ВНЕШНЕГО УСТРОЙСТВА: Вложенный вызов M198. | Избегайте вызова M198 из активной подпрограммы M198. |
Alarm 1091 | Ошибка | ДУБЛИРОВАНИЕ СЛОВА ВЫЗОВА ПОДПРОГРАММЫ: Несколько вызовов в одном кадре. | Задавайте вызовы подпрограмм в отдельных кадрах. |
Parameter 0001#1 (FCV) | Версия | Режим совместимости с устаревшими форматами перфолент FS0-TC/FS15-TA. | 0 (стандартный формат), 1 (возврат к формату Series 15 с объединением числа повторений и адреса P) |
Предупреждение: Невыполнение сброса смещений координат или модального позиционирования (G91) перед командой возврата M99 приводит к дрейфу системы координат, направляя револьверную головку в тиски.
Интеграция Siemens SINUMERIK
Siemens поддерживает высокоуровневые определения подпрограмм с локальной областью видимости переменных. Стандартные вызовы используют имя программы или L-номер, передавая параметры напрямую через заголовок PROC.
Модальные вызовы подпрограмм инициируются с помощью команды MCALL, выполняя подпрограмму после каждого кадра перемещения до её отмены. Возврат осуществляется с помощью M17 или RET.
| Параметр / Ошибка / Версия | Тип | Описание | Настройки / Подробности |
|---|---|---|---|
P (INT) | Параметр | Адрес для программирования количества повторений подпрограммы. | от 1 до 9999 |
VAR | Параметр | Объявляет параметры, передаваемые по ссылке, в заголовке PROC. | Н/Д (ключевое слово) |
SAVE | Атрибут | Автоматически сохраняет и восстанавливает активные модальные G-функции и фреймы. | Н/Д |
DISPLOF / SBLOF | Атрибут | Подавляет отображение кадров на HMI / отключает режим одиночного кадра. | Н/Д |
Alarm 14011 | Ошибка | программа не существует или редактируется. Вызываемый файл отсутствует или открыт на HMI. | Закройте файл на HMI; проверьте путь _N_SPF_DIR. |
Alarm 14012 | Ошибка | превышен максимальный уровень подпрограмм. Превышена максимальная глубина вложенности. | Проверьте уровни вложенности. |
Alarm 12720 | Ошибка | отсутствует номер программы для вызова макроса (G65/G66) в режиме ISO. | Укажите номер целевой программы с помощью адреса P. |
SINUMERIK 808D vs 828D/840D sl | Версия | Различия в уровнях вложенности подпрограмм в зависимости от аппаратного класса стоек. | 808D: 11 уровней · 828D/840D sl: 16 уровней (18 с ASUB) |
Software Version 5+ | Версия | Блокировка безопасности, препятствующая выполнению программ, открытых для редактирования. | Программы, открытые на HMI, не могут быть запущены с помощью NC Start. |
Предупреждение: Отсутствие атрибута SAVE в строке PROC позволяет модальным настройкам G-кода (таким как G91) переноситься обратно в главную программу, что приводит к мгновенным авариям осей.
Интеграция ЧПУ Mitsubishi
Mitsubishi позволяет вызывать подпрограммы по буквенно-цифровым именам прямо в кадре G-кода. Приоритет поиска настраивается с помощью параметра #8129 для определения формата O-номеров.
Подпрограммы вызываются с помощью M98 с использованием угловых скобок (например, <PART.PRG>) и перенаправляются на внешние носители с помощью M198 или адреса ,D.
| Параметр / Ошибка / Версия | Тип | Описание | Настройки / Подробности |
|---|---|---|---|
#8876 (M198 pro stor: dev) | Параметр | Выбирает целевое устройство хранения для подпрограмм, вызываемых через M198. | G (жесткий диск), R (карта памяти), D (сервер данных), N (USB-накопитель) |
#8880 to #8888 | Параметр | Задает конкретные аппаратные устройства, сопоставленные с адресом ,D (от 0 до 4). | M (память), G (жесткий диск), R (карта памяти), D (сервер данных), T (Ethernet), F (FLD) |
#8129 (Subpro No. select) | Параметр | Определяет приоритет поиска номеров подпрограмм. | 0 (указанный номер), 1 (4-значный O-номер), 2 (8-значный O-номер) |
Program Error (P230) | Ошибка | Переполнение вложенности подпрограмм: Превышена максимальная глубина вложенности. | Проверьте пределы вложенности и конфигурацию сервера данных. |
Program Error (P231) | Ошибка | Нет номера кадра: Отсутствует кадр возврата или точка перехода. | Убедитесь, что номер кадра совпадает с целевым в M99 P. |
Program Error (P232) | Ошибка | Нет номера программы: Целевой файл отсутствует или внешний диск не смонтирован. | Проверьте статус монтажа диска и длину имени файла (макс. 32 символа). |
M70V/M700V vs M800V/M80V | Версия | Пределы уровней вложенности подпрограмм для различных серий систем ЧПУ. | M70V/M700V и M800V/M80V: M70V/M700V: 8 уровней · M800V/M80V: 10 уровней |
M800VW/M80VW vs M800VS/M80V | Версия | Устройство поиска по умолчанию для M198, если параметр #8876 не задан. | M800VW/M80VW и M800VS/M80V: VW/Type-W: сервер данных · VS/Type-S: фронтальная SD-карта |
Предупреждение: Одновременный запуск подпрограммы M198 с SD-карты на нескольких каналах (системах) заблокирован, что приводит к немедленной остановке работы.
Сравнение брендов
| Критерий | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Буквенно-цифровые имена файлов | Нет встроенной поддержки; требуются строго O-номера. | Поддерживается встроенно с использованием строковых имен программ. | Поддерживается встроенно с использованием угловых скобок (например, <PART-FILE.PRG>). |
| Повторяющийся модальный вызов | Покадровое выполнение или модальный вызов макроса G66. | Модальное выполнение подпрограммы через MCALL <prog>. | Покадровое выполнение. |
| Глубина вложенности | Макс. 4 уровня вложенности (8, включая макросы). | Макс. 11 (808D), 16 (828D/840D sl), до 18 с ASUB. | Макс. 8 (M70V/M700V), 10 (M800V/M80V). |
| Вызов с накопителя | M198 P_ считывает с карты памяти/сервера данных. | EXTCALL вызывает внешние подпрограммы. | M198 вызывает с устройства, заданного параметром #8876 или явным адресом ,D. |
| Передача параметров | Требует вызовов пользовательских макросов (G65/G66). | Поддерживается напрямую через определение PROC («передача по значению» и «передача по ссылке» через VAR). | Требует вызова макроса или переменных. |
Технический анализ
Аналитический обзор этих трех архитектур ЧПУ выявляет различные подходы к выполнению подпрограмм, управлению областями видимости памяти и передаче параметров. Siemens строит управление на основе языков программирования ПК высокого уровня, позволяя программистам определять локальные области видимости и механизмы передачи параметров непосредственно в заголовке подпрограммы. Используя ключевое слово VAR в строке PROC, Siemens обеспечивает передачу по ссылке, позволяя подпрограммам изменять и возвращать результаты вычислений в родительскую программу. Fanuc и Mitsubishi используют традиционные регистровые архитектуры, требующие опций макросов, таких как G65 или G66, для передачи значений, или заставляющие программистов полагаться на нестабильные общие или глобальные переменные, что создает риск повреждения модальных данных.
Иерархии вложенности также отражают особенности аппаратной философии брендов. Ограничение вложенности в 4 уровня на Fanuc требует от программистов ведения простых ветвей вызовов с небольшой глубиной. Siemens предоставляет от 16 до 18 уровней вложенности, но поскольку эти уровни динамически распределяются между пользовательскими подпрограммами, стандартными циклами и встроенными фоновыми процедурами производителя (OEM-макросами, такими как ограничение скорости шпинделя или управление револьверной головкой), этот лимит может быстро закончиться. Mitsubishi занимает промежуточное положение, предлагая 8 уровней на устаревших сериях M70V и 10 уровней на новых системах M80V. Превышение этих лимитов на любой стойке немедленно останавливает выполнение программы, что доказывает необходимость отслеживания глубины вызовов во всех активных системах.
Маршрутизация директорий и функции безопасности также различают эти платформы. Fanuc использует параметр 3457 для поиска в жесткой автоматической иерархии папок, тогда как Mitsubishi допускает прямое физическое указание маршрута через адрес ,D или имена файлов в угловых скобках, такие как <PART.PRG>. Siemens isolates subprogram calls to the local workpiece directory unless an EXTERN declaration is declared. Кроме того, Siemens реализует блокировку безопасности HMI (начиная с версии ПО 5 и выше), которая предотвращает выполнение NC Start, если вызываемый файл открыт на экране для редактирования — функция, которая изначально отсутствует на стойках Fanuc и Mitsubishi.
Примеры программ
Пример вызова подпрограммы Fanuc
; Пример вызова подпрограммы Fanuc O0001 (ГЛАВНАЯ ПРОГРАММА) ; G90 G54 G00 X0 Y0 Z10.0 ; Предварительное позиционирование осей M98 P1000 L5 ; Вызов подпрограммы O1000 пять раз G00 Z50.0 M30 ; Отвод осей и конец главной программы
O1000 (ПОДПРОГРАММА) ; G91 G01 Z-2.0 F150 ; Переключение в инкрементальный режим и подача по Z G90 G01 X50.0 F300 ; Переключение в абсолютный режим и фрезерование до X50.0 G91 G01 Z2.0 ; Инкрементальный отвод по Z G90 G01 X0 ; Абсолютный возврат в X0 M99 ; Возврат в главную программу
пробный прогон (dry run)
При тестировании кода Fanuc в режиме пробного прогона станок сначала перемещается в координаты X0, Y0 и Z10.0 в абсолютном режиме. Когда интерпретатор достигает кадра M98 P1000 L5, он приостанавливает выполнение главной программы и переходит к подпрограмме O1000. В подпрограмме O1000 контроллер переключается в инкрементальный режим (G91) для подачи Z вниз на 2.0 мм, а затем возвращается в абсолютный режим (G90) для выполнения подачи по оси X до 50.0 мм. Он выполняет инкрементальный отвод, возвращается в абсолютную точку X0, а затем считывает M99. Контроллер повторяет этот цикл пять раз перед возвратом в главную программу, где отводит Z до 50.0 мм и завершает работу по команде M30.
Пример вызова подпрограммы Siemens
; Пример вызова подпрограммы Siemens
N10 G90 G54 G00 X0 Y0 Z10.0 ; Предварительное позиционирование осей
N20 MCALL POCKET_CYCLE(3.0, 150.0) ; Модальный вызов подпрограммы POCKET_CYCLE
N30 X50.0 Y50.0 ; Выполнение подпрограммы в координате 1
N40 X100.0 Y50.0 ; Выполнение подпрограммы в координате 2
N50 MCALL ; Отмена модального вызова подпрограмм
N60 G00 Z50.0 M30 ; Отвод Z и конец главной программы
Примечание: Ниже приведена подпрограмма POCKET_CYCLE.SPF, сохраненная в рабочей папке детали:
PROC POCKET_CYCLE(REAL DEPTH, REAL FEED) SAVE DISPLOF ;
G91 G01 Z=-DEPTH F=FEED ; Инкрементальное врезание
G90 G01 G41 X0 Y0 ; Включение компенсации радиуса инструмента
G03 X0 Y0 CR=25.0 ; Обработка кругового кармана
G40 G01 X0 Y0 ; Отмена компенсации
G91 G01 Z=DEPTH ; Инкрементальный отвод
M17 ; Возврат в главную программу
пробный прогон
Проверка программы Siemens в режиме пробного прогона показывает, что станок сначала перемещается к координатам X0, Y0 и Z10.0. Команда MCALL в кадре N20 регистрирует процедуру POCKET_CYCLE модально в памяти ЧПУ. Станок не выполняет подпрограмму в кадре N20, но при считывании кадра N30 (X50.0 Y50.0) перемещается в указанные координаты, останавливается и вызывает подпрограмму. Подпрограмма выполняется с активным атрибутом SAVE, автоматически сохраняя модальные настройки вызывающей программы. Она переключается в инкрементальный режим для подачи по Z вниз на 3.0 мм, фрезерует круговой карман, выполняет отвод и считывает M17. Контроллер автоматически восстанавливает исходные модальные настройки и продолжает выполнение. Он повторяет эту последовательность для кадра N40 (X100.0 Y50.0) перед тем, как кадр N50 очистит модальное состояние.
Пример вызова подпрограммы Mitsubishi
; Пример вызова подпрограммы Mitsubishi
O0002 (ГЛАВНАЯ ПРОГРАММА) ;
G90 G54 G00 X0 Y0 Z10.0 ; Предварительное позиционирование осей
M98 <POCKET-ROUT.PRG> H200 L3 ,D1 ; Вызов файла POCKET-ROUT.PRG с устройства 1, начиная с кадра N200
G00 Z50.0 M30 ; Отвод осей и конец главной программы
Примечание: Ниже приведена подпрограмма POCKET-ROUT.PRG, сохраненная на карте CF (устройство 1):
O2000 (ПОДПРОГРАММА) ;
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 ; Инкрементальный отвод
N500 G90 G01 X0 Y0 ; Абсолютный возврат
M99 ; Возврат в главную программу
пробный прогон
Во время пробного прогона контроллер Mitsubishi предварительно позиционирует инструмент в координатах X0, Y0 и Z10.0. При выполнении команды M98 система ЧПУ проверяет устройство 1 (карта CF), находит файл <POCKET-ROUT.PRG> и ищет кадр N200. Интерпретатор полностью пропускает кадр N100, начиная инкрементальное перемещение по оси Z с кадра N200. После выполнения профильных проходов инструмент возвращается в X0, Y0 в абсолютном режиме. При считывании M99 контроллер возвращается в главную программу, повторяя этот процесс три раза перед завершением по команде M30.
Анализ ошибок
| Бренд | Код ошибки | Условие срабатывания | Симптомы у оператора | Первопричина / Устранение |
|---|---|---|---|---|
| Fanuc | Alarm 0076 | Вызываемый номер программы отсутствует в памяти или папках поиска. | Станок мгновенно останавливается, выводя сообщение об ошибке PROGRAM NOT FOUND. | Проверьте конфигурацию путей папок в параметре 3457 и убедитесь, что файл с O-номером существует в локальной памяти. |
| Fanuc | Alarm 0077 | Глубина вложенности превышает максимально допустимый предел. | ЧПУ останавливается в середине цикла, выводя ошибку TOO MANY SUB, MACRO NESTING. | Упростите логику программы. Убедитесь, что уровни вызовов не превышают 4 уровня (8, включая вызовы макросов). |
| Fanuc | Alarm 1080 | Вложенный вызов внешнего устройства M198 выполнен внутри активной подпрограммы M198. | Выполнение зависает, выводится ошибка DUPLICATE DEVICE SUB PROGRAM CALL. | Избегайте вложенности блоков M198. Скопируйте вспомогательные подпрограммы в локальную память SRAM. |
| Fanuc | Alarm 1091 | В одном кадре запрограммировано несколько команд вызова подпрограммы. | Интерпретатор останавливается и выводит ошибку DUPLICATE SUB-CALL WORD. | Выделите каждую команду вызова подпрограммы в отдельный кадр. |
| Siemens | Alarm 14011 | Вызываемая подпрограмма отсутствует, не активна или открыта для редактирования. | Контроллер приостанавливает работу, выводя сообщение о том, что программа не существует или редактируется. | Закройте файл на HMI, чтобы снять блокировку редактирования. Проверьте путь в _N_SPF_DIR. |
| Siemens | Alarm 14012 | Превышен лимит глубины вложенности. | Система останавливается с сообщением о превышении максимального уровня вложенности подпрограмм, отключая NC Start. | Проанализируйте дерево вызовов. Уменьшите количество вложенных циклов или OEM-макросов, таких как Turret3_CODE_T. |
| Siemens | Alarm 12720 | Вызов макроса в режиме ISO выполнен без определения номера программы с помощью P. | ЧПУ отклоняет команду, выводя сообщение об отсутствии номера программы для вызова макроса. | Укажите номер целевой программы с помощью адреса P. |
| Mitsubishi | Error P230 | Уровень вложенности превышает допустимый объем или выполнены вложенные вызовы сервера данных M198. | ЧПУ останавливает работу и выводит сообщение об ошибке Subprogram nesting over. | Проверьте уровни вложенности. Ограничьте число вызовов до 8 (M70V/M700V) или 10 (M800V/M80V). |
| Mitsubishi | Error P231 | Указанный кадр возврата (M99 P) или точка перехода отсутствуют. | Интерпретатор завершает работу по ошибке, выводя сообщение No sequence No. | Убедитесь, что номер кадра, запрограммированный после P, существует в целевой программе. |
| Mitsubishi | Error P232 | Вызываемый файл отсутствует, диск не смонтирован или имя превышает 32 символа. | Выполнение останавливается, отображая ошибку No program No. | Надежно смонтируйте внешний носитель, проверьте имена файлов и следите, чтобы длина имени не превышала 32 символа. |
Практическое применение
Простой оборудования и повышенный износ узлов станка часто вызваны непреднамеренным изменением макропрограмм смены инструмента операторами или сбоями из-за некорректной адресации внешних вызовов. Проверка параметра 0010#4 (PRG9) до начала обработки устраняет наиболее частую причину незапланированных остановок для этой команды, предотвращая случайную перезапись системных подпрограмм серии O9000. Аналогично, защита программ O8000 через параметр 0389#2 (PRG8) повышает надежность оборудования при многосменной работе. Если этот параметр не проверен перед запуском, отклонение размера накапливается с каждым циклом и обнаруживается только при финальном контроле как брак. В системах Siemens отсутствие атрибута SAVE в заголовке PROC приводит к тому, что измененные в подпрограмме параметры подачи или инкрементального шага переносятся в основную траекторию. На стойках Mitsubishi некорректный вызов через M198 с SD-карты, вызванный плохим контактом или неправильным указанием приоритета поиска в параметре #8129, мгновенно останавливает линию с ошибкой P232. Регулярное техническое обслуживание разъемов накопителей и аудит настроек вложенности (максимум 4 уровня для Fanuc, 8–10 для Mitsubishi и 11–16 для Siemens) исключают перегрузку буфера интерпретатора и внезапный брак деталей.
Связанные команды
- Простой вызов макроса
G65: Инициирует одиночный немодальный вызов подпрограммы, позволяя напрямую передавать локальные переменные в регистры макросов. - Модальный вызов макроса
G66: Предписывает интерпретатору ЧПУ автоматически выполнять назначенную макроподпрограмму после каждого последующего кадра перемещения до её отмены. - Сглаживание на основе допусков G645: Регулирует допуски сглаживания контура при высокоскоростной обработке, что должно быть тщательно согласовано с подачами в подпрограммах для предотвращения хордальных погрешностей.
- Управление наклонной плоскостью G68.2: Задает координаты наклонной рабочей плоскости для многоосевой обработки, требуя правильного сопоставления координат перед выполнением циклов подпрограмм.
- Mitsubishi High-Speed Control III (G05 P20000): Активирует усовершенствованное буферизованное управление траекторией для обработки микросегментов, которое должно программироваться в отдельном кадре, независимом от вызовов подпрограмм, во избежание конфликтов команд.
Заключение
Для обеспечения максимальной надежности оборудования и предотвращения аварийных ситуаций технологическая служба должна внедрить обязательный регламент подготовки управляющих программ ЧПУ. Все подпрограммы должны завершаться кадрами сброса модальных состояний, включая обязательное переключение в абсолютную систему координат (G90) и отмену коррекций на длину и радиус инструмента перед вызовом M99 или M17. Проведение систематического аудита системных параметров блокировки редактирования макросов и плановое техническое обслуживание накопителей данных гарантируют стабильность работы автоматических линий, исключая брак заготовок и дорогостоящий ремонт узлов станков.
Часто задаваемые вопросы (FAQ)
Как гарантировать, что модальные режимы из подпрограммы не вызовут смещение координат в основной программе?
Для предотвращения опасного дрейфа координат на системах Siemens обязательно используйте атрибут SAVE в строке определения PROC, что заставит систему автоматически восстановить исходное состояние модальных групп при возврате. На стойках Fanuc и Mitsubishi рекомендуется вручную прописывать кадр сброса модальных кодов (G90 G40 G49) непосредственно перед командой M99. Практическое действие: добавьте в шаблон постпроцессора CAM-системы автоматический вывод кадра возврата с принудительным восстановлением абсолютной системы координат.
Как устранить ошибку переполнения вложенности подпрограмм (Alarm 0077 или Alarm 14012)?
Данные ошибки возникают, когда глубина вызовов превышает аппаратный лимит ЧПУ, причем этот лимит делится между пользовательским кодом и фоновыми циклами смены инструмента или PLC-макросами станка. Перенос вспомогательных переходов в общую линейную структуру или использование простых переходов по условию (GOTO) вместо подпрограмм позволяет освободить стек памяти. Практическое действие: выполните трассировку вложенности с помощью встроенного симулятора ЧПУ и сократите количество уровней вызовов, объединив мелкие подпрограммы в один файл.
Как защитить важные подпрограммы смены инструмента и измерения от случайного удаления оператором?
Подпрограммы изготовителя станка (серии O8000 и O9000 на Fanuc) уязвимы для случайного редактирования операторами в процессе наладки, что может привести к поломке измерительных датчиков или револьверной головки. Блокировка редактирования через параметры PRG9 и PRG8 полностью закрывает доступ к перезаписи этих файлов. Практическое действие: на стойке Fanuc установите значение параметра 0010#4 (PRG9) в 1 и параметра 0389#2 (PRG8) в 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.