Вы находитесь на странице: 1из 40

Редактирование

токарно-
фрезерного
постпроцессора
Оглавление
Редактирование токарно-фрезерного постпроцессора ........................................................ 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
Редактирование токарно-фрезерного
постпроцессора
Введение
В этом документе описаны дополнительные советы по написанию и редактированию
постпроцессора для токарно-фрезерных станков. Некоторые из этих советов будут
относиться к станкам с одним шпинделем, а некоторые для многошпиндельных станков.

Новый цикл Исходная позиция и местоположение смены


инструмента: как осуществить в постпроцессоре
Новый цикл Исходная позиция введен в ESPRIT 2012. Теперь можно разместить
инструментальную головку, не выбирая инструмент. Также был улучшен и оптимизирован
цикл исходной позиции. Теперь Вы можете поместить свою инструментальную головку в
систему рабочих координат станка (G53). Наконец, были осуществлены новые режимы
возврата для более точного управления размещением инструмента.
На каждой странице инструмента есть новая опция движения смены инструмента:
можно выбрать систему рабочих координат станка (G53).
Пожалуйста, изучите документ “Стратегии Многозадачной и Симметричной
обработки”
Теперь Исходная позиция и смена инструмента имеют одни и те же варианты
расположения. Эти усовершенствования потребуют небольших изменений в Вашем
постпроцессоре. Они объяснены и записаны здесь.
Следующая логика может использоваться в Вашем постпроцессоре, чтобы поддержать
возможные сценарии размещения головок:
****** FORMATABLE CODES ******
AAxis :A 16Y13 16Y13 1 1Y10
BAxis :B 16Y13 16Y13 1 1Y10
MiscFormat1 : X_ N3YN5 N5YN3 1 1N00
MiscFormat2 : Z_ N3YN5 N5YN3 1 1N00
MiscFormat3 : Y_ N3YN5 N5YN3 1 1N00

3
****** SYMBOLIC CODES ******
MotionRapid : G00
ZeroReturn : G28
CoordinatePreset : G53
ProgramStop : M00
OptionalStop : M01

****** VARIABLES ******


Variable : ReturnMode FirstMove
****** DEFINES ******
Define ParkX
If (NextClfile(6503)=1) \\ ## If Park Position X set to Home
If (FirstMove) G00* G28* FirstMove=(0) EndIf "U0" \\
ElseIf (NextClfile(6503)=2) \\ ## If Park Position X set to Position
If (FirstMove) G00* FirstMove=(0) EndIf X_*(XPark) \\
ElseIf (NextClfile(6503)=3) \\ ## If Park Position X set to Machine
If (FirstMove) G00* G53* FirstMove=(0) EndIf X_*(XPark) \\
EndIf
EndDefine

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

****** EXAMPLES ******

ex_Park : ## Below, logic to move to park position with


## respect to return mode:
: FirstMove=(1)
: ReturnMode=(NextClFile(428))
: If (ReturnMode=0) ## None
: $ParkX $ParkY $ParkZ
: ElseIf (ReturnMode=1) ## X First
: $ParkX FirstMove=(1)
: $ParkY $ParkZ
: ElseIf (ReturnMode=2) ## Y First
: $ParkY FirstMove=(1)
: $ParkX $ParkZ
: ElseIf (ReturnMode=3) ## Z First
: $ParkZ FirstMove=(1)
: $ParkX $ParkY
: ElseIf (ReturnMode=4) ## X then Y then Z
: $ParkX FirstMove=(1)
: $ParkY FirstMove=(1)
: $ParkZ

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)

Как видно из выше сказанного, ex_ToolCancel вызывается после примеров


синхронизации (ex_Sync) только выше ex_LastToolChange. Инструментальная головка
останется в позиции, пока не будет вызван следующий инструмент.

