Содержание страницы
1. Внутренние и внешние подпрограммы
Язык G— и М-кодов, как и любой другой язык программирования, позволяет работать с подпрограммами и совершать переходы. Посредством функции подпрограммы основная (главная) управляющая программа может вызывать из памяти другую программу (подпрограмму) и выполнять ее определенное число раз.
Если управляющая программа (УП) содержит часто повторяемое действие или работает по определенному шаблону, то использование подпрограмм позволяет упростить программу обработки и сделать ее гораздо меньшей в размере.
Существуют два вида подпрограмм – внутренние и внешние. Внутренние подпрограммы вызываются при помощи кода М97 и содержатся внутри главной программы (см. рис. 1). То есть они находятся в одном файле. Внешние подпрограммы вызываются кодом М98 и не содержатся в теле главной программы (см. рис. 2). В этом случае главная программа и подпрограмма находятся в разных файлах.
Рис. 1. Внутренняя подпрограмма
Внутренняя подпрограмма выполняется, когда СЧПУ встречает код М97. При этом адрес Р указывает на номер кадра, к которому нужно перейти, то есть туда, где начинается внутренняя подпрограмма. Когда СЧПУ находит кадр с кодом окончания подпрограммы М99, то выполнение внутренней подпрограммы завершается и управление передается кадру главной программы, следующему за кадром, вызвавшим завершенную подпрограмму. Внешние подпрограммы работают похожим образом. Когда в главной программе встречается кадр с кодом М98, то вызывается подпрограмма с номером, установленным при помощи Р-адреса.
Рис. 2. Внешняя подпрограмма
При нахождении кода М99 управление возвращается главной программе, то есть выполняется кадр главной программы, следующий за кадром с М98. Учтите, что внешняя подпрограмма находится в отдельном файле. По сути, внешняя подпрограмма – это отдельная программа с индивидуальным номером, которая при желании может быть выполнена независимо от главной программы. Для вызова подпрограммы необходимо, чтобы она находилась в памяти СЧПУ.
Пример УП с внутренней подпрограммой:
%
O1023 Программа № 1023
N10 G21 G40 G49 G54 G80 G90 Строка безопасности
N20 Т3 М06 Вызов инструмента № 3
N30 G43 H3 Компенсация длины инструмента
N40 M03 S1000 Включение оборотов шпинделя
N50 G00 X0 Y0 Позиционирование в X0 Y0
N60 Z0.5 Позиционирование в Z0.5
N70 M97 P200 Вызов внутренней подпрограммы
N80 M05 Выключение оборотов шпинделя
N90 M02 Окончание программы
N200 G01 X-0.5 F50 Начало внутренней подпрограммы
N210 X10 Y10 …
N220 Z0.5 …
M230 M99 Конец внутренней подпрограммы
%
При помощи L-адреса определяется, сколько раз нужно вызвать ту или иную подпрограмму. Если подпрограмму нужно вызвать всего один раз, то L в кадре можно не указывать.
М98 Р1000 L4 – подпрограмма будет вызвана 4 раза.
Большим преимуществом от использования подпрограмм является возможность удобной и эффективной работы с программными массивами и шаблонами. Пример такого написания программы представим в главе 11.
На рисунке 3 изображена деталь с 4 группами отверстий диаметром 6 мм. Нулевой точкой является верхний левый угол детали. Сначала создадим главную программу, которая будет позиционировать инструмент к каждой группе отверстий. Затем напишем подпрограмму, необходимую для сверления 4 отверстий в одной группе. Необходимо не забывать, что в подпрограмме используются относительные координаты, а смена инструмента и основные команды находятся в главной программе.
Рис. 3. При обработке повторяющихся операций применение подпрограмм обеспечивает снижение объемов программы
Главная программа с пояснением:
%
O0001 Программа О0001
N10 G90 G40 G80 G49 G98 G21 Строка безопасности
N20 T1 M06 Вызов сверла Ф3 мм
N30 G43 H1 Компенсация длины инструмента
N40 M03 S1000 Включение оборотов шпинделя
N50 G00 X10 Y-10 Позиционирование к 1-й группе
N60 Z0.5 Подвод сверла к детали по Z
N70 M98 P1000 Вызов подпрограммы О1000
N70 G00 X40 Y-10 Позиционирование ко 2-й группе
N80 M98 P1000 Вызов подпрограммы О1000
N90 G00 X10 Y-40 Позиционирование к 3-й группе
N100 M98 P1000 Вызов подпрограммы О1000
N110 G00 X40 Y-40 Позиционирование к 4-й группе
N120 M98 P1000 Вызов подпрограммы О1000
N130 G91 G28 Z0 Отвод инструмента по Z
N140 M05 Останов шпинделя
N150 M30 Конец программы
%
Подпрограмма с пояснением:
%
O1000 Подпрограмма О1000
N10 G91 Режим относительных координат
N20 G99 G81 X5 Y0 Z-5 R0.5 Цикл сверления и 1-ое отверстие
N30 X-5 Y-5 Координаты 2-го отверстия
N40 X-5 Y5 Координаты 3-го отверстия
N50 X5 Y5 Координаты 4-го отверстия
N60 G80 Отмена цикла сверления
N70 G90 Режим абсолютных координат
N80 M99 Возврат в главную программу
%
Обе эти программы необходимо передать в СЧПУ, оператор станка должен вызвать программу О0001 и запустить ее. Главная программа работает с абсолютными координатами и перемещает инструмент последовательно в центр каждой из четырех групп отверстий. Когда СЧПУ встречает кадр с М98 Р1000, то происходит передача управления подпрограмме с номером 01000. В этот момент инструмент уже находится в центре группы отверстий.
Переключаемся в режим относительного (инкрементального) программирования и используем постоянный цикл сверления. После завершения сверления четырех отверстий одной группы выключаем цикл сверления командой G80 и переходим в режим абсолютных координат G90, для того чтобы правильно выполнить позиционирование в главной программе. Код М99 передает управление кадру главной программы, который следует за кадром, вызвавшим эту подпрограмму. Затем инструмент перемещается в центр следующей группы отверстий, и снова вызывается подпрограмма 01000. И так далее, пока не просверлим все отверстия и СЧПУ не прочтет код завершения программы М30.
Если бы мы создавали обычную программу обработки, то ее размер был бы значительно больше, так как пришлось бы указывать координаты всех 16 отверстий. Работая в таком формате, легче производить изменения. Например, если изменится диаметр окружности, на которой находятся отверстия группы, то в случае работы с подпрограммой достаточно пересчитать координаты центров четырех отверстий только в подпрограмме. Из главной программы можно вызвать несколько различных подпрограмм. Более того, из каждой подпрограммы можно вызвать несколько других подпрограмм. Системы ЧПУ могут накладывать ограничения на вложенность и количество выполняемых подпрограмм, поэтому внимательно прочитайте документацию станка и стойки, прежде чем начнете работать с подпрограммами.
2. Использование 4-й координатной оси вращения
Нередки случаи, когда на трехкоординатный станок с ЧПУ дополнительно монтируют управляемый поворотный стол (делительную головку). Управляемый поворотный стол (см. рис. 4) – это устройство, которое способно поворачивать закрепленную в нем деталь на требуемый угол по определенной команде. Обычно 4-я ось управляется при помощи адресов А или В, а числовое значение определяет угол поворота в градусах.
Рис. 4 Управляемые поворотные столы LEHMANN
Существуют два варианта работы с управляемым поворотным столом.
Первый вариант – нам просто необходимо повернуть его на определенный угол и затем выполнить какую-либо технологическую операцию (индексация).
Второй вариант – нужно выполнить фрезерование одновременно с поворотом стола.
В этом случае мы имеем синхронное линейное перемещение исполнительного органа станка по трем (или менее) координатам с вращением стола. При этом СЧПУ станка должна поддерживать данный вид интерполяции.
Для управления поворотным столом достаточно в кадр с линейной интерполяцией, позиционированием или постоянным циклом добавить адрес А (В):
- G00 X_Y_Z_A_ – позиционирование;
- G01 X_Y_Z_A_F_ – линейная интерполяция.
Типичный формат для работы с постоянным циклом:
G81 Х0 Y0 Z-5 А0 F45 R0.5
А15
А30
А45
G80
Программирование 4-й оси не должно вызвать у вас особых трудностей. Просто нужно учесть несколько технических особенностей при работе с управляемым поворотным столом. Во-первых, поворотный стол может вращаться как в положительном, так и в отрицательном направлении. Направление вращения и соответствующий знак определяются по правилу правой руки. Во-вторых, поворот стола может быть запрограммирован как в абсолютных, так и в относительных координатах. В-третьих, у многих станков существует ограничение на числовое значение угла поворота.
Например, вам нужно повернуть стол на 400°, а СЧПУ позволяет указывать угол не более 360°. Придется запрограммировать дополнительный кадр с углом в 40° относительно предыдущего положения стола. Ну и напоследок учтите, что чем дальше мы удалимся от центра вращения, тем большей будет ошибка линейного перемещения. Следующие примеры помогут вам понять, как программируется дополнительная ось вращения. В первом случае необходимо просверлить отверстия на периферии диска (см. рис. 5).
Рис. 5. Для сверления четырех отверстий по внешнему торцу диска, закрепленного в кулачках поворотного стола, необходимо поворачивать стол на 90°
%
О3000 Программа О3000
N10 G21 G40 G49 G80 G90 G98 Строка безопасности
N20 G54 Рабочая система координат
N30 T2 M06 Вызов инструмента № 2
N40 M03 S1000 Включение оборотов шпинделя
N50 G00 X0 Y0 Позиционирование в X0 Y0
N60 Z5 Позиционирование в Z5
N70 G81 X0 Y0 Z-10 A0 F45 R1 Цикл сверления, сверление 1-го отверстия
N80 A90 Поворот стола на 90°, сверление
N90 A180 Поворот стола на 180°, сверление
N100 A270 Поворот стола на 270°, сверление
N110 G80 Отмена цикла сверления
N120 G91 G00 A-270 Поворот стола в начальное положение
N130 M05 Выключение оборотов шпинделя
N140 M30 Конец программы
%
Во втором случае нужно получить винтовую канавку на поверхности вала, используя одновременное линейное перемещение фрезы и вращение поворотного стола (см. рис. 6).
Вал закреплен в кулачках управляемого поворотного стола. Самый простой способ обработки такой канавки – расчет при помощи CAD/САМсистемы.
Рис. 6. Необходимо получить винтовую канавку на поверхности вала
% O0001
N100 G21
N102 G0 G17 G40 G49 G80 G90
N104 T1 M6
N106 G0 G90 G54 X-16.612 Y0. A-2.993 S1000 M3
N108 G43 H1 Z125.171 M8
N110 Z35.605 A-10.578
N112 G1 Z33.932 A13.459 F200.
N234 G0 Z123.253 A3.674
N236 M5
N238 G91 G28 Z0. M9
N240 G28 X0. Y0. A0.
N242 M30
%