Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Fanuc SOi mate-md

.pdf
Скачиваний:
924
Добавлен:
21.03.2015
Размер:
6.94 Mб
Скачать

B-64144RU/01

ПРОГРАММИРОВАНИE

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

 

 

 

15.5

ПЕРЕХОД И ПОВТОР

В программе можно изменить процесс управления с помощью оператора перехода GOTO и условного оператора IF. Используются три типа операций перехода и повтора:

Переход

 

 

Оператор GOTO (безусловный переход)

и повтор

 

Оператор IF (условный переход: если..., то...)

 

 

 

 

 

 

 

 

 

Оператор циклаWHILE (повтор во время...)

 

 

 

 

 

 

 

15.5.1

Происходитпереходкномерупоследовательностиn. Еслизадан

Безусловный переход

номер последовательности, не входящий в диапазон от 1 до

(оператор GOTO)

99999, то возникает сигнал тревоги P/S ном. 128. Для ввода

номера последовательности также можно использовать

 

 

выражение.

 

 

 

GOTO n ; n: Номер последовательности (от 1 до 99999)

 

 

 

Пример:

 

GOTO1;

 

GOTO#10;

297

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

ПРОГРАММИРОВАНИE

B-64144RU/01

 

 

 

15.5.2

Условный переход (оператор IF)

IF[<условное выражение>]GOTOn

IF[<условное выражение>]THEN

После IF задайте условное выражение.

Если указанное условное выражение удовлетворено, проис- ходит переход к номеру секвенции n. Если заданное условие не удовлетворяется, то выполняется следующий блок.

Если значение переменной #1 больше 10, то происходит переход к номеру последовательности N2.

Если

 

 

