Оператор вывода 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>