Кафедра технологии машиностроения

Параметрическое программирование

By 29.11.2008 No Comments

Одним из самых интересных и эффективных методов программирования обработки является параметрическое программирование.

Одним из самых интересных и эффективных методов программирования обработки является параметрическое программирование. Удивительно, но большинство технологов-программистов хоть и слышали об этом методе, но совершенно не умеют его использовать. В этом разделе вы познакомитесь

с теорией параметрического программирования и коснетесь основ макроязыка системы ЧПУ современного станка.

Большинство станочных систем ЧПУ имеют в своем распоряжении специальный язык для параметрического программирования (макропрограммирования). Например, в СЧПУ Fanuc этот язык называется Macro В. Если вы хоть немного знакомы с языком программирования Бейсик (Basic), то вы без труда разберетесь и с Macro В. Команды и функции именно этого языка мы рассмотрим подробно.

В обычной управляющей программе вы указываете различные G коды, а так же направления и величины перемещений при помощи числовых значений. Например, G10 или ХЮО. Однако СЧПУ станка может делать то же самое при помощи переменных.

Символом переменной в Macro В является знак #. Например, в программе можно указать следующие выражения:

#1=100 #2=200 #3=#1+#2

Это означает, что переменной #1 присваивается значение 100. а переменной #2 значение 200. Переменная #3 будет являться результатом суммы переменной #1 и переменной #2. С таким же успехом можно записать и G код:

#25=1 G#25

Это означает, что переменной #1 присвоено значение 1. Тогда вторая строка по своей сути будет обозначать код линейной интерполяции G1. С переменными можно производить различные арифметические и логические операции, что позволяет создавать «умные» программы обработки или различные станочные циклы.

В памяти системы ЧПУ существует область, в которой хранятся значения переменных. Вы можете заглянуть в эту область, если найдете раздел памяти СЧПУ, который обычно называется MACRO или VARIABLES. Присваивать значения переменным можно не только внутри программы, но и непосредственно — вводя значения в регистры этой памяти. Приведу несколько примеров. Можно составить такую программу:

#1=25 #2=30 #3=#2+#1

В этом случае, значения присваиваются переменным внутри программы. Чтобы в будущем изменить числовые значения переменных #1 и #2 придется отредактировать программ}’.

Можно реализовать более удобный вариант, который позволит изменять значения переменных в любой момент, не прибегая к изменению самой программы:

#3=#2+#1

Как видите, переменным #1 и #2 в программе не присвоено никаких значений. Оператор станка может войти в область переменных MACRO и ввести любое числовое значение для любой переменной.

№ переменной значение

0 0

1 IQ

2

3 0

4 0

700 0

701 0

После того, как оператор станка присвоил переменной #1 значение 10, а переменной #2 значение 12 и выполнил программу, значение переменной #3 станет равным 22.

№ переменной значение

0 о

1 ю

2 12

3 22

4 0

700 0

701 о

Все переменные системы ЧПУ можно условно разделить на 4 типа:

• нулевые

• локальные

• общие

• системные.

Локальные переменные могут быть использованы внутри макросов для хранения данных. При выключении электропитания локальные переменные обнуляются. У большинства станков с СЧПУ Fanuc нулевой серии локальными являются переменные с номерами от 1 до 33.

Общие переменные могут работать внутри различных параметрических программ и макросов. При выключении электропитания некоторые общие переменные обнуляются, а некоторые сохраняют свои значения. У большинства станков с СЧПУ Fanuc нулевой серии общими являются переменные с номерами от 100 до 999.

Системные переменные используются для чтения и записи различной системной информации — данных о позиции инструмента, величинах компенсации, времени и др. Номера системных переменных для Fanuc нулевой серии начинаются с 1000.

Нулевые переменные всегда равны нулю.

Для выполнения арифметических и логических операций язык Macro В предоставляет набор команд и операторов.

Таблица 17. Основные арифметические и логические команды.

Функции Формат

Равенство #а=#Ь

Сложение #с=#а+#Ь

Вычитание #с=#а-#Ь

Умножение #с=#а*#Ь

Деление #с=#а/#Ь