IF [#1 GT 10] GOTO 2 ;

 

 

условие не

 

 

 

 

 

 

 

 

 

 

Обработка

 

 

удовлетворя

 

 

 

 

Если условие удовлетворяется

 

 

ется

 

 

 

данных

 

 

 

N2 G00 G91 X10.0 ;

 

 

 

 

 

 

 

 

:

 

 

 

Если заданное условное выражение удовлетворяется, то выполняетсяпредварительноустановленныйоператормакроп- рограммы. Выполняется только единичный оператор макропрограммы.

Если значения #1 и #2 одинаковые, то #3 присваивается 0.

IF [#1 EQ #2] THEN #3=0;

Пояснения

D Условное выражение

Условное выражение должно включать оператор, помещенный

 

между двумя переменными или между переменной и постоян-

 

ной, и должно заключаться в скобки ([, ]). Вместо переменной

 

может быть использовано выражение.

D Операторы

Операторы, каждый состоит из двух букв, используются для

 

сравнения двух значений и определения, являются ли эти

 

значения равными, или одно значение больше или меньше

 

другого значения. Обратите внимание на невозможность ис-

 

пользования знака неравенства.

Таблица 15.5.2 Операторы

Оператор

Значение

 

 

EQ

Равен(=)

 

 

NE

Не равно(≠)

 

 

GT

Больше(>)

 

 

GE

Больше или равно( )

 

 

LT

Меньше(<)

 

 

LE

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

 

 

298

B-64144RU/01 ПРОГРАММИРОВАНИE 15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

Образец программы

В образце программы ниже вычисляется сумма цифр от 1 до 10.

 

O9500;

 

 

#1=0; . . . . . . . . . . . . . . . . . . . .

Начальное значение переменной, в

 

 

которой хранится сумма

 

#2=1; . . . . . . . . . . . . . . . . . . . .

Начальное значение переменной

 

 

как слагаемого

 

N1 IF[#2 GT 10] GOTO 2; . . . .

Переход к N2 если второе

 

 

слагаемое больше чем 10

 

#1=#1+#2; . . . . . . . . . . . . . . .

Вычисление суммы

 

#2=#2+1; . . . . . . . . . . . . . . . . .

Следующее слагаемое

 

GOTO 1; . . . . . . . . . . . . . . . . . .

Переход к N1

 

N2 M30; . . . . . . . . . . . . . . . . . .

Конец программы

 

 

 

15.5.3

Повтор (оператор цикла)

Пояснения

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

WHILE [условное выражение] DO m ; (m=1,2,3)

Если

Если условие

 

 

Обработка

условие не

удовлетворяется

 

 

данных

удовлет-

 

 

 

 

 

 

 

 

 

 

воряется

 

 

END m ;

 

 

 

 

 

 

:

 

 

 

 

Если заданное условие удовлетворяется, то после WHILE выполняется программа от DO до END. Если заданное условие не удовлетворяется, то выполнение программы переходит к блоку после END. Применяется такой же формат, что и для оператора IF. Номер после DO и номер после END являются идентификационными номерами для ввода диапазона выпол- нения. Можно использовать номера 1, 2 и3. Еслииспользуется номер, кроме1, 2 и 3, то возникаетсигнал тревоги P/S ном. 126.

299

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

ПРОГРАММИРОВАНИE

B-64144RU/01

 

 

D Вложение

Идентификационные номера (1 - 3) в цикле DO-END могут

 

использоваться неограниченное количество раз. Тем не менее,

обратите внимание на то, что если программа включает пересекающиеся циклыповтора (перекрывающиесядиапазоны DO), то возникает сигнал тревоги P/S ном. 124.

1.Идентификационные номера (1 - 3) могут использоваться неограниченное количество раз.

WHILE [ … ] DO 1 ;

Обработка данных

END 1 ;

:

WHILE [ … ] DO 1 ;

Обработка данных

END 1 ;

2.Диапазоны DO не могут перекрещиваться.

WHILE [ … ] DO 1 ;

Обработка данных

WHILE [ … ] DO 2 ;

:

END 1 ;

Обработка данных

END 2 ;

3.Циклы DO могут быть вложены до трех уровней.

WHILE [ … ] DO 1 ;

:

WHILE [ … ] DO 2 ;

:

WHILE [ … ] DO 3 ;

Обработка данных

END 3 ;

:

END 2 ;

:

END 1 ;

4.Управление может переносится за пределы цикла.

WHILE [ … ] DO 1 ;

IF [ … ] GOTO n ;

END 1 ;

Nn

5.Нельзя выполнить переходы к позиции внутри цикла.

IF [ … ] GOTO n ;

:

WHILE [ … ] DO 1 ;

Nn … ;

END 1 ;

Ограничения

D Бесконечные циклы

ЕслизаданDO m инезаданоператорциклаWHILE, тосоздается

 

бесконечный цикл от DO до END.

D Время обработки

Если выполняется переход к номеру последовательности,

данных

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

 

номера последовательности. По этой причине обработка

 

данныхвобратномнаправлениизанимаетбольшевремени, чем

 

обработка данных в прямом направлении. Использование

 

оператора цикла WHILE для выполнения повторов сокращает

 

время на обработку данных.

D Неопределенная

В условном выражении, в котором используется EQ или NE,

переменная

<пустое значение> и нуль имеют разное действие. В других

 

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

 

качестве нуля.

300

B-64144RU/01 ПРОГРАММИРОВАНИE 15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

Образец программы

В образце программы ниже вычисляется сумма цифр от 1 до 10.

 

 

 

O0001 ;

 

#1=0 ;

 

#2=1 ;

 

WHILE[#2 LE 10]DO 1 ;

 

#1=#1+#2 ;

 

#2=#2+1 ;

 

END 1 ;

 

M30 ;

 

 

301

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

ПРОГРАММИРОВАНИE

B-64144RU/01

 

 

 

15.6

ВЫЗОВ МАКРОПРОГРАММЫ

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

Вызов

 

 

Простой вызов (G65)

макропро-

 

Модальный вызов (G66, G67)

 

граммы

 

Вызов макропрограммы с помощью G-кода

 

 

 

 

Вызов макропрограммы с помощью М-кода

 

 

 

 

 

 

Вызов подпрограммы с помощью М-кода

 

 

 

 

 

 

Вызов подпрограммы с помощью Т-кода

 

 

 

 

 

 

 

Ограничения

D Различия между

Вызов макропрограммы (G65) отличается от вызова

вызовами

подпрограммы (М98), как описано ниже.

макропрограммы и

S С помощью G65 можно задать аргумент (данныепередаются

вызовами

в макропрограмму). M98 не имеет такой возможности.

подпрограммы

S ЕсливблокеM98 содержитсядругая команда ЧУ (например,

 

 

G01 X100.0 M98Pp), то вызовподпрограммыосуществляется

 

после выполнения этой команды. С другой стороны, G65

 

вызывает макропрограмму без условий.

 

S ЕсливблокеM98 содержитсядругая команда ЧУ (например,

 

G01 X100.0 M98Pp), то станок останавливается в режиме

 

единичного блока. С другой стороны, G65 не приводит к

 

остановке станка.

 

S ПриG65 уровеньлокальныхпеременныхменяется. ПриM98

 

уровень локальных переменных не меняется.

302

B-64144RU/01

ПРОГРАММИРОВАНИE

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

15.6.1

Если задан G65, то вызывается макропрограмма пользователя,

Простой вызов (G65)

заданная в адресе Р. Данные (аргумент) могут передаваться в

макропрограмму пользователя.

 

 

 

 

G65 P p L ℓ <аргумент-определение> ;

 

Р : Номер вызываемой программы

 

ℓ : Количество повторов (по умолчанию 1)

 

Аргумент : Данные, переданные в макропрограмму

 

O0001 ;

 

O9010 ;

 

:

 

#3=#1+#2 ;

 

G65 P9010 L2 A1.0 B2.0 ;

IF [#3 GT 360] GOTO 9 ;

 

:

 

G00 G91 X#3 ;

 

M30 ;

 

N9 M99 ;

Пояснения

D Вызов

S Задайте в адресе Р после G65 номер макропрограммы

 

пользователя для вызова.

SЕсли требуется ввести количество повторов, после адреса L задайте число от 1 до 9999. Если L пропущено, подразумевается 1.

S При определении аргумента значения присваиваются соответствующим локальным переменным.

D Указание аргумента Имеются два типа указания аргумента. В типе I указания аргумента используются буквы, кроме G, L, O, N и P, каждая одинраз. ВтипеII указанияаргументаиспользуютсябуквыА, B иC, каждаяодинраз, атакжеиспользуютсяI, J иK додесятираз. Тип указания аргумента определяется автоматически согласно используемым буквам.

Указание аргумента I

Адрес

Номер

 

Адрес

Номер

 

Адрес

Номер

 

переменной

 

 

переменной

 

 

переменной

 

 

 

 

 

 

 

 

A

#1

 

I

#4

 

T

#20

B

#2

 

J

#5

 

U

#21

C

#3

 

K

#6

 

V

#22

D

#7

 

M

#13

 

W

#23

E

#8

 

Q

#17

 

X

#24

F

#9

 

R

#18

 

Y

#25

H

#11

 

S

#19

 

Z

#26

S Нельзя использовать в аргументах адреса G, L, N, O и P.

SМожно пропуститьадреса, указаниекоторыхнеобязательно. Локальные переменные, соответствующие пропущенным адресам, устанавливаются на нуль.

SНет необходимости указывать адреса буквами. Они соот- ветствуют формату адреса слова.

Однако, I, J и K необходимо задавать буквами.

Пример

B_A_D_ J_K_ Верно B_A_D_ J_I_ Неверно

303

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

ПРОГРАММИРОВАНИE

 

 

 

B-64144RU/01

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Указание аргумента II

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В типе II указания аргумента используются буквы А, B и C,

 

каждая один раз, а I, J и K используются до десяти раз. Тип II

 

указания аргумента используется для передачи в качестве

 

аргументов таких значений, как трехмерные координаты.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Адрес

Номер

 

Адрес

 

Номер

 

 

Адрес

Номер

 

 

 

 

переменной

 

 

 

 

 

переменной

 

 

 

переменной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

#1

 

 

 

K3

 

#12

 

 

J7

#23

 

 

 

B

#2

 

 

 

I4

 

#13

 

 

K7

#24

 

 

 

C

#3

 

 

 

J4

 

#14

 

 

I8

#25

 

 

 

I1

#4

 

 

 

K4

 

#15

 

 

J8

#26

 

 

 

J1

#5

 

 

 

I5

 

#16

 

 

K8

#27

 

 

 

K1

#6

 

 

 

J5

 

#17

 

 

I9

#28

 

 

 

I2

#7

 

 

 

K5

 

#18

 

 

J9

#29

 

 

 

J2

#8

 

 

 

I6

 

#19

 

 

K9

#30

 

 

 

K2

#9

 

 

 

J6

 

#20

 

 

I10

#31

 

 

 

I3

#10

 

 

 

K6

 

#21

 

 

J10

#32

 

 

 

J3

#11

 

 

 

I7

 

#22

 

 

K10

#33

 

 

S Нижние индексы I, J и K для обозначения порядка указания

 

 

аргумента не записываются в фактической программе.

Ограничения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D Формат

Перед аргументом необходимо задать G65.

 

 

D Комбинация типа I и II

ЧПУ внутренне идентифицирует тип I

или тип II указания

указания аргумента

аргумента. Если задана комбинация типа I и типа II указания

 

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

 

последним.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G65 A1.0 B2.0

 

I-3.0

I4.0 D5.0 P1000;

 

 

 

 

<Переменные>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#1:1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#2:2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#3:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#4:-3.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#5:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#6:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.0

 

 

 

 

 

 

 

 

#7:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В этом примере для переменной #7 запрограммированы оба

 

 

аргумента - I4.0 и D5.0, действующим является последний D5.0.

D Положение

 

 

 

 

 

 

 

 

Единицы, используемые для данных аргумента, передаваемых

десятичной точки

без десятичной точки, соответствуют наименьшему вводимому

 

приращению в каждом адресе. Значение аргумента, переда-

 

ваемого без десятичной точки, может варьироваться в зависи-

 

мости от системной конфигурации станка. Рекомендуется

 

использовать десятичные точки в аргументах вызовов макро-

 

программ в целях поддержания программной совместимости.

D Вложение вызова

Можно

представить

вызовы в виде вложений до четырех

 

уровней, включая простые вызовы (G65) и модальные вызовы

 

(G66). Вызовы подпрограмм (M98) не включаются.

304

B-64144RU/01

ПРОГРАММИРОВАНИE

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ

 

 

 

DУровни локальных переменных

Примерная программа (цикл болтового отверстия )

S Предусмотрено вложение переменных 0 - 4 уровня. S Уровень основной программы - 0.

SКаждый раз при вызове макропрограммы (с помощью G65 или G66) уровень локальной переменной увеличивается на

единицу. В ЧПУ хранятся значения локальных переменных предыдущих уровней.

SЕсли М99 выполняется в макропрограмме, то управление возвращается в вызывающую программу. В этот момент уровень локальной переменной уменьшается на единицу; а значения локальных переменных, сохраненные при вызове макропрограммы, восстанавливаются.

Основная

Макро-

Макро-

Макро-

 

Макро-

 

программа

программа

программа

программа

программа

(уровень 0)

(уровень 1)

(уровень 2)

(уровень 3)

(уровень 4)

O0001 ;

O0002 ;

O0003 ;

O0004 ;

O0005 ;

:

 

 

:

:

 

:

 

:

 

#1=1 ;

#1=2 ;

#1=3 ;

#1=4 ;

#1=5 ;

G65 P2 A2 ;

G65 P3 A3 ;

G65 P4 A4 ;

G65 P5 A5 ;

:

 

:

 

 

:

:

 

:

 

:

 

:

 

 

:

:

 

:

 

:

 

M30 ;

 

M99 ;

M99 ;

M99 ;

 

M99 ;

Локальные

 

 

 

 

 

 

 

 

переменные

(Уровень 1)

(Уровень 2)

(Уровень 3)

(Уровень 4)

(уровень 0)

 

 

 

 

 

 

 

 

#1

1

#1

2

#1

3

#1

4

#1

5

:

:

:

:

:

:

:

:

:

:

#33

 

#33

 

#33

 

#33

 

#33

 

Общие переменные

 

 

 

 

 

 

#100-, #500-

Переменные,

которые

могут

считываться

и

 

 

 

записываться в макропрограммах на различных

 

 

 

уровнях

 

 

 

 

 

 

Создается макропрограмма, которая сверлит H отверстия с интервалами, равными B градусам, после угла запуска, равного A градусам вдоль окружности круга с радиусом I. Центр круга (X,Y). Командымогутбытьуказанылибовабсолютномрежиме, либоврежимеприращения. Чтобысверлитьпочасовойстрелке, укажите отрицательное значение для B.

H=3

H=2

H=1

 

В

В

H=4

А

 

Центр (X,Y)

Радиус I

305

15. МАКРОПРОГРАММА ПОЛЬЗОВАТЕЛЯ ПРОГРАММИРОВАНИE B-64144RU/01

D Формат вызова

 

G65 P9100 X x Y y Z z R r F f I i A a B b H h ;

 

 

 

 

 

X: X координата центра круга

 

 

(абсолютное определение или

 

 

определение приращения) . . . . . . . . . . . . . . . . . . . . . . .

(#24)

 

Y: Y координата центра круга

 

 

(абсолютное значение или значение приращения) . .

(#25)

 

Z: Глубина отверстия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

(#26)

 

R: Координаты точки приближения . . . . . . . . . . . . . . . . .

(#18)

 

F: Скорость рабочей подачи . . . . . . . . . . . . . . . . . . . . . . . . .

(#9)

 

I : Радиус окружности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

(#4)

 

A: Угол запуска сверления . . . . . . . . . . . . . . . . . . . . . . . . . .

(#1)

 

B: Угол приращения (по часовой стрелке,

 

 

когда задано отрицательное значение) . . . . . . . . . . . . .

(#2)

 

H: Число отверстий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

(#11)

D Программа,

O0002 ;

 

вызывающая

G90 G92 X0 Y0 Z100.0;

 

макропрограмму

G65 P9100 X100.0 Y50.0 R30.0 Z-50.0 F500 I100.0 A0 B45.0 H5;

 

 

M30;

 

D Макропрограмма

O9100 ;

 

(вызванная

#3=#4003 ; . . . . . . . .

. . . . . . . . . . . . . . .

Хранит G код группы 3.

программа)

 

G81 Z#26 R#18 F#9 K0; (Примечание)

. . . . . . . Циклсверления.

 

 

. . . . . . . . . . . . . . Примечание: L0 также можетиспользоваться.

 

 

IF[#3 EQ 90]GOTO 1; .

. . . . . . . . Переходит к N1 в режиме G90.

 

#24=#5001+#24; . . . . .

. . . Рассчитывает координату X центра.

 

#25=#5002+#25; . . . . .

. . . Рассчитывает координату Y центра.

 

N1 WHILE[#11 GT 0]DO 1;

 

 

 

. . До тех пор, пока число оставшихся отверстийне достигнет 0

 

 

#5=#24+#4*COS[#1];

 

 

 

 

. . . . . . . . . . . . . . . Рассчитывает позицию сверления на оси X.

 

 

#6=#25+#4*SIN[#1];

 

 

 

 

. . . . . . . . . . . . . . . Рассчитывает позицию сверления на оси Y.

 

 

G90 X#5 Y#6;

 

 

 

.

. . . . . . . . . . . . . . . . . Выполняетсверелениепослеперемещенияв

 

 

 

 

заданное положение.

 

#1=#1+#2 ; . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . Обновляет угол

 

#11=#11-1 ; . . . . . . . . .

. . . . . Уменьшает количество отверстий.

 

 

END 1 ;

 

 

 

 

G#3 G80 ; . . . . . . . . .

Возвращает G код в исходное состояние.

 

 

M99 ;

 

 

 

 

 

 

 

 

 

Значение переменных:

 

 

 

 

#3 : Хранит G код группы 3.

 

 

 

#5 : X координата следующего просверливаемого отверстия

 

 

#6 : Y координата следующего просверливаемого отверстия

 

 

 

 

 

306

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]