В программе постпроцессора (файле exf) допускается использовать функции, которые используют данные траектории инструмента созданной системой Cimatron NC. Эти функции формируются набором операторов, переменных, констант и прочих условий. Иногда функция должна быть выполнена не внутри блока, а перед ним для сохранения/изменения значений или условий. Каждая функция должна заканчиваться точкой с запятой (;).
Доступные блочные функции:
1. | KEEP | Сохраняет величины для последующего использования. |
2. | OUTPUT | Посылает переменные, строки, прочие константы, и управляющие символы (например, NEW_LINE_IS) в выходной файл. |
3. | PRINT, PRINT1…PRINT10, PRINT0 | Посылает переменные, строки и прочие константы на экран и в файл с расширением msg или файлы с заданным расширением (заданы в файле def). |
4. | Assignment (=) | Оператор присваивания значения переменной. |
5. | IF_SET, ELSE, END_IF | Оператор условия. Функция (например, OUTPUT) будет выполнена, если условие верно. Если же условие не верно, то выполняется оператор после ELSE. |
6. | IF_EXISTS, ELSE, END_IF | Этот оператор проверяет наличие параметров TOOL/CYCLES заданных пользователем. |
7. | REPEAD, UNTIL | Многократное выполнение функций пока условие оператора истинное. |
8. | SET_ON, SET_OFF | Устанавливает статус модальной переменной на 'on' или 'off'. |
9. | CALL | Вызывает внешнюю программу на выполнение. |
10. | CONVERT | Преобразование формата переменной. |
11. | CUT_FILE | Делим файл и вывод продолжается в новый файл если значение данной переменной SET_ON. |
Ниже эти функции рассмотрены более подробно.
Пример: FEED:
KEEP MCH_FEED;
Функция получает и сохраняет значение переменной. Суть в том, что в системе имеется множество переменных, но активизируются (т.е. получают значения) только те которые вам необходимы и это выполняется данной функцией. Иногда даже если на первый взгляд вам в данный момент переменная не нужна все же желательно ее активизировать, для последующего спользования. В функции можете использовать список переменных
Параметр ALL_VAR при использовании в данной функции получает все системные переменные и переменные пользователя.
Функция выводит переменные, строки, спец.символы в выходной файл. Когда переменная послана на вывод и если она модальная ее статус устанавливается на 'off'.
Пример: TOOL CHANGE:
OUTPUT ! TOOL_NAME;
В примере в функции отрабатывается спец.символ и переменная TOOL_NAME. Спец.символ определяет параметр NEW_LINE_IS.
В функции можете использовать список переменных.
Функция PRINT действует аналогично OUTPUT.
Эта функция использует те же параметры и также меняет модальный статус переменной. Однако функция PRINT посылает данные на экран и в файл с именем <part name>.<tool path 1>. msg.
Переменные, которые должны быть выведены функцией PRINT, не должны использоваться в функции OUTPUT. В функции можете использовать список переменных.
Пример: TOOL CHANGE:
OUTPUT ! TOOL_NAME;
PRINT "Milling tool “ TOOL_NAME “is installed.”;
В приведенном примере выше примере после вывода переменной TOOL_NAME в выходной файл на экране отобразится сообщение "Milling tool " TOOL_NAME "is installed." и будет создан файл msg с соответствующим сообщением. Но это сработает, если переменная TOOL_NAME объявлена как немодальная. Если переменная TOOL_NAME модальная то после вывода ее значения в выходной файл, ее статус изменится на 'off' и она будет проигнорирована в функции PRINT.
Аналогично функции PRINT работают и функции PRINT1…PRINT10, за исключением того что информация выводиться не в файл с расширением msg, а в файлы <part name>.<tool path 1>.<extension>, где <extension> расширение, заданное в настройках файла def (по умолчанию pr1…pr10).
Функция PRINT0 аналогична функции PRINT за исключением того, что посылает данные всегда в файл print0.txt в текущем каталоге.
Знак равенства используется для присваивания значения переменной. Знак равенства должен быть записан с пробелами до и после него. Только один оператор присваивания должен быть записан в строке.
Пример1:HVAL = CURR_TOOL + 50 ;
Пример2:SEQUENCE = SEQUENCE + SEQINCR ;
Пример3: X = "A string of_characters.";
В примере 1 обычное арифметическое действие и его результат присваивается переменной HVAL.
В примере 2 значение переменной SEQUENCE увеличивается на значение переменной SEQINCR.
В примере 3 переменная Х принимает значение символьной строки, но без пробелов (т.е. "Astringof_characters").
Когда в результате операции присваивания модальная переменная изменяет значение, ее статус изменяется на ‘on’. Тем не менее, если же значение все-таки остается неизменным статус не изменяется.
Примечание:
Все переменные стоящие справа от знака равенства должны быть одного формата.
Пользователь сам несет ответственность за всевозможные коллизии в математических операциях, как например деление на ноль.
Для исключения деления на ноль можно использовать оператор IF_SET.
Пример: IF_SET (X _GT_ O) Y = A/X ;
END_IF ;
Иногда выполнения операции зависит от, того имеет, ли статус переменной значение 'on', т.е. обновлена переменная или нет или от некоего логического условия. Эти условия могут проверяться оператором IF_SET.
Также данный оператор предусматривает альтернативный вариант действия в случае не выполнения основного условия, например статус модальной переменной 'off' или невыполнения логического условия. Это осуществляется параметром ELSE.
Оператор IF_SET должен заканчиваться параметром END_IF.
Пример1: IF_SET (X_CURPOS) OUTPUT $ "X" X_CURPOS ; END_IF ;
Пример2: IF_SET (X_CURPOS) OUTPUT $ "X" X_CURPOS ;
ELSE X = X + 1 ;
END_IF ;
В примере 1 если переменная X_CURPOS имеет статус 'on' будет осуществлена команда вывода OUTPUT, если статус переменной X_CURPOS 'off' то вывод не будет выполнен. Во втором случае если статус переменной 'off' то выполниться утверждение ELSE, т.е. Х увеличиться на 1.
Любое из приведенных ниже логических условий может использоваться в операторе IF_SET:
(переменная _EQ_ переменная) | ДА, если две переменные идентичны. |
(переменная _NE_ переменная) | ДА, если две переменные не идентичны. |
(переменная _GT_ переменная) | ДА, если первое число больше второго. |
(переменная _LT_ переменная) | ДА, если первое число меньше второго. |
(переменная _LE_ переменная) | Да, если первое число меньше или равно второму. |
(переменная _GE_ переменная) | Да, если первое число больше или равно второму. |
Примечание:
Сравнение символьных переменных не поддерживается. Если же надо проверить символьную
переменную, то ее надо сравнивать непосредственно со строкой текста. Например: IF_SET (FILE _EQ_ "any_file"). При
сравнение строк учитывается регистр и пробелы.
Не рекомендуется производить сравнивание переменных различных форматов.
Пример: IF_SET (X _EQ_ Y)
OUTPUT \J “X & Y = “ X_CURPOS ;
ELSE
OUTPUT \J “X = “ X_CURPOS “ Y = “ Y_CURPOS ;
END_IF ;
В примере если две перемененные X и Y равны( например, 1234), то вывод будет выглядеть так: "X&Y=1234" . Если не равны (например, 1234 и 45), то вывод будет выглядеть так: "X=1234 Y=45".
Сравнение производиться в два шага:
Шаг первый:
Контроль на равенство переменных.
Это выполняется для всех логических условий: EQ, NE, GT, LT, GE, LE
Сравнение двух переменных:
Две строки сравниваются непосредственно. При сравнении двух переменных различных форматов результат может быть неожиданным.
Пример: DFPOST FORMAT:
USER_1: 3,3,3,3,NO,NO,....
USER_2: 4,4,4,4,NO,NO,....
.exf file:
FORMAT (USER_1) A ;
FORMAT (USER_2) B ;
A = 1.123 ;
B = 1.123 ;
IF_SET (A _EQ_ B)
OUTPUT \J A " равно" B ;
ELSE
OUTPUT \J A " НЕ равно" B ;
END_IF ;
При компиляции файла exf будет выдано следующие предупреждение, сообщающее о том, что в операторе сравнения используются переменные различных форматов и результат может быть не корректным:
***WARNING IN LINE 18
IF_SET (A _EQ_ B)
MIXED FORMATS ARE USED IN ONE EXPRESSION
RESULT MAY BE INCORRECT.
Выходной файл будет выглядеть так: 1.123 НЕ равно 1.123.
Сравнение переменной с числом:
Переменная округляется согласно своего формата типа и затем сравнивается с числом.
Шаг второй:
Если переменные не равны, то они сравниваются с двойной точностью для определения большего из них.
Операторы IF_SET могут содержать другие входящие операторы IF_SET, как в примерах ниже:
Пример:
IF_SET IF_SET
IF_SET
IF_SET
END_IF
END_IF
END_IF END_IF
Оператор проверяет, существует ли заданная переменная TOOLS/CYCLES и корректна ли она описана в файле user.def.
Пример:
IF_EXISTS ($MAXSPEED)
IF_SET (SPIN_SPEED _GT $MAXSPEED)
SPIN_SPEED = $MAXSPEED;
END_IF;
END_IF;
Если есть необходимость выполнить команду или группу команд многократно пока какое-либо условие выполняется, то используйте оператор REPEAT…UNTIL.
Команды записываются после слова REPEAT, условие выполнения команд записывается после слова UNTIL. В качестве условий могут использоваться логические условия описанные в операторе IF_SET. В случае использования переменной команды будут выполнены при статусе переменной 'on'.
Пример:CIRCULAR MOTION:
…
…
IND = 0 ;
XNEW = X_CURPOS ;
YNEW = Y_CURPOS ;
REPEAT
IND = IND + 1 ;
XNEW = XNEW + XDEL ;
YNEW = YNEW + YDEL ;
OUTPUT $ LIN_MOV ;
IF_SET (XNEW) OUTPUT .X. XNEW ; END_IF ;
IF_SET (YNEW) OUTPUT .Y. YNEW ; END_IF ;
UNTIL (IND_EQ_NSEG) ;
В примере команды будут выполняться пока переменна IND не сравняется с NSEG.
Иногда приходиться принудительно изменять статус ‘on/off’ переменной. Например, переменную надо послать в выходной файл, даже если ее значение не изменилось с тех пор, как она была послана в выходной файл последний раз (т.е. статус все еще 'off'). SET_ON служит для установки статуса 'on', SET_OFF для установки статуса 'off'.Вы можете использовать список переменных в операторе.
Можете использовать параметр ALL_VAR для смены статуса у всех переменных сразу.
Пример1:SET_ON X_ENDPT Y_ENDPT Z_ENDPT ;
Пример2:SET_ON ALL_VAR ;
Пример3:SET_OFF X_CURPOS ;
В примере 1 у трех переменных статус устанавливается на 'on'. В примере 2 статус всех переменных становиться 'on'. В примере 3 статус переменной устанавливается 'off'.
Функция CALL может использоваться для запуска внешней программы. Вплоть до 50 вызовов программ может присутствовать в файле постпроцессора. Эта функция полезна когда необходимо осуществить какие-нибудь расчеты. Вы можете вызвать расчетную программу, передав ей параметры для расчета и получив результаты расчета по окончанию выполнения сторонней программы.
В функции CALL в качестве параметров указывается имя программы в кавычках, список передаваемых переменных (INPAR) и список получаемых параметров (OUTPAR). Тип передаваемых и получаемых переменных надо определить в начале файла exf.
Пример:FORMAT (COORDINATES) XLAST YLAST ;
FORMAT (CHARACTER) CHAR1 ;
FORMAT (USER_1) FACTOR ;
FORMAT (USER_2) RESLT ;
…
…
LINEAR MOTION:
OUTPUT $ LIN_MOV ;
XLAST = X_CURPOS ;
YLAST = Y_CURPOS ;
FACTOR = 100 ;
CALL "PROG1" INPAR XLAST YLAST FACTOR ;
OUTPAR RESLT FACTOR CHAR1 ;
OUTPUT $ " The result of the calculation is "CHAR1 ;
OUTPUT $ RESLT “ “ FACTOR ;
…
…
В примере когда в траектории инструмента встретится прямолинейное движение (LINEAR MOTION), после выполнения одного вывода в файл и трех операций присваивания, будет вызвана на выполнение внешняя программа PROG1. Этой программе в качестве входных параметров будет переданы значения трех переменных XLAST, YLAST и FACTOR. Результаты выполнения программы PROG1 будут получены в три переменные CHAR1, RESLT и FACTOR. После выполнения программы PROG1 будут выполнены две операции вывода в файл.
Примечание:
- Максимальная длина имени передаваемых и получаемых переменных INPAR/OUTPAR 6 символов,
согласно ограничениям FORTRAN.
- В качестве передаваемых и получаемых переменных могут использоваться системные
переменные, если их длина не превышает вышеуказанных ограничений.
- В функции CALL не должны использоваться вычисления.
Функция округления с двойной точностью и контроля десятичных цифр.
Синтаксис: CONVERT INVAR OUTVAR NUM ;
Входные параметры (INVAR) – любая переменная в файле exf (например, X_CURPOS, MYVAR)
Выходные параметры (OOUTVAR) – любая (включая входную) переменная в файле exf. Эта переменная будет равняться входной переменной округленной до NUM цифр после запятой.
NUM – количество десятичных цифр.
Все переменные должны быть определены заранее
Рекомендации по использованию:
Поскольку вычисления в постпроцессоре должны быть по возможности более точными, то не рекомендуется использовать CONVERT для таких переменных, как например углы поворота, масштабные коэффициенты.
В некоторых же случаях расчеты должны выполняться с переменными в том виде в котором они будут переданы станку.(например расстояние между двумя точками). В этих случаях надо использовать CONVERT для преобразования внутреннего представления переменной к их выходному формату.
Пример: расчет расстояния между координатами станка:
DFPOST FORMAT: 3,3,3,3,YES,YES
Без CONVERT
Координаты траектории | Внутренние представление | G-код | |
XOLD | 100.0004 | 100.00040 | 100.000 |
XNEW | 109.9996 | 109.99960 | 110.000 |
XNEW-XOLD | 9.9992 | 9.99920 | 9.999 |
С CONVERT:
CONVERT XOLD XOLD N ;
CONVERT XNEW XNEW N ;
Координаты траектории | Внутренние представление | G-код | |
XOLD | 100.0004 | 100.00000 | 100.000 |
XNEW | 109.9996 | 110.00000 | 110.000 |
XNEW-XOLD | 9.9992 | 10.0000 | 10.0000 |
Ограничения:
Функция работает только с переменными, в которых общее количество цифр не более 9. Общее количество цифр: Максимальное количество цифр целой части + максимальное количество цифр дробной части.
Замечания переводчика:
Эта функция влияет только на внутреннее представление переменных. Обычно все переменные представлены
в максимальной точности и при выводе в выходной файл они округляются (при необходимости) и приводятся к
формату заданного типа. Так вот функция CONVERT позволяет изменить внутреннее представление переменной, приведя
его в соответствие к формату типа данной переменной.
Переменная CUT_FILE позволяет вам делить выходной G-кодов на несколько файлов. Этот принцип работает так же как деление файла по максимальному количеству кадров (см.параметры файла dxf). Различие лишь в том что деление может быть осуществлено в любом месте программы (например, траекторию каждого инструмента в отдельный файл). Если значение переменной SET_ON будет произведено деление файла.
Использование данного механизма деления подразумевает использование блоков:
BEGINNING OF TAPE:
AFTER CUT:
END OF TAPE:
BEFORE CUT:
В случае применения для фрезерования стратегий PROFILE, POCKET или CLEAR многократно применяются идентичные перемещения инструмента. В данных случаях выходной файл может быть сокращен по средствам применения подпрограмм.
Важное замечание:
Подпрограммы не могут использоваться при применении других стратегий обработки.В этих других стратегиях все
повторяющиеся строки кода записываются всякий раз при выполнении.
Для создания подпрограмм для процедур PROFILE, POCKET или CLEAR вам надо записать блок SUBROUTINE CALL в файл exf постпроцессора.
Если данный блок будет отсутствовать, то выходной файл будет включать все строки кода для каждого слоя.
Если блок SUBROUTINE CALL присутствует, то будет записан первый слой в подпрограмме. Последующие слои уже не будут никуда писаться.
Подпрограммы могут быть записаны в конце основного файла G-кодов в порядке их создания или в отдельных файлах подпрограмм. Вопрос номер 3 в 1 разделе ответов на вопросы при создании файла def отвечает за то, будут ли создаваться отдельные файлы или нет. Если вы выберите вариант создания новых файлов, то система будет создавать файл постпроцессора с расширением, состоящим из символа S и числа. Числа назначаются в порядке создания подпрограмм.
Пример: Выходной файл: <part>.<tool path>.<post-processor>
Первая подпрограмма: <part>.<tool path>.<post-processor>.S1
Вторая подпрограмма: <part>.<tool path>.<post-processor>.S2
В блоке SUBROUTINE CALL могут записываться различные команды. Они будут выполнены в основной программе перед созданием подпрограммы.
Команды, которые надо выполнить в начале подпрограммы записываются в блоке BEGINNING OF SUB.
Команды, которые надо выполнить в конце подпрограммы записываются в блоке END OF SUB.
Команды, которые надо выполнить в основной программе после возвращения из подпрограммы записываются в блок SUBROUTINE RETURN:
Пример: SUBROUTINE CALL:
SUBNUM = SUB_NUMBER + 7999 ;
OUTPUT $ " G65 P" SUBNUM " Z" LAYER_Z ;
BEGINNING OF SUB:
SUBFLG = 1 ;
SET_ON ZDM ;
OUTPUT "%" ;
OUTPUT \J "O" SUBNUM ;
OUTPUT $ " G90 G" ZDM ;
SET_ON MCH_FEED ;
OUTPUT $ " G1 Z#26 F" MCH_FEED ;
END OF SUB:
OUTPUT $ " G40" $ " M99" ;
SUBFLG = 0 ;
SUBROUTINE RETURN:
SET_ON LIN_MOV CIRC_MOV MCH_FEED ;
SET_ON X_CURPOS Y_CURPOS Z_CURPOS ;
Примечание:
Подпрограммы не создаются в следующих случаях:
- в процедурах которые вручную редактировались.
- процедуры PROFILE и POCKET с углом наклона DRAFT ANGLE
- процедура PROFILE с заданной шириной заготовки STOCK WIDT
- процедура PROFILE со смешанным направлением обработки B-DIRECTION
- системная переменная NO_SUBROUT установлена как SET_OFF.
Системные флаги служат для управлением процедурой создания файлов G-кодов. Системные флаги могут принимать значение SET_ON или SET_OFF или принимать определенное значение и влиять на процесс создания файла G-кодов.
Системный флаг(переменная) | Значение по умолчанию | Блоки действия | Применение |
CIR_INTERP | SET_ON | ORIGIN CHANGE: BEGINNING OF TAPE: |
Если значение SET_OFF то все радиальные перемещения будут разбиты на линейные перемещения согласно точности определенной в файле def |
NO_SUBROUT | SET_OFF | ORIGIN CHANGE: BEGINNING OF TAPE: |
Если SET_ON то подпрограммы создаваться не будут |
TRANS_MATX TRANS_MATY TRANS_MATZ |
0.0 | ORIGIN CHANGE: BEGINNING OF TAPE: TOOL CHANGE: |
Соответствующие значения будут добавлены к координатам перед выводом их в файл G-кодов |
ROT_MAT1 ROT_MAT2 ROT_MAT3 ROT_MAT4 ROT_MAT5 ROT_MAT6 ROT_MAT7 ROT_MAT8 ROT_MAT9 |
1,0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 |
ORIGIN CHANGE: BEGINNING OF TAPE: |
Матрица вращения умножает соответствующие координаты перед выводом их в файл G-кодов |
CUT_FILE | SET_OFF | ВСЕ БЛОКИ | Если SET_ON то выходной файл разбивается. |
Блок | Переменная | Описание |
ВСЕ БЛОКИ | CUT_FILE | Если SET_ON то выходной файл разбивается. |
BLOCK_NUM | Текущий номер блока в TP_LIST | |
DBL_QUOTE | Символ кавычки " | |
AXIS CHANGE: (смена осей) |
AXIS_NUM | Количество осей используемое в текущей процедуре |
BEGINNING OF PROC: (начало процедуры) |
ANGLE_INCR | Приращение угла Процедуры: CLEANUP, SRFPKT, ZCUT. |
BET_LAYERS | Обработка между слоями=1 Без обработки между слоями=0 Процедура: WCUT |
|
BY_SCALLOP | По гребешку=1 По 2D шагу в бок=0 Процедуры:(параллельные проходы) CLEANUP, SRFPKT, WCUT (между слоями) |
|
CHECK_OFST | Офсет к контрольной поверхности | |
CHECK_OFST2…6 | Офсет к контрольной поверхности#2…#6 | |
CHECK_TOL | Допуск на контрольную поверхность Процедуры: CLEANUP, 3D_STEP, PLUNGE_MILL, SRFPKT, SRFPRF, SURCLR, SURMILL, WCUT, ZCUT. |
|
CIR_INTERP | Интерполяция круговых перемещений. On=круговая интерполяция (по умолчанию) Off=линейная интерполяция |
|
CONT_OFST | Офсет к первому контуру Процедуры: CLEANUP, 3D_STEP, POCKET, PROFILE, PLUNGE_MILL, SRFPKT, SRFPRF, WCUT, ZCUT. |
|
CONT_TOL | Точность контуров Процедуры: ROUGH_5X, CLEANUP, CURVE_MX, POCKET, PROFILE, RULED_MX, SRFPKT, SRFPRF, SURCLR, WCUT, ZCUT. |
|
DEL_Z_UP | Значение DEL_Z_UP в процедурах CLEANUP, CURVE_MX, 3D_STEP, POCKET, PROFILE, RULED_MX, SRFPKT, SRFPRF, SURCLR, SURMILL, WCUT, ZCUT. | |
DIAM_OFFS | Значение офсета диаметра в процедурах Pocket и Profile с автоматическим сверлением | |
DOWN_STEP | Значение DOWN_STEP (шаг в низ) в процедурах CLEANUP, CURVE_MX, POCKET, PROFILE, PLUNGE_MILL, RULED_MX, WCUT, ZCUT. | |
END_ANGLE | Конечный угол Процедуры: CLEANUP, SRFPKT, ZCUT. |
|
I_START J_START K_START |
I, J и K компоненты вектора, который описывает начальное положение оси инструмента в проволочной резке и 5-и осевом фрезеровании | |
LEAD_ANGLE | Ведущий угол Процедуры: SURCLR, SURMILL. |
|
MCH_MODE | Описывает режим обработке в заданной процедуре. 0-фрезерование; 1-сверление; 3-специальный (автом.сверление с циклом фрезерования резьбы) | |
MILL_ANGLE | Угол фрезерования Процедуры:(когда не используется радиальная обработка) CLEANUP, PLUNGE_MILL, SRFPKT, WCUT, ZCUT. |
|
MIN_CLRLN | Минимальная безоп.длина инструмента (вылет) -1=значение задано, но не учитывается. -2=значение не задано. Процедуры: Rough Parallel, Rough Spiral, ReRough, Finish Mill All, Finish Mill By Limit Angle, Finish Horiz. Planar Areas, Cleanup и Pencil. |
|
MOVMNT_NUM | Номер блока (кадра) перемещений в текущей процедуре (не корректно отрабатывает при использовании подпрограмм, квадрантов и линейной аппроксимации дуг) | |
NOM_FEED | Номинальный показатель подачи. | |
NUM_CONT | Количество контуров. | |
NUM_CSRF | Количество контрольных поверхностей. Учитываются все группы контрольных поверхностей. | |
NUM_LAYERS | Количество слоев в процедуре. Только движения фрезерования. 0=нет слоев. | |
NUM_P2SRF | Количество поверхностей PART2 (детали2) | |
NUM_P3…6SRF | Количество поверхностей PART3…6 | |
NUM_PASS | Количество проходов. Процедуры: ROUGH_5X, CLEANUP, CURVE_MX, RULED_MX, SURCLR, SURMILL. |
|
NUM_PSRF | Количество поверхностей PART (детали) | |
NUM_SPRING | Количество проходов резьбы | |
ORBIT_OFS | Значение офсета орбиты Процедура: WCUT |
|
OSIDE_STEP | Между слоями / Шаг в бок. Процедура: WCUT |
|
PART_OFST | Офсет к поверхностям детали Процедуры: ROUGH_5X, CLEANUP, CURVE_MX, 3D_STEP, PLUNGE_MILL, RULED_MX, SRFPKT, SRFPRF, SURCLR, SURMILL, WCUT, ZCUT. |
|
PART_OFST2…6 | Офсет к поверхностям детали#2…#6 | |
PART_TOL | Точность поверхностей детали Процедуры: ROUGH_5X, CLEANUP, 3D_STEP, PLUNGE_MILL, RULED_MX, SRFPKT, SRFPRF, SURCLR, SURMILL, WCUT, ZCUT. |
|
PLATFORM_ | Тип платформы: DOS, NT, SUN, SGI, HP | |
PRC_UCSN1…13 | Имя СКП процедуры (256 символов) Примечание: в случае выполнения процедур трансформации, где СКП создаются автоматически, имена созданных СКП генерируются автоматически U_1, U_2 и т.д. |
|
PROC_CMNT | Комментарий процедуры | |
PROC_NAME | Имя текущей процедуры (например, PROFILE, DRILL) | |
PROC_NUM | Уникальный номер процедуры, присваиваемый ей системой в момент создания. Не может быть изменен пользователем. В каждой траектории номер ре-инициализируется. | |
PROC_SCLP | Гребешок Процедуры: CLEANUP, CURVE_MX, RULED_MX, SRFPKT, SURCLR, SURMILL, 3D_STEP |
|
PROC_TRJ | Тип Parallel/Spiral/Radial. Процедуры: POCKET, CLEANUP, PLUNGE_MILL, SRFPKT, WCUT, ZCUT. |
|
PUP_BOOL1…6 | Параметр пользователя: булева переменная (Boolean) | |
PUP_INT1…6 | Параметр пользователя: целая переменная (Integer) | |
PUP_COMBO1…6 | Параметр пользователя: список выбора (Dropdown list (Combo)) | |
PUP_FLOAT1…6 | Параметр пользователя: переменная типа REAL, не зависимая от ед.измерения, например, угол. | |
PUP_UDFLT1…6 | Параметр пользователя: переменная типа REAL, зависимая от ед.измерения, например, дистанция. | |
RGH_FIN | Только черновое=1 Черновое+Чистовое=2 Только чистовое=3 Процедура: CLEANUP, POCKET, SRFPKT, WCUT |
|
SIDE_STEP | Значение шага в бок в процедуре Процедура: CLEANUP, CURVE_MX, POCKET, PLUNGE_MILL, SRFPKT, SURCLR, SURMILL, WCUT, ZCUT, PROFILE, SRFPRF, 3D_STEP. |
|
START_ANGL | Начальный угол Процедура: (радиальная обработка) CLEANUP, SRFPKT, WCUT, ZCUT. |
|
STK_WIDTH | PROFILE – ширина заготовки Процедуры: PROFILE, SRFPRF |
|
TILT_ANGLE | Угол наклона Процедуры: SURCLR, SURMILL. |
|
TRANSF_NUM | Количество трансформаций | |
UNIBI_DIR | Unidir/Bidir (направление фрезерования в одну сторону/в обе стороны) Процедуры: ROUGH_5X, CLEANUP, CURVE_MX, POCKET, PROFILE, PLUNGE_MILL, RULED_MX, SRFPKT, SRFPRF, SURCLR, SURMILL, WCUT, ZCUT. |
|
WITH_STOCK | С/без заготовки Процедура: WCUT |
|
X_INTER Y_INTER Z_INTER |
Промежуточные точки | |
X_START Y_START Z_START |
Текущая (начальная) позиция в оригинальной СКП траектории | |
Z_DOWN | Значение Z_DOWN Процедуры: POCKET, PROFILE, PLUNGE_MILL, WCUT, ZCUT. |
|
Z_UP | Значение Z_UP Процедуры: POCKET, PROFILE, PLUNGE_MILL, RULED_MX, WCUT, ZCUT. |
|
BEGINNING OF SUB: (начало подпрограммы) |
||
BEGINNING OF TAPE: (начало ленты) |
CURR_ORIG | Начальный номер в контролере ЧПУ на который запишется текущее значение |
DATE_SDD | Текущая дата: день | |
DATE_SMM | Текущая дата: месяц | |
DATE_SYY | Текущая дата: год | |
ETERNET_ID | ID локального компьютера в Интернете (физический адрес Интернет адаптера – используется для лицензирования) | |
EXT_POST | Внешний/внутренний постпроцессор | |
FACTOR_ | Переменная FACTOR из файла def. | |
IMS_PRJN1…13 | Путь для проекта IMS (256 символов) Параметр IMS Post |
|
I_ORIGIN J_ORIGIN K_ORIGIN |
I, J и K компоненты вектора, который описывает начальное положение оси инструмента в проволочной резке и 5-и осевом фрезеровании для активной системы координат в начальной корд.системы траектории. | |
MACSYS_NAM | Имя MACSYS | |
NODE_ID | NODE_ID рабочей станции | |
NUM_ORIGS | Количество СКП во всех траекториях | |
PART_NAME | Имя детали | |
PART_NAM2…13 | Имя детали (256 символов) | |
PART_PATH | Путь к детали, без имени детали (1-20 символы) | |
PART_PATH2 | Путь к детали, без имени детали (21-40 символы) | |
PART_PATH3 | Путь к детали, без имени детали (41-60 символы) | |
PART_PATH4…13 | Путь к детали, без имени детали (256 символов) | |
PFM_UNITS | Единицы измерения PFM | |
PLATFORM_ | Тип платформы: DOS, NT, SUN, SGI, HP | |
POST_NAME | Имя текущего постпроцессора | |
TIME_SHH | Текущее время: часы | |
TIME_SMM | Текущее время: минуты | |
TIME_SSS | Текущее время: секунды | |
USER_NAME | Имя пользователя | |
X_HOME Y_HOME Z_HOME |
Начальная позиция в активной системе координат | |
X_MACH Y_MACH Z_MACH |
Машинный ноль, заданный переменными взаимодействия в начальном диалоге постпроцессора. | |
X_ORIGIN Y_ORIGIN Z_ORIGIN |
Начало активной СК в начальной СК траектории. | |
BEGINNING OF TOOLPATH: (начало траектории) |
TP_CMNT | Комментарий траектории |
TP_CMNT2...4 | Комментарий траектории (256 символов) | |
TP_NAM1…13 | Полное имя траектории (256 символов) | |
TP_NAME | Имя траектории | |
TP_TYPE | Тип траектории: MILL, LATHE, WIRE, PUNCH | |
TP_UCSN1…13 | Имя СКП траектории (256 символов) | |
TP_UCSNUM | Начальный номер в контролере ЧПУ на который запишется текущее значение | |
TP1_TYPE | Подтип траектории | |
TPNM_LOWER | Имя траектории в верхнем регистре | |
CIRCULAR MOTION: (круговые перемещения) |
CIRC_MOV | Код кругового перемещения был установлен в разделе 8, вопрос 1 - по часовой стрелке вопрос 2 - против часовой стрелки.(файл def) |
ABS_ANG | (ST_ANG + ARC_ANG). | |
ARC_ANG | Угол дуги в градусах | |
ARC_PLN | Плоскость дуги:XY = 1, XZ = 2, YZ = 3. | |
CIRC_APPRX | Коды кругового перемещения, то флаг nc_circ_approx=1; В других случаях = 0 | |
CIRC_TOL | Допуск линейной аппроксимации дуг (перезаписывает значение, заданное в файле def) | |
END_ANG | Конечный угол в градусах .(0 < END_ANG < 360) | |
RADIUS_ | Радиус дуги | |
ST_ANG | Начальный угол дуги | |
X_CENTER Y_CENTER Z_CENTER |
Центр дуги в активной системе координат | |
X_CURPOS Y_CURPOS Z_CURPOS |
Текущая позиция в активной СК | |
X_ENDPT Y_ENDPT Z_ENDPT |
Конечная точка в активной СК | |
COOLANT: (охлаждение) |
MCH_COOL | Код охлаждения заданный в файле def (раздел 6, вопрос 4, 5, 6, & 7) |
CUTTER COMPENSATION: (компенсация инструмента) |
CUTCOM_OFF | Код выключения компенсации инструмента в файле def (раздел 8, вопрос 9) |
CUTCOM_ON | Код включения компенсации инструмента в файле def (раздел 8, вопрос 10-влево, 11-вправо), | |
CYCLE: (циклы) |
CYC_2PLN | Не используется |
CYC_CLEAR | Цикл подчистки – координата Z в подчищаемой плоскости. | |
CYC_CODE | Код цикла в файле def (раздел 9) | |
CYC_DEPTH | Cycle depth coordinate value. | |
CYC_DWELL | Cycle dwell time in hundredths of a second. | |
CYC_DZINIT | The DRILL procedure DEL INIT value | |
CYC_PECK | Cycle PECK value. | |
CYC_REDUC | Cycle DECREASE value. | |
CYC_RETR | Код цикла отхода | |
CYC_TIMES | Number of times to peck | |
CYC_XSHFT | Цикл смещения по оси X | |
CYC_YSHFT | Цикл смещения по оси Y | |
CYCLE_1..12 | Количество активных циклов | |
CYCLE_SUB | Если значение параметра 14 то это цикл резьбофрезерования, иначе повторение предыдущего цикла. | |
CYCLE: SPECIAL: | В дополнение к вышеописанным параметрам цикла | |
TRD_APRFED | Скорость подхода, как % от нормальной подачи. Актуально только при CYCLE_SUB=14 Безразмерная единица |
|
TRD_CLIMB | Направление резания: 1: Снизу-вверх 2: Сверху-вниз 3: Сверху-вниз с подъемом – специальный режим применяется только при "threads-per-step" >1. |
|
TRD_NOMD | Номинальный диаметр резьбы. Тип REAL, зависит от ед.измерения, >0 |
|
TRD_PITCH | Шаг резьбы Тип REAL, зависит от ед.измерения, > -9999 (+=правая; -=левая) |
|
TRD_STEP | Витков резьбы за смешение инструмента вдоль оси (зубов на пластине). Целое число >=0. 0= один виток 360град. (метчик) >1=количество зубчиков, инструмент смещается на Шаг резьбы умноженный на количество зубцов. |
|
TRD_STRANG | Угол начала захода резьбы. Тип Real, безразмерная, между -360 и +360 |
|
TRD_INTERN | TRUE_ – внутренняя резьба; FALSE_ –внешняя резьба. В GPP2 параметр называется RD_INTERNAL |
|
TRD_STKWID | Ширина заготовки. Будет создано несколько проходов с постепенным приближением к нужному диаметру. Для внутренней резьбы
начнет с меньшего диаметра с увеличением к номиналу, для наружной с большего диаметра. В GPP2 параметр называется TRD_STOCK_WIDTH |
|
TRD_SIDEST | Боковой шаг между проходами. Имеет значение если TRD_STKWID не ноль. В GPP2 параметр называется TRD_SIDE_STEP |
|
TRD_APRRAD | Радиус входа в спираль резьбы. Актуальный радиус может быть меньше, если нет соответствия инструмента и отверстия (только для
внутренней резьбы). При значении 0 – подход по нормали. В GPP2 параметр называется TRD_APR_RADIUS |
|
TRD_TPRANG | Угол конусной резьбы. Всегда положительный. Номинальный диаметр – верхний диаметр. В GPP2 параметр называется TRD_TAPERED_ANG |
|
TRD_CUTCOM | Флаг компенсации инструмента: 0 – выключена 1 – включена, для траектории по вершине инструмента 2 – включена, для траектории по геометрии (только для CimatronE 10 и выше) В GPP2 параметр называется TRD_CUTTER_COMP |
|
TRD_LINTOL | Если дуги преобразованы в линейные перемещения определяет точность (максимальное расстояние между дугой и линией). Значение
по умолчанию 0,01мм. В GPP2 параметр называется TRD_LIN_TOL. |
|
TRD_HELAPP | Если TRUE_, то подход касательный по спирали с плавным изменением Z. Если FALSE_ только подход по горизонтали. Значение по умолчанию TRUE_ В GPP2 параметр называется TRD_HELICAL_APPROACH |
|
TRD_HELRET | Если TRUE_, то отход касательный по спирали с плавным изменением Z. Если FALSE_ только отход по горизонтали. Значение по умолчанию TRUE_ В GPP2 параметр называется TRD_HELICAL_RETRACT |
|
DWELL: (задержка) |
MCH_DWELL | Задержка в сотых секунды. |
END OF FILE: (конец файла) |
||
END OF PROC: (конец процедуры) |
N_FED_TIME | Время раб.подачи |
N_FST_TIME | Время ускоренных перемещений | |
N_GEN_TIME | Общее время | |
END OF SUB: (конец подпрограммы) |
||
END OF TAPE: (конец ленты) |
||
FEED: (подача) |
MCH_FEED | Подача в миллиметрах в секунду |
GROOVE CYCLE: | Не использовал, по этому не знаю что это такое… | |
INSERT WITH (SEQUENCING): INSERT WITHOUT (SEQUENCING): |
INS_STR | Вставляемая строка |
LINEAR MOTION: (линейные перемещения) |
LIN_MOV | Код линейного перемещения был установлен в разделе 7, вопрос 1 в файле def. |
COMP_3X | 3-D компенсация инструмента | |
I_COORD J_COORD K_COORD |
I, J и K компоненты вектора, который описывает направление проволоки в проволочной резке и направление оси инструмента в 5-и осевом фрезеровании. | |
LINE_ANG | Угол линии относительно оси X | |
LINE_LENG | Длина прямолинейного участка | |
MI_COORD | I компонент матрицы трансформации Post MACSYS в оригинальную MACSYS. | |
MJ_COORD | J компонент матрицы трансформации Post MACSYS в оригинальную MACSYS. | |
MK_COORD | K компонент матрицы трансформации Post MACSYS в оригинальную MACSYS. | |
SRF_NORX SRF_NORY SRF_NORZ |
X,Y и Z нормали к поверхности | |
X_CURPOS, Y_CURPOS, Z_CURPOS |
Текущая позиция в активной СК | |
MESSAGE: (сообщение) |
MESS_STR | Строка с сообщением |
NURBS MOTION: (перемещения nurbs) |
Коды nurbs движений определялись в файле def (раздел 9, вопрос 1) | |
CNTRL_NUM | Количество контрольных точек сплайна. | |
CNTRL_X CNTRL_Y CNTRL_Z |
Координаты контрольной точки сплайна | |
KNOT_ | Значение узла контрольной точки | |
NRB_INTERP | Режим интерполяции сплайна | |
NURBS_DEG | Степень текущего сплайна | |
NURBS_MOV | Код сплайнового перемещения | |
NURBS_TOL | Точность текущего сплайна | |
WEIGHT_ | Вес контрольной точки | |
ORIGIN CHANGE: (смена начала) |
CIR_INTERP | Интерполяция круговых движений On – круговая интерполяция (по умолчанию); Off – линейная интерполяция. |
CURR_ORIG | Начальный номер в контролере ЧПУ на который запишется текущее значение | |
INV_MAT1…9 | Матрица обратная оригинальной матрице – обновляется вместе с оригинальной. | |
I_ORIGIN J_ORIGIN K_ORIGIN |
I, J, K единичного вектора оси Z СКП | |
IX_ORIG JX_ORIG KX_ORIG |
I, J, K единичного вектора оси X СКП | |
MI_ORIGIN MJ_ORIGIN MK_ORIGIN |
Начало текущей СКП в координатах macsys, компоненты вектора. | |
MIX_ORIG MJX_ORIG MKX_ORIG |
Изменения в оси X между предыдущей и текущей СКП, компоненты вектора. | |
MX_ORIGIN MY_ORIGIN MZ_ORIGIN |
Координаты текущей СКП в координатах macsys | |
NO_SUBROUT | Режим создания подпрограмм. On – создание подпрограмм разрешено; Off - создание подпрограмм неразрешено. |
|
ROT_MAT1…9 | Матрицы вращения. Значения по умолчанию определяют единичную матрицу. Может переопределяться пользователем. | |
TRANS_MATX TRANS_MATY TRANS_MATZ |
X, Y, Z вектора трансформации. Все переменные типа COORDINATES умножаются на эти величины | |
X_MSYSORGN Y_MSYSORGN Z_MSYSORGN |
X, Y, Z начала главной СК (macsys) Параметр только для CimatronE |
|
X_ORIGIN Y_ORIGIN Z_ORIGIN |
Координаты текущей СК в системе координат MACSYS. | |
SPIN: (шпиндель) |
SPIN_DIR | Код направления вращения шпинделя (раздел 6, вопрос 1 файла def). 1 – по часовой стрелки; 2 – против часовой стрелки; 3- стоп |
SPIN_SPEED | Скорость вращения в оборотах в минуту | |
START STRING: (начало строки) |
SEGMT_NUM | Номер сегмента линии в строке |
SUBROUTINE CALL: (запуск подпрограммы) |
LAYER_Z | Значение Z для текущего слоя |
NUM_LAYERS | Общее число слоев в процедуре. Т.е. сколько раз будет вызвана подпрограмма. | |
SUB_NUMBER | Номер вызываемой подпрограммы. | |
SUBROUTINE RETURN: (возврат из подпрограммы) |
||
THREAD CANNED CYCLE: THREAD CYCLE: |
Блоки для обработки резьбы. Т.к. мне не пришлось заниматься этой темой, то перевод параметров отсутствует. | |
TOOL CHANGE: (смена инструмента) |
Примечание: для возможности обработки повторяющихся деталей при использовании последнего инструмента параметры NEXT_TOOL и NEXT_NAME устанавливаются для первого инструмента. | |
CON_ANG | Угол конуса инструмента | |
CUR_NAM1…12 | Имя текущего инструмента (продолжение имени для CURR_NAME) | |
CURR_NAME | Имя текущего инструмента. Если имя длиннее 20 символов, то продолжение в CUR_NAM1…12 | |
CURR_TOOL | Текущий номер державки | |
E_LENGTH | Расстояние между осью инструмента и центром окружности. | |
E_TOL_TYPE | Форма инструмента согласно таблице: 0 - Ball cutter 1 - Bull nose cutter 2 - Flat cutter 3 - Drill 4 - Reamer 5 - Tap 6 - Center drill 7 - Lollypop cutter 8 - Slot mill (full radius) 9 - Slot mill (sharp corner) 10 - Slot mill (corner radius) 11 - Dove mill (full radius) 12 - Dove mill (sharp corner) 13 - Dove mill (corner radius) 14 - Counter sink |
|
HOLDER_DIA | Диаметр державки. (отриц.диам.= не используется державка) | |
NXT_NAM1…12 | Имя следующего инструмента (продолжение имени для NEXT_NAME) | |
NEXT_NAME | Имя следующего инструмента. Если имя длиннее 20 символов, то продолжение в NXT_NAM1…12 | |
NEXT_TOOL | Номер следующей державки | |
TOOL_CMN1…12 | Продолжение комментария инструмента из TOOL_CMNT | |
TOOL_CMNT | Комментарий инструмента. Если он длиннее 20 символов, то продолжение в TOOL_CMN1…12 | |
TOOL_MAT | Материал инструмента | |
TRANS_MATX TRANS_MATY TRANS_MATZ |
X, Y, Z вектора трансформации. Все переменные типа COORDINATES умножаются на эти величины | |
X_AFTR_TCH Y_AFTR_TCH Z_AFTR_TCH |
Следующие значения X,Y,Z после смены инструмента. Следующая точка в траектории после смены инструмента. | |
CLEAR_LENG | Расстояние между державкой и вершиной инструмента (безоп.длина/вылет) | |
CUT_LENGTH | Длина режущей части инструмента | |
DIA_COMP | Используется когда компенсация инструмента включена | |
DIAMETER_ | Диаметр инструмента | |
FIXT_COMP | Индекс компенсации | |
FREE_LEN | Длина инструмента | |
GAUGE_LEN | Расстояние между вершиной инструмента и точкой вращения | |
GRIP_LEN | Длина хвостовика | |
HLD_CMN1…13 | Комментарий державки | |
HLD_NAM1…13 | Имя державки | |
HOLD_BOT01…10 | Нижний диаметр державки (державка номер 1…10) | |
HOLD_CON01…10 | Высота конуса державки | |
HOLD_NUM | Количество ступеней текущей державки | |
HOLD_TOP01…10 | Верхний диаметр державки | |
HOLD_TOT01…10 | Общая высота державки | |
LENG_COMP | Индекс компенсации длины | |
LIFE_LEN | Время жизни инструмента (стойкость) | |
REF_HIGH | Справочная высота для инструмента спец.формы | |
SHANK_ANG | Угол хвостовика | |
SHANK_BOT | Нижний диаметр хвостовика | |
SHANK_CON | Высота конуса хвостовика | |
SHANK_TOP | Верхний диаметр хвостовика | |
SHANK_TOT | Общая высота хвостовика | |
SHNKANG_ON | Конусный хвостовик | |
SPNDL_BOT | Нижний диаметр шпинделя | |
SPNDL_CON | Высота конуса шпинделя | |
SPNDL_TOP | Верхний диаметр шпинделя | |
SPNDL_TOT | Общая высота шпинделя | |
TEETH_NUM | Число зубьев инструмента | |
TOOL_ANGLE | Угол вершины инструмента | |
TOOL_PID | PID инструмента ( уникальный ID) | |
TOOL_RAD | Радиус вершины инструмента | |
TOOL CHANGE MESSAGE: | ||
TRANSFORMATION: (преобразование) |
TRF_MAT1…9 | Матрицы вращения |
TRF_VECX; TRF_VECY; TRF_VECZ |
Матрицы перемещения вдоль осей X,Y,Z | |
Z SURFACE: | Z_CURPOS | Уровень поверхности сверления |
В заключении несколько слов о GPP2. Основные принципы работы аналогичны работе с GPP. Вместо файла def используется файл df2 и он редактируется специальной утилитой Gpp2_df2_editor. В ней по аналогии с GPP надо так же задать все необходимые параметры и настройки станка и форматы типов данных.
Вместо файла exf в GPP2 используется файл ex2 и для его редактирования используется специальный редактор GPP2_EX2_editor:
Ну и на этом пока закончим…