GE 1050 HLX Hardinge L124 85 1


{Change Comments ***********************************************************}

{8/1/89
Copied & modified: GE 550 Leblond L080.56
For: Hughes
Machine: Leblond Tapeturn Regal
Control: GE 550 Mark Century.
No G codes.
Misc other format stuff.
JR}

{11/3/89, Added space codes to end of prog same as beginning, JR}
{7/24/90, Added InitProg globally to posts with this remark, DWB}

{8/27/90
Modified: GE 1050 HLX Hardinge L124.62
For: National Research Council PD
Machine: Hardinge HXL Universal CNC Turning Center
Control: General Electric 1050 HLX
Updated to Version 3.2 per Fanuc 10T MS [-] L001.71.2 Format.
DWB}

{9/11/90
Modified: GE 1050 HLX Hardinge L124.72
For: Gibbs & Associates
NOTE!!! This Post Processor suffers from a bug in the XatFinZ Command for Canned Thread Cycles
on a PosSideLathe. To resolve this problem, I have fooled the Lathe by setting it to
NegSideLathe, and Modifying the FORMATs in the Prog and Form that Output any X and/or I Axis
Data, by MULtiplying the Value by -1. Those FORMATs that were MODified in the Prog immediately
follow the FORMAT definitions below. The FORMATs that were MODified in the Form are:
X in the Default FORMATs ( I was not MODified because Control requires NoIJKSigns )
Simple Rough Canned Cycles ( Turning and Facing ):
Finish X at Finish Z
X Taper at Start Z
Contour Rough Canned Cycles ( Turning and Facing ):
X Stock Left
X Stock - Last Pass
Pattern Shift Canned Cycle:
X Stock Left
X - U
Threading Canned Cycle:
Finish X at Finish Z
X Taper at Start Z
It is recommended that at the time the bug is fixed, that all Posts with this NOTE be reverted
to their previous Form and Prog.
DWB}

{12/12/91
Modified: GE 1050 HLX Hardinge L124.72.1
For: Gibbs & Associates
Updated to Version 4.1 per Fanuc 10T MS [-] L001.82 Format.
NOTE!!! Bug reported on 9/11/90 has been corrected, and this Form and Prog has been reverted.
Full Canned Cycle Support.
DWB}

{11/17/94
Updated: GE 1050 HLX Hardinge L124.82
For: NRC-SAO
Versions: ncCad 4.33/ncCAM 4.33/ncPost 4.33.03/Compost 4.21.23
Changes made per Jessey Trudeau of NRC-SAO.
Updated to Version 4.1 per Fanuc 10T MS [-] L001.82.1a Format.
Jessey reported problems with SimpleRough and Threading Operations.
Problem was caused by SetPass2 applied to these Operations.
Rewrote GetGESP to apply SetPass1.
Jessey requested that Threading and Tapping operations position the tool in Z equal to 4 times the
pitch instead of the ClearancePlanes.
Applied to CannedCycles only.
Added formula at GetGESP sub.
Added test for Tapping at FaceApproachSP sub.
Added test for Threading and Tapping at AppMove sub.
DWB}

{1/3/95
Developer Comments modified by DWB for J. Trudeau.
Changed Approach for Thread and Tap Cycles to be output as a separate block.
Changed Thread Cycle FeedRate Formula to output in Inches per Revolution.
Added Prog sub to force ProgramName$.
Added following literal ToolChange blocks at FirstOperation.
'N50G40'
'N51G97S1000M3'
'N53G0'
'N55T0' Home
'N60M01'
' '
Added literal 'G54' block at FirstOperation and NewTool.
Added literal 'G25P150P255' block at FirstOperation and NewTool.
Added literal 'G25P150P260' block at NewTool and end of Prog.
G54 and G25P150P255 blocks work together.
G25 block is a macro call to the literal ToolChange blocks.
G25P150P255 is called at start of ToolOp.
G25P150P260 is called at end of ToolOp.
Modified G83, Peck Full-Out Cycle at CannedCycle Drilling Peck.
Deleted P4 parameter.
Changed P3 Dwell Formula to output in Inches per Revolution.
P310 = 10 Revolutions.
Changed literal 'P5' to 'P5.1'.
Modified G84, Canned Threading Cycle.
Added 'G97' Speed block at common point to eliminate G92/G96 ConstantSurfaceSpeed.
Added condition to not output move to XCPC for Canned Cycles at NewTool and end of Prog.
This is now handled by G25P150P260 block.
Added SUB# and DIV# to Prog Numeric Format Definitions.
Jessey Trudeau}

