Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию стойки Sinumerik-2.doc
Скачиваний:
142
Добавлен:
18.12.2018
Размер:
2.05 Mб
Скачать

8.2 Вызов подпрограммы

Функция

Вызов подпрограммы в главной программе осуществляется либо посредством адреса L и номера подпрограммы, либо посредством указания имени программы.

Пример

Пример передачи R-параметров

Вызов главной программы как подпрограммы

Главная программа также может быть вызвана как подпрограмма. Установленный в главной программе конец программы M30 в этом случае обрабатывается как M17 (конец программы с возвратом в вызывающую программу). Вызов программируется посредством указания имени программы. Пример: N10 MPF739 или N10 WELLE3

Соответственно подпрограмма также может быть запущена как главная программа.

Указание

Стратегия поиска СЧПУ: Есть ли *_MPF ?

Есть ли *_SPF ?

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

8.3 Подпрограмма с повторением программы

Функция

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

Параметры

P Количество проходов программы или повторений программы

Диапазон значений P: 1…9999

Пример

N40 RAHMEN P3

Подпрограмма Rahmen должны быть выполнена последовательно 3 раза.

Осторожно

Для каждого вызова подпрограммы действует: Вызов подпрограмма должен быть всегда запрограммирован в отдельном кадре ЧПУ.

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

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

Функция

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

Программирование повторения кадра

LABEL: xxx

yyy

REPEATB LABEL P=n

Zzz

Обозначенные любой меткой строки программы повторяются с P=n раз. Если P не указано, то кадр повторяется точно один раз. После последнего повторения программа продолжается на строке zzz, следующей за строкой REPEATB.

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

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

LABEL: xxx

yyy

REPEAT LABEL P=n

zzz

Сегмент программы между меткой с любым именем и оператором REPEAT

повторяется с P=n раз. Если кадр с меткой содержит другие операторы, то они заново

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

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

продолжается на строке zzz, следующей за строкой REPEAT.

Указание

Метка должна стоять перед оператором REPEAT. Поиск осуществляется только в направлении начала программы.

Программирование повторения диапазона между двумя метками

START_LABEL: xxx ooo END_LABEL: yyy

ppp

REPEAT START_LABEL END_LABEL P=n

zzz

Диапазон между двумя метками повторяется с P=n раз. Метки могут быть определены

любыми именами. Первой строкой повторения является строка со стартовой меткой,

последней - с конечной меткой. Если строка со стартовой или конечной меткой включает

другие операторы, то они заново выполняются при каждом проходе. Если P не указана, то

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

продолжается на строке zzz, следующей за строкой REPEAT.

Указание

Повторяемый сегмент программы может стоять до или после оператора REPEAT. Поиск сначала осуществляется в направлении начала программы. Если стартовая метка в этом направлении не найдена, то поиск осуществляется от оператора REPEAT назад к концу программы.

Заключение в скобки оператора REPEAT с обеими метками невозможно. Если стартовая метка найдена перед оператором REPEAT, а конечная метка не достигнута перед оператором REPEAT, то повторение осуществляется между стартовой меткой и оператором REPEAT.

Параметры

Пример повторения позиции

Пример изготовления 5 квадратов с увеличивающейся шириной

Пример повторения сегмента программы от BEGIN до END

Пример ENDLABEL

Пример фрезерной обработки: обработка позиции сверления различными технологиями

Граничные условия

  • Повторение части программы может вызываться вложенным. Каждый вызов занимает один уровень подпрограмм.

  • Если при обработке повторения части программы программируются M17 или RET, то повторение части программы отменяется. Программа продолжается в кадре, следующим за строкой REPEAT.

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

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

Пример:

  • Контрольные структуры и повторение части программы могут комбинироваться. Но при этом не должно быть пересечений. Повторение части программы должно находится внутри ветви контрольной структуры или контрольная структура внутри повторения части программы.

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

Пример:

Указание

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