{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 *******************************************}
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
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
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