Подпрограммы: M98 и M99
Подпрограмма — часть программы, которую можно вызвать несколько раз: одинаковые канавки, проходы по глубине, обработка повторяющихся элементов детали.
Fanuc: M98 и M99
| Запись | Что делает |
|---|---|
M98 P1000 | Вызвать подпрограмму O1000 один раз |
M98 P1000 L3 | Вызвать O1000 три раза |
M98 P31000 | Формат 0i/30i: первые цифры — число повторений (3), последние четыре — номер программы (1000) |
M99 | Конец подпрограммы, возврат в кадр после вызова |
M99 P50 | Возврат не в следующий кадр, а в кадр N50 вызывающей программы |
Подпрограмма хранится в памяти стойки как отдельная программа с номером O. Глубина вложенности — до четырёх уровней (на новых стойках больше).
Пример: три канавки одной подпрограммой
O0100 (ОСНОВНАЯ) T0303 (КАНАВОЧНЫЙ 3 ММ) G97 S500 M03 G00 X44 Z-10 M98 P2000 L3 (ТРИ КАНАВКИ С ШАГОМ 15 ММ) G28 U0 W0 M30 O2000 (ПОДПРОГРАММА: КАНАВКА И СДВИГ) G01 X34 F0.05 G04 X0.3 G00 X44 W-15 (СДВИГ К СЛЕДУЮЩЕЙ КАНАВКЕ) M99
Сдвиг на следующую позицию записан в приращениях (W на токарном, G91 на фрезерном), поэтому каждый вызов работает на новом месте.
Пример: четыре одинаковых паза на фрезерном станке
O0200 G90 G54 G00 X10 Y10 G43 H01 Z5 S2000 M03 M98 P3000 L4 (ЧЕТЫРЕ ПАЗА С ШАГОМ 25 ММ) G90 G00 Z50 M30 O3000 (ПАЗ ДЛИНОЙ 20 ММ И СДВИГ) G90 G01 Z-3 F150 G91 G01 Y20 F300 G90 G00 Z5 G91 G00 X25 Y-20 (К НАЧАЛУ СЛЕДУЮЩЕГО ПАЗА) G90 M99
Подпрограмма возвращает режим G90 перед M99, чтобы основная программа продолжила в абсолютных координатах.
Для таких задач удобнее параметрическая программа с циклом WHILE — см. параметрическое программирование.
Siemens Sinumerik
| Запись | Что делает |
|---|---|
L1000 | Вызвать подпрограмму L1000.SPF |
L1000 P3 | Вызвать три раза |
KONTUR | Вызов подпрограммы по имени KONTUR.SPF |
M17 или RET | Конец подпрограммы |
MCALL | Модальный вызов: подпрограмма или цикл выполняется после каждого перемещения |
Типичные ошибки
- Подпрограмма не загружена в память стойки — аларм PS0078 у Fanuc или 14011 у Siemens.
- В подпрограмме абсолютные координаты, хотя задумывался сдвиг: все вызовы работают в одном месте.
- Подпрограмма меняет модальные коды (G91, подачу) и не возвращает их — основная программа продолжает в чужом режиме.
Подпрограммы в одном файле поддерживает онлайн-проверка программ.