Подпрограмма

Язык G- и М-кодов, как и любой другой язык программирования, позволяет работать с подпрограммами и совершать переходы. Посредством функции подпрограммы основная (главная) управляющая программа может вызывать из памяти другую программу (подпрограмму) и выполнить ее определенное число раз. Если УП содержит часто повторяемое действие или работает по определенному шаблону, то использование подпрограмм позволяет упростить программу обработки и сделать ее гораздо меньшей в размере.

Существуют два вида подпрограмм – внутренние и внешние. Внутренние подпрограммы вызываются при помощи кода М97 и содержатся внутри главной программы. То есть они находятся в одном файле. Внешние подпрограммы вызываются кодом М98 и не содержатся в теле главной программы. В этом случае главная программа и подпрограмма находятся в разных файлах.

Рис. 10.1. Схема внутренней подпрограммы

Внутренняя подпрограмма выполняется, когда СЧПУ встречает код М97. При этом адрес Р указывает на номер кадра, к которому нужно перейти, то есть туда, где начинается внутренняя подпрограмма. Когда СЧПУ находит кадр с кодом окончания подпрограммы М99, то выполнение внутренней подпрограммызавершается и управление передается кадру главной программы, следующему за кадром, вызвавшим завершенную подпрограмму.

Рис. 10.2. Схема внешней подпрограммы

Внешние подпрограммы работают похожим образом. Когда в главной программе встречается кадр с кодом М98, то вызывается подпрограмма с номером, установленным при помощи Р-адреса. При нахождении кода М99 управление возвращается главной программе, то есть выполняется кадр главной программы, следующий за кадром с М98. Учтите, что внешняя подпрограмма находится в отдельном файле. По сути, внешняя подпрограмма – это отдельная программа с индивидуальным номером, которая при желании может быть выполнена независимо от главной программы. Для вызова подпрограммы необходимо, чтобы она находилась в памяти СЧПУ.

Пример УП с внутренней подпрограммой:

%
O1023
N10 G21 G40 G49 G54 G80 G90
N20 Т3 М06
N30 G43 H3
N40 M03 S1000
N50 G00 X0 Y0
N60 Z0.5
N70 M97 P200
N80 M05
N90 M02
N200 G01 X-0.5 F50
N210 X10 Y10
N220 Z0.5
M230 M99
%

Программа № 1023
Строка безопасности
Вызов инструмента № 3
Компенсация длины инструмента
Включение оборотов шпинделя
Позиционирование в X0 Y0
Позиционирование в Z0.5
Вызов внутренней подпрограммы
Выключение оборотов шпинделя
Окончание программы
Начало внутренней подпрограммы
…
…
Конец внутренней подпрограммы

При помощи L-адреса определяется, сколько раз нужно вызвать ту или иную подпрограмму. Если подпрограмму нужно вызвать всего один раз, то L в кадре можно не указывать.

М98 Р1000 L4 – подпрограмма будет вызвана 4 раза.

Большим преимуществом от использования подпрограмм является возможность удобной и эффективной работы с программными массивами и шаблонами. Например, для обработки детали, изображенной на рис. 11.3, мы создадим главную программу и подпрограмму, и вы увидите, насколько удобнее и проще будет работать в этом случае.

Итак, на рис. 10.3 изображена деталь с 4 группами отверстий диаметром 3 мм. Нулевой точкой является верхний левый угол детали. Сначала создадим главную программу, которая будет позиционировать инструмент к каждой группе отверстий. Затем напишем подпрограмму, необходимую для сверления 4 отверстий в одной группе. Учтите, что в подпрограмме используются относительные координаты, а смена инструмента и основные команды находятся в главной программе.

Рис. 10.3. Использование подпрограмм при обработке повторяющихся элементов позволяет уменьшить размер программы

Главная программа Пояснение
%
O0001 
N10 G90 G40 G80 G49 G98 G21
N20 T1 M06
N30 G43 H1
N40 M03 S1000
N50 G00 X10 Y-10
N60 Z0.5
N70 M98 P1000
N70 G00 X40 Y-10
N80 M98 P1000
N90 G00 X10 Y-40
N100 M98 P1000
N110 G00 X40 Y-40
N120 M98 P1000
N130 G91 G28 Z0
N140 M05
N150 M30
%

Программа О0001
Строка безопасности
Вызов сверла Ф3 мм
Компенсация длины инструмента
Включение оборотов шпинделя
Позиционирование к 1-ой группе
Подвод сверла к детали по Z
Вызов подпрограммы О1000
Позиционирование ко 2-ой группе
Вызов подпрограммы О1000
Позиционирование к 3-ей группе
Вызов подпрограммы О1000
Позиционирование к 4-ой группе
Вызов подпрограммы О1000
Отвод инструмента по Z
Останов шпинделя
Конец программы


Подпрограмма Пояснение
%
O1000
N10 G91
N20 G99 G81 X5 Y0 Z-5 R0.5
N30 X-5 Y-5
N40 X-5 Y5
N50 X5 Y5
N60 G80
N70 G90
N80 M99
%

Подпрограмма О1000
Режим относительных координат
Цикл сверления и 1-ое отверстие
Координаты 2-го отверстия
Координаты 3-го отверстия
Координаты 4-го отверстия
Отмена цикла сверления
Режим абсолютных координат
Возврат в главную программу

Обе эти программы необходимо передать в СЧПУ, оператор станка должен вызвать программу О0001 и запустить ее. Главная программа работает с абсолютными координатами и перемещает инструмент последовательно в центр каждой из четырех групп отверстий. Когда СЧПУ встречает кадр с М98 Р1000, то происходит передача управления подпрограмме с номером 01000. В этот момент инструмент уже находится в центре группы отверстий. Переключаемся в режим относительного (инкрементального) программирования и используем постоянный цикл сверления. После завершения сверления четырех отверстий одной группы выключаем цикл сверления командой G80 и переходим в режим абсолютных координат G90, для того чтобы правильно выполнить позиционирование в главной программе. Код М99 передает управление кадру главной программы, который следует за кадром, вызвавшим эту подпрограмму. Затем инструмент перемещается в центр следующей группы отверстий, и снова вызывается подпрограмма 01000. И так далее, пока не просверлим все отверстия и СЧПУ не прочтет код завершения программы М30.

Если бы мы создавали обычную программу обработки, то ее размер был бы значительно больше, так как пришлось бы указывать координаты всех 16 отверстий. Работая в таком формате, легче производить изменения. Например, если из менится диаметр окружности, на которой находятся отверстия группы, то в случае работы с подпрограммой достаточно пересчитать координаты центров четырех отверстий только в подпрограмме.

Из главной программы можно вызвать несколько различных подпрограмм. Более того, из каждой подпрограммы можно вызвать несколько других подпрограмм. Системы ЧПУ могут накладывать ограничения на вложенность и количество выполняемых подпрограмм, поэтому внимательно прочитайте документацию станка и стойки, прежде чем начнете работать с подпрограммами.