7
Использование массивов в постпроцессоре
Введение
Массивы в постпроцессоре могут быть определены как специальные переменные. Эти
переменные линейны, что означает, что они похожи на одну колонку значений в таблице
с определенным числом рядов. Они могут быть очень полезными для записи ряда
значений.
В следующих разделах, Вы узнаете, как использовать в своих интересах массивы,
чтобы сохранить тип операций в Вашем файле ESPRIT до вывода УП. Поэтому,
определенные массивы могут использоваться для вывода определенного кода, когда это
необходимо. Тип операции для каждой инструментальной головки (если Вы работаете
станке с несколькими головками) записывается в массивах. После определения, можно
просмотреть, что идет из одной инструментальной головки в ту же самую
инструментальную головку или что будет происходить на другой инструментальной
головке(ках) (для станков с несколькими головками).
Затем эти массивы могут использоваться в логике, чтобы найти определенные
сценарии; например: найти тип сценария передачи детали; найти, если есть смена
направления шпинделя, найти, если есть переключение между точением и
фрезерованием, чтобы вывести останов шпиндель или отследить порядковый номер кода
синхронизации на станках с несколькими головками …

Как массивы (arrays) работают в постпроцессоре


Переменная массива может быть объявлена в постпроцессоре форматом
array_name(lower_index..upper_index). Например:

Variable : Head1OpType(0..1000)

В выше упомянутом заявленном массиве, 1001 значение может быть сохранено


начиная с начала индекса 0 и заканчиваясь 1000. Обратите внимание, что, если Вы
выйдите из диапазона, то Вы получите следующее сообщение об ошибке в своей УП, при
выводе кода:
8
Variable Path1OpType[-1] вне диапазона

Выше “-1” индекс массива; так как массив объявлен между 0 и 1000,-1 вне диапазона.
Чтобы сохранить значение в месте массива, просто сохраните значение, как если бы
Вы сохранили переменную, но убедитесь, что определен индекс, куда в массиве должно
быть сохранено значение: array_name(index)=(value). Пример:

Head1OpType(1)=(2)

Выше, в месте 1 массива сохранено значение 2.

Создание массивов: ex_CycleDefinition против Post_Pass


Чтобы сохранить в массиве тип операций в Вашем файле ESPRIT, есть два возможных
метода: Вы можете использовать ex_CycleDefinition или Post_Pass.

Использование ex_CycleDefinition
Этот пример должен быть назван в начале УП до ex_MainStart. Его нужно вызвать один
раз для каждого определенного цикла в Вашем файле ESPRIT. В результате, используя
массив (с увеличивающимся индексом для каждой новой операции, которая представляет
счет операции), Вы можете сохранить тип каждой операции.
Пример синхронизации (для станков с несколькими головками) "ex_Sync" также
должен быть вызван и сохранен в массив. Только Hard синхронизации (синхронизации,
запрограммированные в ESPRIT на вкладке Операции Менеджера проекта), будет назван
во время фазы определения цикла.
Примеры смены инструмента и его отмены также должны быть вызваны.
Хотя все эти примеры вызываются во время фазы определения цикла, они
используются только для сбора информации, и не будут выводить код. Только
ex_CycleDefinition выведет код во время этой фазы, если нужно.
Движения инструмента (все soft examples) и с другой стороны soft examples
синхронизаций не могут быть вызваны. Таким образом, нельзя ничего поместить в эти
9
примеры, не может быть сохранено в массивах, которые могут быть неудобны для этого
метода.
Хотя его главное преимущество - легкое выполнение в постпроцессоре.
Вот пример создания этого типа массива, используя ex_CycleDefinition на станке с
одной головкой:

Variable : NextMillTurnCount NextMillTurnCode(-1..50) ## Возможно


потребуется изменить верхнюю границу, если Вы планируете использовать
более 50 операций.
## Ниже, NextMillTurnCode массив заполнен - я верну MillTurnCode из
следующей операции, когда буду его использовать
ex_CycleDefinition : NextMillTurnCode(NextMillTurnCount-
1)=(MillTurnCode)
## Заметьте, что индекс MillTurnCode сохранен в
предыдущем массиве

