SINUMERIK 840D sl. Программирование ЧПУ. Руководство по программированию (2021 год) - часть 8

 

  Главная      Книги - Разные     SINUMERIK 840D sl. Программирование ЧПУ. Руководство по программированию (2021 год)

 

поиск по сайту            правообладателям  

 

   

 

   

 

содержание      ..     6      7      8      9     ..

 

 

 

SINUMERIK 840D sl. Программирование ЧПУ. Руководство по программированию (2021 год) - часть 8

 

 

Расширенное программирование
4.1 Гибкое программирование ЧПУ
Разрыв уровней
Если при обработке блока программы запускается разрыв уровней, то программа
продолжается после вызова обработки блока программы.
Пример:
Программный код
Комментарий
N5 R10=15
N10 BEGIN: R10=R10+1
; Ширина
N20 Z=10-R10
N30 G1 X=R10 F200
N40 Y=R10
; Разрыв уровней
N50 X=-R10
N60 Y=-R10
N70 END: Z10
N80 Z10
N90 CYCLE(10,20,30)
N100 REPEAT BEGIN END P=3
N120 Z10
; Продолжить обработку программы.
N130 M30
Управляющие структуры и повторения блока программы
Возможно комбинированное использование управляющих структур и повторения блока
программы. Но не должно быть дублирований. Повторение блока программы должно
лежать внутри ветви управляющей структуры или управляющая структура внутри
повторения блока программы.
Переходы повторения блока программы
При комбинации переходов и повторения блока программы кадры обрабатываются
чисто последовательно. Если, к примеру, осуществляется переход из повторения блока
программы, то обработка продолжается до тех пор, пока запрограммированный конец
блока программы не будет найден.
Пример:
Программный код
N10 G1 F300 Z-10
N20 BEGIN1:
N30 X=10
N40 Y=10
N50 GOTOF BEGIN2
N60 ENDLABEL:
N70 BEGIN2:
N80 X20
N90 Y30
N100 ENDLABEL: Z10
N110 X0 Y0 Z0
N120 Z-10
Программирование ЧПУ
490
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Программный код
N130 REPEAT BEGIN1 P=2
N140 Z10
N150 X0 Y0
N160 M30
Примечание
Оператор REPEAT должен стоять за кадрами перемещения.
Выполнение с внешнего устройства и повторение части программы
В случае внешних программ с повторением части программы повторяемая строка
программы (при REPEATB) или начало повторяемой области программы (при REPEAT)
должны находиться в памяти догрузки. В ином случае цель перехода не будет найдена и
происходит отмена программы с выводом аварийного сообщения 14000.
Примечание
Для выполнения внешних программ без ограничений в части повторений части
программы, рекомендуется вместо функции "Выполнение с внешнего устройства"
использовать функцию "Выполнение из внешней памяти (EES)".
4.1.7
Управляющие структуры
СЧПУ стандартно обрабатывает кадры ЧПУ в запрограммированной
последовательности.
Эта последовательность может изменяться через программирование программных
блоков и программных циклов. Эти управляющие структуры программируются с
кодовыми словами IF, ELSE, ENDIF, LOOP, FOR, WHILE и REPEAT.
ВНИМАНИЕ
Ошибки программирования
Управляющие структуры возможны только внутри командной части программы.
Условное или повторное выполнение определений в заголовке программы
невозможно.
Кодовые слова для управляющих структур, как и цели перехода, не могут
перекрываться макросами. Проверка для макроопределения не выполняется.
Активность
Управляющая структура не может использоваться между программами.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
491
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Глубина вложенности
Внутри каждого уровня подпрограммы возможна глубина вложенности до 16
управляющих структур.
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͕͖͕͇͓͓͇͋͗͊͗
352& 68%352*
/223
5(3($7
)25
:+,/(
)25
,)
:+,/(
(1',)
(1':+,/(
:+,/(
:+,/(
(1':+,/(
68%352*
(1')25
(1':+,/(
(1')25
(1':+,/(
817,/
(1'/223
Динамическая характеристика
В стандартно активном режиме интерпретатора посредством использования переходов
в программе может быть достигнуто более быстрое выполнение программы, чем при
использовании управляющих структур.
В предварительно скомпилированных циклах различие между переходами в программе
и управляющими структурами отсутствует.
Текущая индикация кадров в программных циклах
Если в программном цикле выполняются только кадры предварительной обработки, то
в текущей индикации кадров отображается последний кадр главного хода перед
программным циклом.
Для отображения, например, с целью диагностики, и выполненных кадров
предварительной обработки в текущей индикации кадров, необходимо активировать
отдельный кадр декодирования SBL2.
Шлифование без кадра главного хода
Если в программном цикле не запрограммирован кадр главного хода, цикл
обрабатывается в предварительной обработке, пока не выполнено условие цикла.
Тем самым возникает высокая загруженность, и индикация может оказаться под угрозой.
Способом устранения может быть добавление команды STOPRE или времени ожидания
G04 в 0 секунд в цикл.
Программирование ЧПУ
492
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Граничные условия
Индикация кадра
Пропуск кадров с элементами управляющих структур невозможен.
Управляющие структуры и переходы в программе
Метки перехода (метки) не разрешены в кадрах с элементами управляющих структур.
Примечание
Не рекомендуется комбинированное использование управляющих структур и
переходов в программе.
Выполнение с внешнего устройства
Для внешних программ с управляющими структурами начало цикла должно находиться
в памяти догрузки. В ином случае цель перехода не будет найдена и происходит отмена
программы с выводом аварийного сообщения 14000.
Примечание
Для выполнения внешних программ без ограничений в части управляющих структур,
рекомендуется вместо функции "Выполнение с внешнего устройства" использовать
функцию "Выполнение из внешней памяти (EES)".
Режим интерпретатора
Управляющие структуры обрабатываются интерпретатором. При определении конца
цикла, с учетом найденных при этом управляющих структур, выполняется поиск начала
цикла. Поэтому в режиме интерпретатора блочная структура программы не проверяется
полностью.
Предварительная обработка циклов
При предварительной обработке циклов возможна проверка правильности
вложенности управляющих структур.
4.1.7.1
Условный оператора и ветвление (IF, ELSE, ENDIF)
Условный оператор: IF - программный блок - ENDIF
В случае условного оператора стоящий между IF и ENDIF программный блок
выполняется, только если условие выполнено.
Ветвление: IF - программный блок_1 - ELSE - программный блок_2 - ENDIF
В случае ветвления всегда выполняется один из двух программных блоков.
Стоящий между IF и ELSE программный блок_1 выполняется, если условие выполнено.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
493
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Выполняется стоящий между ELSE и ENDIF программный блок_2 выполняется, если
условие не выполнено.
Примечание
ELSE в синхронных действиях
Кодовое слово ELSE может быть запрограммировано и в синхронных действиях. Это
позволяет добавить в синхронное действие операции, которые должны выполняться при
невыполненном условии.
Синтаксис
Условный оператор
IF <условие>
Блок программы
; Выполнение при: <условие> == TRUE
ENDIF
Ветвление
IF <условие>
Программный блок_1
; Выполнение при: <условие> == TRUE
ELSE
Программный блок_2
; Выполнение при: <условие> == FALSE
ENDIF
Объяснение
IF:
Запускает условный оператор или ветвление.
ELSE:
Запускает альтернативный программный блок.
ENDIF:
Отмечает конец условного оператора или ветвления.
<условие>:
Логическое выражение, обработка которого дает TRUE или FALSE.
Пример: Подпрограмма смены инструмента
Программный код
Комментарий
PROC L6
Программа смены инструмента
N500 DEF INT TNR_AKTUELL
Переменная для активного номера Т
N510 DEF INT TNR_VORWAHL
Переменная для предварительно выбран-
ного номера Т
Определить актуальный инструмент
N520 STOPRE
N530 IF $P_ISTEST
В режиме тестирования программы ...
N540
TNR_AKTUELL = $P_TOOLNO
... из программного контекста считывает-
ся "актуальный" инструмент.
N550 ELSE
В ином случае ...
Программирование ЧПУ
494
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Программный код
Комментарий
N560
TNR_AKTUELL = $TC_MPP6[9998,1]
... выгружается инструмент шпинделя.
N570 ENDIF
N580 GETSELT(TNR_VORWAHL)
Чтение номера Т предварительно выбран-
ного инструмента на шпинделе.
N590 IF TNR_AKTUELL <> TNR_VORWAHL
Если предварительный инструмент это
еще не актуальный инструмент, то ...
N600
G0 G40 G60 G90 SUPA X450 Y300 Z300 D0
... подвод к точке смены инструмента ...
N610
M206
... и выполнить смену инструмента.
N620 ENDIF
N630 M17
4.1.7.2
Бесконечный программный цикл (LOOP, ENDLOOP)
Бесконечный цикл используется в бесконечных программах. Концом цикла всегда
является возврат в начало цикла.
Синтаксис
LOOP
ENDLOOP
Значение
LOOP:
Запускает бесконечный цикл.
ENDLOOP:
Обозначает конец цикла и вызывает возврат на начало цикла.
Пример
Программный код
LOOP
MSG("нет активного резца инструмента")
M0
stopre
ENDLOOP
4.1.7.3
Счетный цикл (FOR ... TO ..., ENDFOR)
Счетный цикл используется в тех случаях, когда процесс работы должен быть повторен за
фиксированное число проходов.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
495
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Синтаксис
FOR <переменная> = <начальное значение> TO <конечное значение>
ENDFOR
Значение
FOR:
Запускает счетный цикл.
ENDFOR:
Обозначает конец цикла и вызывает возврат на начало цикла, пока конеч-
ное значение подсчета еще не достигнуто.
<переменная>:
Счетная переменная, которая увеличивается от начального к конечному
значению и приращается при каждом проходе на значение "1".
Тип
INT или REAL
Примечание:
Используется тип REAL, если, к примеру, для счетного цикла
программируются R-параметры. Если счетная переменная имеет
тип REAL, то ее значение округляется до целочисленного значения.
<начальное
Начальное значение подсчета
значение>:
Условие: Начальное значение должно быть меньше конечного значения.
<конечное
Конечное значение подсчета
значение>:
Примеры
Пример 1: Переменная INTEGER или R-параметр как счетная переменная
Переменная INTEGER как счетная переменная:
Программный код
Комментарий
DEF INT iVARIABLE1
R10=R12-R20*R1 R11=6
FOR iVARIABLE1= R10 TO R11
; Счетная переменная = переменная INTEGER
R20=R21*R22+R33
ENDFOR
M30
Параметр R как счетная переменная:
Программный код
Комментарий
R11=6
FOR R10=R12-R20*R1 TO R11
; Счетная переменная = R-параметр (переменная Real)
R20=R21*R22+R33
ENDFOR
M30
Программирование ЧПУ
496
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Пример 2: Изготовление фиксированного числа деталей
Программный код
Комментарий
DEF INT STUECKZAHL
; Определяет переменную типа INT с именем
"STUECKZAHL".
FOR STUECKZAHL = 0 TO 100
; Запускает счетный цикл. Переменная "STUECKZAHL" увели-
чивается от начального значения "0" до конечного значения
"100".
G01 …
ENDFOR
; Конец счетного цикла.
M30
4.1.7.4
Программный цикл с условием в начале цикла (WHILE, ENDWHILE)
В цикле WHILE условие стоит в начале цикла. Пока условие выполнено, цикл WHILE
выполняется.
Синтаксис
WHILE <условие>
ENDWHILE
Значение
WHILE:
Запускает программный цикл.
ENDWHILE:
Обозначает конец цикла и вызывает возврат на начало цикла.
<условие>:
Условие, которое должно быть выполнено, чтобы выполнить цикл WHILE.
Пример
Программный код
Комментарий
WHILE $AA_IW[BOHRACHSE] > -10
; Вызов цикла WHILE при следующем условии: ак-
туальное заданное значение WCS для оси сверления
должно быть больше -10.
G1 G91 F250 AX[BOHRACHSE] = -1
ENDWHILE
4.1.7.5
Программный цикл с условием на конце цикла (REPEAT, UNTIL)
В цикле REPEAT условие стоит в конце цикла. Цикл REPEAT проходится один раз и
повторяется до тех пор, пока выполнено условие.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
497
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Синтаксис
REPEAT
UNTIL <условие>
Значение
REPEAT:
Запускает программный цикл.
UNTIL:
Обозначает конец цикла и вызывает возврат на начало цикла.
<условие>:
Условие, которое должно быть выполнено, чтобы цикл WHILE более не вы-
полнялся.
Пример
Программный код
Комментарий
REPEAT
; Вызов цикла REPEAT.
UNTIL ...
; Проверка, выполнено ли условие.
4.1.7.6
Пример программы со вложенными управляющими структурами
Программный код
Комментарий
LOOP
IF NOT $P_SEARCH
; IF нет поиска кадра
G1 G90 X0 Z10 F1000
WHILE $AA_IM[X] <= 100
; WHILE (заданное значение X-ось <= 100)
G1 G91 X10 F500
; схема сверления
Z-5 F100
Z5
ENDWHILE
ELSE
; ELSE поиск кадра
MSG("При поиске сверление не выполняется")
ENDIF
; ENDIF
$A_OUT[1] = 1
; следующая кондукторная плита
G4 F2
ENDLOOP
M30
Программирование ЧПУ
498
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
4.1.8
Выходящая за рамки канала координация программ (INIT, START, WAITM,
WAITMC, WAITE, SETM, CLEARM)
Любой канал ЧПУ принципиально может выполнять запущенную в нем программу
независимо от других каналов своей группы режимов работы (ГРР). Но если в
изготовлении детали одновременно задействовано несколько программ в нескольких
каналах ГРР, программные процессы в разных каналах необходимо координировать
посредством следующих координирующих команд.
Условие
Участвующие в координации программы каналы должны относиться к одной и той же
группе режимов работы (ГРР).
MD10010 $MC_ASSIGN_CHAN_TO_MODE_GROUP[<канал>] = <номер ГРР>
Имя канала вместо номера канала
В качестве параметра предварительно определенных процедур координации программ
можно вместо номеров каналов использовать и внесенные в MD20000
$MC_CHAN_NAME[<индекс канала>] имена каналов. Использование имен каналов в
программах ЧПУ требует разблокирования:
MD10280 $MN_PROG_FUNCTION_MASK, бит 1 = TRUE
Примечание
Минимальный интервал между командами
Между командами INIT, START, WAITE, WAITM, SETM, CLEARM и командой WAITMC
необходимо выдерживать интервал не менее двух кадров перемещения. WAITMC -
исполняемый кадр, однако для оптимизации он смещается в предыдущий кадр и потом
удаляется как кадр. Для примера: SETM - неисполняемый кадр и смещается в
следующий кадр, так что в случае расстояния в один кадр обе команды находились бы в
среднем кадре. Поскольку возможен только один кадр, в случае расстояния в один кадр
для WAITMC оптимизация не выполняется.
Для этого программа затормаживается, и обработка ненадолго останавливается.
Синтаксис
INIT(<ChanNr>, <Prog>, <AckMode>)
START(<ChanNr>, <ChanNr>, ...)
WAITM(<MarkNr>, <ChanNr>, <ChanNr>, ...)
WAITE(<ChanNr>, <ChanNr>, ...)
WAITMC(<MarkNr>, <ChanNr>, <ChanNr>, ...)
SETM(<MarkNr>, <MarkNr>, ...)
CLEARM(<MarkNr>, <MarkNr>, ...)
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
499
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Объяснение
INIT():
Предварительно определенная процедура для выбора программы ЧПУ, которая
должна выполняться в указанном канале
START():
Предварительно определенная процедура пуска выбранной в соответствующем
канале программы
WAITM():
Предопределенная процедура ожидания достижения метки ожидания в указан-
ных каналах
В собственном канале указанная метка ожидания устанавливается через WAITM.
Предшествующий кадр завершается с точным остановом. После синхронизации
метка ожидания удаляется.
Одновременно возможна установка не более 10 меток на канал.
WAITE():
Предварительно определенная процедура для ожидания завершения программы
в одном или нескольких других каналах
WAITMC(): 1)
Предопределенная процедура ожидания достижения метки ожидания в указан-
ных каналах
В отличие от WAITM торможение осей до точного останова инициируется, только
если другие каналы еще не достигли метки ожидания.
SETM(): 1)
Предварительно определенная процедура для установки одной или нескольких
меток ожидания для координации каналов
Это не затрагивает обработку в собственном канале.
SETM остается действительным и после сброса (Reset) канала и старта ЧПУ.
CLEARM(): 1)
Предварительно определенная процедура для удаления одной или нескольких
меток ожидания координации каналов
Это не затрагивает обработку в собственном канале.
CLEARM() удаляет все метки ожидания в канале.
CLEARM(0) удаляет только метку ожидания "0".
CLEARM остается действительным и после сброса (Reset) канала и старта ЧПУ.
<ChanNr>:
номер канала
Номер собственного канала указывать не требуется.
Тип:
INT
<Prog>:
Абсолютное или относительное указание пути (опция) + имя программы
Тип:
STRING
Информация по указанию пути представлена в Руководство по программирова-
нию - Программирование ЧПУ, глава "Адресация файлов программной памяти"
(Страница 574).
<AckMode>:
Режим квитирования (опция)
Тип:
CHAR
Зна-
"N"
Без квитирования
че-
Обработка программы продолжается после отправки команды.
ния:
Отправитель не уведомляется о том, что команда не может быть
выполнена успешно.
"S"
Синхронное квитирование
Выполнение программы приостанавливается до тех пор, пока при-
нимающий компонент не подтвердит команду. При положитель-
ном квитировании выполняется следующая команда. При отрица-
тельном квитировании выводится сообщение об ошибке.
Программирование ЧПУ
500
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
<MarkNr>:
Номер метки ожидания
Указание
В многоканальной системе в распоряжении есть не более 100 меток ожидания
(метка ожидания 0 ... 99).
В одноканальной системе в распоряжении есть только метка ожидания 0.
1) Для спец. для пользователя коммуникации и/или координации каналов можно вставлять мет-
ки ожидания посредством SETM / CLEARM и без использования условной команды ожида-
ния WAITMC. При этом метки ожидания сохраняют свои значения и после сброса (Reset) канала и
старта ЧПУ.
Примеры
START посредством имен каналов из MD20000
• Параметрирование
MD10280 $MN_PROG_FUNCTION_MASK, бит 1 = TRUE
$MC_CHAN_NAME[ 0 ] = "BEARBEITUNG"
; Имя канала 1
$MC_CHAN_NAME[ 1 ] = "ZUFUEHRUNG"
; Имя канала 2
• Программирование
Программный код
Комментарий
START(BEARBEITUNG)
; Пуск канала 1
START(ZUFUEHRUNG)
; Пуск канала 2
START через локальные "имена каналов" и переменную пользователя
Программный код
Комментарий
DEF INT MASCHINE = 1
; Определение переменной пользователя для канала 1
DEF INT LADER = 2
; Определение переменной пользователя для канала 2
START(MASCHINE)
; Пуск канала 1
START(LADER)
; Пуск канала 2
START через локальные "имена каналов", переменную пользователя и
спараметрированные имена каналов
Программный код
Комментарий
DEF INT chanNo1
; Определение переменной пользователя для канала 1
DEF INT chanNo2
; Определение переменной пользователя для канала 2
chanNo1 = CHAN_1
; Присваивание спараметрированного имени канала каналу 1
chanNo2 = CHAN_2
; Присваивание спараметрированного имени канала каналу 2
START(chanNo1)
; Пуск канала 1
START(chanNo2)
; Пуск канала 2
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
501
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Команда INIT с абсолютным указанием пути
Выбор программы /_N_MPF_DIR/_N_ABSPAN1_MPF в канале 2.
Программный код
INIT(2,"/_N_WKS_DIR/_N_WELLE1_WPD/_N_ABSPAN1_MPF")
Команда INIT с именем программы
Выбор программы с именем "MYPROG". СЧПУ ищет программу по маршруту поиска.
Программный код
INIT(2,"MYPROG")
Программирование ЧПУ
502
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Координация программ с WAITM
• Канал 1: Программа /_N_MPF_DIR/_N_MPF100_MPF уже выбрана и запущена.
Программный код
Комментарий
; Программа MPF100
N10 INIT(2,"MPF200","N")
; Выбор программы MPF200, канал 2
N11 START(2)
; Пуск канала 2
N80 WAITM(1,1,2)
; Ожидание метки WAIT 1 в канале 1 и 2
N81 ...
; Канал 1, N81 и канал 2, N71 начинаются
; синхронно
N180 WAITM(2,1,2)
; Ожидание метки WAIT 2 в канале 1 и 2
N181 ...
; Канал 1, N181 и канал 2, N271 начинаются
; синхронно
N200 WAITE(2)
; Ожидание конца программы в канале 2
N201 ...
; N201 начинается только после конца программы
; MPF200 в канале 2 начата
N201 M30
; Конец программы канала 1
• Канал 2: В канале 1 через кадр N10 и N20 выбирается и запускается программа
MPF200_MPF для канала 2.
Программный код
Комментарий
;$PATH=/_N_MPF_DIR
; Программа MPF200
N70 WAITM(1,1,2)
Ожидание метки WAIT 1 в канале 1 и 2
N71 ...
; Канал 1, N81 и канал 2, N71 начинаются
; синхронно
N270 WAITM(2,1,2)
Ожидание метки WAIT 2 в канале 1 и 2
N271 ...
; Канал 1, N181 и канал 2, N271 начинаются
; синхронно
N400 M30
Конец программы канала 2
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
503
Расширенное программирование
4.1 Гибкое программирование ЧПУ
1
1
:$,70
:$,70
̱͇͔͇͒
1
03)
1
͕͍͏͇͙͋ͣ
0
̱͇͔͇͒
1
1
1
03)
͕͍͏͇͙͋
͕͍͏͇͙͋ͣ
0
ͣ
1
1
1
67$57
:$,70
:$,70
:$,7(
̴͇͇͕͒͞
67$57
0
0
̱͕͔͌͝ ͉͓͗͌ͦ
Граничные условия
Асинхронное начало выполнения последующих кадров после меток WAIT
При координации каналов с помощью меток WAIT может произойти асинхронное начало
выполнения последующих кадров. Это происходит, если непосредственно перед
достижением общей метки WAIT в одном из синхронизируемых каналов вызывается
действие, приводящее к удалению остатка пути с не явным репозиционированием
(REPOSA) в этом канале.
Допущение: Текущее соотнесение осей в каналах 1 и 2
• Канал 1: оси X1 и U
• Канал 2: ось X2
Таблица 4-2 Процесс во времени в каналах 1 и 2
Канал 1
Канал 2
Описание
Любая обработка в канале 1 и 2
N100
Канал 1: достигает метки WAIT и ожидает синхро-
WAITM(20,1,2)
низации с каналом 2
Начало обработки
N200 GETD(U)
Канал 2: запрашивает ось U из канала 1
GETD(U):
Канал 1: обработка GET(U) в фоновом режиме
• Переход оси
N210
Канал 2: достигает метки WAIT. ⇒ На этом синхро-
• Стирание остатка
WAITM(20,1,2)
низация каналов 1 и 2 завершена
пути
N220 G0 X2=100
Канал 2: начало обработки N220
• REPOSA
Конец
N110 G0 X1=100
Канал 1: Смещенное по времени начало обработки
N110
Программирование ЧПУ
504
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.1 Гибкое программирование ЧПУ
4.1.9
Техника макросов (DEFINE ... AS)
ВНИМАНИЕ
Техника макросов повышает комплексность программирования.
С помощью техники макросов язык программирования СЧПУ может быть сильно
изменен. При использовании техники макросов необходимо соблюдать осторожность.
Макросом обозначается объединение отдельных операторов в новый общий оператор с
собственным именем. При вызове макроса при выполнении программы
запрограммированные под макроименем операторы выполняются последовательно.
Согласно области действия, т. е. области, в которой действует макроопределение,
существуют следующие категории макросов:
•
Локальные макросы
Локальные макросы - это макросы, которые определены в начале программы ЧПУ,
которая на момент выполнения не является главной программой. Они создаются при
вызове программы ЧПУ и удаляются при сбросе (Reset) конца программы или
следующем запуске СЧПУ. Обращение к локальным макросам возможно только
внутри программы ЧПУ, в которой они определены.
•
Глобальные программные макросы
Глобальные программные макросы - это макросы, которые определены в начале
программы ЧПУ, используемой как главная программа. Они создаются при вызове
программы ЧПУ и удаляются при сбросе (Reset) конца программы или следующем
запуске СЧПУ. Обращение к глобальным программным макросам возможно в
главной программе и во всех подпрограммах.
Примечание
Доступность глобальных программных макросов
Определенные в главной программе глобальные программные макросы доступны в
подпрограммах только при следующих установленных машинных данных:
MD11120 $MN_LUD_EXTENDED_SCOPE = 1
При MD11120 = 0 определенные в главной программе глобальные программные
макросы доступны только в главной программе.
•
Глобальные макросы
Глобальные макросы - это спец. для ЧПУ или канала глобальные макросы,
определенные в файле определений (макрофайл) и сохраняющиеся после сброса
(Reset) конца программы или следующего запуска СЧПУ. Глобальные макросы могут
быть вызваны и выполнены в любой главной программе или подпрограмме.
Примечание
Для использования макросов внешнего макрофайла в программе ЧПУ необходимо
загрузить макрофайл в ЧПУ.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
505
Расширенное программирование
4.1 Гибкое программирование ЧПУ
Перед использованием макросы должны быть определены. Соблюдать следующие
правила:
• В макросе могут быть определены любые идентификаторы, функции G, M, H и имена
подпрограмм L.
• Макроопределение может происходить в начале программы или в отдельном файле
определений (макрофайл).
• Локальные глобальные программные макросы определены в начале программы.
• Глобальные макросы должны быть определены в макрофайле, например,
_N_DEF_DIR/_N_UMAC_DEF.
• Макросы G-команд могут быть определены как глобальные макросы.
• Функции H и L могут программироваться 2-позиционно.
• Команды M и G могут программироваться 3-позиционно.
Примечание
Запрещено перезаписывать кодовые слова и зарезервированные имена с помощью
макросов. Это действительно и для всех целей перехода внутри команды GOTO и для всех
кодовых слов в программных циклах, таких как FOR, WHILE, LOOP, REPEAT.
Синтаксис
Определение макроса:
DEFINE <Macro_Name> AS <Operation_1> <Operation_2> ...
Вызов в программе ЧПУ:
<Макрос_имя>
Объяснение
DEFINE ... AS:
Комбинация кодовых слов для определения макроса
<Макрос_имя>:
Имя макроса
В качестве макроимен разрешены только идентификаторы.
С помощью макроимени макрос вызывается из программы ЧПУ.
<Операция_1>:
Первая операция программирования в макросе
<Операция_2>:
Вторая операция программирования в макросе
Примеры
Пример 1: Макроопределение в начале программы
Программный код
Комментарий
DEFINE LINIE AS G1 G94 F300
; макроопределение
N70 LINIE X10 Y20
; макровызов
Программирование ЧПУ
506
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
Пример 2: Макроопределения в макрофайле
Программный код
Комментарий
DEFINE M6 AS L6
; При смене инструмента вызывается подпрограмма, берущая на
себе необходимую передачу данных. В подпрограмме выводится
сама функция М смены инструмента (например, M106).
DEFINE G81 AS DRILL(81)
; Эмуляция DIN-G-команды.
DEFINE G33 AS M333 G333
; При резьбонарезании запрашивается синхронизация с
PLC. Первоначальная G-команда 33 была через MD переиме-
нована в G333, для пользователя программирование остается
прежним.
Пример 3: Внешний макрофайл
После загрузки внешнего макрофайла в СЧПУ, макрофайл должен быть загружен в ЧПУ.
Только после этого можно использовать макросы в программе ЧПУ.
Программный код
Комментарий
%_N_UMAC_DEF
;$PATH=/_N_DEF_DIR
; Спец. для заказчика макросы
DEFINE PI AS 3.14
DEFINE TC1 AS M3 S1000
DEFINE M13 AS M3 M7
; Правое вращение шпинделя, включение СОЖ
DEFINE M14 AS M4 M7
; Левое вращение шпинделя, включение СОЖ
DEFINE M15 AS M5 M9
; Останов шпинделя, выключение СОЖ
DEFINE M6 AS L6
; Вызов программы смены инструмента
DEFINE G80 AS MCALL
; Отмена цикла сверления
M30
4.2
Техника подпрограмм
4.2.1
Общая информация
4.2.1.1
Подпрограмма
Обозначение "Подпрограмма" относится к тому времени, когда программы обработки
деталей были жестко разделены на главные и подпрограммы. При этом главными
программами были программы обработки деталей, которые выбирались на СЧПУ для
выполнения и после запускались. Подпрограммами были программы обработки
деталей, вызываемые из главной программы.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
507
Расширенное программирование
4.2 Техника подпрограмм
Такого жесткого разделения в сегодняшнем языке ЧПУ SINUMERIK больше нет. Любая
программа обработки детали в принципе может быть выбрана как главная программа и
запущена или вызвана как подпрограмма из другой программы обработки детали.
Таким образом, в дальнейшем подпрограммой будет обозначаться программа
обработки детали, которая вызывается из другой программы обработки детали.
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͕͖͕͇͓͓͇͋͗͊͗
Использование
Как и во всех высокоуровневых языках программирования, и в языке ЧПУ
подпрограммы используются для того, чтобы поместить многократно используемые
программные блоки в самостоятельные, завершенные программы.
Преимуществами подпрограмм являются:
• Увеличение наглядности и читабельности программ
• Увеличение качества через повторное использование протестированных блоков
программы
• Возможность создания специфических библиотек обработки
• Экономия места в памяти
Программирование ЧПУ
508
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
4.2.1.2
Имена подпрограмм
Правила именования
Имя подпрограммы можно выбирать произвольно, соблюдая следующие правила:
• Разрешенные символы:
- Буквы: A ... Z, a ... z
- Цифры: 0 ... 9
- Знак подчеркивания: _
• Первыми двумя символами должны быть две буквы или знак подчеркивания с буквой
после него.
Примечание
Если это условие выполнено, программа ЧПУ может быть вызвана из другой
программы как подпрограмма путем указания имени программы . Если имя
программы начинается с цифр, вызов подпрограммы возможен только через
оператор CALL.
• Максимальная длина: 24 символа
Примечание
Прописные / строчные буквы
В языке ЧПУ SINUMERIK нет различия между прописными и строчными буквами.
Примечание
Недопустимые имена программ
Во избежание проблем с приложениями Windows запрещено использовать следующие
имена программ:
• CON, PRN, AUX, NUL
• COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
• LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9
Расширения внутри СЧПУ
К присвоенному при создании программы имени подпрограммы СЧПУ добавляет
префикс и постфикс:
• Префикс: _N_
• Постфикс: _SPF
Использование имени программы
При использовании имени программы, например, для вызова подпрограммы,
возможны любые комбинации префикса, имени программы и постфикса.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
509
Расширенное программирование
4.2 Техника подпрограмм
Пример:
Подпрограмма с именем программы SUB_PROG может вызываться через следующие
идентификаторы:
1. SUB_PROG
2. _N_SUB_PROG
3. SUB_PROG_SPF
4. _N_SUB_PROG_SPF
Идентичность имен главных программ и подпрограмм
Если существуют главная программа (.MPF) и подпрограмма (.SPF) с одинаковым
именем программы, то для однозначной идентификации при использовании имени
программы в программе ЧПУ необходимо указывать и соответствующее расширение
файла. В противном случае используется программа с указанным именем программы,
которая будет найдена по маршруту поиска первой.
Имя файла и имя программы
Имя файла и имя содержащейся в нем программы должны быть одинаковыми.
В файле содержится только одна программа.
4.2.1.3
Вложенность подпрограмм
Главная программа может вызывать подпрограммы, которые в свою очередь вызывают
подпрограммы. Таким образом, процессы программ вложены друг в друга. При этом
каждая программа выполняется на своем программном уровне.
Глубина вложенности
Язык ЧПУ в настоящее время предлагает 16 программных уровней. Главная программа
всегда выполняется на самом верхнем программном уровне 0. Подпрограмма всегда
выполняется на следующем за таковым в вызове более низком программном уровне.
Таким образом, программный уровень 1 это первый уровень подпрограмм.
Программирование ЧПУ
510
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Подразделение программных уровней:
• Программный уровень 0: уровень главной программы
• Программный уровень 1 - 15: уровень подпрограмм 1 - 15
̶͕͇͓͓͔͗͊͗͌͢ ͚͕͉͔͗͏ ͓͇͑͘
̪͇͉͒
̶͕͋
͔͇ͦ
̶͕͋
͖͕͗͊͗
͖͕͗͊͗
͖͕͗͊͗
̶͕͋
͖͕͗͊͗
Обработчики прерываний (ASUP)
Если в рамках обработчика прерываний вызывается подпрограмма, то она выполняется
не на актуальном активном в канале программном уровне (n), а также на следующем
более низком программном уровне (n+1). Для обеспечения этой возможности и на
самом низком программном уровне, в комбинации с обработчиками прерываний
предлагаются 2 дополнительных программных уровня (16 и 17).
Если требуется более 2 программных уровней, то это должно быть явно учтено в
структурировании выполняемой в канале программы обработки детали. Т.е. в этом
случае может быть задействовано макс. столько программных уровней, чтобы осталось
еще достаточно программных уровней для обработки прерываний.
Если, к примеру, обработке прерываний требуется 4 программных уровня, то программа
обработки детали должна быть структурирована таким образом, чтобы она занимала
макс. программный уровень 13. Если после происходит прерывание, то для него
доступны 4 требуемых программных уровня (14 до 17).
Циклы Siemens
Для циклов Siemens требуется 3 программных уровня. Поэтому вызов цикла Siemens
должен быть выполнен самое позднее на:
• Выполнение программы обработки детали: программный уровень 12
• Обработчик прерываний: программный уровень 14
4.2.1.4
Маршрут поиска
При вызове подпрограммы без указания пути система управления выполняет поиск в
имеющейся программной памяти в предопределенной последовательности (см.
"Маршрут поиска при вызове подпрограммы (Страница 579)").
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
511
Расширенное программирование
4.2 Техника подпрограмм
4.2.1.5
Формальные и фактические параметры
Речь о формальных и фактических параметрах связана с определением и вызовом
подпрограмм с передачей параметров.
Формальный параметр
При определении подпрограммы, передаваемые подпрограмме параметры, т.н.
формальные параметры, должны быть определены с типом и именем параметра.
Тем самым формальные параметры определяют интерфейс подпрограммы.
Пример:
Программный код
Комментарий
PROC KONTUR (REAL X, REAL Y)
; Формальные параметры: X и Y оба типа REAL
N20 X1=X Y1=Y
; Перемещение оси X1 на позицию X и оси Y1 на
позицию Y
N100 RET
Фактический параметр
При вызове подпрограммы ей должны быть переданы абсолютные значения или
переменные, т.н. фактические параметры.
Тем самым фактические параметры при вызове заполняют интерфейс подпрограммы
актуальными значениями.
Пример:
Программный код
Комментарий
N10 DEF REAL BREITE
; определение переменных
N20 BREITE=20.0
; Присваивание переменной
N30 KONTUR(5.5, BREITE)
; Вызов подпрограммы с фактическими параметрами: 5.5 и
BREITE
N100 M30
4.2.1.6
Передача параметров
Определение подпрограммы с передачей параметров
Определение подпрограммы с передачей параметров осуществляется с кодовым
словом PROC и полным перечнем ожидаемых от подпрограммы параметров.
Программирование ЧПУ
512
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Неполная передача параметров
При вызове подпрограммы не всегда должны быть явно переданы все определенные на
интерфейсе подпрограммы параметры. Если параметр опускается, то для этого
параметра передается стандартное значение "0".
Но для однозначного обозначения последовательности параметров, запятые в качестве
разделительных символов параметров все же должны указываться всегда.
Исключением является последний параметр. Если он опускается при вызове, может
быть опущена и последняя запятая.
Пример:
Подпрограмма:
Программный код
Комментарий
PROC SUB_PROG (REAL X, REAL Y, REAL Z)
; Формальные параметры: X, Y и Z
N100 RET
Главная программа:
Программный код
Комментарий
PROC MAIN_PROG
N30 SUB_PROG(1.0,2.0,3.0)
; Вызов подпрограммы с полной передачей параметров:
X=1.0, Y=2.0, Z=3.0
…
N100 M30
Примеры вызова подпрограммы в N30 с неполной передачей параметров:
N30 SUB_PROG( ,2.0,3.0)
; X=0.0, Y=2.0, Z=3.0
N30 SUB_PROG(1.0, ,3.0)
; X=1.0, Y=0.0, Z=3.0
N30 SUB_PROG(1.0,2.0)
; X=1.0, Y=2.0, Z=0.0
N30 SUB_PROG( , ,3.0)
; X=0.0, Y=0.0, Z=3.0
N30 SUB_PROG( , , )
; X=0.0, Y=0.0, Z=0.0
ВНИМАНИЕ
Передача параметров, вызываемых по ссылке
Параметры, передаваемые по ссылке, не могут быть опущены при вызове
подпрограммы.
ВНИМАНИЕ
Тип данных AXIS
Параметры тира данных AXIS не могут быть опущены при вызове подпрограммы.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
513
Расширенное программирование
4.2 Техника подпрограмм
Проверка передаваемых параметров
Через системную переменную $P_SUBPAR [ n ] где n = 1, 2, ... в подпрограмме можно
проверить, был ли параметр явно передан или опущен. Индекс n относится к
последовательности формальных параметров. Индекс n = 1 относится к 1-му
формальному параметру, индекс n = 2 ко 2-му формальному параметру и т.д.
Следующий сегмент программы показывает на примере для 1-го формального
параметра, как может быть реализована проверка:
Программирование
Комментарий
PROC SUB_PROG (REAL X, REAL Y, REAL Z)
; Формальные параметры: X, Y и Z
N20 IF $P_SUBPAR[1]==TRUE
; Проверка 1-го формального параметра X.
; Эти операции выполняются, если формальный
параметр X был передан явно.
N40 ELSE
; Эти операции выполняются, если формальный
параметр X не был передан.
N60 ENDIF
; Общие операции
N100 RET
4.2.2
Определение подпрограммы
4.2.2.1
Подпрограмма без передачи параметров
При определении подпрограмм без передачи параметров строка определения в начале
программы не нужна.
Синтаксис
[PROC <имя программы>]
Значение
PROC:
Оператор определения в начале программы
<имя программы>:
Имя программы
Пример
Пример 1: Подпрограмма с оператором PROC
Программный код
Комментарий
PROC SUB_PROG
; Строка определения
N10 G01 G90 G64 F1000
Программирование ЧПУ
514
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N20 X10 Y20
N100 RET
; возврат из подпрограммы
Пример 2: Подпрограмма без оператора PROC
Программный код
Комментарий
N10 G01 G90 G64 F1000
N20 X10 Y20
N100 RET
; возврат из подпрограммы
См. также
Вызовы подпрограмм без передачи параметров (Страница 542)
4.2.2.2
Подпрограмма с передачей параметров по значению (PROC)
Определение подпрограммы с передачей параметров, вызываемых по значению,
выполняется кодовым словом PROC с последующим именем программы и полным
перечнем параметров с типом и именем. Оператор определения должен стоять в первой
строке программы.
Параметры, вызываемые по значению
Вызывающая программа при передаче параметра, вызываемого по значению, передает
в подпрограмму только значение переменной. Так подпрограмма не получает прямого
доступа к переменной. В результате при изменении значения параметра изменяется
только значение, видимое в подпрограмме. Значение переменной, определенной в
вызывающей программе, остается неизменным. Так передача параметров,
вызываемых по значению, не оказывает обратного воздействия на вызывающую
программу.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
515
Расширенное программирование
4.2 Техника подпрограмм
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͗͏͉͕͔͌͘͏͌
͎͔͇͔͌͞͏͌
/$(1*(
̶͕͖͕͇͓͓͇͋͗͊͗
%5(,7(
/$(1*( %5(,7(
̴͕͉͕͌
͖͗͏͉͕͔͌͘͏͌
͎͔͇͔͌͞͏͐
/$(1*(
%5(,7(
̴͕͉͌͢ ͎͔͇͔͌͞͏ͦ
͙͉͋͌͐͘͏͙͔͌͒ͣ͢
̸͙͇͗͌͢ ͎͔͇͔͌͞͏ͦ
͙͉͋͌͐͘͏͙͔͌͒ͣ͢
Синтаксис
PROC <имя программы> (<тип параметра> <имя параметра>=<Init_Wert>, ...)
Примечание
Всего может быть передано до 127 параметров.
Объяснение
PROC:
Оператор определения в начале программы
<имя программы>:
Имя программы
<тип параметра>:
Тип данных параметра (например, REAL, INT, BOOL)
<имя параметра>:
Имя параметра
<иниц_значение>:
Опциональное значение для инициализации параметра (опция)
Если при вызове подпрограммы параметр не указывается, то па-
раметру присваивается инициализирующее значение.
Примеры
Пример 1
Определение подпрограммы SUB_PROG с тремя параметрами типа REAL со значениями
по умолчанию:
Программный код
PROC SUB_PROG(REAL LENGTH=10.0, REAL WIDTH=20.0, REAL HIGHT=30.0)
Программирование ЧПУ
516
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Пример 2
Различные варианты вызова
Программный код
PROC MAIN_PROG
REAL PAR_1 = 100
REAL PAR_2 = 200
REAL PAR_3 = 300
; варианты вызова
SUB_PROG
SUB_PROG(PAR_1, PAR_2, PAR_3)
SUB_PROG(PAR_1)
SUB_PROG(PAR_1, , PAR_3)
SUB_PROG( , , PAR_3)
N100 RET
См. также
Вызов подпрограммы с передачей параметров (EXTERN) (Страница 544)
4.2.2.3
Подпрограмма с передачей параметров по ссылке (PROC, VAR)
Определение подпрограммы с передачей параметров по ссылке осуществляется с
кодовым словом PROC, с последующим именем программы и полным перечнем
параметров с кодовым словом VAR, с типом и именем. Оператор определения должен
стоять в первой строке программы. В качестве параметра можно также передавать
ссылки на поля.
Параметры, вызываемые по ссылке
Вызывающая программа при передаче параметра по ссылке передает в подпрограмму
не значение переменной, а ссылку (указатель) на переменную. Таким образом,
подпрограмма получает прямой доступ к переменной. В результате при изменении
значения параметра изменяется не только значение, видимое в подпрограмме, но и
значение переменной, определенной в вызывающей программе. Таким образом,
передача параметров по ссылке оказывает обратное воздействие на вызывающую
программу, в том числе, после завершения подпрограммы.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
517
Расширенное программирование
4.2 Техника подпрограмм
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͗͏͉͕͔͌͘͏͌
͎͔͇͔͌͞͏͌
/$(1*(
%5(,7(
̶͕͖͕͇͓͓͇͋͗͊͗
/$(1*( %5(,7(
̴͕͉͕͌
͖͗͏͉͕͔͌͘͏͌
͎͔͇͔͌͞͏͐
/$(1*(
%5(,7(
̴͕͉͌͢ ͎͔͇͔͌͞͏ͦ
͙͉͋͌͐͘͏͙͔͌͒ͣ͢
/$(1*( %5(,7(
̴͕͉͌͢ ͎͔͇͔͌͞͏ͦ
͙͉͋͌͐͘͏͙͔͌͒ͣ͢
Примечание
Передача параметров по ссылке необходима только тогда, когда переданная
переменная была локально определена в вызывающей программе (LUD). Глобальные
переменные канала или ЧПУ не должны передаваться, т.к. к ним возможен и прямой
доступ из подпрограммы.
Синтаксис
PROC <имя программы> (VAR <тип параметра> <имя параметра>, ...)
PROC <имя программы> (VAR <тип поля> <имя поля> [<m>,<n>,<o>], ...)
Примечание
Всего может быть передано до 127 параметров.
Объяснение
PROC:
Оператор определения в начале программы
VAR:
Кодовое слово для передачи параметров по ссылке
<имя программы>:
Имя программы
<тип параметра>:
Тип данных параметра (например, REAL, INT, BOOL)
<имя параметра>:
Имя параметра
<тип поля>:
Тип данных элементов поля (например, REAL, INT, BOOL)
<имя поля>:
Имя поля
Программирование ЧПУ
518
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
[<m>,<n>,<o>]:
Размер поля
Сейчас возможны макс. 3-мерные поля:
<m>:
Размер поля для 1-й размерности
<n>:
Размер поля для 2-й размерности
<o>:
Размер поля для 3-й размерности
Примечание
• Указанное после кодового слова PROC имя параметра должно совпадать с
присвоенным на интерфейсе именем программы.
• С помощью полей неопределенной длины как формальных параметров
подпрограммы могут обрабатывать поля переменной длины. Для этого при
определении, например, двухмерного поля как формального параметра длина 1-й
размерности не указывается. Но запятая должна быть записана.
Пример: PROC <имя программы> (VAR REAL FELD[,5])
Пример
Определение подпрограммы с двумя параметрами как ссылка на тип REAL:
Программный код
; Параметр 1: Ссылка на тип: REAL, имя: LAENGE
; Параметр 2: Ссылка на тип: REAL, имя: BREITE
PROC SUB_PROG(VAR REAL LAENGE, VAR REAL BREITE)
См. также
Вызов подпрограммы с передачей параметров (EXTERN) (Страница 544)
4.2.2.4
Сохранить модальные функции G (SAVE)
Следствием атрибута SAVE является то, что активные перед вызовом подпрограммы
модальные G-команды сохраняются и после завершения подпрограммы снова
активируются.
ВНИМАНИЕ
Прерывание режима управления траекторией
Если при активном режиме управления траекторией вызывается подпрограмма с
атрибутом SAVE, то режим управления траекторией прерывается на конце
подпрограммы (возврат).
Синтаксис
PROC <имя подпрограммы> SAVE
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
519
Расширенное программирование
4.2 Техника подпрограмм
Объяснение
SAVE:
Сохранение модальных G-команд перед вызовом подпрограммы и восстановление
после завершения подпрограммы
Пример
В подпрограмме KONTUR действует модальная команда G91 (составной размер). В
главной программе действует модальная команда G90 (абсолютный размер). За счет
определения подпрограммы с SAVE после завершения подпрограммы в главной
программе снова действует G90.
Определение подпрограммы:
Программный код
Комментарий
PROC KONTUR (REAL WERT1) SAVE
; Определение подпрограммы с параметром SAVE
N10 G91 ...
; Модальная G-команда G91: Составной размер
N100 M17
; Конец подпрограммы
Главная программа:
Программный код
Комментарий
N10 G0 X... Y... G90
; Модальная G-команда G90: Абсолютный размер
N20 ...
N50 KONTUR (12.4)
;Вызов подпрограммы
N60 X... Y...
; Модальная G-команда G90 реактивирована через
SAVE
Граничные условия
Фреймы
Поведение фреймов касательно подпрограмм с атрибутом SAVE зависит от типа фрейма
и может быть установлено через машинные данные.
4.2.2.5
Подавление покадровой обработки (SBLOF, SBLON)
При активной покадровой обработке пользователь может полностью или частично
обработать программу ЧПУ, не останавливаясь. Подавление покадровой обработки
выполняется командой SBLOF, повторное включение выполняется командой SBLON.
Подавление покадровой обработки для всей программы ЧПУ
Если выключение покадровой обработки (SBLOF) запрограммировано в первой строке
(PROC ...) главной программы, то оно действует до конца или до отмены программы ЧПУ.
В этом случае программа ЧПУ выполняется при отдельном кадре без остановки.
Если выключение покадровой обработки (SBLOF) запрограммировано в первой строке
(PROC ...) подпрограммы, то оно действует до конца или до отмены программы ЧПУ. С
Программирование ЧПУ
520
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
помощью запрограммированной команды возврата принимается решение, произойдет
ли остановка на конце подпрограммы или нет:
• Возврат с M17: Стоп на конце подпрограммы
• Возврат с RET: Нет останова в конце подпрограммы
Подавление покадровой обработки внутри программы ЧПУ
Если выключение покадровой обработки (SBLOF) запрограммировано в кадре внутри
программы ЧПУ, то покадровая обработка выключается с этого кадра и до следующего
запрограммированного включения покадровой обработки (SBLON) или в конце
активного уровня подпрограммы.
Синтаксис
Подавление покадровой обработки для всей программы ЧПУ:
PROC ... SBLOF
Подавление покадровой обработки внутри программы ЧПУ:
SBLOF
SBLON
Объяснение
PROC:
Первый оператор программы
SBLOF:
Предопределенная процедура отключения покадровой обработки
Автономно в ка-
да, возможно в кадре PROC
дре:
Активность:
модально
SBLON:
Предопределенная процедура включения покадровой обработки
Автономно в ка-
да
дре:
Активность:
модально
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
521
Расширенное программирование
4.2 Техника подпрограмм
Особенности
•
Индикация кадра при подавленной покадровой обработке
Актуальная индикация кадра может быть подавлена в подпрограммах с DISPLOF. Если
DISPLOF программируется вместе с SBLOF, то при остановах покадровой обработки
внутри подпрограммы отображается вызов подпрограммы.
•
Подавление покадровой обработки в случае асинхронных подпрограмм (ASUP)
Для выполнения ASUP при активной покадровой обработке за один шаг необходимо
запрограммировать в ASUP оператор PROC с SBLOF. Это же относится и к функции
"Редактируемая системная ASUP" (MD11610 $MN_ASUP_EDITABLE).
Если останов покадровой обработки подавляется в системной ASUP или ASUP
пользователя через программирование SBLOF в строке PROC или через установки в
машинных данных MD10702 $MN_IGNORE_SINGLEBLOCK_MASK (Бит0 = 1 или Бит1 = 1),
то останов покадровой обработки через программирование SBLON в ASUP снова
может быть активирован.
Если останов покадровой обработки подавляется в ASUP пользователя через
установки в машинных данных MD20117 $MC_IGNORE_SINGLEBLOCK_ASUP, то останов
покадровой обработки через программирование SBLON в ASUP не может быть снова
активирован.
•
Особенности для различных типов покадровой обработки
- "SB2: Кадр вычисления" UND MD10702 $MN_IGNORE_SINGLEBLOCK_MASK,
бит 12 = 1:
→ Останова в кадре SBLON нет.
- "SB3: Отдельный кадр точный":
→ Команда SBLOF подавляется.
•
Подавление покадровой обработки во вложенных программах
Если в подпрограмме была запрограммирована SBLOF в операторе PROC, то
происходит останов на возврате из подпрограммы с M17. Тем самым не допускается
исполнение уже следующего кадра в вызывающей программе. Если в подпрограмме
с SBLOF, без SBLOF в операторе PROC, активируется подавление покадровой
обработки, то останов происходит только после следующего кадра функций станка
вызывающей программы. Если это не желательно, то в подпрограмме еще до
возврата (M17) снова необходимо запрограммировать SBLON. При возврате с RET в
программу верхнего уровня останов не происходит.
Примеры
Пример 1: Подавление покадровой обработки внутри программы ЧПУ
Исходная ситуация: Покадровая обработка активна.
Программный код
Комментарий
N10 G1 X100 F1000
N20 SBLOF
; Выключение покадровой обработки
N30 Y20
N40 M100
N50 R10=90
N60 SBLON
; Снова включить покадровую обработку
N70 M110
Программирование ЧПУ
522
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N80 ...
Область между N20 и N60 в режиме покадровой обработки обрабатывается как один шаг.
Пример 2:
Цикл должен действовать для пользователя как одна команда
Исходная ситуация: Покадровая обработка активна.
Главная программа:
Программный код
N100 G1 X10 G90 F200
N120 X-4 Y6
N130 CYCLE1
N140 G1 X0
N150 M30
Цикл CYCLE1:
Программный код
Комментарий
N100 PROC CYCLE1 DISPLOF SBLOF
; Подавление покадровой обработки для всей программы.
N110 R10=3*SIN(R20)+5
N120 IF (R11 <= 0)
N130 SETAL(61000)
N140 ENDIF
N150 G1 G91 Z=R10 F=R11
N160 M17
Цикл CYCLE1 выполняется при активной покадровой обработке. Это означает, что для
обработки CYCLE1 необходимо один раз нажать клавишу Start.
Пример 3: Запущенная с PLC ASUP для активации измененного смещения нулевой
точки и коррекций инструмента должна быть скрыта.
Программный код
Комментарий
N100 PROC NV SBLOF DISPLOF
; Подавление покадровой обработки и индикации кадра.
N110 CASE $P_UIFRNUM OF
0 GOTOF _G500
1 GOTOF _G54
2 GOTOF _G55
3 GOTOF _G56
4 GOTOF _G57
DEFAULT GOTOF END
N120 _G54: G54 D=$P_TOOL T=$P_TOOLNO
N130 RET
N140 _G54: G55 D=$P_TOOL T=$P_TOOLNO
N150 RET
N160 _G56: G56 D=$P_TOOL T=$P_TOOLNO
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
523
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N170 RET
N180 _G57: G57 D=$P_TOOL T=$P_TOOLNO
N190 RET
N200 END: D=$P_TOOL T=$P_TOOLNO
N210 RET
Пример 4: Целенаправленный останов в подпрограмме
Исходная ситуация:
• Покадровая обработка активна.
• MD10702 $MN_IGNORE_SINGLEBLOCK_MASK, бит 12 = 1
Главная программа:
Программный код
Комментарий
N10 G0 X0
; Останов покадровой обработки
N20 X10
; Останов покадровой обработки
N30 CYCLE
; Созданный циклом кадр перемещения.
N50 G90 X20
; Останов покадровой обработки
M30
Цикл CYCLE:
Программный код
Комментарий
PROC CYCLE SBLOF
; Подавить покадровую обработку
N100 R0=1
N110 SBLON
; Нет останова покадровой обработки из-за MD10702 бит 12 = 1
N120 X1
; Останов покадровой обработки
N140 SBLOF
N150 R0=2
RET
Пример 5: Подавление покадровой обработки при вложенности программы
Исходная ситуация:
• Покадровая обработка тип 2 активна.
• В кадре SBLON останов запрещен (MD10702 $MN_IGNORE_SINGLEBLOCK_MASK,
бит 12 = 1)
Программный код
Комментарий
N10 X0 F1000
; Останов покадровой обработки
N20 UP1(0)
PROC UP1(INT _NR) SBLOF
; Выключение покадровой обработки для UP1
N100 X10
N110 UP2(0)
PROC UP2(INT _NR)
N200 X20
Программирование ЧПУ
524
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N210 SBLON
; Включение покадровой обработки
N220 X22
; Останов покадровой обработки
N230 UP3(0)
PROC UP3(INT _NR)
N300 SBLOF
; Выключение покадровой обработки
N305 X30
N310 SBLON
; Включение покадровой обработки
N320 X32
; Останов покадровой обработки
N330 SBLOF
; Выключение покадровой обработки
N340 X34
N350 M17
; Останов покадровой обработки (M17)
N240 X24
; Останов покадровой обработки (N210)
N250 M17
; Останов покадровой обработки (M17)
N120 X12
N130 M17
; Останов покадровой обработки (M17)
N30 X0
; Останов покадровой обработки
N40 M30
; Останов покадровой обработки
4.2.2.6
Подавление актуальной индикации кадра (DISPLOF, DISPLON, ACTBLOCNO)
На индикации кадра стандартно индицируется актуальный программный кадр. В циклах
или подпрограммах индикация актуального кадра может быть подавлена с помощью
команды DISPLOF. Вместо актуального кадра тогда индицируется вызов цикла или
подпрограммы. С помощью команды DISPLON подавление индикации кадров может
быть снова отменено.
DISPLOF или DISPLON программируется в строке программы с оператором PROC и
действует для всей подпрограммы и не явно для всех вызванных из этой подпрограммы
подпрограмм, не содержащих команды DISPLON или DISPLOF. Это же поведение
действует и для ASUP.
Синтаксис
PROC … DISPLOF
PROC … DISPLOF ACTBLOCNO
PROC … DISPLOF
Значение
DISPLOF:
Команда для подавления актуальной индикации кадра.
Размещение:
На конце строки программы с оператором PROC
Активность:
До возврата из подпрограммы или завершения программы.
Примечание:
Если из подпрограммы с помощью команды DISPLOF вызываются другие
подпрограммы, то и в этих подпрограммах актуальная индикация кадра по-
давляется, если в них явно не запрограммирована DISPLON.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
525
Расширенное программирование
4.2 Техника подпрограмм
DISPLON:
Команда отмены подавления актуальной индикации кадров
Размещение:
На конце строки программы с оператором PROC
Активность:
До возврата из подпрограммы или завершения программы.
Примечание:
Если из подпрограммы с помощью команды DISPLON вызываются другие
подпрограммы, то и в этих подпрограммах отображается актуальный кадр
программы, если в них явно не запрограммирована DISPLOF.
ACTBLOCNO:
DISPLOF вместе с атрибутом ACTBLOCNO приводит к тому, что в случае ошиб-
ки выводится номер актуального кадра, в котором возникла ошибка. Это
действует и в том случае, когда на более низком программном уровне за-
программирована только DISPLOF.
При DISPLOF без ACTBLOCNO, напротив, индицируется номер кадра вызова
цикла или подпрограммы из последнего не обозначенного с DISPLOF про-
граммного уровня.
Примеры
Пример 1:
Подавление актуальной индикации кадра в цикле
Программный код
Комментарий
PROC CYCLE(AXIS TOMOV, REAL POSITION)
; Подавление актуальной индикации кадра. Вместо этого
SAVE DISPLOF
должен быть показан вызов цикла, к примеру:
CYCLE(X,100.0)
DEF REAL DIFF
; Содержание циклов
G01 ...
RET
; Возврат из подпрограммы. На индикации кадра появл-
яется следующий за вызовом цикла кадр.
Пример 2: Индикация кадра при выводе ошибки
Подпрограмма SUBPROG1 (с ACTBLOCNO):
Программный код
Комментарий
PROC SUBPROG1 DISPLOF
ACTBLOCNO
N8000 R10 = R33 + R44
N9040 R10 = 66 X100
; Запустить ошибку 12080
N10000 M17
Подпрограмма SUBPROG2 (без ACTBLOCNO):
Программный код
Комментарий
PROC SUBPROG2 DISPLOF
Программирование ЧПУ
526
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N5000 R10 = R33 + R44
N6040 R10 = 66 X100
; Запустить ошибку 12080
N7000 M17
Главная программа:
Программный код
Комментарий
N1000 G0 X0 Y0 Z0
N1010 ...
N2050 SUBPROG1
; Вывод ошибки = "12080 канал K1 кадр N9040 синтаксическая
ошибка в тексте R10="
N2060 ...
N2350 SUBPROG2
; Вывод ошибки = "12080 канал K1 кадр N2350 синтаксическая
ошибка в тексте R10="
N3000 M30
Пример 3: Отменить подавление актуальной индикации кадра
Подпрограмма SUB1 с подавлением:
Программный код
Комментарий
PROC SUB1 DISPLOF
; Подавление актуальной индикации кадров в подпрограмме
SUB1. Вместо этого должен быть показан кадр с вызовом SUB1.
N300 SUB2
; Вызвать подпрограмму SUB2.
N500 M17
Подпрограмма SUB2 без подавления:
Программный код
Комментарий
PROC SUB2 DISPLON
; Отменить подавление актуальной индикации кадров в
подпрограмме SUB2.
N200 M17
; Возврат в подпрограмму SUB1. В SUB1 актуальная индикация
кадров снова подавляется.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
527
Расширенное программирование
4.2 Техника подпрограмм
Пример 4: Параметры индикации при различных комбинациях DISPLON/DISPLOF
̶͕͇͓͓͔͗͊͗͐͢ ͚͕͉͔͗͌ͣ
+3
͈͎͌
83
352&
83
352&
83
',63/2)
͈͎͌
352&
83
352&
$683
',63/21
352&
83
',63/2)
352&
83
352&
',63/2)
352&
83
',63/2)
83
',63/21
͈͎͌
352&
352&
',63/2)
+3 ͇͉͔͇͊͒ͦ ͖͕͇͓͓͇͗͊͗
83 ͖͕͖͕͇͓͓͇͋͗͊͗
$683 ͇͘͏͔͕͔͔͇͗ͦ͜ ͖͕͖͕͇͓͓͇͋͗͊͗ ͕͈͇͈͕͙͗͞͏͑ ͖͉͇͔͗͌͗͢͏͐
① На актуальной индикации кадров отображаются строки программы обработки детали из программного уровня
0.
② На актуальной индикации кадров отображаются строки программы обработки детали из программного уровня
3.
③ На актуальной индикации кадров отображаются строки программы обработки детали из программного уровня
3.
④ На актуальной индикации кадров отображаются строки программы обработки детали из программного уровня
7/8.
4.2.2.7
Обозначить подпрограммы с подготовкой (PREPRO)
С помощью кодового слова PREPRO при запуске в конце строки оператора PROC можно
обозначить все файлы.
Примечание
Такой тип подготовки программы зависит от настройки машинных данных MD10700
$MN_PREPROCESSING_LEVEL. Просьба следовать указаниям изготовителя станка.
Синтаксис
PROC … PREPRO
Объяснение
PREPRO:
Кодовое слово для обозначения всех подготовленных при запуске файлов, сохра-
ненных в директориях циклов программ ЧПУ
Программирование ЧПУ
528
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Загрузка подпрограмм с подготовкой и вызов подпрограмм
Как подготовленные при запуске подпрограммы с параметрами, так и при вызове
подпрограммы, обработка директорий циклов выполняется в той же
последовательности:
1. _N_CUS_DIR циклы пользователя
2. _N_CMA_DIR циклы изготовителя
3. _N_CST_DIR стандартные циклы
В случае одноименных программ ЧПУ с различным оформлением активируется
последний найденный оператор PROC, а другой оператор PROC игнорируется без
сообщения об ошибке.
4.2.2.8
Возврат из подпрограммы M17
В конце подпрограммы стоит команда возврата M17 (или команда программы обработки
детали M30). Она вызывает возврат в вызывающую программу на кадр программы
обработки детали после вызова подпрограммы.
Примечание
M17 и M30 обрабатываются в языке ЧПУ равнозначно.
Синтаксис
PROC <имя программы>
M17/M30
Граничные условия
Влияние возврата из подпрограммы на режим управления траекторией
Если M17 (или M30) стоит одна в кадре программы обработки детали, то из-за этого
активный в канале режим управления траекторией прерывается.
Во избежание прерывания режима управления траекторией, записать M17 (или M30) и в
последний кадр перемещения. Дополнительно следующие машинные данные должны
быть установлены на "0":
MD20800 $MC_SPF_END_TO_VDI = 0 (нет вывода M30/M17 на интерфейс ЧПУ/PLC)
Пример
1. подпрограмма с M17 в отдельном кадре
Программный код
Комментарий
N10 G64 F2000 G91 X10 Y10
N20 X10 Z10
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
529
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N30 M17
; Возврат с прерыванием режима управления траекторией.
2. подпрограмма с M17 в последнем кадре перемещения
Программный код
Комментарий
N10 G64 F2000 G91 X10 Y10
N20 X10 Z10 M17
; Возврат без прерывания режима управления траекторией.
4.2.2.9
Возврат из подпрограммы RET
В качестве эквивалента для команды возврата с M17, в подпрограмме можно
использовать и команду RET . RET должна быть запрограммирована в отдельном кадре
программы обработки детали. Как и M17 RET вызывает возврат в вызывающую
программу на кадр программы обработки детали после вызова подпрограммы.
Примечание
Через программирование параметров, параметры возврата RET могут быть изменены
(см. "Параметрируемый возврат из подпрограммы (RET ...) (Страница 531)").
Использование
Использовать оператор RET тогда, когда режим управления траекторией G64
(G641 ... G645) не должен прерываться возвратом.
Условие
Команда RET может использоваться только в подпрограммах, которые не были
определены с атрибутом SAVE.
Синтаксис
PROC <имя программы>
RET
Пример
Главная программа:
Программный код
Комментарий
PROC MAIN_PROGRAM
; Начало программы
N50 SUB_PROG
; Вызов подпрограммы: SUB_PROG
Программирование ЧПУ
530
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N60 ...
N100 M30
; конец программы
Подпрограмма:
Программный код
Комментарий
PROC SUB_PROG
N100 RET
; Возврат выполняется на кадр N60 в главной программе.
4.2.2.10
Параметрируемый возврат из подпрограммы (RET ...)
Вообще с помощью команды RET выполняется возврат из подпрограммы в
вызывающую программу. Затем обработка продолжается с программной строки,
следующей за вызовом подпрограммы. Если обработка программы должна
продолжаться с другого места, имеются следующие возможности:
• Продолжение обработки программы после вызова циклов обработки резаньем в
режиме диалекта ISO (после описания контура).
• Возврат в главную программу из любого уровня подпрограммы (и после ASUP) при
обработке ошибок.
• Возврат через несколько программных уровней для специальных приложений в
компилируемых циклах и в режиме диалекта ISO.
Для этого команду RET нужно запрограммировать с дополнительными параметрами.
Направление поиска
При указании параметра <конечный кадр> возврат осуществляется сначала на кадр
после кадра вызова. Затем выполняется поиск цели в направлении конца программы, в
которую осуществляется возврат. Если этот поиск не дал результата, далее выполняется
поиск в направлении начала программы.
Синтаксис
RET("<конечный кадр>")
RET("<конечный кадр>",<кадр после конечного кадра>)
RET("<конечный кадр>",<кадр после конечного кадра>,<число уровней возврата>)
RET("<конечный кадр>", ,<число уровней возврата>)
RET("<конечный кадр>",<кадр после конечного кадра>,<число уровней возврата>,
<возврат на начало программы>)
RET( , ,<число уровней возврата>,<возврат на начало программы>)
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
531
Расширенное программирование
4.2 Техника подпрограмм
Значение
RET:
Конец подпрограммы
<конечный кадр>:
В этом параметре в качестве цели перехода указывается кадр,
на котором обработка программы должна быть продолжена.
Если параметр <число уровней возврата> не запрограмми-
рован, то цель перехода находится в программе, из которой
была вызвана актуальная подпрограмма.
Возможными данными являются:
<номер кадра>
Номер конечного кадра.
Поиск номера кадра в программе, в кото-
рую выполняется возврат, сначала вы-
полняется в направлении конца програм-
мы.
<метка перехо-
Метка перехода, которая должна быть в
да>
программе, куда выполняется возврат.
Поиск метки перехода в программе, в ко-
торую выполняется возврат, сначала вы-
полняется в направлении конца програм-
мы.
<строка симво-
Строка символов, которая должна быть в
лов>
программе, куда выполняется возврат (на-
пример, имя программы или перемен-
ной).
Поиск строки символов в программе, в ко-
торую выполняется возврат, сначала вы-
полняется в направлении конца програм-
мы.
Для программирования строки символов
в конечном кадре действуют следующие
правила:
• Пробел на конце (в отличие от метки
перехода, которая обозначается через
":" на конце).
• Перед строкой символов может быть
установлен только номер кадра и/или
метка перехода, не программные ко-
манды.
<кадр после конечного кадра>:
В этом параметре указывается, должна ли обработка про-
граммы продолжаться в кадре, указанном в параметре <ко-
нечный кадр>, или в следующем за ним кадре.
Тип:
INT
Значе-
0
Возврат осуществляется на кадр, указан-
ние:
ный в параметре <конечный кадр>.
> 0
Возврат осуществляется на кадр, следую-
щий за указанным в параметре <конечный
кадр>.
Программирование ЧПУ
532
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
<число
В этом параметре указывается число программных уровней,
уровней возврата>:
которые нужно пройти назад, чтобы найти там конечный кадр
и продолжить обработку программы.
Тип:
INT
Значе-
1
Программа продолжается на "актуальном
ние:
программном уровне -1" (как RET без пара-
метров).
2
Программа продолжается на "актуальном
программном уровне -2", т. е. пропускается
один уровень.
3
Программа продолжается на "актуальном
программном уровне -3", т. е. пропускается
два уровня.
Диапа-
1 ... 15
зон зна-
чений:
<возврат на
В этом параметре указывается, нужно ли при возврате в глав-
начало программы>:
ную программу и активном там режиме диалекта ISO про-
должать программу с самого начала.
Тип:
BOOL
Значе-
1
Если возврат осуществляется в главную
ние:
программу и там активен режим диалекта
ISO , то выполняется ветвление на начало
программы.
Примечание
При возврате из подпрограммы со строкой символов в качестве данных для поиска
конечного кадра, в вызывающей программе сначала всегда выполняется поиск метки
перехода.
Поэтому, если цель перехода должна быть однозначно определена строкой символов, то
строка символов не должна совпадать с именем метки перехода, т.к. в ином случае
возврат из подпрограммы всегда будет выполняться на метку перехода, а не на строку
символов (см. пример 2).
Граничные условия
Возврат через несколько программных уровней
При возврате через несколько программных уровней обрабатываются операторы SAVE
отдельных программных уровней.
Если при возврате через несколько программных уровней активна модальная
подпрограмма и если в одной из пропущенных подпрограмм запрограммирована
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
533
Расширенное программирование
4.2 Техника подпрограмм
команда отмены MCALL для модальной подпрограммы, то модальная подпрограмма
остается активной.
ВНИМАНИЕ
Ошибки программирования
В случае возврата через несколько программных уровней пользователь сам должен
позаботиться о том, чтобы обработка продолжалась с необходимыми модальными
настройками. Это обеспечивается, например, программированием соответствующего
главного кадра.
Выполнение с внешнего устройства
Если главная и подпрограммы выполняются через функцию "Выполнение с внешнего
устройства" из внешней программной памяти, то запрограммированная с RET(...) цель
перехода должны находиться в памяти догрузки. В ином случае цель перехода не будет
найдена и происходит отмена программы с выводом аварийного сообщения 14000.
Примечание
Для выполнения внешних программ без ограничений в части запрограммированных
операторов перехода, рекомендуется вместо функции "Выполнение с внешнего
устройства" использовать опцию "Выполнение из внешней памяти (EES)".
Примеры
Пример 1: Повторная установка в главной программе после обработки ASUP
Программирование
Комментарий
N10010 CALL "UP1"
; программный уровень 0 (главная программа)
N11000 PROC UP1
; программный уровень 1
N11010 CALL "UP2"
N12000 PROC UP2
; программный уровень 2
N19000 PROC ASUP
; программный уровень 3 (обработка ASUP)
N19100 RET("N10900", ,$P_STACK)
; Возврат из подпрограммы в главную программу
; $P_STACK: актуальный программный уровень
N10900
; Конечный кадр в главной программе
N10910 MCALL
; Выключить модальный вызов подпрограммы
N10920 G0 G60 G40 M5
; Инициализировать другие модальные настройки
Программирование ЧПУ
534
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Пример 2: Строка символов (<строка>) как данные для поиска конечного кадра
Главная программа:
Программный код
Комментарий
PROC MAIN_PROGRAM
N1000 DEF INT iVar1=1, iVar2=4
N1010 ...
N1200 subProg1
; Вызов подпрограммы "subProg1"
N1210 M2 S1000 X10 F1000
N1220
N1400 subProg2
; Вызов подпрограммы "subProg2"
N1410 M3 S500 Y20
N1420 ..
N1500 lab1: iVar1=R10*44
N1510 F500 X5
N1520 ...
N1550 subprog1: G1 X30
; "subProg1" определена здесь как метка перехода.
N1560 ...
N1600 subProg3
; Вызов подпрограммы "subProg3"
N1610 ...
N1900 M30
Подпрограмма subProg1:
Программный код
Комментарий
PROC subProg1
N2000 R10=R20+100
N2010 ...
N2200 RET("subProg2")
; Возврат в главную программу на кадр N1400
Подпрограмма subProg2:
Программный код
Комментарий
PROC subProg2
N2000 R10=R20+100
N2010 ...
N2200 RET("iVar1")
; Возврат в главную программу на кадр N1500
Подпрограмма subProg3:
Программный код
Комментарий
PROC subProg3
N2000 R10=R20+100
N2010 ...
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
535
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N2200 RET("subProg1")
; Возврат в главную программу на кадр N1550
Дополнительная информация
На следующих рисунках показаны различные действия параметров возврата
1. <конечный кадр> = "N200", <кадр после конечного кадра> = 0
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͕͖͕͇͓͓͇͋͗͊͗
1
68%
1
*
352& 68%
1
1
5(7 ರ1
ರ
1
После команды RET обработка программы продолжается на кадре N200 в главной
программе.
Программирование ЧПУ
536
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
2. <конечный кадр> = "N200", <кадр после конечного кадра> = 1
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͕͖͕͇͓͓͇͋͗͊͗
1
68%
1
*
352& 68%
1
1
5(7 ರ
ರ
1
1
1
После команды RET обработка программы продолжается на кадре (N210), следующим
за кадром N200 в главной программе.
3. <конечный кадр> = "N220", <число уровней возврата> = 2
̳͇͑͘
͖͕͇͓͓͔͗͊͗͢͜ ͚͕͉͔͗͌͐
̪͇͉͔͇͒ͦ
͖͕͗͊͗
̶͕͋
͖͕͗͊͗
̶͕͋
͖͕͗͊͗
̶͕͋
͖͕͗͊͗
5(7 1
1
̩͕͎͉͇͙͗
̩͕͎͉͇͙͗
После команды RET два программных уровня пропускается и обработка программы
продолжается на кадре N220 .
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
537
Расширенное программирование
4.2 Техника подпрограмм
4.2.2.11
Параметрируемый возврат из подпрограммы (RETB ...)
Вообще с помощью команды RETB выполняется возврат из подпрограммы в
вызывающую программу. Затем обработка продолжается с программной строки,
следующей за вызовом подпрограммы. Если обработка программы должна
продолжаться с другого места, имеются следующие возможности:
• Продолжение обработки программы после вызова циклов обработки резаньем в
режиме диалекта ISO (после описания контура).
• Возврат в главную программу из любого уровня подпрограммы (и после ASUP) при
обработке ошибок.
• Возврат через несколько программных уровней для специальных приложений в
компилируемых циклах и в режиме диалекта ISO.
Для этого команду RETB нужно запрограммировать с дополнительными параметрами.
Направление поиска
При указании параметра <конечный кадр> возврат осуществляется сначала на кадр
после кадра вызова. Затем выполняется поиск цели в направлении начала программы,
в которую осуществлен возврат. Если этот поиск не дал результата, далее выполняется
поиск в направлении конца программы.
Синтаксис
RETB("<конечный кадр>")
RETB("<конечный кадр>",<кадр после конечного кадра>)
RETB("<конечный кадр>",<кадр после конечного кадра>,<число уровней возврата>)
RETB("<конечный кадр>", ,<число уровней возврата>)
RETB("<конечный кадр>",<кадр после конечного кадра>,<число уровней возврата>,
<возврат на начало программы>)
RETB( , ,<число уровней возврата>,<возврат на начало программы>)
Программирование ЧПУ
538
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Значение
RETB:
Конец подпрограммы
<конечный кадр>:
В этом параметре в качестве цели перехода указывается кадр,
на котором обработка программы должна быть продолжена.
Если параметр <число уровней возврата> не запрограмми-
рован, то цель перехода находится в программе, из которой
была вызвана актуальная подпрограмма.
Возможными данными являются:
<номер кадра>
Номер конечного кадра.
Поиск номера кадра в программе, куда вы-
полняется возврат, сначала осуществляет-
ся в направлении начала программы.
<метка перехо-
Метка перехода, которая должна быть в
да>
программе, куда выполняется возврат.
Поиск метки перехода в программе, куда
выполняется возврат, сначала осуществл-
яется в направлении начала программы.
<строка симво-
Строка символов, которая должна быть в
лов>
программе, куда выполняется возврат (на-
пример, имя программы или перемен-
ной).
Поиск строки символов в программе, куда
выполняется возврат, сначала осуществл-
яется в направлении начала программы.
Для программирования строки символов
в конечном кадре действуют следующие
правила:
• Пробел на конце (в отличие от метки
перехода, которая обозначается через
":" на конце).
• Перед строкой символов может быть
установлен только номер кадра и/или
метка перехода, не программные ко-
манды.
<кадр после конечного кадра>:
В этом параметре указывается, должна ли обработка про-
граммы продолжаться в кадре, указанном в параметре <ко-
нечный кадр>, или в следующем за ним кадре.
Тип:
INT
Значе-
0
Возврат осуществляется на кадр, указан-
ние:
ный в параметре <конечный кадр>.
> 0
Возврат осуществляется на кадр, следую-
щий за указанным в параметре <конечный
кадр>.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
539
Расширенное программирование
4.2 Техника подпрограмм
<число
В этом параметре указывается число программных уровней,
уровней возврата>:
которые нужно пройти назад, чтобы найти там конечный кадр
и продолжить обработку программы.
Тип:
INT
Значе-
1
Программа продолжается на "актуальном
ние:
программном уровне -1" (как RET без пара-
метров).
2
Программа продолжается на "актуальном
программном уровне -2", т. е. пропускается
один уровень.
3
Программа продолжается на "актуальном
программном уровне -3", т. е. пропускается
два уровня.
Диапа-
1 ... 15
зон зна-
чений:
<возврат на
В этом параметре указывается, нужно ли при возврате в глав-
начало программы>:
ную программу и активном там режиме диалекта ISO про-
должать программу с самого начала.
Тип:
BOOL
Значе-
1
Если возврат осуществляется в главную
ние:
программу и там активен режим диалекта
ISO , то выполняется ветвление на начало
программы.
Примечание
При возврате из подпрограммы со строкой символов в качестве данных для поиска
конечного кадра, в вызывающей программе сначала всегда выполняется поиск метки
перехода.
Поэтому, если цель перехода должна быть однозначно определена строкой символов, то
строка символов не должна совпадать с именем метки перехода, т.к. в ином случае
возврат из подпрограммы всегда будет выполняться на метку перехода, а не на строку
символов (см. пример 2).
Граничные условия
Возврат через несколько программных уровней
При возврате через несколько программных уровней обрабатываются операторы SAVE
отдельных программных уровней.
Если при возврате через несколько программных уровней активна модальная
подпрограмма и если в одной из пропущенных подпрограмм запрограммирована
Программирование ЧПУ
540
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
команда отмены MCALL для модальной подпрограммы, то модальная подпрограмма
остается активной.
ВНИМАНИЕ
Ошибки программирования
В случае возврата через несколько программных уровней пользователь сам должен
позаботиться о том, чтобы обработка продолжалась с необходимыми модальными
настройками. Это обеспечивается, например, программированием соответствующего
главного кадра.
Выполнение с внешнего устройства
Если главная и подпрограммы выполняются через функцию "Выполнение с внешнего
устройства" из внешней программной памяти, то запрограммированная с RETB(...) цель
перехода должна находиться в памяти догрузки. В ином случае цель перехода не будет
найдена и происходит отмена программы с выводом аварийного сообщения 14000.
Примечание
Для выполнения внешних программ без ограничений в части запрограммированных
операторов перехода, рекомендуется вместо функции "Выполнение с внешнего
устройства" использовать опцию "Выполнение из внешней памяти (EES)".
Пример
Программный код
Комментарий
BEISPIEL.MPF
…
N3000 START_CYC(param1, param2, …)
N3010 TECH_CYC1(param1, param2, …)
N3020 TECH_CYC2(param1, param2, …)
N3030 TECH_CYC3(param1, param2, …)
N3040 END_CYC(param1, param2, …)
N3040 END_CYC(param1, param2, …)
N3050 …
N4500 START_CYC(param11, param12, …)
N4510 …
N4590 END_CYC(param11, param12, ..)
N5000 …
…
N6000 M30
Программный код
Комментарий
PROC END_CYC(…)
; Вызов в главной программе строки N3040
N10000 …
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
541
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N15000 if status == 1
N15010 RETB(“START_CYC”)
; Возврат в вызывающую программу BEISPIEL.MPF
; Поиск строки символов "START_CYC"
; Направление поиска: назад, в направлении начала программы
; Продолжение обработки программы со строки N3000
N15020 ENDIF
N15030 if status == 0
N15040 RET
; Возврат в вызывающую программу BEISPIEL.MPF
; Продолжение обработки программы со строки N3050
N15050 ENDIF
N16000 RET(“START_CYC”)
; Возврат в вызывающую программу BEISPIEL.MPF
; Поиск строки символов "START_CYC"
; Направление поиска: вперед, в направлении конца программы
; Продолжение обработки программы со строки N4500
N17060 RETB
; Возврат в вызывающую программу BEISPIEL.MPF
; Продолжение обработки программы со строки N3050
; RETB без параметров идентична RET
4.2.3
Вызов подпрограммы
4.2.3.1
Вызовы подпрограмм без передачи параметров
Вызов подпрограммы выполняется либо с адресом L и номером подпрограммы, либо
через указание имени программы.
Главная программа также может быть вызвана как подпрограмма. В этом случае
установленный в главной программе конец программы M2 или M30 интерпретируется
как M17 (конец программы с возвратом в вызывающую программу).
Примечание
Подпрограмма также может быть запущена как главная программа.
Стратегия поиска СЧПУ:
Существует ли *_MPF?
Существует ли *_SPF?
Из этого следует: Если имя вызываемой подпрограммы идентично имени главной
программы, то снова вызывается вызывающая главная программа. Этого, как правило,
нежелательного эффекта можно избежать через выбор однозначных имен для
подпрограмм и главных программ.
Программирование ЧПУ
542
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Примечание
Подпрограммы, не требующие передачи параметров, могут вызываться и из файла
инициализации.
Синтаксис
L<номер>/<имя программы>
Примечание
Вызов подпрограммы всегда должен быть запрограммирован в отдельном кадре ЧПУ.
Значение
L:
Адрес для вызова подпрограммы
<номер>:
Номер подпрограммы
Тип:
INT
Значе-
Макс. 7 десятичных позиций
ние:
Внимание:
Вводные нули имеют значение при присваивании име-
ни (⇒ L123, L0123 и L00123 это три различные подпро-
граммы).
<имя программы>:
Имя подпрограммы (или главной программы)
Примеры
Пример 1: Вызов подпрограммы без передачи параметров
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
1
/
͏͒͏
̶͕͖͕͇͓͓͇͋͗͊͗
1
=DSIHQB
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
543
Расширенное программирование
4.2 Техника подпрограмм
Пример 2: Вызов главной программы как подпрограммы
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
1
03)
̸͚͇͒͌͋ͥͦ͠
͏͒͏
͇͉͔͇͊͒ͦ ͖͕͇͓͓͇͗͊͗
1
:(//(
1
1
0
См. также
Подпрограмма без передачи параметров (Страница 514)
4.2.3.2
Вызов подпрограммы с передачей параметров (EXTERN)
При вызове подпрограммы с передачей параметров переменные или значения могут
передаваться напрямую (не для параметров VAR).
Подпрограммы с передачей параметров перед вызовом в главной программе должны
быть указаны с EXTERN (к примеру, в начале программы). При этом указывается имя
подпрограммы и типы переменных в порядке передачи.
ВНИМАНИЕ
Опасность спутывания
Как типы переменных, так и последовательность передачи, должны совпадать с
определениями, согласованными в подпрограмме в PROC. Имена параметров в
главной и подпрограмме могут быть различными.
Синтаксис
EXTERN <имя программы>(<тип_пар1>,<тип_пар2>,<тип_пар3>)
<имя программы>(<значение_пар1>,<значение_пар2>,<значение_пар3>)
Программирование ЧПУ
544
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Примечание
Вызов подпрограммы всегда должен быть запрограммирован в отдельном кадре ЧПУ.
Объяснение
<имя программы>:
Имя подпрограммы
EXTERN:
Кодовое слово для указания подпрограм-
мы с передачей параметров
Примечание:
EXTERN должен указываться только то-
гда, когда подпрограмма стоит в дирек-
тории детали или в глобальной директо-
рии подпрограмм. Циклы не должны ука-
зываться как EXTERN .
<тип_пар1>,<тип_пар2>,<тип_пар3>:
Типы переменных передаваемых пара-
метров в последовательности передачи
<значение_пар1>,<значение_пар2>,<значение_пар3
Значения переменных для передавае-
>:
мых параметров
Примеры
Пример 1: Вызов подпрограммы с предшествующим извещением
Программный код
Комментарий
N10 EXTERN RAHMEN(REAL,REAL,REAL)
; Указание подпрограммы.
N40 RAHMEN(15.3,20.2,5)
; Вызов подпрограммы с передачей параметров.
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
1
(;7(51
5$+0(1 5($/ 5($/ 5($/
1
5$+0(1
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
545
Расширенное программирование
4.2 Техника подпрограмм
Пример 2: Вызов подпрограммы без извещения
Программный код
Комментарий
N10 DEF REAL LAENGE, BREITE, TIEFE
N20 …
N30 LAENGE=15.3 BREITE=20.2 TIEFE=5
N40 RAHMEN(LAENGE,BREITE,TIEFE)
; или: N40 RAHMEN(15.3,20.2,5)
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
1
/$(1*(
%5(,7(
7,()(
1
5$+0(1 /$(1*( %5(,7( 7,()(
͏͒͏
1
5$+0(1
См. также
Подпрограмма с передачей параметров по значению (PROC) (Страница 515)
Подпрограмма с передачей параметров по ссылке (PROC, VAR) (Страница 517)
4.2.3.3
Число повторений программы (P)
Если необходимо последовательное выполнение подпрограммы несколько раз, то в
кадре с вызовом подпрограммы по адресу Р можно запрограммировать желаемое число
повторений программы.
ОСТОРОЖНО
Вызов подпрограммы с повторением программы и передачей параметров
Параметры передаются только при вызове или первом проходе программы. Для
следующих повторений параметры остаются неизменными. Если необходимо при
повторениях программы изменить параметры, то следует установить в подпрограмме
соответствующие согласования.
Программирование ЧПУ
546
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Синтаксис
<имя программы> P<значение>
Значение
<имя программы>:
Вызов подпрограммы
P:
Адрес для программирования повторений программы
<значение>:
Число повторений программы
Тип:
INT
Диапазон значе-
1 … 9999
ний:
(без знака)
Пример
Программный код
Комментарий
N40 RAHMEN P3
; Подпрограмма RAHMEN должна быть выполнена последовательно три раза.
̪͇͉͔͇͒ͦ ͖͕͇͓͓͇͗͊͗
̶͕͖͕͇͓͓͇͋͗͊͗
1
5$+0(1 3
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
547
Расширенное программирование
4.2 Техника подпрограмм
4.2.3.4
Модальный вызов подпрограммы (MCALL)
При модальном вызове подпрограммы MCALL(<ProgName>) указанная подпрограмма
вызывается не сразу. Вместо этого вызов с этого момента в программе обработки детали
осуществляется автоматически после каждого кадра перемещения с движениями по
траектории. В том числе и с переходом через программные уровни.
Примечание
При выполнении программы действует всегда только последний модальный вызов
подпрограммы MCALL(<ProgName>). Текущий модальный вызов подпрограммы
заменяет активный прежде.
Если в подпрограмму передаются параметры, то передача параметров осуществляется
только при вызове:
MCALL(<ProgName>(Par1, Par2, ...))
Примечание
Область определения данных в начале подпрограммы проходится только один раз при
выполнении кадра с запрограммированным вызовом MCALL. При следующих вызовах
подпрограммы после кадров перемещения область определения данных больше не
проходится. Вследствие этого значение, присвоенное при определении локальной
переменной пользователя (LUD), после первого вызова более недоступно: доступно
значение, записанное в цикле последним. После первого вызова переменная не
создается заново, а сохраняет последнее значение предыдущего вызова. Во избежание
такого поведения рекомендуется разделить определение LUD и присвоение значений и
программировать присвоение значений в собственном кадре после области
определения данных.
ВНИМАНИЕ
Модальные вызовы подпрограммы без движения по траектории
Модальная подпрограмма в следующих ситуациях вызывается и без
программирования движения по траектории:
• Программирование адресов S или F, если активна G0 или G1
• Если G0 или G1 стоит в кадре одна или была запрограммирована вместе с другими G-
командами.
Синтаксис
MCALL <ProgName>
MCALL
Программирование ЧПУ
548
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Объяснение
MCALL <ProgName>:
Включение функции "Модальный вызов подпрограммы"
<ProgName>:
Имя подпрограммы
MCALL:
С помощью MCALL без указания имени программы функция "Модаль-
ный вызов подпрограммы" выключается.
Граничные условия
ASUP
Если обработка программы обработки детали прерывается программой ASUP (см. главу
"Обработчик прерываний (ASUP) (Страница 559)"), то в этой ASUP модальные вызовы
подпрограммы не выполняются.
Если ASUP запускается в состоянии канала "Reset", она ведет себя относительно
модальных вызовов подпрограммы, как обычная программа обработки детали.
Цикл смены инструмента
Если в цикле смены инструмента происходит отмена функции "Модальный вызов
подпрограммы", следует учитывать, что при необходимости цикл смены инструмента не
явно вызывается и после поиска кадра через поисковую ASUP или вручную через
пересохранение. В этой ситуации отменять функцию "Модальный вызов подпрограммы"
не следует, потому что иначе результат поиска будет ошибочным. Поэтому отмену
функции "Модальный вызов подпрограммы" в цикле смены инструмента рекомендуется
программировать следующим образом:
Программный код
Комментарий
IF $AC_ASUP == 0
; Вызов осуществляется не через поисковую ASUP или пересохранение.
MCALL
; Выключение функции "Модальный вызов подпрограммы".
ENDIF
Примеры
Пример 1
Программный код
Комментарий
N10 G0 X0 Y0
N20 MCALL L70
; Включение модального вызова подпрограммы для L70.
N30 X10 Y10
; Выполняется подвод в X10 Y10, затем вызывается L70.
N40 X20 Y20
; Выполняется подвод в X20 Y20, затем вызывается L70.
N100 MCALL
; Выключение функции "Модальный вызов подпрограммы".
N110 X0 Y0
; Выполняется подвод в X0 Y0, а L70 не вызывается.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
549
Расширенное программирование
4.2 Техника подпрограмм
Пример 2
Программный код
N10 G0 X0 Y0
N20 MCALL L70
N30 L80
В этом примере последующие кадры ЧПУ с запрограммированными траекторными
осями стоят в подпрограмме L80. L70 вызывается через L80.
4.2.3.5
Косвенный вызов подпрограммы (CALL)
В зависимости от имеющихся условий в одном месте могут вызываться различные
подпрограммы. Для этого имя подпрограммы сохраняется в переменной типа STRING.
Вызов подпрограммы осуществляется с CALL и именем переменной.
Примечание
Косвенный вызов подпрограммы возможен только для подпрограмм без передачи
параметров. Для прямого вызова подпрограммы сохранить имя в постоянной STRING.
Синтаксис
CALL <имя программы>
Объяснение
CALL:
Команда для косвенного вызова подпрограммы
<имя программы>:
Имя подпрограммы (переменная или постоянная)
Тип:
STRING
Пример
Прямой вызов с постоянной STRING:
Программный код
Комментарий
…
CALL "/_N_WKS_DIR/_N_SUBPROG_WPD/_N_TEIL1_SPF"
; Вызвать подпрограмму TEIL1 с
CALL напрямую.
…
Косвенный вызов через переменную:
Программный код
Комментарий
…
DEF STRING[100] PROGNAME
; Определение переменных.
Программирование ЧПУ
550
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
PROGNAME="/_N_WKS_DIR/_N_SUBPROG_WPD/_N_TEIL1_SPF"
; Согласовать подпрограмму TEIL1 с
переменной PROGNAME.
CALL PROGNAME
; Вызвать подпрограмму TEIL1 через
CALL и переменную PROGNAME кос-
венно.
…
4.2.3.6
Косвенный вызов подпрограммы с указанием выполняемого программного
блока (CALL BLOCK ... TO ...)
С помощью CALL и комбинации кодовых слов BLOCK ... TO подпрограмма вызывается
косвенно и выполняется обозначенный стартовой меткой и меткой конца программный
блок.
Синтаксис
CALL <имя программы> BLOCK <стартовая метка> TO <метка конца>
CALL BLOCK <стартовая метка> TO <метка конца>
Значение
CALL:
Команда для косвенного вызова подпрограммы
<имя программы>:
Имя подпрограммы (переменная или постоянная), содержащей
обрабатываемый программный блок (опциональные данные).
Тип:
STRING
Примечание:
Если <имя программы> не запрограммировано, то поиск и вы-
полнение обозначенного <стартовой меткой> и <меткой конца>
программного блока осуществляется в актуальной программе.
BLOCK ... TO ... :
Комбинация кодовых слов для косвенного выполнения программ-
ного блока
<стартовая метка>:
Переменная, указывающая на начало обрабатываемого про-
граммного блока.
Тип:
STRING
<метка конца>:
Переменная, указывающая на конец обрабатываемого программ-
ного блока.
Тип:
STRING
Пример
Главная программа:
Программный код
Комментарий
DEF STRING[20] STARTLABEL, ENDLABEL
; Определение переменных для стартовой метки и
метки конца.
STARTLABEL="LABEL_1"
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
551
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
ENDLABEL="LABEL_2"
CALL "CONTUR_1" BLOCK STARTLABEL TO
; Косвенный вызов подпрограммы и обозначение
ENDLABEL
выполняемого программного блока.
Подпрограмма:
Программный код
Комментарий
PROC CONTUR_1 ...
LABEL_1
; Стартовая метка: Начало выполнения программного блока
N1000 G1 ...
LABEL_2
; Метка конца: Конец выполнения программного блока
4.2.3.7
Косвенный вызов запрограммированной на языке ISO программы (ISOCALL)
С помощью косвенного вызова программы ISOCALL можно вызвать
запрограммированную на языке ISO программу. При этом активируется установленный
в машинных данных режим ISO. В конце программы снова активируется
первоначальный режим обработки. Если в машинных данных режим ISO не установлен,
то вызов подпрограммы выполняется в режиме Siemens.
Дополнительная информация по режиму ISO Описание функций "Диалекты ISO"
Синтаксис
ISOCALL <имя программы>
Объяснение
ISOCALL:
Кодовое слово для косвенного вызова подпрограммы, при котором
активируется установленный в машинных данных режим ISO.
<имя программы>:
Имя запрограммированной на языке ISO программы (переменная
или постоянная типа STRING)
Пример: Пример вызова контура с программированием циклов из режима ISO
Программный код
Комментарий
0122_SPF
; Описание контура в режиме ISO
N1010 G1 X10 Z20
N1020 X30 R5
N1030 Z50 C10
N1040 X50
N1050 M99
Программирование ЧПУ
552
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Программный код
Комментарий
N0010 DEF STRING[5] PROGNAME = "0122"
; Программа (цикл) обработки детали Siemens
N2000 R11 = $AA_IW[X]
N2010 ISOCALL PROGNAME
N2020 R10 = R10+1
; Выполнить программу 0122.spf в режиме ISO
N2400 M30
4.2.3.8
Вызов подпрограммы с указанием пути и параметрами (PCALL)
С помощью PCALL возможен вызов подпрограмм с абсолютным указанием пути и
передачей параметров.
Синтаксис
PCALL <путь/имя программы>(<параметр 1>,..., <параметр n>)
Значение
PCALL:
Кодовое слово для вызова подпрограммы с абсолютным ука-
занием пути.
<путь/имя программы>:
Абсолютное указание пути включая имя подпрограммы.
Правила указания пути см. "Адресация файлов программной
памяти (Страница 574)".
Если абсолютный путь не был указан, то поведение PCALL
идентично стандартному вызову подпрограммы с идентифи-
катором программы.
Имя программы указывается без префикса и без идентифи-
катора файла. Если имя программы нужно запрограммиро-
вать с префиксом и идентификатором файла, то оно должно
быть явно интерпретировано с префиксом и идентификато-
ром файла с помощью команды EXTERN.
<параметр 1>, ...,:
Актуальные параметры согласно оператору PROC подпро-
граммы.
Пример
Программный код
PCALL/_N_WKS_DIR/_N_WELLE_WPD/WELLE(параметр1, параметр2,...)
4.2.3.9
Расширить маршрут поиска для вызовов подпрограмм (CALLPATH)
С помощью команды CALLPATH можно расширить маршрут поиска для вызовов
подпрограммы. Таким образом, могут вызываться и подпрограммы из не выбранной
директории детали без указания полного, абсолютного имени пути подпрограммы.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
553
Расширенное программирование
4.2 Техника подпрограмм
Другой способ применения предлагается в режиме работы EES "EES без GDIR", когда для
хранения глобальных подпрограмм используется директория во внешней программной
памяти. В этом случае с помощью CALLPATH можно расширить маршрут поиска,
включив в него эту директорию подпрограммы.
Расширение маршрута поиска выполняется перед строкой для циклов пользователя
(_N_CUS-DIR).
Следующие события снова отменяют расширение маршрута поиска:
• CALLPATH с пробелом
• CALLPATH без параметров
• Конец программы обработки детали
• Reset
Синтаксис
CALLPATH ("<имя маршрута>")
Объяснение
CALLPATH:
Кодовое слово для программируемого расши-
рения маршрута поиска.
Программируется в собственной строке про-
граммы обработки детали.
<имя маршрута>:
Постоянная или переменная типа STRING.
Содержит абсолютное указание пути к директо-
рии, на которую должен быть расширен мар-
шрут поиска.
Правила указания пути см. "Адресация файлов
программной памяти (Страница 574)".
Пример
Маршрут поиска нужно расширить на определенную директорию детали:
Программный код
CALLPATH ("/_N_WKS_DIR/_N_MYWPD_WPD")
Здесь устанавливается следующий маршрут поиска (позиция 5 является новой):
1. Актуальная директория/name
2. Актуальная директория/name_SPF
3. Актуальная директория/name_MPF
4.
//NC:/_N_SPF_DIR/name_SPF
5.
/_N_WKS_DIR/_N_MYWPD_WPD/name_SPF
Программирование ЧПУ
554
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
6. /N_CUS_DIR/name_SPF
7.
/_N_CMA_DIR / name_SPF
8.
/_N_CST_DIR / name_SPF
Граничные условия
• CALLPATH проверяет, существует ли запрограммированное имя маршрута в
действительности. В случае ошибки выполнение программы обработки детали
отменяется с ошибкой кадра коррекции 14009.
• CALLPATH может быть запрограммирована и в файлах INI. В этом случае он действует
в течение срока обработки файла INI (файл WPD-INI или программа инициализации
для активных данных ЧПУ, к примеру, фреймы в 1-ом канале _N_CH1_UFR_INI). После
маршрут поиска снова сбрасывается.
4.2.3.10
Выполнение внешней подпрограммы (EXTCALL)
С помощью команды EXTCALL можно догрузить и выполнить программу обработки
детали из внешнего ЗУ.
В качестве внешнего ЗУ предлагаются:
• Локальный диск
• Сетевой диск
• Диск USB
Примечание
В качестве интерфейса для обработки находящейся на USB-диске внешней
программы можно использовать только интерфейсы USB на лицевой стороне пульта
управления или TCU.
ВНИМАНИЕ
Повреждение инструмента/детали при использовании USB-флэшки
Не рекомендуется использовать USB-флэшку для обработки внешней
подпрограммы. Нарушение коммуникации с USB-флэшкой при выполнении
программы обработки детали из-за плохого контакта, толчков или случайного
извлечения приводит к немедленной остановке обработки. При этом инструмент и/
или деталь могут быть повреждены.
Предустановка ветви программы
Путь к внешней директории программы может быть предустановлен с помощью
установочных данных:
SD42700 $SC_EXT_PROG_PATH
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
555
Расширенное программирование
4.2 Техника подпрограмм
В комбинации с указанной при вызове EXTCALL ветвью программы и идентификатором
подпрограммы из этого получается общий путь к вызываемой программе обработки
детали.
Примечание
Если ветвь программы указывается только через вызов EXTCALL, в SD42700 должно
быть пусто!
Примечание
Параметр
При вызове внешней программы передача в нее параметров невозможна.
Синтаксис
EXTCALL("<путь/><имя программы>")
Значение
EXTCALL:
Команда для вызова внешней подпрограммы
"<путь/><имя программы>":
Постоянная/переменная типа STRING
<путь/>:
Абсолютное или относительное
указание пути (опция)
<имя программы>:
Имя программы указывается без
префикса "_N_".
Расширение файла ("MPF", "SPF")
может быть добавлено с символом
"_" или "." к имени программы (оп-
ция).
Пример:
"WELLE"
"WELLE_SPF"
"WELLE.SPF"
Указание пути: Краткие обозначения
При указании пути можно использовать следующие условные обозначения:
• Локальный диск: "LOCAL_DRIVE:"
• Карта памяти: "CF_CARD:"
• USB-диск (панель оператора): "USB:"
Краткие обозначения "CF_CARD:" и "LOCAL_DRIVE:" можно использовать в качестве
альтернативы.
Программирование ЧПУ
556
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.2 Техника подпрограмм
Пример
Выполнение с локального диска
Главная программа "MAIN.MPF" находится в памяти ЧПУ и выбрана для выполнения.
Подпрограмма "SP_1"
Внешняя подпрограмма "SP_1.SPF" или "SP_1.MPF" находится на локальном диске в
директории "/user/sinumerik/data/prog/WKS.DIR/WST1.WPD".
Путь к внешней директории программ устанавливается с:
SD42700 $SC_EXT_PROG_PATH = LOCAL_DRIVE:WKS.DIR/WST1.WPD
Примечание
Указание пути для вызова внешней подпрограммы:
• Без использования предустановки: "LOCAL_DRIVE:WKS.DIR/WST1.WPD/SP_1"
• С использованием предустановки: "SP_1"
Подпрограмма "SP_2"
Внешняя подпрограмма "SP_2.SPF" или "SP_2.MPF" находится в директории WKS.DIR/
WST1.WPD диска USB. Предустановка пути к внешней директории программ
используется для пути подпрограммы "SP_1" и также не переписывается в главной
программе. Поэтому при вызове подпрограммы "SP_2" должен быть указан полный путь.
Главная программа "MAIN"
Программный код
N010 PROC MAIN
N020 ...
N030 EXTCALL("SP_1")
N030 EXTCALL("USB:WKS.DIR/WST1.WPD/SP_2")
N050 ...
N060 M30
Дополнительная информация
Вызов EXTCALL с абсолютным указанием пути
Если подпрограмма существует по указанному пути, то она выполняется с вызовом
EXTCALL. Если подпрограмма отсутствует по указанному пути, то выполнение
программы отменяется с вызовом EXTCALL.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
557
Расширенное программирование
4.2 Техника подпрограмм
Вызов EXTCALL с относительным указанием пути / без указания пути
При вызове EXTCALL с относительным указанием пути или без указания пути поиск в
имеющейся программной памяти осуществляется по следующему образцу:
1. Если в SD42700 $SC_EXT_PROG_PATH предустановленно указание пути, то сначала,
исходя из этого пути, выполняется поиск данных в вызове EXTCALL (имя программы
возможно с относительным указанием пути). В этом случае абсолютный путь
получается через соединение символов:
- Предустановленное указание пути в SD42700 $SC_EXT_PROG_PATH
- Разделительный символ "/"
- Указание пути и имя подпрограммы в команде EXTCALL
2. Если подпрограмма не была найдена в 1, то поиск выполняется в директориях памяти
пользователя.
Поиск прекращается при первом нахождении подпрограммы. Если подпрограмма не
найдена, то выполнение программы отменяется с вызовом EXTCALL.
Настраиваемая память догрузки (буфер FIFO)
Для выполнения внешней подпрограммы потребуется память догрузки. Размер памяти
догрузки предустановлен на 30 кБ и может быть изменен только изготовителем станка
(через MD18360 MM_EXT_PROG_BUFFER_SIZE).
Примечание
Подпрограммы с операторами переходов
Для внешних подпрограмм, содержащих операторы перехода (GOTOF, GOTOB, CASE, FOR,
LOOP, WHILE, REPEAT, IF, ELSE, ENDIF и т. п.), цели перехода должны находиться в памяти
догрузки.
Это условие, как правило, является проблемой для операторов перехода на начало
программы (GOTOS), так как программы обычно имеют большой размер для помещения
в память догрузки. При первой догрузке начало программы удаляется из памяти
догрузки. Если при дальнейшем выполнении программы потребуется обработать
оператор перехода на начало программы, тогда функция будет не в состоянии найти цель
перехода. Происходит отмена программы с выводом аварийного сообщения 14000.
Для выполнения внешних подпрограмм без ограничений в части
запрограммированных операторов перехода, рекомендуется вместо функции
"Выполнение внешних подпрограмм (EXTCALL)" использовать функцию "Выполнение из
внешней памяти (EES)".
Примечание
Программы ShopMill-/ShopTurn
Программы ShopMill и ShopTurn из-за прикрепленных на конце файла описаний контура
должны целиком лежать в памяти догрузки.
Для выполняемых параллельно внешних подпрограмм требуется своя память догрузки.
Программирование ЧПУ
558
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
Расширенное программирование
4.3 Обработчик прерываний (ASUP)
Reset / конец программы / POWER ON
RESET и POWER ON отменяют внешние вызовы подпрограмм и соответствующая память
догрузки стирается.
Выбранная для "Выполнения с внешнего устройства" подпрограмма остается выбранной
для "Выполнения с внешнего устройства" и после Reset, завершения программы или
POWER ON. Поведение не отличается от внутренне выбранных программ, если внешняя
программная память остается доступной.
4.3
Обработчик прерываний (ASUP)
4.3.1
Функция обработчика прерываний
Примечание
Попеременно встречающиеся в описании ниже понятия "Асинхронная подпрограмма
(ASUP)" и "Обработчик прерываний" обозначают одну и ту же функциональность.
Функция обработчика прерываний будет пояснена на типичном примере:
̵͈͇͈͕͙͗͞͏͑
͖͉͇͔͗͌͗͢͏͐
̵͙͉͕͋ ͕͙ ͕͔͙͚͇͑͗
̸͓͔͇͌
͏͔͙͚͓͔͙͇͗͌͘
̴͕͉͌͢ ͎͔͇͔͌͞͏ͦ
͕͑͗͗͌͑͝͏͏
̶͕͉͙͕͔͗͐͢
͖͕͉͕͋͋
̪͇͉͔͇͒ͦ
͖͕͇͓͓͇͗͊͗
При обработке происходит поломка инструмента. Следствием этого является сигнал,
останавливающий текущий процесс обработки и одновременно запускающий
подпрограмму - так называемый обработчик прерываний. В этой подпрограмме
находятся все операторы, которые должны быть выполнены в этом случае.
Программирование ЧПУ
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2
559
Расширенное программирование
4.3 Обработчик прерываний (ASUP)
После выполнения подпрограммы (и восстановления готовности к работе) СЧПУ
возвращается к главной программе и продолжает обработку - в зависимости от
команды REPOS - в месте прерывания (см. "Повторный подвод к контуру
(Страница 893)").
ОСТОРОЖНО
Опасность столкновений
Если в подпрограмме команда REPOS не запрограммирована, то позиционирование
выполняется на конечную точку кадра, следующего за прерванным кадром.
4.3.2
Создание обработчика прерываний
Создание обработчика прерываний как подпрограммы
Обработчик прерываний при определении обозначается как подпрограмма.
Пример:
Программный код
Комментарий
PROC ABHEB_Z
; Имя программы "ABHEB_Z"
N10 ...
; Затем следуют кадры ЧПУ.
N50 M17
; В заключении конец программы и возврат в главную программу.
Архивирование модальных G-команд (Save)
При определении обработчик прерываний может быть обозначен посредством SAVE.
Следствием атрибута SAVE является сохранение активных модальных G-команд перед
вызовом обработчика прерываний и их повторная активация после завершения
обработчика прерываний (см. " Подпрограммы с механизмом SAVE (SAVE)
(Страница 519) ").
Таким образом можно продолжить обработку после выполнения обработчика
прерываний в месте прерывания.
Пример:
Программный код
PROC ABHEB_Z SAVE
N10 ...
N50 M17
Программирование ЧПУ
560
Руководство по программированию, 07/2021, 6FC5398-2EP40-0PA2

 

 

 

 

 

 

 

содержание      ..     6      7      8      9     ..