GE Fanuc 0TB Hardinge L576 85 1


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

{10/23/90
Copied & modified: Fanuc 10T MS [-] L001.71
For: Chandler Evans (Colt Ind.)
Machine: Wasino TH-102 Dual Spindle
Control: Fanuc OT
Changed NegSideLathe to PosSideLathe
Changed ReverseXZArcs to StandardXZArcs
Using Tool Offset Number for Minimum Sequencing.
Deleted Preset Home from beginning of EACH Tool. Geometry Offset is stored with Tool Offset.
Do not cancel the Tool Offset in CheckOffset, call the new one only.
Go to machine Home and turn CoolOff at end of EACH Tool.
Deleted UnTool from end of Prog.
Added OptCyc1 PostScript to Call Sub for Spindle switch at beginning and/or end of Program.
Added literal 'G1G98F190.' for Rapids, modified all occurances except in Canned Cycles.
Add Spaces between codes.
NOTE: Modifications to Canned Cycles were not done as Ron said they were not using them due to
not being allowed to make Rapid Moves around the part in there shop & Canned Cycles will do that.
JR}

{2/12/91
Copied & modified: Fanuc 0T Wasino L182.71
For: Gibbs & Associates
Machine: Wasino
Control: Fanuc 0T
Updated to Version 3.2 per Fanuc 10T MS [-] L001.71.4 Format.
DWB}

{10/1/91
Updated: Fanuc 0T Wasino L182.71.4
For: Gibbs & Associates
Updated to Version 4.0 per Fanuc 10T MS [-] L001.82 Format.
KM}

{10/10/91
Updated: Fanuc 0T Wasino L182.82
For: Gibbs & Associates
Made minor fixes.
ncPost was bombing out, and reporting error #28.
Arc EndPoints were not being output at ArcFeat.
ArcIJC sometimes output '?' which screwed Retag.
Copied & modified Fanuc 10T MS [-] L001.82 MachSpec.
Only differences were:
Use 'F' for Rapid Moves = TRUE
Rapid Feed Rate (XXXX^X) = 1900
Default FORMAT for 'F' = '###.####;0'
Spaces between codes.
Changed Rapid Label from ' G0' to ' G98' in MachSpec.
Changed Feed Label from ' G1' to ' G99' in MachSpec.
Outputting literal ' G1' on startup blocks at FirstOperation and NewTool.
Also outputting literal ' G1' for ToolPath Features following ArcFeat.
DWB}

{4/12/92
Updated: Fanuc 0T Wasino L182.82.1
For: Gibbs & Associates
Updated to Version 4.0 per Fanuc 0T/3T Miyano L008.82.1 Format.
KM}

{6/17/93
Copied & modified: Fanuc 0T Wasino L182.82.2
For Waltz Bros
Control: GN 0T-B
Machine Hardinge CHNC
Added Bar Feed to beginning of program
Removed OptCyc PostScript stuff.
Changed to use subroutine P1 instead of Home.
Jim Radcliffe}

{7/9/96, Updated for Catalyst v2.20 per Fanuc 10T MS [-] L001.85 Format, MPK}

{3/27/97
Initial: GNOT-B Hardinge L285.85
Created: GE Fanuc 0TB Hardinge Lxxx.85
ForUser: Lovejoy
Control: GE Fanuc 0T-B
Machine: Hardinge Conquest 42
Develop: ComPost2 68K 1.0b11, Virtual Gibbs 3.31 PPC
Comment: New processor per sample readout and conversation with Mark Harrison.
Custom Bar Feed Program Output:
EachOp/NextOp loop to check for CutOff opeation.
SetFlag('1') control output as Bar Feed Program.
A Drill operation using Tool# 10 with Offset #10 operation will be the Bar Stop.
SetFlag('2') to control the output of open & close collet etc...
Using G98 inches per minute with RapidF for rapid moves
Using G99 inches per revolution for feed moves.
Using Flag('3') control to output literal G1 as needed.
Modified program format per sample program.
Followed manual for GE Fanuc OTB Hrdinge Conquest 42.
Updated per Fanuc 10T MS [-] L001.85.01.02
Jim Radcliffe}