Синус #c=SIN[#b]
Косинус #c=COS[#b]
Тангенс #c=TAN[#b]
Арктангенс #c=ATAN[#b]
Квадратный корень #c=SQRT[#b]
Абсолютное значение #c=ABS[#b]
Округление #c=ROUND[#b]
ИЛИ (OR) #c=#a OR #b

И (AND) #c=#a AND #b

Для управления переменными и для выполнения различных логических операций служат макрокоманды. Макрокоманды языка Macro В похожи на команды Бейсика.

Команда безусловного перехода GOTO предназначена для передачи управления определенному кадру программы. Формат команды следующий:

GOTO N- безусловный переход к кадру N

GOTO #А безусловный переход к кадру, установленному переменной



Пример:

N10 G01 ХЮО N20 G01 Х-ЮО N30 GOTO 10

После выполнения кадра N30 система ЧПУ переходит к кадру N10. Затем снова работает с кадрами N20 и N30 — получается бесконечный цикл.

Команда условия IF позволяет выполнять различные действия с условием. После IF указывается некоторое выражение. Если это выражение оказывается справедливым, то выполняется команда (например, команда без-\ словного перехода), находящаяся в кадре с W. Если выражение оказывается несправедливым, то команда, находящаяся в кадре с IF не выполняется, а > правление передается следующему кадру.