ex_MainStart : NextMillTurnCount=(0)## после сброс счетчика в 0 после


## прохода 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

Цикл 3D Точение. Обработка


Канавки
Пример(ы) вызываемые в
В ESPRIT
постпроцессоре
ex_Groove; ex_GrooveFace;
Стандартный цикл - Да
ex_GrooveDiameter; ex_GrooveCancel

Цикл 3D Точение. Нарезание


Резьбы
В ESPRIT Пример(ы) вызываемые в

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. Далее выведена длинная УП
постпроцессором, у которого нет необходимых примеров, поддерживающих стандартный
цикл черновой обработки:

8 Hard EX_CYCLESTART (OP NAME: OD ROUGH & FINISH)


9 Soft EX_RAPID
10 Hard EX_STARTPOINT G00 Y0 Z1.685
X100.
(CSS SPEED) S150
11 Soft EX_STOCKREMOVAL
12 Soft EX_RAPID X49.988
13 Soft EX_LINEAR G01 Z-.315
14 Soft EX_LINEAR X67.51 Z-50.
15 Soft EX_LINEAR X100.

15
16 Soft EX_REMOVALCANCEL
17 Soft EX_FINISH
18 Hard EX_CYCLEEND
Как Вы можете видеть, что даже если примеры ex_StockRemoval, ex_RemovalCancel и
ex_Finish не определены в постпроцессоре, soft examples (примеры) вызываются по
группам. Теперь Вы знаете, что они должны быть добавлены в Ваш постпроцессор (с
правильным кодом и логикой), чтобы затем вывести соответствующую УП.

Советы для цикла Цикл 3D Точение. Нарезание


Резьбы с постоянным шагом и установкой
Стандартный цикл -Выкл
Цикл 3D Точение. Нарезание Резьбы с постоянным шагом и установкой Стандартный
цикл-Выкл, должен вывести G32 в УП для систем ЧПУ Fanuc:

Q соответствует начальному углу цикла нарезания резьбы: адрес Q используется для


определения угла между величиной поворота шпинделя и началом резьбы, смещенный на
стартовый угол резьбы, что позволит нарезать многозаходные резьбы.
Вот, что необходимо определить в Вашем постпроцессоре:

****** FORMATABLE CODES ******


XAbsolute :X 13Y14 15Y13 1 1Y10
ZAbsolute :Z 13Y14 15Y13 1 1Y10
LeadValue : F_ 13Y14 15Y13 1 1N50
ThreadStartAngle : Q___ N3NY3 N3NY3 0 ----

16
****** SYMBOLIC CODES ******
ConstantThread : G32

****** EXAMPLES ******


ex_ConstantThread : G32* X Z F_* Q___*

Начальный угол резьбы Q должен быть определен в единицах 0.001 без десятичной
запятой (Q1000: 1). Такой результат получается за счет установленного выше
форматированного кода ThreadStartAngle. Например, метрический вывод, установлен
формат N 3 N Y 3. Буква в середине управляет выводом десятичной запятой; если стоит N,
то десятичная запятая не будет выведена, которая нужна для корректного вывода УП.

17
Советы для Цикла 3D Точение. Нарезание Резьбы с
установкой Стандартный цикл - Однопроходная
Цикл 3D Точение. Нарезание Резьбы с установкой Стандартный цикл - Однопроходная,
должен вывести в УП код G76 для систем ЧПУ Fanuc:

18
19
“P” в первой линии определяет, как должна быть обработана резьба, 6 цифр. Вот, что
необходимо определить в Вашем постпроцессоре:

****** FORMATABLE CODES ******


