токарно-
фрезерного
постпроцессора
Оглавление
Редактирование токарно-фрезерного постпроцессора ........................................................ 3
Введение .................................................................................................................................. 3
Новый цикл Исходная позиция и местоположение смены инструмента: как
осуществить в постпроцессоре ............................................................................................. 3
Использование массивов в постпроцессоре ........................................................................... 8
Введение .................................................................................................................................. 8
Как массивы (arrays) работают в постпроцессоре .......................................................... 8
Создание массивов: ex_CycleDefinition против Post_Pass .............................................. 9
Стандартные циклы ................................................................................................................. 13
Введение ................................................................................................................................13
Советы для цикла Цикл 3D Точение. Нарезание Резьбы с постоянным шагом и
установкой Стандартный цикл -Выкл ................................................................................ 16
Советы для Цикла 3D Точение. Нарезание Резьбы с установкой Стандартный цикл -
Однопроходная .....................................................................................................................18
Советы для Цикла 3D Точение. Нарезание Резьбы с установкой Стандартный цикл -
Многопроходная ...................................................................................................................22
Советы для Цикла 3D Точение. Черновое точение с установкой Стандартный цикл -
Да ............................................................................................................................................26
Черновой цикл резания OD/ID: ....................................................................................... 26
Черновой цикл на торце: .................................................................................................. 28
Чистовой цикл: ..................................................................................................................30
Советы для Цикла 3D Точение. Обработка Канавки с установкой Стандартный цикл -
Да ............................................................................................................................................33
Цикл нарезания канавки на торце: ................................................................................. 33
Цикл нарезания канавки на OD/ID: ................................................................................ 34
Советы для Инструментальной Головки с осью B ............................................................ 39
2
Редактирование токарно-фрезерного
постпроцессора
Введение
В этом документе описаны дополнительные советы по написанию и редактированию
постпроцессора для токарно-фрезерных станков. Некоторые из этих советов будут
относиться к станкам с одним шпинделем, а некоторые для многошпиндельных станков.
3
****** SYMBOLIC CODES ******
MotionRapid : G00
ZeroReturn : G28
CoordinatePreset : G53
ProgramStop : M00
OptionalStop : M01
Define ParkY
If (NextClfile(6504)=1) \\ ## If Park Position Y set to Home
If (FirstMove) G00* G28* FirstMove=(0) EndIf "V0" \\
ElseIf (NextClfile(6504)=2) \\ ## If Park Position Y set to Position
If (FirstMove) G00* FirstMove=(0) EndIf Y_*(YPark) \\
ElseIf (NextClfile(6504)=3) \\ ## If Park Position Y set to Machine
If (FirstMove) G00* G53* FirstMove=(0) EndIf Y_*(YPark) \\
EndIf
EndDefine
4
Define ParkZ
If (NextClfile(6505)=1) \\ ## If Park Position Z set to Home
If (FirstMove) G00* G28* FirstMove=(0) EndIf "W0" \\
ElseIf (NextClfile(6505)=2) \\ ## If Park Position Z set to Position
If (FirstMove) G00* FirstMove=(0) EndIf Z_*(ZPark) \\
ElseIf (NextClfile(6505)=3) \\ ## If Park Position Z set to Machine
If (FirstMove) G00* G53* FirstMove=(0) EndIf Z_*(ZPark) \\
EndIf
EndDefine
5
: ElseIf (ReturnMode=5) ## X then Z then Y
: $ParkX FirstMove=(1)
: $ParkZ FirstMove=(1)
: $ParkY
: ElseIf (ReturnMode=6) ## Y then X then Z
: $ParkY FirstMove=(1)
: $ParkX FirstMove=(1)
: $ParkZ
: ElseIf (ReturnMode=7) ## Y then Z then X
: $ParkY FirstMove=(1)
: $ParkZ FirstMove=(1)
: $ParkX
: ElseIf (ReturnMode=8) ## Z then X then Y
: $ParkZ FirstMove=(1)
: $ParkX FirstMove=(1)
: $ParkY
: ElseIf (ReturnMode=9) ## Z then Y then X
: $ParkZ FirstMove=(1)
: $ParkY FirstMove=(1)
: $ParkX
: EndIf
## Below, logic to handle rotary axis:
: If (NextClFile(2512)=1 || NextClFile(2513)=1)
: G00* If (NextClFile(2512)=1) A*(NextClFile(215)) EndIf If
(NextClFile(2513)=1) B*(NextClFile(768)) EndIf
: EndIf
## Below, logic to output stop code
: ProgramMode
6
ex_ToolChange не буден вызван, если Вы разместите свою инструментальную головку,
не выбирая инструмент.
Кроме того, размещая инструментальную головку перед двумя последовательными
синхронизациями, сопровождаемых сменой инструмента, ex_ToolCancel для Исходная
позиция переместит ее до вызова ex_Sync (только выше следующей смены инструмента).
Другими словами, Ваша револьверная головка теперь будет оставаться в позиции, пока не
будет вызван следующий инструмент.
Вот пример упрощенного технологического процесса для примеров сценария: загрузка
инструмента 1 / размещение инструмента 1 / Исходная позиция инструментальной головки
без выбора инструмента / синхронизация / синхронизация / загрузка инструмента 2 /
исходная позиция инструмента 2 (load tool 1 / park tool 1 / park head without selecting a tool
/ synchronization / synchronization / load tool 2 / park tool 2)
1 Hard ex_BeforeCycle
2 Hard ex_FirstToolChange (TOOL CHANGE: LOAD TOOL 1)
3 Hard ex_Park (PARK OPERATION WITH TOOL 1)
4 Hard ex_BeforeCycle
5 Hard ex_Park (PARK OPERATION WITHOUT TOOL SELECTION)
6 Hard ex_Sync (SYNC)
7 Hard ex_BeforeCycle
8 Hard ex_Sync (SYNC)
9 Hard ex_ToolCancel (TOOL CANCEL: CANCEL TOOL 1)
10 Hard ex_LastToolChange (TOOL CHANGE: LOAD TOOL 2)
11 Hard ex_Park (PARK OPERATION WITH TOOL 2)
7
Использование массивов в постпроцессоре
Введение
Массивы в постпроцессоре могут быть определены как специальные переменные. Эти
переменные линейны, что означает, что они похожи на одну колонку значений в таблице
с определенным числом рядов. Они могут быть очень полезными для записи ряда
значений.
В следующих разделах, Вы узнаете, как использовать в своих интересах массивы,
чтобы сохранить тип операций в Вашем файле ESPRIT до вывода УП. Поэтому,
определенные массивы могут использоваться для вывода определенного кода, когда это
необходимо. Тип операции для каждой инструментальной головки (если Вы работаете
станке с несколькими головками) записывается в массивах. После определения, можно
просмотреть, что идет из одной инструментальной головки в ту же самую
инструментальную головку или что будет происходить на другой инструментальной
головке(ках) (для станков с несколькими головками).
Затем эти массивы могут использоваться в логике, чтобы найти определенные
сценарии; например: найти тип сценария передачи детали; найти, если есть смена
направления шпинделя, найти, если есть переключение между точением и
фрезерованием, чтобы вывести останов шпиндель или отследить порядковый номер кода
синхронизации на станках с несколькими головками …
Variable : Head1OpType(0..1000)
Выше “-1” индекс массива; так как массив объявлен между 0 и 1000,-1 вне диапазона.
Чтобы сохранить значение в месте массива, просто сохраните значение, как если бы
Вы сохранили переменную, но убедитесь, что определен индекс, куда в массиве должно
быть сохранено значение: array_name(index)=(value). Пример:
Head1OpType(1)=(2)
Использование ex_CycleDefinition
Этот пример должен быть назван в начале УП до ex_MainStart. Его нужно вызвать один
раз для каждого определенного цикла в Вашем файле ESPRIT. В результате, используя
массив (с увеличивающимся индексом для каждой новой операции, которая представляет
счет операции), Вы можете сохранить тип каждой операции.
Пример синхронизации (для станков с несколькими головками) "ex_Sync" также
должен быть вызван и сохранен в массив. Только Hard синхронизации (синхронизации,
запрограммированные в ESPRIT на вкладке Операции Менеджера проекта), будет назван
во время фазы определения цикла.
Примеры смены инструмента и его отмены также должны быть вызваны.
Хотя все эти примеры вызываются во время фазы определения цикла, они
используются только для сбора информации, и не будут выводить код. Только
ex_CycleDefinition выведет код во время этой фазы, если нужно.
Движения инструмента (все soft examples) и с другой стороны soft examples
синхронизаций не могут быть вызваны. Таким образом, нельзя ничего поместить в эти
9
примеры, не может быть сохранено в массивах, которые могут быть неудобны для этого
метода.
Хотя его главное преимущество - легкое выполнение в постпроцессоре.
Вот пример создания этого типа массива, используя ex_CycleDefinition на станке с
одной головкой:
ex_BeforeCycle : NextMillTurnCount=(NextMillTurnCount+1)
## приращение счетчика
1 Hard ex_Setup
2 Hard ex_StartCode
3 Hard ex_BeforeCycle
4 Hard ex_Sync
5 Hard ex_FirstToolChange
6 Hard ex_ConstantSurface
10
7 Hard ex_Sync
8 Hard ex_SetWorkCoor
9 Hard ex_CycleDefinition
10 Hard ex_BeforeCycle
11 Hard ex_SetWorkCoor
12 Hard ex_CycleDefinition
13 Hard ex_BeforeCycle
14 Hard ex_Sync
15 Hard ex_SetWorkCoor
16 Hard ex_CycleDefinition
17 Hard ex_BeforeCycle
18 Hard ex_SetWorkCoor
19 Hard ex_CycleDefinition
20 Hard ex_ToolCancel
21 Hard ex_Sync
22 Hard ex_MainStart
Затем созданный массив может быть использован для примера ex_ToolCancel, чтобы
проверить, есть ли смена типа операции, которая потребует применения кода останова
шпинделя M05 (например, переключение с токарных на фрезерные операции).
ex_ToolCancel : ## Ниже, останов токарного шпинделя, потому что
следующая фрезерная операция
## следующая фрезерная операция
: If (MillTurnCode=TurnCycle &&
NextMillTurnCode(NextMillTurnCount)=MillCycle)
: M05* "(SPINDLE STOP)"
: EndIf
Использование Post_Pass
Другой способ построить массив - использование проходов постпроцессора. Понятие
прохода постпроцессора должно запускать весь набор примеров в постпроцессоре до
11
вывода УП. Во время первого прохода, важная информация (как тип цикла) может быть
сохранена в массиве. Обратите внимание, что этот метод более подходит для станков с
несколькими головками, так как soft examples также будут вызваны и могут
использоваться для построения массива.
Чтобы вызвать несколько проходов, Вы должны добавить системную переменную
Post_Passes в Ваш постпроцессор и установить для нее значение, больше чем 1.
Post_Passes соответствует общему количеству проходов, которое будет выполнен CL файл
через постпроцессор:
Post_Passes : 2
Затем, каждый пример будет вызван дважды, Вы должны отфильтровать вывод,
поэтому на первом проходе, Вы только сохраняете то, что нужно сохранить в массиве, но
Вы не выводите УП. Это может быть сделано, используя системную переменную Post_Pass.
Post_Pass соответствует текущему проходу, которое будет выполнено CL файлом через
постпроцессор:
ex_KeyWord : If (Post_Pass=1)
: ## Логика, чтобы создать массив или пропустить вывод примера
: Else
: ## Обычная УП, чтобы вывести во время второго прохода
: EndIf
Неудобство этого метода заключается в то, что почти каждый определенный пример в
Вашем файле постпроцессора потребует некоторой логики, как описано выше,
отфильтрововать вывод УП во время первого прохода, который может быть довольно
большим по объему работой, чтобы это осуществить.
С другой стороны, главное преимущество этого метода состоит в том, что все примеры
(soft и hard) будут вызваны во время первого прохода, поэтому к максимально большому
количеству информации можно будет получить доступ, и сохранены в Ваших массивах,
чем в методе “ex_CycleDefinition”. Например, Вы сможете в массиве отследить номера soft
синхронизации, которые будут иметь место между двумя инструментальными головками.
12
Так, если Ваш станок оборудован тремя инструментальными головками, используя этот
массив, Вы сможете вывести соответствующие коды синхронизации.
Чтобы найти детали примера для этого метода, пожалуйста, сошлитесь на
предоставленные постпроцессоры для этого документа (Пример 2): Post_Pass_H1_End.asc
и Post_Pass_H2_End.asc.
Стандартные циклы
Введение
Стандартный цикл - последовательность операций станка, который включается одним
G-кодом. Стандартные циклы сокращают длину УП.
В ESPRIT и в постпроцессоре поддерживаются многие стандартные циклы:
Цикл 3D Точение. Черновое
точение
Пример(ы) вызываемые в
В ESPRIT
постпроцессоре
ex_StockRemoval;
ex_StockRemovalFace;
Стандартный цикл - Да
ex_StockRemovalTurn; ex_Finish;
ex_RemovalCancel
13
постпроцессоре
ex_ConstantThread; ex_VariableThread;
Стандартный цикл - Нет ex_ConstantArcThread;
ex_VariableArcThread
Стандартный цикл -
ex_CannedThread
Однопроходная
ex_CannedThreadStart;
Стандартный цикл -
ex_CannedThreadBody;
Многопроходная
ex_CannedThreadEnd
3D Точение и 3D Токарно-
Фрезерная. Циклы обработки
отверстия
Пример(ы) вызываемые в
В ESPRIT
постпроцессоре
ex_DrillStart; ex_DrillBody;
Типа Цикла - Сверление
ex_DrillCancel
ex_PeckStart; ex_PeckBody;
Типа Цикла – Глубокое Сверление
ex_PeckCancel
Типа Цикла – Нарезание резьбы ex_TapStart; ex_TapBody;
метчиком ex_TapCancel
ex_BoreStart; ex_BoreBody;
Типа Цикла - Растачивание
ex_BoreCancel
Установить Типа Цикла – ex_Drill2Start; ex_Drill2Body;
Сверление 2 ex_Drill2Cancel
Типа Цикла – Глубокое Сверление ex_Peck2Start; ex_Peck2Body;
2 ex_Peck2Cancel
Типа Цикла – Нарезание резьбы ex_Tap2Start; ex_Tap2Body;
метчиком 2 ex_Tap2Cancel
ex_Bore2Start; ex_Bore2Body;
Типа Цикла – Растачивание 2
ex_Bore2Cancel
14
ex_Bore3Start; ex_Bore3Body;
Типа Цикла – Растачивание 3
ex_Bore3Cancel
ex_Bore4Start; ex_Bore4Body;
Типа Цикла - Растачивание 4
ex_Bore4Cancel
ex_Bore5Start; ex_Bore5Body;
Типа Цикла - Растачивание 5
ex_Bore5Cancel
ex_Bore6Start; ex_Bore6Body;
Типа Цикла - Растачивание 6
ex_Bore6Cancel
ex_Bore7Start; ex_Bore7Body;
Типа Цикла - Растачивание 7
ex_Bore7Cancel
Обратите внимание, что, если Вы пытаетесь вывести стандартный цикл и Вы не
знаете, какие примеры в постпроцессоре будут вызваны, то вот совет как их можно
найти.
Запрограммируйте операцию со стандартным циклом в файле ESPRIT, и затем
выведите длинную УП. Она отобразит примеры, которые будут вызваны. Затем Вы можете
добавить эти примеры (отсутствующие в Вашем постпроцессоре).
Например, операция 3D Точение. Черновое точение, с установленной опцией
стандартный цикла Да, была запрограммирована в ESPRIT. Далее выведена длинная УП
постпроцессором, у которого нет необходимых примеров, поддерживающих стандартный
цикл черновой обработки:
15
16 Soft EX_REMOVALCANCEL
17 Soft EX_FINISH
18 Hard EX_CYCLEEND
Как Вы можете видеть, что даже если примеры ex_StockRemoval, ex_RemovalCancel и
ex_Finish не определены в постпроцессоре, soft examples (примеры) вызываются по
группам. Теперь Вы знаете, что они должны быть добавлены в Ваш постпроцессор (с
правильным кодом и логикой), чтобы затем вывести соответствующую УП.
16
****** SYMBOLIC CODES ******
ConstantThread : G32
Начальный угол резьбы Q должен быть определен в единицах 0.001 без десятичной
запятой (Q1000: 1). Такой результат получается за счет установленного выше
форматированного кода ThreadStartAngle. Например, метрический вывод, установлен
формат N 3 N Y 3. Буква в середине управляет выводом десятичной запятой; если стоит N,
то десятичная запятая не будет выведена, которая нужна для корректного вывода УП.
17
Советы для Цикла 3D Точение. Нарезание Резьбы с
установкой Стандартный цикл - Однопроходная
Цикл 3D Точение. Нарезание Резьбы с установкой Стандартный цикл - Однопроходная,
должен вывести в УП код G76 для систем ЧПУ Fanuc:
18
19
“P” в первой линии определяет, как должна быть обработана резьба, 6 цифр. Вот, что
необходимо определить в Вашем постпроцессоре:
20
****** DEFINES ******
## Computes P for single path canned thread cycle
Define P
OutputFormatCode(2) " P" FinCut* \\
If (NextClFile(888)=3 && NextClFile(890)<>0) \\
EndChf*(NextClFile(890)/lead*10) \\
Else \\
"00" \\
EndIf \\
ThdAng* OutputFormatCode(0)
EndDefine
21
Советы для Цикла 3D Точение. Нарезание Резьбы с
установкой Стандартный цикл - Многопроходная
Цикл 3D Точение. Нарезание Резьбы с установкой Стандартный цикл -
Многопроходная, должен вывести в УП код G92 для систем ЧПУ Fanuc:
Цикл прямой резьбы:
22
Цикл конусной резьбы:
23
Вот, что необходимо определить в Вашем постпроцессоре, чтобы правильно
поддержать этот стандартный цикл:
24
****** EXAMPLES ******
ex_CannedThreadStart: ## Ниже, если подход установлен Рабочая Подача
ИЛИ Сбег
## ИЛИ отход установлен Рабочая Подача ИЛИ отход установлен
Сбег
## И режим нарезания резьбы не установлен Выкл
: If (NextClFile(887)=2 || NextClFile(887)=3 ||
NextClFile(888)=2 || (NextClFile(888)=3 && NextClFile(354)<>0))
: OUTPUTSTRING(ErrorMessage(1)) ErrorFlag=(1) $NC_Off
: EndIf
: XThd=(PresDim(1)) ZThd=(PresDim(3))
: G92* X* Z* R_* F_* Q___*
ex_CannedThreadBody : X Z
ex_CannedThreadEnd : G00* X_*(2*XThd) Z_*(ZThd) $NC_Off "Ignore,
workaround output issue " $NC_On
Выше, использовались переменные XThd и ZThd, Вы можете перепозиционировать
инструмент в точку входа в конце резания ex_CannedThreadEnd. Координаты точки входа
сохранены в ex_CannedThreadStart. Обратите внимание, чтобы вывести это значение,
необходим обходной путь.
В ex_CannedThreadStart, основано на определенных установках подхода или отхода в
ESPRIT, может быть выведено сообщение об ошибке. Это очень полезно, чтобы избежать
программирования проблемы. Ошибочное сообщение сохраняется в массиве через
определенный оператор ErrorMessages.
Обратите внимание, что в этой же самой функции, все другие сообщения об ошибке,
которые возможно должны быть выведены, могут также здесь храниться. Это облегчает
использование и обновление постпроцессора, так как сообщения об ошибках сразу
определяется уникальным определением, и все еще может быть вызвано где-нибудь в
постпроцессоре. Только одно предложение должно быть изменено (если нужно), что
является наилучшим способом избежать опечаток. Кроме того, легче перевести
сообщения об ошибке на другие языки. Другое преимущество этого метода -
25
использование флага (ErrorFlag) параллельно с определением NC_ON и NC_OFF. Если
будет выведено сообщение об ошибке, то остальная часть УП будет скрыта.
26
27
Черновой цикл на торце:
28
29
Чистовой цикл:
30
CompensationRight : G42
Finish : G70
StockRemovalTurning : G71
StockRemovalFacing : G72
31
ex_Linear : If (inSR || NextGeo(1)=31) N inSR=(0) EndIf G01 X Z
FeedrateCode
ex_CircleZX : If (inSR || NextGeo(1)=31) N inSR=(0) EndIf
CircleDirection X* Z* R* FeedrateCode
Выше, пример ex_StockRemoval используется для чернового прохода. Используя
логический тумблер StockRemovalCode, Вы можете легко дифференцировать и
осуществить обработку на OD/ID и торце стандартными циклами в ex_StockRemoval.
StockRemovalCode переключает между кодами, используемые для указания, будет ли
удаляться заготовка на торце или диаметре. StockRemovalCode соответствует параметру
Тип Работы на странице операции "3D Точение. Черновое точение" (вкладка Стратегия).
Между блоком N (ns) и N (nf), описан обрабатываемый профиль, используя примеры
в постпроцессоре rapid, linear и circle. N (ns) должен быть выведен один раз на первом
движении и один рах N (nf) на последнем движении до ex_RemovalCancel (который
имеет место в конце чернового прохода). Используя переменную флага inSR, Вы можете
вывести первый номер блока только на первом движении. Затем, используя NextGeo, Вы
можете вывести последний номер блока на последнем движении. NextGeo - функция,
которая может опросить тип элемента геометрии из CL файла. Эта функция делает
упреждающий просмотр, чтобы увидеть, какие элементы геометрии находятся на
рассмотрении и может взглянуть назад, чтобы увидеть, какой элемент геометрии был
ранее обработан. Количество элементов рассматриваемых упреждающим просмотром или
взглядом назад определяется аргументом, отрицательное значение используется для
просмотра назад. Это может быть настолько далеко вперед или назад, насколько есть
последовательны действительные геометрические элементы. Как только обнаруживается
негеометрический элемент в CL файле, то она вернет значение типа, чтобы описать этот
объект. NextGeo (1) смотрит на следующий элемент геометрии. NextGeo (1) равняется
31 в конце цикла (например в этом случае, конец чернового прохода).
Форматируемый код StartSequenceNumber P и EndSequenceNumber Q
используются для вывода кода по линиям стандартного цикла в нужные адреса номера
блока.
32
Советы для Цикла 3D Точение. Обработка Канавки с
установкой Стандартный цикл - Да
Цикл 3D Точение. Обработка Канавки с установкой Стандартный цикл - Да, должен
вывести в УП код G74 (для торца) или G75 (OD/ID) для системы ЧПУ Fanuc:
33
Цикл нарезания канавки на OD/ID:
34
35
Вот, что необходимо определить в Вашем постпроцессоре, чтобы правильно
поддержать эти стандартные циклы:
36
****** SYMBOLIC CODES ******
GrooveAlongX : G74 ## Face
GrooveAlongZ : G75 ## OD/ID
37
P__*(NextClFile(180)) If (NextClFile(270)=2) Q__*(Step) EndIf
\\
EndIf \\
FeedrateCode
38
5 Hard ex_GrooveCancel(LatheGrooveCycle)
6 Hard ex_CycleStart(LatheGrooveCycle)
7 Soft ex_Rapid(LatheGrooveCycle)
8 Hard ex_StartPoint(LatheGrooveCycle)
9 Soft ex_Linear/Ex_Rapid/Ex_CircleZX(LatheGrooveCycle)
15 Hard ex_CycleEnd(LatheGrooveCycle)
40