Подпрограммы: 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, подачу) и не возвращает их — основная программа продолжает в чужом режиме.

Подпрограммы в одном файле поддерживает онлайн-проверка программ.