XAbsolute :X 13Y14 15Y13 1 1Y10
ZAbsolute :Z 13Y14 15Y13 1 1Y10
Depth : P_ N3NY4 N5NY3 0 1N00
RadialDifference : R_ 13Y14 15Y13 12 ----
FinishCutsNumber : FinCut Y2NN0 Y2NN0 7 2N06
ThreadEndChamfer : EndChf Y2NN0 Y2NN0 7 2N00
ThreadAngle : ThdAng Y2NN0 Y2NN0 7 2N06
FinishStock : R__ 13Y14 15Y13 0 ----
FirstDepth : Q_ N3NY4 N5NY3 0 1N00
MinimumDepth : Q__ N3NY4 N5NY3 0 ----
LeadValue : F_ 13Y14 15Y13 1 1N50

****** SYMBOLIC CODES ******


CannedThread : G76

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

****** EXAMPLES ******


ex_CannedThread : G76* $P Q__* R__*
: G76* X* Z* R_* P_* Q_* F_*
Выше, “P” построен для использования определенным оператором. OutputFormatCode
(2) подавит пробелы. И так могут быть выведены 6 цифр после P, используя
форматированный код FinishCutsNumber (FinCut: число чистовых проходов),
ThreadEndChamfer (EndChf:размер фаски резьбы) и ThreadAngle (ThdAng: угол резьбы).
Обратите внимание, что для этих трех форматируемых кода, знак вывода установлен 7:
знак подавлен. Затем OutputFormatCode (0) добавит сзади пробелы.

21
Советы для Цикла 3D Точение. Нарезание Резьбы с
установкой Стандартный цикл - Многопроходная
Цикл 3D Точение. Нарезание Резьбы с установкой Стандартный цикл -
Многопроходная, должен вывести в УП код G92 для систем ЧПУ Fanuc:
Цикл прямой резьбы:

22
Цикл конусной резьбы:

23
Вот, что необходимо определить в Вашем постпроцессоре, чтобы правильно
поддержать этот стандартный цикл:

****** FORMATABLE CODES ******


XAbsolute :X 13Y14 15Y13 1 1Y10
ZAbsolute :Z 13Y14 15Y13 1 1Y10
RadialDifference : R_ 13Y14 15Y13 12 ----
LeadValue : F_ 13Y15 15Y13 1 1N50
ThreadStartAngle : Q___ N3NY4 N4NY3 0 ----

****** SYMBOLIC CODES ******


MotionRapid : G00
MultiPath_CannedThread : G92

****** VARIABLES ******


Variable : ErrorMessage(1..40) ErrorFlag
Variable : XThd ZThd

****** DEFINES ******


