Оператор вывода NC-подпрограммы <NCSUB.OUTPUT>
Оператор передает управление в файл технологических команд *.mcd, соответствующий определенной NC-подпрограмме.
Формат:
NCSUB.OUTPUT {(<Номер NC-подпрограммы>{, <Режим>}{, <Имя файла>})}
Оператор является функцией, т.е. возвращает результат. Возможные значения возвращаемого результата: 0 или 1.
Описание:
В результате выполнения оператора последовательно начинают вызываться программы обработки технологических команд NC-подпрограммы, указанной идентификатором <Номер NC-подпрограммы>. Номер NC-подпрограммы обычно передается через предопределенный массив параметров технологических команд <CLD> с индексом 2. Номер NC-подпрограммы является необязательным параметром. В случае отсутствия номера будет произведена последовательная трансляция всех имеющихся NC-подпрограмм.
Необязательный параметр <Режим> определяет, в каких случаях результат трансляции NC-подпрограммы должен выводиться в текст управляющей программы, и может принимать три значения: 0, 1 и 2. При неуказанном параметре <Режим> считается, что он равен 1.
В режиме 0 выполняется трансляция технологических команд, в результате чего производится изменение значений регистров и глобальных переменных. Однако результат трансляции не попадает в текст управляющей программы. Таким образом, осуществляется своеобразный "холостой прогон", позволяющий имитировать вызов программы в том случае, когда сам текст подпрограммы должен появиться в другом месте управляющей программы.
В режиме 1 (по умолчанию) трансляция технологических команд NC-подпрограммы производится также как и в режиме 0, однако результат трансляции попадает в текст управляющей программы, если NC-подпрограмма еще ни разу не выводилась. При последующих вызовах оператора в этом режиме осуществляется "холостой прогон", как и в режиме 0. Таким образом, результат трансляции NC-подпрограммы попадает в управляющую программу только один раз.
При вызове оператора в режиме 2 результат трансляции NC-подпрограммы выводится в управляющую программу всегда, т.е. столько раз, сколько вызывается оператор. Такой режим позволяет "развернуть" NC-подпрограммы для систем ЧПУ не поддерживающих выполнение подпрограмм.
Возвращаемый результат показывает, производился ли вывод NC-подпрограммы в управляющую программу (УП). Результат равен 0, если вывода не было (был осуществлен "холостой прогон"). Результат равен 1, если от транслированная NC-подпрограмма выводилась в УП. Соответственно в режиме 0 возвращаемый результат всегда равен 0, в режиме 2 – всегда равен 1. В режиме 1 результат равен 1 только при первом вызове оператора для каждой NC-подпрограммы.
Необязательный строковый параметр <Имя файла> определяет имя файла, в который будет сохранен текст NC-подпрограмм, получаемых в результате трансляции. Если параметр не указан, то подпрограмма выводится в файл основной управляющей программы. Если в указанном имени отсутствует путь, то файл будет создан в той же папке, что и файл основной программы.
Пример.
Пусть, основной файл технологических команд содержит следующие команды:
0: PARTNO "Lathe Roughing"
1: PPFUN TECHINFO(58), 250.000, 114.890, 78.750, 0.000, 140.690,
2: COMMENT "Lathe Roughing"
3: LOADTL N 0, X 0.000, Y 0.000, Z 0.000, D 0.000, M 0, K 1, L 0.000
4: SPINDL ON(71), NO 1000.000, K 0, MODE CSS(2), SPEED 600.000
5: FEDRAT M 0.050, K 3, MMPR(316)
6: GOTO.abs X 140.690, Y 104.550, Z 0.000
7: GOTO.abs X 140.690, Y 78.750, Z 0.000
8: GOTO.abs X 114.890, Y 78.750, Z 0.000
9: FEDRAT M 0.050, K 0, MMPR(316)
10: PPFUN CALLSUB(52), 1.000, 0.000, 0.000, 0.000, 0.000, 0.000
11: FEDRAT M 0.050, K 8, MMPR(316)
12: GOTO.abs X 114.890, Y 104.550, Z 0.000
13: GOTO.abs X 140.690, Y 104.550, Z 0.000
14: SPINDL OFF(72), NO 0.000, K 0
15: FINI
В то время как файл NC-подпрограммы номер 1 имеет следующий список технологических команд:
1: COMMENT "Geometry_1"
2: PPFUN STARTSUB(50), 1.000, 0.000, 0.000, 0.000, 0.000, 0.000
3: FEDRAT M 0.000, K 0, MMPR(316)
4: GOTO.abs X 114.890, Y 33.381, Z 0.000
5: CIRCLE XC 114.690, YC 33.380, ZC 0.000, R 0.200, XE 114.831, YE
6: GOTO.abs X 110.151, Y 38.201, Z 0.000
7: CIRCLE XC 110.010, YC 38.060, ZC 0.000, R 0.200, XE 110.010, YE
8: GOTO.abs X 62.230, Y 38.260, Z 0.000
9: GOTO.abs X 41.460, Y 38.257, Z 0.000
10: PPFUN ENDSUB(51), 1.000, 0.000, 0.000, 0.000, 0.000, 0.000
Пусть программа обработки десятой команды (<PPFUN CALLSUB(52)>) основного файла выглядит так:
program PPFun
if cld[1]=52 then begin ! CallSub
NCSub.Output(CLD[2])
end
end
В таком случае с самого начала будет производиться последовательная обработка технологических команд основного файла со строки 0 до строки 9. Достигнув строки 10, при обработке оператора <NCSub.Output(CLD[2])>, управление перейдет на файл с NC-подпрограммой номер 1, т.к. второй параметр технологической команды равен 1.000. Таким образом, начнут последовательно обрабатываться технологические команды NC-подпрограммы со строки 1 до строки 10. После обработки последней команды (<PPFUN ENDSUB(51)>) управление вернется в основной файл, и будут обработаны все оставшиеся команды (строки 11 – 15).
Примеры вызова оператора приведены ниже:
! Осуществляет трансляцию всех имеющихся NC-подпрограмм
NCSub.Output
! Осуществляет трансляцию NC-подпрограммы с номером 3 в режиме 0
NCSub.Output(3, 0)
! Осуществляет трансляцию NC-подпрограммы с номером,
! извлекаемым из второго параметра команды в режиме 2
NCSub.Output(CLD[2], 2)
if NCSub.Output(CLD[2]) = 0 then ! Если уже был вывод в УП
begin ! Осуществляет трансляцию
Output "CALL " + ! NC-подпрограммы в режиме 1
NCSub.StartLabel(CLD[2]) ! Выводит строку "CALL "
end
! Транслирует NC-подпрограмму с номером 7 в режиме 1
! и выводит результат в файл Sub7.txt
NCSub.Output(7, "Sub7.txt")
! Транслирует NC-подпрограмму с номером 7 в режиме 2
! и выводит результат в файл Sub7.txt
NCSub.Output(7, 2, "Sub7.txt")
Сопутствующие ссылки:
Операторы работы с NC-подпрограммами
Оператор вывода всех подпрограмм <NCSUB.OUTPUTALL>
Оператор определения начальной метки NC-подпрограммы <NCSUB.STARTLABEL>