Формат команды следующий: IF [#а GT #b] GOTO N

Пример:

#1=100 #2=80

N10G01 Х200

N20 IF [#1 GT #2] GOTO 40

N30 G01 Х300

N40 МЗО

В начале программного примера переменным #1 и #2 присваиваются значения 100 и 80 соответственно. В кадре N20 происходит проверка условия. Если значение переменной #1 больше значения переменной #2, то выполняется команда перехода GOTO к кадру окончания программы N40. В нашем случае, выражения считается справедливым, так как 100 больше, чем

80. В результате, после выполнения кадра N10 происходит переход к кадру N40, то есть кадр N30 не выполняется.

В этой же программе можно изменить значения переменных:

#1=100 #2=120

N10 GO 1X200

N20 IF [#1 GT #2] GOTO 40

N30 GOl X300

N40 МЗО

Во втором случае условие в кадре N20 не будет справедливым, так как 100 не больше, чем 120. В результате, после выполнения кадра N10 не происходит переход к кадру N40, то есть кадр N30 выполняется как обычно.

В выражении [#1 GT #2] используются операторы сравнения. В таблицу 18 сведены операторы для сравнения переменных языка Macro В.

Таблица 18. Операторы сравнения.

Оператор Смысл

EQ Равно (=)

NE Не равно

GT Больше (>)

GE Больше или равно

LT Меньше (<)
LE Меньше или равно

Команда WHILE позволяет повторять различные действия с условием. Пока указанное выражение считается справедливым, происходит выполнение части программы, ограниченной командами DO и END. Если выражение не справедливо, то управление передается кадру, следующему за END

Пример:

%

оюоо

#1=0 #2=1

WHILE [#2 LE 10] DO 1; #1=#1+#2

#2=#2+1 END 1 МЗО

%

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

Команда G65 предназначена для немодального вызова макропрограммы. Формат для этой команды следующий:

G65 P_L_A_B_

где.

G65 — команда вызова макропрограммы

Р — номер вызываемой макропрограммы

L — число повторений макропрограммы

А и В — адреса и значения локальных переменных

Пример:

G65 Р9010 L2 А121 ВЗОЗ — макропрограмма 9010 вызывается 2 раза, соответствующим локальным переменным присваиваются значения 121 и

303.

Необходимо знать какой локальной переменной присваивается значение с помощью того или иного адреса. Например, для СЧПУ Fanuc O-MD будут справедливы следующие зависимости:

Таблица 19. Соответствие адресов локальным переменным

Адрес Переменная

А #1

В #2

с #3

D #7

Е #8

F #9

Н #11

I #4

J #5

К #6

М #13

Q #17

R #18

S #19

Т #20

и #21

V #22

W #23

X #24

Y #25

Z #26

Теперь можно приступить к созданию несложной, но очень полезной параметрической программы. Довольно часто возникает необходимость в обработке нескольких отверстий, находящихся на некотором радиусе и следующих через определенный угол (рис. 10.7). Чтобы освободить программиста от утомительного переделывания программы в случае изменения радиуса, угла или количества отверстий создадим такую программу обработки, которая позволит оператору вводить значения радиуса и угла и выполнять операцию сверления по окружности с любыми размерами.

Для сверления отверстий будем использовать стандартный цикл G81. Угол, на котором находятся отверстия, отсчитывается от оси X против часовой стрелки (положительный угол).

Необходимо задать:

• Радиус окружности, на которой находятся отверстия

• Начальный угол (угол, на котором находится первое отверстие)

• Относительный угол (угол, через который следуют остальные отверстия)

• Общее количество отверстий

Все эти данные должны быть представлены в параметрическом виде, то есть при помощи переменных.

Пусть #100= радиус окружности, на которой находятся отверстия

#101= начальный угол

#102= относительный угол

#103= общее количество отверстий

Рисунки к станкам с чпу Рис. 10.7. Создадим параметрическую программу для обработки детали с неизвестными размерами.

Для того чтобы создать параметрическую программу необходимо придумать алгоритм, позволяющий изменять поведение программы обработки в зависимости от значений указанных переменных. В нашем случае, основой УП является стандартный цикл сверления G81. Остается найти закон, по которому описываются координаты центров отверстий при любых первоначальных значениях радиуса, углов и произвольном количестве отверстий.

%

О2000

N10 G21 G90 G80 G54 G40 G49 GO0 N20 G17

Первые кадры программы будут стандартными. Это номер программы, строка безопасности и код G17 выбора плоскости XY.

N30 G16

Так как координаты центров отверстий задаются с помощью радиуса и > гла. то есть в полярной системе координат, то в кадре N30 укажем код G16.

Далее следует вызов инструмента (сверла), компенсация его длины и включение оборотов шпинделя.

N40 Т1 Мб N45 G43H1Z100 N50 S1000 МОЗ #120=0

В кадр N60 поставим цикл сверления G81 и координаты центра первого отверстия. Как вы помните, в случае работы с полярными координатами. X обозначает радиус, a Y определяет угол. Значения радиуса и начального угла известны, они устанавливаются переменными #100 (радиус) и #101 (начальный угол). Вводится некоторая переменная #120 с нулевым значением. Эта переменная представляет собой счетчик. Чуть позже вы поймете назначение этой переменной.

N60 G98 G81 Х#Ю0 Y#101 Z-5 R0.5 F50

Переменная #103 отвечает за общее количество отверстий. Так как первое отверстие мы уже просверлили, то уменьшим #103 на 1.Таким образом, кадр N70 обеспечивает подсчет оставшихся отверстий. А кадр N75 увеличивает значение переменной #120 на 1.

N70#103=#103-l N75 #120=#120+1

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

N80 IF [#103 EQ 0] GOTO 120

В кадре N80 происходит сравнение значения переменной #103 с нулем. Если переменная #103 равна нулю, то управление передается кадру N120 в конце программы. Если же переменная #103 не равна нулю, то выполняется следующий кадр.

N90#130=#102*#120 N95 #110=#Ю1+#130

Кадр N90 предназначен для определения углового приращения. Новая переменная #110 является суммой #101 (начального угла) и #130 (углового приращения). Кадр N95 обеспечивает расчет угла последующего отверстия.

Затем указывается новый угол для сверления, и управление передается кадру

N70.

N100 Y#110 N110 GOTO 70

При помощи кадра N70 образуется замкнутый цикл, который обеспечивает расчет координат центров отверстий и сверление, до тех пор, пока значение переменной #103 не будет равно нулю. Если значение #103 станет равным нулю, то управление будет передано кадру N120.

N120 G80 N125 М05 N130 G15 N140 МЗО

%

Заключительные кадры программы предназначены для отмены постоянного цикла (G80), выключения оборотов шпинделя (М05), выключения режима полярных координат (G15) и завершения программы (МЗО).

%

О2000

N10 G21 G90 G80 G54 G40 G49 G00

N20 G17

N30 G16

N40 Т1 Мб

N45 G43 HI Z100

N50 SI ООО МОЗ

#120=0

N60 G98 G81 Х#Ю0 Y#101 Z-5 R0.5 F50

N70 #103=#ЮЗ-1

N75 #120=#120+1

N80 IF [#103 EQ 0] GOTO 120

N90 #130=#102*#120

N95 #110=#101+#130

N100 Y#110

N110 GOTO 70

N120 G80

N125 M05

N130 G15

N140 M30

%

Рисунки к станкам с чпу Рис. 10.8. Вместо переменных на чертеже стоят конкретные размеры и известно количество отверстий.

Любая параметрическая программа должна быть тщательно проверена, прежде чем она попадет на станок. Скорее всего, у вас не получиться проверить такую программу при помощи редактора УП и бэкплота. так как в ней присутствуют переменные. Самая надежная проверка в данном случае -это подстановка значений для входных переменных и «раскручивание» алгоритма уже с конкретными числами.

Предположим, что оператор станка получил чертеж детали (рис. 10.8) для обработки отверстий. Он должен установить нулевую точку G54 в центр детали, замерить длину сверла и установить его в шпиндель. Затем следует войти в область переменных MACRO и ввести следующие числовые значения:

№ переменной значение

100 12.5

101 45

102 20

103 4

104 0

105 0

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

%

О2000

N10 G21 G90 G80 G54 G40 G49 GOO

N20 G17

N30 G16

N40 Tl M6

N45 G43 HI Z100

N50 S1000 M03

#120=0

N60 G98 G81 X12 5 Y45 Z-5 RO 5 F50

N70 #103=#ЮЗ-1=4-1=3 — количество оставшихся отверстий

N75 #120=#120+1=0+1=1

N80 Переменная #103 не равна О

N90 #130=#102*#120=20*1=20

N95 #110=#101+#130=45+20=65

N100 Y65

N70 # 103=# 103-1=3-1=2- количество оставшихся отверстий

N75 #120=#120+1=1+1=2

N80 Переменная #103 не равна 0

N90 #130=#102*#120=20*2=40

N95 #1 Ю=#101+#130=45+40=85

N100 Y85

N70 #ЮЗ=#103-1=2-1=1- количество оставшихся отверстий

N75 #120=#120+1=2+1=3

N80 Переменная #103 не равна 0

N90 #130=#102*#120=20*3=60

N95 #110=#101+#130=45+60=105

N100 Y105

N70 # 103 =# 103-1 = 1-1 =0- количество оставшихся отверстий N75 #120=#120+1=3+1=4

N80 Переменная #103 равна 0, переход к кадру N120 N120 G80 N125 М05 N130 G15 N140 МЗО

о/ /о

Эту же программу можно записать и в привычном виде

%

О2000

N10 G21 G90 G80 G54 G40 G49 G00 N20 G17

161

N30G16 N40 Т1 Мб N45G43H1Z100 N50 SI ООО МОЗ

N60 G98 G81 Х12.5 Y45 Z-5 R0.5 F50

N100 Y65

N100 Y85

N100 Y105

N120 G80

N125 M05

N130 G15

N140 M30

%

Теперь попробуем создать макропрограмму, которая будет функционировать аналогично постоянному циклу. Для обработки детали показанной на рисунке 10.8 оператору станка должен ввести и отработать следующую команду:

G65 Р9010 112.5 А45 В20 Н4

При этом наша параметрическая программа (с новым номером 09() Ю) уже должна находиться в памяти СЧПУ. Как правило, макропрограммы имеют номера с 9000 и выше и не доступны для свободного редактирования. Команда G65 предназначена для немодального вызова макропрограммы. При этом адреса I, А, В, Н в кадре с G65 передают свои числовые значения определенным локальным переменным. Для нахождения соответствия адресов локальным переменным можно воспользоваться таблицей 19.

Можно подстроить переменные в нашей программе, вставив следующие строки в программу:

#100=#4 #101=#1 #Ю2=#2 #103=#11

В результате получаем макропрограмму: %

О90Ю

#Ю0=#4

#Ю1=#1

Leave a Reply