CNC Path Analyzer

Подпрограммы M98/M99: запишите повторяющийся контур один раз и вызывайте многократно

На примере объясняются вызов M98 и возврат M99, номер P и число повторов L, обработка одинакового паза в нескольких местах инкрементной подпрограммой и ошибки вызова.

Зачем нужны подпрограммы?

Одинаковый паз часто режут в пяти местах, а один контур — несколько раз на разных глубинах. Копирование кадров удлиняет программу, а изменение одного размера приходится вносить во всех пяти местах. Один пропуск даёт брак с отличающимся размером.

Подпрограмма выделяет повторяемую часть в отдельную программу, которую вызывает главная. Форма хранится в одном месте, а главная программа указывает только «где и сколько раз».

Вызов и возврат

КомандаЗначениеПример
M98 P_Вызывает программу с номером P (номером O)M98 P3100
L_ или начальные цифры PЧисло повторовL3 → 3 раза
M99Возвращает к строке после кадра вызоваПоследняя строка O3100
M99 P_Возвращает с переходом к указанному номеру кадраДля ветвлений и циклов

Пример: три паза инкрементной подпрограммой

Подпрограмма O3100 написана в инкрементном режиме G91. От текущей точки она опускается на 6 mm, режет паз 30 mm по X, поднимается на 6 mm и смещается на 10 mm по Y, возвращаясь к начальному X. Конечная точка становится началом следующего повтора, поэтому три вызова дают три паза с шагом 10 mm.

Три вызова подпрограммы O3100 через L3 для трёх пазов с шагом 10 mm

O3007
T1 M6
G21 G90 G17 G94
G54
S3000 M03
G00 X0. Y0. Z5.
M98 P3100 L3
G90 G00 Z50.
M30
O3100
G91 G01 Z-6. F100
X30. F300
G00 Z6.
X-30. Y10.
M99
Три вызова подпрограммы O3100 через L3 для трёх пазов с шагом 10 mm — XY траекторияXY
Светло-синий пунктир — быстрый ход G00, сплошная оранжевая линия — резание. Дуги показаны как рассчитанные статические кривые.

На рисунке выше показан результат анализа этой программы в CNC Path Analyzer (быстрый ход 8 сегментов, линейное резание 6 сегментов).

Правила для основной программы

  • Восстановление режима: подпрограмма заканчивается в G91, поэтому сразу после возврата снова задайте G90. В примере это G90 G00 Z50.. Без G90 команда Z50. означает не «высота 50», а «на 50 mm выше текущего положения». Здесь движение вверх безопасно, но при подводе следующего инструмента возможно столкновение.
  • Начальная позиция: результат инкрементной подпрограммы зависит от положения при вызове. Перед вызовом явно задайте начало в абсолютных координатах.
  • Состояние коррекций и циклов: активная коррекция радиуса или постоянный цикл могут неожиданно изменить движения подпрограммы. Осознанно приведите модальные состояния в порядок до и после вызова.
  • Положение M30: если подпрограмма находится в том же файле, поместите её после M30 главной программы. Главная программа завершится на M30, и подпрограмма не запустится случайно.

Число повторов и расчёт времени

За один запуск подпрограмма режет Z 6 mm (F100) и X 30 mm (F300): 3.6 s и 6 s, всего 9.6 s; три запуска дают около 29 s чистого резания. Замена L3 на L5 меняет один символ и даёт пять пазов и около 48 s. Повторы упрощают изменение программы и оценку времени. Подробнее: расчёт времени обработки.

Виды ошибок вызова

В инструмент можно загрузить отдельные файлы вызываемых программ вместе с главной; номер P связывается с номером O внутри файла, а не с именем файла.

ОшибкаПричинаЧто показывает CNC Path Analyzer
Вызываемая программа не найденаНет программы с номером O, соответствующим PСтроку вызова и ненайденный номер
Повторяющийся номер OОдинаковый номер у двух или более программПредупреждение о невозможности выбрать программу
Нет M99Подпрограмма не завершается и переходит в следующую программуПредупреждение об отсутствии возврата
Бесконечные вызовыПрограммы вызывают друг друга или программа вызывает себяРасчёт останавливается по пределу рекурсии или выполнения

Частые вопросы

Может ли подпрограмма вызвать другую подпрограмму?
Да. Это вложенность; допустимое число уровней (обычно четыре и более) зависит от УЧПУ. Чем глубже вложенность, тем труднее следить за модальными состояниями, поэтому рекомендуется не более двух уровней.
Чем M98 отличается от макровызова G65?
G65 передаёт аргументы (A, B, C…) в переменные. Он вызывает одну форму с разными размерами, тогда как M98 повторяет одну операцию без аргументов.

Следующие шаги

Проверить траекторию в CNC Path Analyzer