{5/1/97
Updated & Modified: GE 1050 HLX Hardinge L124.82.1
Created: GE 1050 HLX Hardinge L124.85
For: NRC-SAO
Versions: Catalyst v3.33C/ComPost2 MSL 68K
Changes made per Jessey Trudeau of NRC-SAO, phone calls, faxes, sample parts and programs.
Updated for Catalyst v3.25C per Fanuc 10T MS [-] L001.85.02a Format.
Made numerous changes to correct customer modifications.
For more detailed information, consult developer.
DWB}

{5/17/97
Modified: GE 1050 HLX Hardinge L124.85
Created: GE 1050 HLX Hardinge L124.85.1
For: NRC-SAO
Versions: Catalyst v3.33C/ComPost2 MSL 68K
Changes made per Jessey Trudeau of NRC-SAO.
Jessey requested that G4 and P3 Dwell values not be output with Decimal.
Dwell is output in Revolutions, thus decimal is silly.
Changed DIV# from FORMAT#4 to FORMAT#6 at Prog Numeric Format Definitions.
Deleted literal period, '.', at GetDwell sub.
Jessey requested that OD Thread Tool Position .2 from Major Diameter.
Modified Approach Position for OD Thread at GetCycleX.
DWB}

{Prog Numeric Format Definitions *******************************************}