Define NC_On
If (ErrorFlag=0) NCOutputOn EndIf
EndDefine
Define NC_Off
NCOutputOff
EndDefine
## Здесь определены все возможные сообщения об ошибках
Define ErrorMessages
ErrorMessage(1)=("ERROR: WRONG LEAD-IN OR LEAD-OUT TYPE
SPECIFIED")
EndDefine

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. Если
будет выведено сообщение об ошибке, то остальная часть УП будет скрыта.

Советы для Цикла 3D Точение. Черновое точение с


установкой Стандартный цикл - Да
Цикл 3D Точение. Черновое точение с установкой Стандартный цикла - Да, должен
вывести в УП код G71 (OD/ID) или G72 (торец) и G70 (чистовой проход) для системы ЧПУ
Fanuc:

Черновой цикл резания OD/ID:

26
27
Черновой цикл на торце:

28
29
Чистовой цикл:

Вот, что необходимо определить в Вашем постпроцессоре, чтобы правильно


поддержать эти стандартные циклы:

****** FORMATABLE CODES ******


SequenceNumber :N N4NN0 N4NN0 0 ----
StartSequenceNumber : P N4NN0 N4NN0 0 ----
EndSequenceNumber :Q N4NN0 N4NN0 0 ----
XAbsolute :X 13Y14 15Y13 1 1Y10
ZAbsolute :Z 13Y14 15Y13 1 1Y10
CircleRadius :R 13Y14 15Y13 1 1Y10
Feedrate :F 13Y12 14Y12 0 1Y10
ChipFeedrate : F__ 13Y14 13Y13 0 1Y10
SpindleSpeed :S N4NN0 N4NN0 0 1N00
SfpmSpindlespeed : S_ N4NN0 N4NN0 0 1N00
XStockParameter :U 13Y14 15Y13 1 1Y10
YStockParameter :W 13Y14 15Y13 1 1Y10
MiscFormat1 : R__ 13Y14 15Y13 1 1Y10

****** SYMBOLIC CODES ******


MotionRapid : G00
MotionLinear : G01
MotionCW : G02
MotionCCW : G03
CompensationOff : G40
CompensationLeft : G41

30
CompensationRight : G42
Finish : G70
StockRemovalTurning : G71
StockRemovalFacing : G72

****** VARIABLES ******


Variable : inSR

****** EXAMPLES ******


ex_StockRemoval : inSR=(1)
: If (NextClFile(245)) CompensationSide* EndIf
: If (StockRemovalCode=StockRemovalFacing)
## Below, Maximum depth of cut * retract % of
## depth / 100 = Relief amount R
: G72* W*(Step) R__*(NextClFile(217)*NextClFile(736)/100)
: G72* P* Q* U*(2*xstock) W* FeedrateCode*
: Else
## Below, Maximum depth of cut * retract % of
## depth / 100 = Relief amount R
: G71* U*(Step) R__*(NextClFile(217)*NextClFile(736)/100)
: G71* P* Q* U*(2*xstock) W* FeedrateCode*
: EndIf
: NCOutputOff F*(999999) F__*(999999) NCOutputOn

ex_RemovalCancel : ## Not used

ex_Finish : SpindleUnit* SpindleSpeedCode* ## Output speed for


## finish pass
: G70* P* Q*

ex_Rapid : If (inSR) N inSR=(0) EndIf G00 X Z

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
Вот, что необходимо определить в Вашем постпроцессоре, чтобы правильно
поддержать эти стандартные циклы:

****** FORMATABLE CODES ******


Feedrate :F 13Y12 14Y12 0 1Y10
ChipFeedrate : F__ 13Y14 13Y13 0 1Y10
XGroove : X__ 13Y14 15Y13 1 1Y10
ZGroove : Z__ 13Y14 15Y13 1 1Y10
MiscFormat1 : R__ 13Y14 15Y13 1 1Y10
MiscFormat2 : P__ N3NY4 N5NY3 0 ----
MiscFormat3 : Q__ N3NY4 N5NY3 0 ----

36
****** SYMBOLIC CODES ******
GrooveAlongX : G74 ## Face
GrooveAlongZ : G75 ## OD/ID

****** VARIABLES ******


Variable : ErrorMessage(1..40) ErrorFlag

****** DEFINES ******


Define NC_On
If (ErrorFlag=0) NCOutputOn EndIf
EndDefine
Define NC_Off
NCOutputOff
EndDefine
## All possible error messages are defined here
Define ErrorMessages
ErrorMessage(1)=("ERROR: SET GROOVE TYPE TO SINGLE PLUNGE OR
MULTIPLE PLUNGE FOR GROOVE CANNED CYCLE")
EndDefine

****** EXAMPLES ******


ex_Groove : If (NextClFile(270)>2) OUTPUTSTRING(ErrorMessage(1))
ErrorFlag=(1) $NC_OFF EndIf ## If groove type set to zigzag or zigzag
diagonal
: GrooveCycleCode* R__*(NextClFile(172)) $NC_OFF "Ignore,
workaround output issue " $NC_ON
: GrooveCycleCode* X__* Z__* \\
If (GrooveCycleCode=GrooveAlongX) \\
If (NextClFile(270)=2) P__*(Step) EndIf Q__*(NextClFile(180))
\\
Else \\

37
P__*(NextClFile(180)) If (NextClFile(270)=2) Q__*(Step) EndIf
\\
EndIf \\
FeedrateCode

ex_GrooveCancel : If (NextClFile(239)=0) ## If no finish pass


: $NC_OFF F*(999999) F__*(999999) $NC_ON ## Values reset
here because no ex_CycleEnd called with grooving canned cycle
: EndIf
Выше, пример ex_Groove используется для чернового прохода цикла 3D Точение.
Обработка Канавки. Используя логический тумблер GrooveCycleCode, Вы можете легко
дифференцировать и осуществить обработку на OD/ID и торце стандартными циклами в
ex_Groove. GrooveCycleCode используется между кодами, чтобы указать, вдоль какой оси
должна резаться канавка. GrooveCycleCode соответствует параметру Тип Работы на
странице операции 3D Точение. Обработка Канавки (вкладка Стратегия). Канавка на
переднем и заднем торце обрабатывается вдоль оси X, в то время как обработка канавки
на OD/ID происходит вдоль оси Z.
Обратите внимание, если 3D Точение. Обработка Канавки с установкой Стандартный
цикл - Да без чистового прохода, то будет вызван ex_CycleStart, а ex_CycleEnd нет. Логика,
которая описана в ex_CycleEnd, должна быть добавлена к ex_GrooveCancel.
Теперь, 3D Точение. Обработка Канавки с установкой Стандартный цикл - Да с
чистовым проходом, ex_CycleStart будет вызван дважды (до чернового прохода и перед
чистовым проходом), но только раз ex_CycleEnd будет вызван после чистового прохода.
Обратите внимание, что имеющаяся логика в ex_GrooveCancel проверит, если есть
чистовой проход, чтобы избежать двойной перезагрузки переменных.
Следующие примеры будут вызваны для 3D Точение. Обработка Канавки с установкой
Стандартный цикл - Да с чистовым проходом:
1 Hard ex_CycleStart(LatheGrooveCycle)
2 Soft ex_Rapid(LatheGrooveCycle)
3 Hard ex_StartPoint(LatheGrooveCycle)
4 Soft ex_Groove(LatheGrooveCycle)

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)

Советы для Инструментальной Головки с осью B


GlobalTopNormal используется для возврата Компонента координаты вектора оси
инструмента. GlobalTopNormal берет параметр 1, 2 или 3, чтобы определить, какой
компонент должен быть Возвращен. 1 для X компонентов (во фрезеровании, Z в точении),
2 для Компонент Y (X в точении), и 3 для компонент Z (Y в точении). Ниже,
GlobalTopNormal (1) используется для проверки ориентация инструмента по оси B станка.
GlobalTopNormal (1) равняется 0, когда инструмент расположен вертикально и +/-1, когда
инструмент расположен горизонтально.
CL 1648 возвращает значение свойства Вращать с Деталью активных Рабочих
Координат. Равняется 2, когда Вращать с Деталью установлен Только Точка. Опция
Только Только вернет код таким образом, что ось Z параллельна оси инструмента.
У станков с осью B есть стандартные циклы обработки отверстия и по оси X и по оси Z.
Некоторые программисты предпочитают использовать для стандартного цикла ось X для
обработки вертикальных отверстий, в то время как другие предпочитают использовать Z.
Логика, описанная ниже, поможет Вам вывести правильный код стандартного цикла
независимо от предпочтения в программировании.

ex_DrillStart : ## Ниже, если 3D Точение. Обработка Отверстия ИЛИ


##сверление наклонным или горизонтальным инструментом ИЛИ
(сверление ##вертикальным инструментом И Вращать с деталью
установлено Только Точка)
: If (CycleCode=1022 || GlobalTopNormal(1)<>0 ||
(GlobalTopNormal(1)=0 && NextCLFile(1648)=2)) \\
"Z Axis Drill Cycle Code" \\
39
Else \\
"X Axis Drill Cycle Code" \\
EndIf

Обратите внимание, что вышеупомянутая логика может использоваться в любом


стандартном цикле Обработки Отверстия.

40

Вам также может понравиться