{4/11/97
Initial: GE Fanuc 0TB Hardinge L576.85
Created: GE Fanuc 0TB Hardinge L576.85.1
Develop: ComPost2 68K 1.0b11, CatalystPPC v3.33C
Comment: Modified per marked up reaout and conversation with Mark Harrison
Changed Rapid F from 250 to 630
Changed to R format arcs.
Modify tapping to use G32 for Prefer Canned or not, same output!
Changed format of CutDepth and ThrdHeight for Threading Cycle.
Custom cutoff handling:
Slow to 1200 RPM at 1/8 above end point marker.
Feed to end point marker at F.0011
Jim Radcliffe}

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

#1 = '#.00'
#2 = '###.####;0.'
#3 = '#######0'
#4 = '#####.###;0'
#5 = '#.######;0.'
#6 = '###0'
#7 = '###.###;0.'
#8 = '00'
#9 = '0^0'
#10 = '^0000'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(FirstMoveEPZ#,2)
FORMAT(TrackX#,2)
FORMAT(CutDepth#,2)
FORMAT(Program#,3)
FORMAT(Operation#,3)
FORMAT(Tool#,3)
FORMAT(ToolOffset#,3)
FORMAT(Dwell#,4)
FORMAT(FeedTapIPR#,5)
FORMAT(CalcEPRPM#,6)
FORMAT(RapidF#,7)
FORMAT(SpringPasses#,8)
FORMAT(ADD#,8)
FORMAT(DIV#,9)
FORMAT(LastCutXRadius#,10)

{Command Subroutines *******************************************************}

OpenCollet:
'M21'
RETURN

CloseCollet:
'M22'
RETURN

OpenPartsCatcher:
'M26'
RETURN

ClosePartsCatcher:
'M25'
RETURN

BarFeedDwell:
'G4X.3'
RETURN

CheckG1:
IF Flag?('3')
'G1'
SetFlagF('3')
END
RETURN

CheckRapid1:
CheckG1 CRCOffC
IF LAST CannedCycle?
Rapid
ELSE
RapidC
END
RETURN

CheckRapidF1:
IF LAST CannedCycle?
RapidF
ELSE
RapidFC
END
RETURN

CheckRapid2:
CheckG1 CRCOffC
IF CannedCycle?
Rapid
ELSE
RapidC
END
RETURN

CheckRapidF2:
IF CannedCycle?
RapidF
ELSE
RapidFC
END
RETURN

GetSequence:
IF MinimizeSequencing?
'N' ToolOffset#
ELSE
SeqLab
END
RETURN

SpinOnAndCoolOn:
IF CoolOff?
SpinOn
ELSE
IF CWSpindle?
'M13'
ELSE
'M14'
END
END
RETURN

InverseSpinOnAndCoolOn:
IF CoolOff?
SpinOn
ELSE
IF CWSpindle?
'M14'
ELSE
'M13'
END
END
RETURN

ckBarFeedOp:
IF Flag?('1') AND Drilling? AND Equal? Tool# Num#('10') AND Equal? ToolOffset# Num#('10')
SetFlag('2')
ELSE
SetFlagF('2')
END
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

DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
'( OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
'( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' EOL
END
RestoreScale
END
RETURN

DoToolComments:
IF UseComments?
SetScale('1')
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
IF ToolTypeComment?
'( TOOL ' Tool# ': ' ToolSize$ ' ' ToolType$ ' )' EOL
END
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 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
RETURN

AppMove:
StockOff ThisOpEntryZCP
RETURN

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

CheckOffset:
DoEndOpPS
IF LAST ProgStop?
SeqLabC 'M0' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
END
DoOpComments
DoPostScript
SeqLabC
IF ConstantSurfaceFeed?
{ handled in main common }
ELSE
IF LAST ConstantSurfaceFeed?
CSSOff 'G97' Speed
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
Speed
END
END
END
IF LAST ProgStop?
SpinOnAndCoolOn
ELSE
IF NOT CoolOff? AND LAST CoolOff?
CoolOn
END
END
EOL
IF NewToolOffset?
SeqLabC OpToolID LatheOffset EOL
END
RETURN

FormatArc:
IF ArcCW?
'G2'
ELSE
'G3'
END
MoveXC MoveZC
IF ArcIJFormat?
ArcIJC
ELSE
ArcRC
END
RETURN

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

ToolPath:
EACHFeat
GetToolTip
IF LastFeat?
IF CutOff?
SeqLabC CkCRC CheckG1 FeedC 'X' TrackX# ADD# EPX# Num#('.125') MoveZC FeedRateC EOL
SeqLabC CSSOff 'G97S1200' EOL
SeqLabC OpenPartsCatcher EOL
SeqLabC 'G4X.8' EOL
ELSE
IF Flag?('2')
SeqLabC OpenCollet EOL
SeqLabC BarFeedDwell EOL
END
END
IF Drilling?
IF Tap?
SeqLabC 'G4X' Dwell# EOL
SeqLabC InverseSpinOnAndCoolOn EOL
ELSE
IF Dwell?
SeqLabC 'G4X' Dwell# EOL
END
END
ELSE
IF CannedCycle?
SeqLab
END
END
END
IF PointFeat?
SeqLabC MoveSXYC EOL
ELSE
IF RapidFeat?
SeqLabC CheckG1 RapidC MoveXC MoveZC RapidFC EOL
ELSE
IF LineFeat?
IF Drilling? AND Tap?
SeqLabC 'G32' MoveZC
IF LastFeat?
'F' FeedTapIPR#('1')
ELSE
FeedRate
END
EOL
SetFlag('3')
ELSE
SeqLabC CkCRC CheckG1 FeedC MoveXC MoveZC
IF CutOff? AND LastFeat?
'F.0011'
ELSE
FeedRateC
END
EOL
END
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop }
SeqLabC FormatArc FeedRateC EOL
SetFlag('3')
NEXTQuadrant
ELSE
IF ThreadFeat?
SeqLabC 'G32' MoveXC MoveZC ThrdLead EOL
SetFlag('3')
END
END
END
END
END
IF LastFeat?
IF CutOff?
SeqLabC ClosePartsCatcher EOL
ELSE
IF Flag?('2')
SeqLabC BarFeedDwell EOL
SeqLabC CloseCollet EOL
SeqLabC BarFeedDwell EOL
END
END
END
NEXTFeat
RETURN

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

{setup and initializations}
InitProg
SetAbs
PosSideLathe
StandardXZArcs
SetMaxRPM('10000')
SetMaxFeed('500')
SetFlagF('1') { BarFeed Program }
SetFlagF('2') { BarFeed Operation }
SetFlagF('3') { G1 needs to be output }
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 { check for cut off operation to signify bar feed program output }
IF CutOff?
SetFlag('1') { this is a BarFeed Program }
END
NextOp
EachOp {Start of post processing *********************}
GetLCycle
IF FirstOperation?
EOR EOL
':' Program#
IF UseComments? AND ProgramNameComment?
'( ' ProgramName$ ' )'
END
EOL
IF UseComments?
IF ProgramComment?
'( ' ProgramComment$ ' )' EOL
END
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
Plane
SeqLabC 'G20' EOL
ckBarFeedOp
SetLineStrtChr('/')
GetSequence DoToolComments EOL
DoOpComments
SeqLabC 'M98P1' EOL
SetLineStrtChr('')
DoPostScript
SeqLabC CSSOff 'G97'
IF ConstantSurfaceFeed?
CalcRPM1
ELSE
Speed
END
SpinOnAndCoolOn EOL
SeqLabC 'G4' OpToolID LatheOffset EOL
Approach
ELSE
IF NewTool?

{Finish off last Operation}

StockOff {.62}
CheckRapid1
IF LAST ApproachOD?
SeqLabC LAST OpExitXCPC CheckRapidF1 EOL
SeqLabC LAST OpExitZCPC EOL
ELSE
IF LAST ApproachID?
SeqLabC LAST XOpECDC CheckRapidF1 EOL
SeqLabC LAST OpExitZCPC EOL
ELSE { LAST ApproachFace }
SeqLabC LAST OpExitZCPC CheckRapidF1 EOL
END
END
DoEndOpPS
IF LAST ConstantSurfaceFeed?
IF LAST CutOff?
{we went to G97 in the tool path}
ELSE
SeqLabC CSSOff 'G97' CalcRPM2 EOL
END
END
SeqLabC 'M98P1' EOL
IF LAST ProgStop?
SeqLabC 'M0' EOL
ELSE
SeqLabC ProgStop EOL
END

{Start new Operation}

ckBarFeedOp
SetLineStrtChr('/')
' ' EOL
GetSequence DoToolComments EOL
DoOpComments
SeqLabC 'M98P1' EOL
SetLineStrtChr('')
DoPostScript
SeqLabC CSSOff 'G97'
IF ConstantSurfaceFeed?
CalcRPM1
ELSE
Speed
END
SpinOnAndCoolOn EOL
SeqLabC 'G4' OpToolID LatheOffset EOL
Approach
ELSE
IF SameTool? {.62}

{Start new Operation}

StockOff
IF LAST StraightConnect?
CheckOffset
CheckRapid1
SeqLabC StockOnNoCan XSPC ZSPC CheckRapidF1 EOL
ELSE
CheckRapid1
IF ApproachOD?
IF LAST ApproachOD?
SeqLabC LAST XOpECDC CheckRapidF1 EOL
ELSE {around}
IF LAST ApproachID?
SeqLabC LAST XOpECDC CheckRapidF1 EOL
SeqLabC LAST OpExitZCPC EOL
ELSE { LAST ApproachFace }
SeqLabC LAST OpExitZCPC CheckRapidF1 EOL
END
SeqLabC LAST OpExitXCPC EOL
END
ELSE
IF ApproachID?
IF LAST ApproachID?
SeqLabC LAST XOpECDC CheckRapidF1 EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC CheckRapidF1 EOL
SeqLabC LAST OpExitZCPC EOL
ELSE { LAST ApproachFace }
SeqLabC LAST OpExitZCPC CheckRapidF1 EOL
END
SeqLabC XOpCDC EOL
END
ELSE {ApproachFace}
IF LAST ApproachFace?
SeqLabC LAST ZOpECPC CheckRapidF1 EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC CheckRapidF1 EOL
ELSE {LAST ApproachID}
SeqLabC LAST XOpECDC CheckRapidF1 EOL
END
SeqLabC LAST OpExitZCPC EOL
END
END
END
CheckOffset
ApproachSP
END
END
END
END {common point for all operations}
IF ConstantSurfaceFeed?
IF SameTool? AND LAST ConstantSurfaceFeed?
IF NotEqual? MaxRPM# LAST MaxRPM#
SeqLabC Preset MaxRPM EOL
END
IF NotEqual? SpeedRPM# LAST SpeedRPM#
SeqLabC Speed EOL
END
ELSE
SeqLabC Preset MaxRPM EOL
SeqLabC CSSOn 'G96' Speed EOL
END
END
IF CannedCycle?
StockOff
IF Roughing?
IF RoughSimple?
StockOn
SetPass1
SeqLabC LCycle
IF ApproachFace?
'Z' FirstMoveEPZ# XatFinZ
ELSE
XatFinZ FinZ
END
XTapAtZ FeedRate EOL
SimpleRough
ELSE
TagInc
SetPass2
IF RoughContour?
SeqLabC LCycle CutDepth 'R' CutDepth# EOL
SeqLabC LCycle 'PÅ‚' Tag# 'Q²' Tag# XStkLeft ZStkLeft FeedRate EOL
'>' Tag# EOL
SeqLab
IF ApproachFace?
StepMove ZSP
ELSE
StepMove XSP
END
IF Rapid?
RapidF
END
EOL
SeqLabC XSPC ZSPC EOL
ELSE
IF RoughPatternShift?
SeqLabC LCycle XminusU ZminusW NumCuts EOL
SeqLabC LCycle 'PÅ‚' Tag# 'Q²' Tag# XStkLeft ZStkLeft FeedRate EOL
'>' Tag# EOL
SeqLab Rapid StrtPos EOL
END
END
ToolPath
'<' Tag# EOL
IF AutoFinish?
SeqLabC 'G70' 'PÅ‚' Tag# 'Q²' Tag# EOL
END
SetPass1
TrackXNO# CycleStartX#
TrackZNO# CycleStartZ#
END
ELSE
IF Threading?
SeqLabC LCycle 'P' SpringPasses#
DIV# RunOutZ# DIV# Num#('1') Thread# { Run out is output in units of lead }
ADD# InFeedAngle# InFeedAngle#
'Q' LastCutXRadius# XTapAtZ EOL
SeqLabC LCycle XatFinZ FinZ ThrdHeight CutDepth ThrdLead EOL
ELSE
IF Drilling?
IF PeckChipBreaker?
SeqLabC LCycle Retract EOL
SeqLabC LCycle ZDepth Peck FeedRate EOL
IF AutoFinish?
SeqLabC Feed ZDepth EOL
IF Dwell?
SeqLabC 'G4X' Dwell# EOL
END
SeqLabC Rapid ZSP RapidF EOL
END
END
END
END
END
ELSE
StockOn
SetPass1
ToolPath
IF AutoFinish? { .82.1c }
StockOff
IF Turning?
IF ApproachFace?
SeqLabC RapidC ZOpECPC RapidFC EOL
ELSE
SeqLabC RapidC XOpECDC RapidFC EOL
END
ApproachSP
SeqLabC StockOff StrtPosC EOL
ToolPath
ELSE
IF Roughing? AND NOT RoughSimple?
SetPass2
SeqLabC RapidC XSPC ZSPC RapidFC EOL
SeqLabC StockOff StrtPosC EOL
ToolPath
SetPass1
ELSE
IF Threading?
SeqLabC 'X' MUL# Num#('2') ADD# FinishXRadius# Taper# EOL
SeqLabC 'G32'
IF Taper?
XatFinZ
END
FinZ ThrdLead EOL
SeqLabC Rapid XSP RapidF EOL
SeqLabC ZSP EOL
END
END
END
END
END
IF Drilling? AND Tap?
SeqLabC 'G4X.8' EOL
END
NextOp {loops back to EachOP until last Operation}

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

{finish last operation}
StockOff
CheckRapid2
IF ApproachOD?
SeqLabC OpExitXCPC CheckRapidF2 EOL
SeqLabC OpExitZCPC EOL
ELSE
IF ApproachID?
SeqLabC XOpECDC CheckRapidF2 EOL
SeqLabC OpExitZCPC EOL
ELSE { ApproachFace }
SeqLabC OpExitZCPC CheckRapidF2 EOL
END
END
DoEndOpPS
IF ConstantSurfaceFeed?
IF CutOff?
{we went to G97 in the tool path}
ELSE
SeqLabC CSSOff 'G97S' CalcEPRPM# EOL
END
END
SeqLabC 'M98P1' EOL
IF Flag?('1')
SetLineStrtChr('/')
SeqLabC EOP EOL
SetLineStrtChr('')
SeqLabC EndSub EOL
ELSE
SeqLabC EOP EOL
END
Post
EOR 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