#1 = '#.00'
#2 = '##.#####;0:5'
#3 = '#######0'
#4 = '###.####;0'
#5 = '#.#####;0'
#6 = '###0'
#7 = '#'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Recall#,2)
FORMAT(ADD#,2)
FORMAT(MUL#,2)
FORMAT(TrackX#,2)
FORMAT(TrackZ#,2)
FORMAT(CycleStartX#,2)
FORMAT(FinishXDia#,2)
FORMAT(FinishZ#,2)
FORMAT(CutDepth#,2)
FORMAT(Taper#,2)
FORMAT(Peck#,2)
FORMAT(Program#,3) {.72}
FORMAT(Operation#,3) {.72}
FORMAT(Tool#,3) {.72}
FORMAT(SUB#,4)
FORMAT(Dwell#,4) {.72}
FORMAT(FeedIPR#,5)
FORMAT(DIV#,6)
FORMAT(CalcEPRPM#,6)
FORMAT(RapidF#,7)

{Added Subroutines *********************************************************}

GetXTT: { Formula for learning Tool Tip Orientation }
SetStatusOff
Save# Num#('1') SUB# SetTTOff CycleStartX# SetTTOk CycleStartX#
SetStatusOn
RETURN

GetCycleX: { Canned Cycle Approach Position }
IF ApproachOD?
IF CannedCycle? AND Threading?
Save# Num#('2') ADD# ADD# Num#('.2') FinishXDia# MUL# ThreadXInc# Num#('2')
ELSE
Save# Num#('2') ADD# XStockMax# Num#('.2')
END
ELSE
IF ApproachID?
Save# Num#('2') SUB# CycleStartX# Num#('.2')
ELSE {ApproachFace}
IF Drilling?
Save# Num#('2') CycleStartX#
ELSE
GetXTT
IF GreaterThan? Recall# Num#('1') Num#('0') { OD Face }
Save# Num#('2') ADD# XStockMax# ADD# Num#('.2') MUL# StockXRadius# Num#('2')
ELSE { ID Face }
Save# Num#('2') SUB# CycleStartX# SUB# Num#('.2') MUL# StockXRadius# Num#('2')
END
END
END
END
'X' TrackX# Recall# Num#('2')
RETURN

GetCycleZ: { Canned Cycle Approach Position }
IF ApproachFace?
IF Drilling?
IF Tap?
Save# Num#('3') ADD# ZStockMax# Num#('.5')
ELSE { PeckFullRetract }
Save# Num#('3') ADD# ZStockMax# Num#('.1')
END
ELSE
Save# Num#('3') ADD# ZStockMax# Num#('.1')
END
ELSE { ODApproach/IDApproach }
IF Threading?
IF LessThan? FeedIPR# Num#('.0625')
Save# Num#('3') ADD# ZStockMax# Num#('.25')
ELSE
Save# Num#('3') ADD# ZStockMax# MUL# FeedIPR# Num#('4')
END
ELSE
Save# Num#('3') ADD# ZStockMax# ADD# Num#('.1') StockZ#
END
END
'Z' TrackZ# Recall# Num#('3')
RETURN

CycleSP:
StockOff
IF LAST CannedCycle?
SeqLabC Rapid GetCycleX GetCycleZ RapidF# EOL { RapidF# Forces FeedRate }
ELSE
IF ApproachOD? AND LAST ApproachOD?
SeqLabC GetCycleZ EOL
SeqLabC GetCycleX EOL
ELSE
IF ApproachID? AND LAST ApproachID?
SeqLabC GetCycleZ EOL
SeqLabC GetCycleX EOL
ELSE
SeqLabC GetCycleX GetCycleZ EOL
END
END
END
RETURN

CSSPreset:
SeqLabC Preset MaxRPM 'R'
IF CannedCycle?
Recall# Num#('2')
ELSE
CycleStartX#
END
EOL
RETURN

TurnCSSOn:
CSSOn 'G96' Speed
RETURN

SetMaxRPM1: { Speed Limit = 120 Ö Lead OR 120 * TPI}
SetMaxRPM('3500') { 29.166666666667 TPI }
IF GTEqual? FeedIPR# Num#('.33333') { 3 TPI } { Probably Multiple Start Threads }
IF GTEqual? FeedIPR# Num#('4') { .25 TPI }
SetMaxRPM('30')
ELSE
IF GTEqual? FeedIPR# Num#('2') { .5 TPI }
SetMaxRPM('60')
ELSE
IF GTEqual? FeedIPR# Num#('1.33333') { .75 TPI }
SetMaxRPM('90')
ELSE
IF GTEqual? FeedIPR# Num#('1') { 1 TPI }
SetMaxRPM('120')
ELSE
IF GTEqual? FeedIPR# Num#('.66667') { 1.5 TPI }
SetMaxRPM('180')
ELSE
IF GTEqual? FeedIPR# Num#('.5') { 2 TPI }
SetMaxRPM('240')
ELSE
IF GTEqual? FeedIPR# Num#('.4') { 2.5 TPI }
SetMaxRPM('300')
ELSE
IF GTEqual? FeedIPR# Num#('.33333') { 3 TPI }
SetMaxRPM('360')
END
END
END
END
END
END
END
END
ELSE
IF GTEqual? FeedIPR# Num#('.09091') { 11 TPI }
IF GTEqual? FeedIPR# Num#('.25') { 4 TPI }
SetMaxRPM('480')
ELSE
IF GTEqual? FeedIPR# Num#('.22222') { 4.5 TPI }
SetMaxRPM('540')
ELSE
IF GTEqual? FeedIPR# Num#('.2') { 5 TPI }
SetMaxRPM('600')
ELSE
IF GTEqual? FeedIPR# Num#('.16667') { 6 TPI }
SetMaxRPM('720')
ELSE
IF GTEqual? FeedIPR# Num#('.14286') { 7 TPI }
SetMaxRPM('840')
ELSE
IF GTEqual? FeedIPR# Num#('.125') { 8 TPI }
SetMaxRPM('960')
ELSE
IF GTEqual? FeedIPR# Num#('.11111') { 9 TPI }
SetMaxRPM('1080')
ELSE
IF GTEqual? FeedIPR# Num#('.1') { 10 TPI }
SetMaxRPM('1200')
ELSE
IF GTEqual? FeedIPR# Num#('.09091') { 11 TPI }
SetMaxRPM('1320')
END
END
END
END
END
END
END
END
END
ELSE
IF GTEqual? FeedIPR# Num#('.08696') { 11.5 TPI }
SetMaxRPM('1380')
ELSE
IF GTEqual? FeedIPR# Num#('.08333') { 12 TPI }
SetMaxRPM('1440')
ELSE
IF GTEqual? FeedIPR# Num#('.07692') { 13 TPI }
SetMaxRPM('1560')
ELSE
IF GTEqual? FeedIPR# Num#('.07143') { 14 TPI }
SetMaxRPM('1680')
ELSE
IF GTEqual? FeedIPR# Num#('.0625.') { 16 TPI }
SetMaxRPM('1920')
ELSE
IF GTEqual? FeedIPR# Num#('.05556') { 18 TPI }
SetMaxRPM('2160')
ELSE
IF GTEqual? FeedIPR# Num#('.05') { 20 TPI }
SetMaxRPM('2400')
ELSE
IF GTEqual? FeedIPR# Num#('.04167') { 24 TPI }
SetMaxRPM('2880')
ELSE
IF GTEqual? FeedIPR# Num#('.03571') { 28 TPI }
SetMaxRPM('3360')
ELSE
SetMaxRPM('3480') { .03448 = 29 TPI }
END
END
END
END
END
END
END
END
END
END
END
RETURN

SetMaxFeed1: { Metric }
IF GTEqual? SpeedRPM# Num#('3500')
SetMaxFeed('1.45034')
ELSE
IF GTEqual? SpeedRPM# Num#('3000')
SetMaxFeed('1.69164')
ELSE
IF GTEqual? SpeedRPM# Num#('2500')
SetMaxFeed('2.032')
ELSE
IF GTEqual? SpeedRPM# Num#('2000')
SetMaxFeed('2.54')
ELSE
IF GTEqual? SpeedRPM# Num#('1500')
SetMaxFeed('3.38582')
ELSE
IF GTEqual? SpeedRPM# Num#('1000')
SetMaxFeed('5.08')
ELSE
IF GTEqual? SpeedRPM# Num#('750')
SetMaxFeed('6.77164')
ELSE
IF GTEqual? SpeedRPM# Num#('500')
SetMaxFeed('10.16')
ELSE
IF GTEqual? SpeedRPM# Num#('300')
SetMaxFeed('16.93164')
ELSE
SetMaxFeed('25.39746')
END
END
END
END
END
END
END
END
END
RETURN

SetMaxFeed2: { Inch }
IF GTEqual? SpeedRPM# Num#('3500')
SetMaxFeed('.0571')
ELSE
IF GTEqual? SpeedRPM# Num#('3000')
SetMaxFeed('.0666')
ELSE
IF GTEqual? SpeedRPM# Num#('2500')
SetMaxFeed('.0800')
ELSE
IF GTEqual? SpeedRPM# Num#('2000')
SetMaxFeed('.1000')
ELSE
IF GTEqual? SpeedRPM# Num#('1500')
SetMaxFeed('.1333')
ELSE
IF GTEqual? SpeedRPM# Num#('1000')
SetMaxFeed('.2000')
ELSE
IF GTEqual? SpeedRPM# Num#('750')
SetMaxFeed('.2666')
ELSE
IF GTEqual? SpeedRPM# Num#('500')
SetMaxFeed('.4000')
ELSE
IF GTEqual? SpeedRPM# Num#('300')
SetMaxFeed('.6666')
ELSE
SetMaxFeed('.9999')
END
END
END
END
END
END
END
END
END
RETURN

CheckLimits:
SetMaxRPM('3500')
IF Threading?
SetMaxRPM1
ELSE
IF CannedCycle? AND Drilling? AND Tap?
SetMaxRPM1
END
END
IF Metric?
SetMaxFeed1
ELSE
SetMaxFeed2
END
RETURN

GetDwell: { Dwell in Revolutions }
FORMAT(MUL#,6)
MUL# DIV# Dwell# Num#('60') SpeedRPM#
FORMAT(MUL#,2)
RETURN

{Prog Subroutines **********************************************************}

RestoreScale:
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
RETURN

DoSubComment:
' ' EOL
IF UseComments? AND SubComment?
'( SUBROUTINE FOR OPERATION ' Operation# ' )' EOL
END
RETURN

GetToolComment:
IF ToolComment?
'( ' ToolComment$ ' )'
END
RETURN

DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
'( OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
'( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
'( TOOL ' Tool# ': ' ToolSize$ ' ' ToolType$ ' )' EOL
END
GetToolComment EOL
RestoreScale
END
RETURN

PSInit: {reset flags from last Op, .70}
RETURN

PSStuff:
RETURN

DoPostScript:
PSInit
EachPS
SeqLabC PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN

StockOnNoCan:
IF NOT CannedCycle?
StockOn {need stock for SP positioning, if not a canned cycle}
END
RETURN

FeedNoCan:
IF NOT CannedCycle?
FeedC
END
RETURN

FeedRateNoCan:
IF NOT CannedCycle?
FeedRateC
END
RETURN

ApproachSP:
IF CannedCycle?
CycleSP
ELSE
IF ApproachFace?
SeqLabC StockOnNoCan XSPC EOL
SeqLabC StockOff ZOpCPC EOL
StockOnNoCan
IF NotEqual? CycleStartZ# ZOpCP#
SeqLabC FeedNoCan ZSPC FeedRateNoCan EOL
END
ELSE { ODApproach/IDApproach }
SeqLabC StockOnNoCan ZSPC EOL
SeqLabC StockOff XOpCDC EOL
StockOnNoCan
IF NotEqual? CycleStartX# XOpCD#
SeqLabC FeedNoCan XSPC FeedRateNoCan EOL
END
END
END
RETURN

AppMove:
StockOff
IF CannedCycle?
GetCycleZ
ELSE
ThisOpEntryZCP
END
CoolOn
RETURN

Approach: { NOT FOR TAILSTOCK, .82 }
Rapid RapidF# { RapidF# Forces FeedRate }
IF CannedCycle?
SeqLabC GetCycleX AppMove EOL
ELSE
IF ApproachOD?
SeqLabC ThisOpEntryXCP AppMove EOL
ELSE
IF ApproachID?
SeqLabC XOpCD AppMove EOL
ELSE {ApproachFace}
SeqLabC StockOnNoCan XSP AppMove EOL
END
END
ApproachSP
END
RETURN

SpinOnCoolOn:
IF LAST ProgStop?
SeqLabC {SpeedC} SpinOn EOL
SeqLabC CoolOn EOL
ELSE
SeqLabC {SpeedC} EOL
IF NOT CoolOff? AND LAST CoolOff?
SeqLabC CoolOn EOL
END
END
RETURN

CheckOffset:
DoEndOpPS
IF LAST ProgStop?
SeqLabC 'M0' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
END
IF NewToolOffset?
SeqLabC 'T' LatheOffset EOL
END
CSSOff
IF NOT ConstantSurfaceFeed?
IF LAST ConstantSurfaceFeed?
'G97' Speed
ELSE
IF LAST ProgStop?
'G97' Speed
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
'G97' Speed
END
END
END
SpinOnCoolOn
END
DoPostScript
RETURN

CheckCSS:
CSSOff
IF ConstantSurfaceFeed?
IF LAST ConstantSurfaceFeed?
IF NotEqual? MaxRPM# LAST MaxRPM#
CSSPreset
END
IF LAST ProgStop?
TurnCSSOn
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
TurnCSSOn
END
END
ELSE
CSSPreset
TurnCSSOn
END
SpinOnCoolOn
END
RETURN

FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXC MoveZC ArcIJC
RETURN

CkCRC: { 4.2 }
IF XMove? OR ZMove? { Approach Length Feature and Multiple Pockets }
IF LastFeat?
CRCOffC { Exit Length Feature }
ELSE
CRCOnC { Entry Length Feature }
END
END
RETURN

ToolPath:
EACHFeat
GetToolTip
IF LastFeat?
IF Drilling?
IF Tap?
SeqLabC InverseSpinOn ZSP 'K' FeedIPR# EOL
ELSE
IF Dwell?
SeqLabC 'G4X' GetDwell EOL
END
END
ELSE
IF CannedCycle?
IF Roughing?
IF NOT RoughSimple?
SeqLab
END
END
END
END
END
IF PointFeat?
SeqLabC MoveSXYC EOL
ELSE
IF RapidFeat?
SeqLabC RapidC MoveXC MoveZC EOL
ELSE
IF LineFeat?
IF NOT CannedCycle?
SeqLabC CkCRC EOL
END
SeqLabC FeedC MoveXC MoveZC FeedRateC EOL
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop }
SeqLabC FormatArc FeedRateC EOL
NEXTQuadrant
ELSE
IF ThreadFeat?
SeqLabC 'G33' MoveXC MoveZC ThrdLead EOL
Rapid
END
END
END
END
END
NEXTFeat
RETURN

CheckRapid:
CRCOffC
IF NewTool?
IF LAST NOT CannedCycle?
RapidC
END
ELSE
IF LAST CannedCycle?
Rapid
ELSE
RapidC
END
END
RETURN

{Start of executable Prog **************************************************}

{setup and initializations}
InitProg
SetAbs
PosSideLathe
StandardXZArcs
NoIJKSigns
SetMaxRPM('3500')
IF PSComment? AND UseComments?
'PostScript:' EOL
' Literals: put between single or double quotes.' EOL
' Separate commands and literals with at least one space.' EOL
' A CR ( RETURN key ) will start a new line.' EOL
' Commands: must be all capital letters when typed in.' EOL
' ENDOP -' EOL
' all literals and commands before an ENDOP command' EOL
' will appear at the beginning of the operation. All ' EOL
' literals and commands after an ENDOP command will appear' EOL
' at the end of the operation. ' EOL
END
EachOp {Start of post processing *********************}
GetLCycle
IF FirstOperation?
' ' EOL
'$'
IF ProgramNameComment?
ProgramName$
END
EOL
IF UseComments?
IF ProgramComment?
'( ' ProgramComment$ ' )' EOL
END
GetToolComment EOL
IF FormatNameComment?
'( FORMAT: ' FormatName$ ' )' EOL
END
IF TimeComment?
'( ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
'( OUTPUT IN ABSOLUTE INCHES )' EOL
END
END
RestoreScale
OpenSub
StockOff {.71.2}
SetHome
CheckLimits
DoOpComments
DoPostScript
Plane

{ Tool Change Macro }
'N50G40' EOL
'N51G97S1000M3' EOL
'N53G0' EOL
'N55T0' Home ' (SAFE INDEX)' EOL
'N60M01' EOL
' ' EOL {blank line space}
SeqLab 'G54' GetToolComment EOL
SeqLabC 'G25P150P255' EOL { Call Tool Change Macro }

SeqLabC 'G95' EOL { Inches per Revolution FeedRate }
SeqLabC OpToolID '00' EOL
SeqLabC CSSOff 'G97'
IF ConstantSurfaceFeed?
CalcRPM1
ELSE
Speed
END
OpToolID LatheOffset SpinOn EOL
Approach
ELSE
IF NewTool?

{Finish off last Operation}

StockOff {.62}
IF LAST NOT CannedCycle?
CheckRapid
IF LAST ApproachOD?
SeqLabC LAST OpExitXCPC EOL
ELSE
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
END
END
SeqLabC LAST OpExitZCPC EOL
END
DoEndOpPS
SeqLabC 'G25P150P260' EOL { Call Tool Change Macro }
IF LAST ProgStop?
SeqLabC 'M0' EOL
ELSE
{ ProgStop Handled in Tool Change Macro }
END

{Start new Operation}

' ' EOL { Blank Line }
CheckLimits
DoOpComments
DoPostScript
SeqLab 'G54' GetToolComment EOL
SeqLabC 'G25P150P255' EOL { Call Tool Change Macro }
SeqLabC 'G95' EOL { Inches per Revolution FeedRate }
SeqLabC OPToolID '00' EOL
SeqLabC CSSOff 'G97'
IF ConstantSurfaceFeed?
CalcRPM1
ELSE
Speed
END
OpToolID LatheOffset SpinOn EOL
Approach
ELSE
IF SameTool? {.62}

{Start new Operation}

StockOff
CheckLimits
DoOpComments
IF LAST CannedCycle?
CheckOffset
IF NOT CannedCycle?
CheckRapid
END
ApproachSP
ELSE
IF LAST StraightConnect?
CheckOffset
CheckRapid
SeqLabC StockOnNoCan XSPC ZSPC EOL
ELSE
CheckRapid
IF ApproachOD?
IF LAST ApproachOD?
SeqLabC LAST XOpECDC EOL
ELSE {around}
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
END
SeqLabC LAST OpExitZCPC EOL
SeqLabC LAST OpExitXCPC EOL
END
ELSE
IF ApproachID?
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC EOL
END
SeqLabC LAST OpExitZCPC EOL
SeqLabC XOpCDC EOL
END
ELSE {ApproachFace}
IF LAST ApproachFace?
SeqLabC LAST ZOpECPC EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC EOL
ELSE {LAST ApproachID}
SeqLabC LAST XOpECDC EOL
END
SeqLabC LAST OpExitZCPC EOL
END
END
END
CheckOffset
ApproachSP
END
END
END
END
END {common point for all operations}
IF SameTool?
CheckCSS
ELSE
IF ConstantSurfaceFeed?
CSSPreset
SeqLabC TurnCSSOn EOL
END
END
IF CannedCycle?
StockOff
IF Roughing?
IF RoughSimple?
{ G81/G82 [ Turning/Facing ] Cycle:
X (Ä…2.5) = Workpiece Diameter at Final Cutting Depth.
Z (Ä…2.5) = Total Cutting Length at Final Cutting Depth.
P1 ( 2.5) = Maximum Depth of Cut per Pass in the [ X/Z ] Axis, Incremental, Radial Value.
P2 (Ä…2.5) = Taper Pull-out Point at END of LAST Pass, Incremental from
Absolute StartPoint.
P3 (Ä…2.5) = Taper Pull-in Point at Beginning of LAST Pass, Incremental from
Absolute StartPoint.
P4 ( 1 ) = IF a '1' is Programmed, all Moves are 'In Zone'.
P5 ( 3.1) = Pull-in FeedRate. }
StockOn
SetPass1
IF Taper?
' ' EOL
'( NOTE: This Post Processor does not support RoughSimple Cycle with Taper!!! )' EOL
' ' EOL
END
SeqLabC LCycle 'X' FinishXDia# 'Z' FinishZ# 'P1' CutDepth# 'P4-0' FeedRate EOL
ELSE
TagInc
SetPass2
SeqLabC CRCOnC EOL
IF RoughContour?
{ G68/G69 [ Turning/Facing ] Cycle:
X (Ä…2.5) = X Axis Contour StartPoint, Diametral Value.
Z (Ä…2.5) = Z Axis Contour StartPoint.
I ( 2.5) = Amount of Finish Stock in X Axis, Incremental, Radial Value.
K ( 2.5) = Amount of Finish Stock in Z Axis, Incremental Value.
P1 ( 4 ) = Sequence Number of Starting Block.
P2 ( 4 ) = Sequence Number of Ending Block.
P3 ( 2.5) = Maximum Depth of Cut per Pass in [ X/Z ] Axis, Incremental, Radial Value.
P4 (Ä…1 ) = Tracing of EACH Pass as follows:
+0 = Tool follows Contour to END of EACH Pass ( Standard Gibbs Cycle ).
-0 = Same as +0, but on LAST Pass, Tool follows entire Contour for a
Clean-up Pass.
+1 = Tool withdraws at 45Ä„ Angle at END of EACH Pass.
-1 = Same as +1, but on LAST Pass, Tool follows entire Contour for a
Clean-up Pass. }
SeqLabC LCycle XSP ZSP XStkLeft ZStkLeft 'P1Å‚' Tag# 'P2²' Tag# CutDepth 'P4-0' FeedRate EOL
ELSE
IF RoughPatternShift?
{ G66/G67 [ Turning/Facing ] Cycle:
X (Ä…2.5) = X Axis Contour StartPoint, Diametral Value.
Z (Ä…2.5) = Z Axis Contour StartPoint.
I ( 2.5) = Amount of Finish Stock in X Axis, Incremental, Radial Value.
K ( 2.5) = Amount of Finish Stock in Z Axis, Incremental Value.
P1 ( 4 ) = Sequence Number of Starting Block.
P2 ( 4 ) = Sequence Number of Ending Block.
P3 ( 2.5) = Maximum Depth of Cut per Pass in [ X/Z ] Axis, Incremental,
Radial Value.
P4 ( 2.5) = Maximum, Total Amount of Stock to be Removed, Incremental,
Diametral Value.
P5 ( 2 ) = Z Axis Angular Shift ²45Ä„. }
SeqLabC
IF ApproachFace?
'G67'
ELSE
LCycle { G66 }
END
XSP ZSP XStkLeft ZStkLeft 'P1Å‚' Tag# 'P2²' Tag# 'P3' CutDepth# XminusU 'P545' FeedRate EOL
END
END
IF AutoFinish?
SeqLabC 'G25P1Å‚' Tag# 'P2²' Tag# EOL
END
OpenSub
DoSubComment
'>' Tag# EOL
SeqLab
IF FIRST RapidFeat?
Rapid
ELSE
Feed
END
ToolPath
'<' Tag# EOL
CloseSub
SeqLabC CRCOffC EOL
END
ELSE
IF Threading?
{ G84 Cycle:
X (Ä…2.5) = Root Diameter at Beginning of Thread, Absolute Value.
Z (Ä…2.5) = ZDepth at End of Thread, Absolute Value.
P1 ( 2.5) = Cutting Depth of FIRST Pass.
P2 ( 1.6) = Thread Lead.
P3 (Ä…2.5) = Tapered Root Diameter at End of Thread, Absolute Value.
P4 (Ä…2.5) = Anticipated Pull-out Lead Distance at End of Thread. }
{ G80 AutoFinish Cycle:
P3 ( 3 ) = Control will make Additional Clean-up Pass(es). }
IF AutoFinish?
SeqLabC 'G80P32' EOL
END

{ncPost}
{SeqLabC LCycle
IF Taper?
'X' MUL# Num#('2') ADD# FinishXRadius# Taper#
ELSE
'X' FinishXDia#
END
FinZ CutDepth 'P2' FeedIPR#
IF Taper?
'P3' FinishXDia#
END
EOL}

{Virtual}
SeqLabC LCycle 'X' FinishXDia# FinZ CutDepth 'P2' FeedIPR#
IF Taper?
'P3' MUL# Num#('2') SUB# FinishXRadius# Taper#
END
EOL
ELSE
IF Drilling?
IF Tap?
{ G33 Cycle: }
SeqLabC LCycle ZDepth 'K' SUB# FeedIPR# Num#('.001') EOL
SeqLabC InverseSpinOn 'Z' TrackZ# Recall# Num#('3') 'K' FeedIPR# EOL
ELSE
IF Peck? AND PeckFullRetract?
{ G83 Cycle:
Z (Ä…2.5) = Final Hole Depth, Absolute Value.
P1 ( 2.5) = FIRST Peck Increment.
P2 ( 1.2) = Multiplier of [ P1 ] Peck Increment for Succeeding Pecks.
P3 ( 3.4) = Dwell Period at the Bottom of Hole, in Spindle Revolutions.
P4 ( 2.5) = Retract Increment after EACH Peck.
P5 ( 2.5) = Minimum Peck Increment. }
SeqLabC LCycle ZDepth Peck 'P2.8'
IF Dwell?
'P3' GetDwell
END
Retract 'P5.1' FeedRate EOL
IF AutoFinish?
SeqLabC Feed ZDepth EOL
IF Dwell?
SeqLabC 'G4X' GetDwell EOL
END
SeqLabC Rapid 'Z' TrackZ# Recall# Num#('3') EOL
END
END
END
END
END
END
ELSE
StockOn
SetPass1
ToolPath
IF AutoFinish? { .82.1c }
StockOff
IF Turning?
IF ApproachFace?
SeqLabC RapidC ZOpECPC EOL
ELSE
SeqLabC RapidC XOpECDC EOL
END
ApproachSP
SeqLabC StockOff StrtPosC EOL
ToolPath
ELSE
IF Roughing? AND NOT RoughSimple?
SetPass2
SeqLabC RapidC XSPC ZSPC EOL
SeqLabC StockOff StrtPosC EOL
ToolPath
SetPass1
ELSE
IF Threading?
SeqLabC 'X' MUL# Num#('2') ADD# FinishXRadius# Taper# EOL
SeqLabC 'G33'
IF Taper?
'X' FinishXDia#
END
FinZ ThrdLead EOL
SeqLabC Rapid XSP EOL
SeqLabC ZSP EOL
END
END
END
END
END
NextOp {loops back to EachOP until last Operation}

{End of program ************************************************************}

{finish last operation}
StockOff
CRCOffC
IF NOT CannedCycle?
RapidC
IF ApproachOD?
SeqLabC OpExitXCPC EOL
ELSE
IF ApproachID?
SeqLabC XOpECDC EOL
END
END
SeqLabC OpExitZCPC EOL
END
DoEndOpPS
SeqLabC 'G25P150P260' EOL { Call Tool Change Macro }
IF ProgStop?
SeqLabC 'M0' EOL
END
SeqLabC EOP EOL
CloseSub
Post2 {organize Subs into one program}
EOR EOL
' ' EOL
Close
Retag
IF UseComments?
SetScale('1') {restore scale for comments}
Reopen
IF FileBytesComment?
'( FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL
END
IF FileFeetComment?
'( FILE LENGTH: ' FileFeet# ' FEET )' EOL
END
IF FileMetersComment?
'( FILE LENGTH: ' FileMeters# ' METERS )' EOL
END
Close
END


Wyszukiwarka

Podobne podstrony:
GE 1050 LeBlonde Rgl L033 85
GE 1050 HLB CS L520 85 1
GE 1050 Burgmaster [TC] M858 85
GE Fanuc 0TB Hardinge L576 85 1
GE 1050 Monarch ( R) L090 82
GE 1050T [GT] Baron L591 85
AB 7360 Hardinge L167 85
GE 2000 Bullard VTL L502 85
GE 1050 B&S 1500VC M554 87
GE 7542 Monarch TC75 L395 85 01
GE 1050 LeBlonde [DEW] L250 82
GE 1050 MCL Mon [GI] MY25 87 2
GE 1050 L&S L191 82
GE 1050 B&S 1500VC [GT] M718 87
GE 1050T W&S 242 [HP] L401 85

więcej podobnych podstron