plik


{ MILL=T LATHE=F SIMPLE_ROT_POS=T ROTARY_MILL=T ADV_MILL=F SUBS=T MILLTURN_Y-AXIS=F METRIC=F } {Change Comments ***********************************************************} {10/28/98 Copied: Fanuc 6M M001.16 Created: Fanuc 6M RM001.16.04 For: Gibbs & Associates Versions: Virtual 5.02/Compost2 PPC 1.6b7 Var(1) = Operation X EndPoint Var(2) = Operation Y EndPoint Var(4) = Operation A EndPoint Flag(9) = Valid Drill Rotate Sub DWB} {10/30/98 Copied: Fanuc 6M RM001.16.04 Created: Fanuc 6M RM001.16.05 For: Gibbs & Associates Versions: Virtual 5.02/Compost2 PPC 1.6b7 Corrected missing G0 at ZCP3. Corrected missing AngleFeed at start of Sub. DWB} {11/4/98 Copied: Fanuc 6M RM001.16.05 Created: Fanuc 6M RM001.16.06 For: Gibbs & Associates Added resetting the A-axis to be between -0.001 and -359.999 at setAngleUnder360. Cleaned up. DWB} {11/6/98 Copied: Fanuc 6M RM001.16.06 Created: Fanuc 6M RM001.16.07 For: Gibbs & Associates Changed FORMAT for Address A from '#####.###;0.' to '*#####.###;0.' in Compost Default Format Dialog. Changed TrackC#, TrackCNO#, MoveC# and UnitAngle# from FORMAT#2 to FORMAT#3 at Prog Numeric Format Definitions. FORMAT changes are for staying consistant with 4th Axis Verticle Rotary 4th X+ SetUp. Additional cleaning up. DWB} {11/10/98 Copied: Fanuc 6M RM001.16.07 Created: Fanuc 6M RM001.17 For: Gibbs & Associates Added IF AAxisAvail condition at doStartPos procedure. DWB} {11/20/98 Copied: Fanuc 6M RM001.17 Created: Fanuc 6M RM001.17.1 For: Gibbs & Associates Modified to support Incremental Rotated RotaryMill Subs. Identicle situation to Patterns. Modified doAbsOrInc Procedure. Modified doACAbsOrInc Procedure. Modified doDrillAbsOrInc Procedure. Modified restoreAbsOrInc Procedure. Added doSepSubFeedConnect Procedure. Changed name of rotaryStartPosC Procedure to rotateStartPosC. Added IF NOT RotaryMill? for MoveSYC. Changed calls five places at rotaryReps Procedure. DWB} {11/24/98 Copied: Fanuc 6M RM001.17.1 Created: Fanuc 6M RM001.17.2 For: Gibbs & Associates Versions: Virtual 5.03/ComPost2 1.7b11 Added IF AAxisAvail? condition at setAngleUnder360. Deleted FIFO Boolean condition at finishSub1, autoCycCutSub2, doSepSubExit and millingOp. Deleted NotEqual CP2 CP3 Boolean condition at rotaryReps. DWB} {12/17/98, Initial : Fanuc 6M RM001.17.2 Created: Mazatrol M32 [AM] RMZ58.17 Customer: AM Industries, Jorge Benenati 310/632-6505 ComPost2: v1.7b13 Changes to "Prog": 1. Removed wfo sub and move the codes into wfoStuff sub. 2. Removed report sub and call. 3. Added doRangeCode sub to output spindle range codes. 4. Added custom sub program P8888 to move the axis before tool change. Also output that sub after M30. 5. Added two space line before tool change, EOR, and SubID. 6. Moved OpToolID to ToolChng block, added PreTool, and added tool change at end. 7. Moved wfoStuff into doStartPos block and added AbsOrInc to restart block. JHE} {1/7/99 Updated: Mazatrol M32 [AM] RMZ58.17 Created: Mazatrol M32 [AM] RMZ58.17.3 For: AM Industries, Jorge Benenati 310/632-6505 Versions: Virtual 5.03.06/ComPost2 1.7b13 Changes made per Pete Jackson Updated for Catalyst v5.03 per Fanuc 6M RM001.17.3 Format. Change IF Flag(9) to IF Rotations at doDrillAbsOrInc. Deleted FIRST modifier two places at doSepSubContour. Deleted Rotations? Boolean at doSepSubSPMove. Deleted FIRST modifier at setSepSubZ. Deleted ZCP3 for non-AutoCycle at doSepSubExit. Added Rapid command in its place. Deleted AND NOT Rotations? Boolean at zonlyRepAutoCycle. Moved resetSepSubSR to before TrackZNO# at zonlyRepAutoCycle. Deleted IF FeedConnect? AND Rotations? Boolean at zonlyRepAutoCycle. Moved resetSepSubSR to before IF FeedConnect? at zonlyRep. Moved TrackZNO# ClearancePlane3# to IF FeedConnect? ELSE at zonlyRep. Deleted FIRST modifier at drillingOp. Moved TrackXNO# to end of rotaryReps. Moved TrackZNO# to end of rotaryReps. Added TrackYNO# to end of rotaryReps. Deleted FIRST modifier at end2. Uncommented out wfo procedure. Changed 'G' NewWFO# to wfo procedure call three places at wfoStuff. Worked same as prior to 11/24/98 changes. Updated PostScricpt NewWFO MP-WFO Warning. Updated subWarning Warning. Broke up ArcFeat Block at tpArcFeat. Moved DrillOff in front of Rapid at drillingOp. Added IF NOT LastTool? Boolean for PreTool at firstOp3. Moved absOrIncC in front of Rapid at end2. DWB} {1/14/99 Copied: Mazatrol M32 [AM] RMZ58.17.3 Created: Mazatrol M32 [AM] RMZ58.17.4 For: AM Industries, Jorge Benenati 310/632-6505 Versions: Virtual 5.03.06/ComPost2 1.7b14 Corrected Bad AutoCycle MoveC. Added SUB# to FORMAT#2 at Prog Numeric Format Definitions. Changed FORMAT for UnitAngle# from #3 to #2 at Prog Numeric Format Definitions. Changed FORMAT for TrackCNO# from #3 to #2 at Prog Numeric Format Definitions. Modified report procedure. Added spReset procedure. Contains Tracking code from resetSP. Added Save# Num#(5) MoveC# Added call to report procedure. Modified resetSP. Moved Tracking code to spReset. Functions same as getEP now. Modified saveEP. Changed to Save# Num#(4) MoveC# to one place at end. Added Save# Num#(5) SUB# MoveC# Recall# Num#(5) for AutoCycle Contour. Added call to report procedure. Modified getEP. Deleted call to report procedure. Modified setSRXYtoACEP. Added TrackCNO# ADD# Recall# Num#(4) Recall# Num#(5) EOL Modified tpPointFeat. Added TrackCNO# ADD# Recall# Num#(5) MoveC# EOL Added Save# Num#(5) Num#(0) initialization at progStart. Deleted FIRST modifier at end2. DWB} {1/20/99 Copied: Fanuc 6M RM001.17.4m Created: Fanuc 6M RM001.17.5m For: Gibbs & Associates Versions: Virtual 5.05.04/ComPost2 1.7b15 Changed SetArcSegmentAccuracy to be .0005 for English and .0127 for Metric at progStart. DWB} {Prog Numeric Format Definitions ****} #1 = '#.00' #2 = '#####.###;0.' #3 = '*#####.###;0.' #4 = '####.####;0.' #5 = '#######0' #6 = '####^##0' #7 = '#' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(SUB#,2) FORMAT(UnitAngle#,2) FORMAT(TrackCNO#,2) FORMAT(TrackC#,3) FORMAT(MoveC#,3) FORMAT(Recall#,4) FORMAT(ADD#,4) FORMAT(ToolDiameter#,4) FORMAT(TrackX#,4) FORMAT(TrackXNO#,4) FORMAT(TrackYNO#,4) FORMAT(TrackZNO#,4) FORMAT(TRUNC#,5) FORMAT(Program#,5) FORMAT(Program2#,5) FORMAT(CallMasterNum#,5) FORMAT(Operation#,5) FORMAT(Tool#,5) FORMAT(NewWFO#,5) FORMAT(Parts#,5) FORMAT(Dwell#,6) FORMAT(RapidF#,7) {Added Subroutines ****} spReset: {update to the correct StartPos} TrackXNO# SPX# TrackYNO# SPY# TrackCNO# MoveC# IF AutoCycle? AND NOT PointFeat? Save# Num#('5') MoveC# { cOpEP } END RETURN resetSP: {update to the correct StartPos} IF Rotations? OR Repeats? OR AutoCycle? CalcSCAng IF AbsValue? spReset ELSE SetAbs spReset SetInc END END RETURN saveEP: {save the correct EndPos} IF PointFeat? IF AutoCycle? SetACSPCompF Save# Num#('1') ADD# Recall# Num#('1') SPX# { xOpEP } Save# Num#('2') ADD# Recall# Num#('2') SPY# { yOpEP } SetACSPComp ELSE Save# Num#('1') SPX# { xOpEP } Save# Num#('2') SPY# { yOpEP } END ELSE Save# Num#('1') EPX# { xOpEP } Save# Num#('2') EPY# { yOpEP } END Save# Num#('4') MoveC# { cOpEP } IF AutoCycle? AND NOT PointFeat? Save# Num#('5') SUB# MoveC# Recall# Num#('5') { cOpEP } END RETURN getEP: {save the correct EndPos} IF Rotations? OR Repeats? OR AutoCycle? IF AbsValue? saveEP ELSE SetAbs saveEP SetInc END END RETURN setSRXYtoACEP: TrackXNO# Recall# Num#('1') { xOpEP } TrackYNO# Recall# Num#('2') { yOpEP } TrackCNO# ADD# Recall# Num#('4') Recall# Num#('5') { cOpEP } 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 wfo: 'G' NewWFO# RETURN wfoStuff: IF NewWFO? IF MultipleParts? AND WorkFixtureOffsets? EOL '*** WARNING *** DO NOT USE NEWWFO() WITH MULTIPLE PARTS AND WORK FIXTURE OFFSETS' EOL ELSE wfo END ELSE IF Flag?('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } IF NOT SameTool? IF MultipleParts? IF WorkFixtureOffsets? WFO1 ELSE wfo END ELSE wfo END END END END SetFlagF('2') { Do not output WFO second time wfoStuff is called for MP-WFO-OTAP-ECP } RETURN doRangeCode: IF GreaterThan? SpeedRPM# Num#('970') 'M39' {High Range} ELSE 'M37' {Low Range} END RETURN doSubComment: IF UseComments? AND SubComment? '( SUB NUMBER: ' Program# ' )' EOL 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# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL END IF ToolComment? '( ' ToolComment$ ' )' EOL END restoreScale END RETURN psInit: NewWFOF FourthCWF FourthCCWF RotateF OptCyc1F MasterOpF CallMasterOpF PalletInF RETURN psStuff: IF FifthCW? FORMAT(FifthDegree#,2) SeqC 'B' FifthDegree# EOL FifthCWF END IF FifthCCW? FORMAT(FifthDegree#,3) SeqC 'B' FifthDegree# EOL FifthCCWF END RETURN doPostScript: psInit EachPS SeqC PostScript EOL psStuff NextPS RETURN doEndOpPS: psInit EachEOPS SeqC EndOpPS EOL psStuff NextPS RETURN absValueC: IF NOT AbsValue? AbsValue END RETURN incValueC: IF AbsValue? IncValue END RETURN absOrIncC: IF AbsoluteMoves? absValueC ELSE incValueC END RETURN setAngleUnder360: {sets status register and machine to current rotary position between -360 and 360 deg} IF AAxisAvail? SetAbs IF GTEqual? MoveC# Num#('360') {reset the A-axis to be between 0 and 359.999} ResetAngle SeqC Preset 'A' TrackC# UnitAngle# EOL ELSE IF LTEqual? MoveC# Num#('-360') IF Equal? UnitAngle# Num#('0') {reset the A-axis to be 0} ResetAngle SeqC Preset 'A' TrackC# UnitAngle# EOL ELSE {reset the A-axis to be between -0.001 and -359.999} ResetAngle SeqC Preset 'A' TrackC# SUB# UnitAngle# Num#('360') EOL END END END SetInc { Because we call setAngleUnder360 right after incValueC OfstOff } END RETURN doStartPos: IF RotaryMill? 'X' TrackX# StartPosX# 'Y0.' TrackYNO# StartPosY# ELSE StrtPos END IF AAxisAvail? CalcSCAng MoveC ELSE TrackCNO# Num#('0') END RETURN entryMove: IF FirstOperation? OR NewTool? RapidF# { Forces FeedEnt/FeedRate } ELSE IF LAST Rotations? OR LAST Repeats? RapidF# { Forces FeedEnt/FeedRate } END END IF FeedEntry? SeqC Feed ZIn FeedEntC EOL ELSE SeqC RapidC ZIn EOL END RETURN startSub: OpenSub ASCII('13') ASCII('10') {Added 2 space lines - JHE} ASCII('13') ASCII('10') SubID EOL doSubComment RETURN subWarning: IF NOT FeedConnect? IF AnyZshift? ' ' EOL '( WARNING Z CLEARANCE WILL CHANGE WITH EACH CYCLE OF SUB REPEAT )' EOL ' ' EOL END END RETURN stdSub: SeqC SubCall CallLab RepLab RepCycs EOL startSub RETURN finishSub1: {part 1} SeqC CRCOffC IF NOT FeedConnect? RapidC ZCP3C END EOL RETURN finishSubG92: {part 2} SeqC Preset ShiftRC EOL SeqC EndSub EOL CloseSub SeqC Preset UnshftRC EOL RETURN doWFOOps: IF Flag?('5') SetFlagF('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP } ELSE SeqC SetWFO EOL END SeqC SubCall CallLab RepLab OnePart EOL RETURN openMP: NewProg IF WorkFixtureOffsets? IF OneToolAllParts? AND ExitClearancePlane? SetFlag('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP } END NewWFO EachWFO {simple eachPart} doWFOOps IncWFO NextWFO {simple NextPart} startSub ELSE SeqC SubCall CallLab RepLab Parts EOL IF OneToolAllParts? AND ExitClearancePlane? SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } END startSub END RETURN closeMP: IF WorkFixtureOffsets? SeqC EndSub EOL CloseSub SeqC WFO1 EOL ELSE SeqC absOrIncC EOL SeqC Preset ShiftPC EOL SeqC EndSub EOL CloseSub SeqC Preset UnshftPC EOL END RETURN doAbsOrInc: IF Rotations? AND RotaryMill? incValueC ELSE IF Flag?('1') { Milling ZShiftOnly SepSubs/DrillSubs activated } IF ZMove? incValueC ELSE absOrIncC END END END RETURN doACAbsOrInc: IF Rotations? AND CMove? incValueC ELSE absOrIncC END RETURN doDrillAbsOrInc: IF Rotations? AND RotaryMill? incValueC ELSE IF Flag?('1') { DrillSubs activated } IF SPZMove? incValueC ELSE absOrIncC END END END RETURN restoreAbsOrInc: IF Rotations? AND RotaryMill? AND NOT AutoCycle? SeqC absOrIncC EOL ELSE IF Flag?('1') { Milling ZShiftOnly SepSubs/DrillSubs activated } SeqC absOrIncC EOL END END RETURN ckCRC: IF LastFeat? CRCOffC ELSE IF NOT ZMove? CRCOnC END END RETURN ckCRCNum: IF NOT LastFeat? AND Equal? SPZ# EPZ# CRCOffsetC END RETURN tpPointFeat: IF AutoCycle? IF RotaryMill? CalcSCAng SeqC doACAbsOrInc MoveSXC MoveCC EOL SetAbsOrInc TrackCNO# ADD# Recall# Num#('5') MoveC# EOL {calc MoveC position after sub call} ELSE SeqC MoveSXYC EOL END IF Repeats? AND ZshiftOnly? SeqC SubCall CallLabB TRUNC# SUB# Program# Num#('1') EOL ELSE SeqC SubCall CallLab EOL END CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} ELSE IF FirstFeat? SetFlagF('9') { For valid Drill Rotation Sub } IF Rotations? IF NOT LastFeat? IF NOT MasterOp? SetFlag('9') { valid Drill Rotation Sub } NewProg StartSub END END END ELSE IF RotaryMill? CalcSCAng SeqC doDrillAbsOrInc MoveSXC MoveSZC MoveCC EOL ELSE SeqC doDrillAbsOrInc MoveSXYZC EOL END END IF LastFeat? IF Flag?('9') { valid Drill Rotation Sub } restoreAbsOrInc IF NOT MasterOp? SeqC EndSub EOL CloseSub END END END END RETURN tpRapidFeat: IF RotaryMill? CalcCAng IF XMove? OR ZMove? OR CMove? SeqC doAbsOrInc ckCRC RapidC MoveXC MoveZC MoveCC ckCRCNum EOL END ELSE IF XMove? OR YMove? OR ZMove? SeqC doAbsOrInc ckCRC RapidC MoveXYZC ckCRCNum EOL END END RETURN tpLineFeat: IF RotaryMill? CalcCAng IF XMove? OR ZMove? OR CMove? SeqC doAbsOrInc ckCRC FeedC MoveXC MoveZC MoveCC AngleFeedC ckCRCNum EOL END ELSE IF XMove? OR YMove? OR ZMove? SeqC doAbsOrInc ckCRC FeedC MoveXYZC FeedRateC ckCRCNum EOL END END RETURN tpArcFeat: IF RotaryMill? EachArcSegment CalcCAng SeqC doAbsOrInc ckCRC FeedC MoveXC MoveZC MoveCC AngleFeedC ckCRCNum EOL NextArcSegment ELSE EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } SeqC doAbsOrInc IF ArcCW? CWArcC ELSE CCWArcC END MoveXYZC IF ArcIJFormat? ArcIJC ELSE ArcRC END ArcFeedC EOL NEXTQuadrant END RETURN toolPath: ResetCRCNum EACHFeat IF FirstFeat? resetSP END IF PointFeat? tpPointFeat ELSE IF RapidFeat? tpRapidFeat ELSE IF LineFeat? tpLineFeat ELSE IF ArcFeat? tpArcFeat END END END END IF LastFeat? getEP END NEXTFeat restoreAbsOrInc RETURN autoCycCutSub1: {part 1} SaveSubStatus {save tool position} SetPass1 {element cut moves} startSub SetSRXYtoSP SeqC incValueC EOL RETURN autoCycCutSub2: {part 2} toolPath SeqC absOrIncC CRCOffC IF Repeats? AND FeedConnect? AND ZshiftOnly? ELSE RapidC ZCP2 END EOL SeqC EndSub EOL CloseSub SetSRSubXY {restore SR to 1st position value} SetSRSubMove RETURN autoCycPat: SetPass2 {position pattern} toolPath {call after NewProg for correct sub calls} SetPass1 {reset} RETURN milling: IF AutoCycle? NewProg autoCycCutSub1 entryMove autoCycCutSub2 autoCycPat ELSE entryMove toolPath END RETURN g92Sub: subWarning stdSub SeqC absOrIncC Connect doStartPos EOL milling finishSub1 finishSubG92 RETURN doSepSubContour: SetPass1 TrackZNO# SPZ# startSub RapidF# IF AutoCycle? NewProg autoCycCutSub1 {build element sub} TrackZNO# SPZ# autoCycCutSub2 ELSE toolPath finishSub1 SeqC EndSub EOL CloseSub END SetPass1 SetStatusRapid RapidF# SetSRXYtoEP TrackZNO# ClearancePlane2# TrackCNO# Recall# Num#('4') { cOpEP } RETURN doSepSubFeedConnect: IF FeedConnect? IF CMove? AngleFeedC ELSE FeedEntC END END RETURN doSepSubSPMove: SetStatusOff IF RotaryMill? CalcSCAng IF SPXMove? OR CMove? IF Rotations? OR AutoCycle? incValueC END SeqC Connect MoveSXC MoveCC doSepSubFeedConnect EOL absOrIncC ELSE Connect END ELSE IF SPXMove? OR SPYMove? IF AutoCycle? incValueC END SeqC Connect StrtPosC doSepSubFeedConnect EOL absOrIncC ELSE Connect END END SetStatusOn RETURN doSepSubZMoves: IF FeedConnect? SeqC FeedC ZInPlusInc FeedEnt EOL ELSE IF FeedEntry? IF NOT FirstCycle? SeqC RapidC ZCP2PlusInc EOL END SeqC Feed ZInPlusInc FeedEnt EOL ELSE IF FirstCycle? AND AutoCycle? Rapid END SeqC RapidC ZInPlusInc EOL END END SeqC SubCall CallLab EOL IF NOT FeedConnect? AND NOT AbsValue? TrackZNO# ZCP2PlusInc# SeqC ZCP2C EOL IF NOT AutoCycle? TrackZNO# ClearancePlane3# END END RETURN setSepSubZ: SetAbs TrackZNO# ADD# SPZ# MUL# RepsLess1# RepeatZ# SetInc RETURN doSepSubExit: IF NOT AbsValue? setSepSubZ END IF AutoCycle? SeqC Rapid ZCP2 EOL ELSE Rapid { Will be output at millingOp ZCP3 } END RETURN resetSepSubSR: SetPass1 SetStatusRapid RapidF# TrackXNO# Recall# Num#('1') { xOpEP } TrackYNO# Recall# Num#('2') { yOpEP } TrackCNO# Recall# Num#('4') { cOpEP } RETURN zonlyRepAutoCycle: doSepSubContour EachCycle IF NOT FirstCycle? doSepSubSPMove END doSepSubZMoves NextCycle IF FeedConnect? doSepSubExit END SeqC EndSub EOL CloseSub {Element shift, not pattern} autoCycPat {write pattern moves and main calls} resetSepSubSR TrackZNO# ClearancePlane2# RETURN zonlyRep: doSepSubContour EachCycle IF NOT FirstCycle? doSepSubSPMove END doSepSubZMoves NextCycle resetSepSubSR IF FeedConnect? doSepSubExit ELSE TrackZNO# ClearancePlane3# END RETURN millingOp: SeqC ZCP2C EOL IF Repeats? NewProg IF ZshiftOnly? IF AutoCycle? {incremental Autocycle sub can have Z moves} zonlyRepAutoCycle ELSE {Z shift only, NOT Auto Cycle} SetFlag('1') { Milling ZShiftOnly SepSubs activated } zonlyRep SetFlagF('1') { Milling ZShiftOnly SepSubs deactivated } END {end Auto Cycle IF} ELSE {not Z only} g92Sub END {end Z only IF} ELSE {no repeat OPs} milling END IF AutoCycle? SeqC CRCOffC ZCP3C EOL setSRXYtoACEP ELSE SeqC CRCOffC RapidC ZCP3C EOL END RETURN skipToLastFeat: EachFeat IF LastFeat? TrackXNO# SPX# TrackYNO# SPY# CalcSCAng TrackCNO# MoveC# END NextFeat RETURN setDrillEndOpZ: IF RetractToCP1? TrackZNO# ClearancePlane1# ELSE TrackZNO# ClearancePlane2# END RETURN drillingOp: SeqC DrillCP EOL GetCycle SeqC Cycle FromCP doStartPos ZDepth RLevel Dwell Peck Retract FeedEnt EOL IF CallMasterOp? SeqC SubCall CallLabB CallMasterNum# EOL skipToLastFeat ELSE TrackZNO# SPZ# IF MasterOp? SetFlag('1') { DrillSubs activated } NewMasterProg SeqC SubCall CallLab EOL startSub toolPath SeqC EndSub EOL CloseSub SetFlagF('1') { DrillSubs deactivated } ELSE toolPath END END setDrillEndOpZ IF NOT Rotations? SeqC DrillOff Rapid ZCP3 EOL END RETURN checkPass: {use the correct StrtPos} IF AutoCycle? SetPass2 ELSE SetPass1 END RETURN rotateStartPosC: TrackXNO# Recall# Num#('1') { xOpEP } MoveSXC IF NOT RotaryMill? TrackYNO# Recall# Num#('2') { yOpEP } MoveSYC END CalcSCAng MoveC RETURN rotaryReps: {use the correct EndPos} EachRotation IF Milling? IF FirstRotation? NewProg SaveProgNum2 StartSub millingOp SeqC EndSub EOL CloseSub checkPass ELSE SeqC rotateStartPosC EOL END SeqC SubCall CallLabB Program2# EOL ELSE IF Drilling? IF FirstRotation? drillingOp checkPass ELSE IF RetractToCP1? AND Equal? ClearancePlane1# ClearancePlane3# SeqC rotateStartPosC EOL ELSE IF NOT RetractToCP1? AND Equal? ClearancePlane2# ClearancePlane3# SeqC rotateStartPosC EOL ELSE { Need to cancel Drill Cycle between Rotations } SeqC DrillOff Rapid ZCP3 EOL SeqC rotateStartPosC EOL SeqC DrillCP EOL SeqC Cycle FromCP rotateStartPosC ZDepth RLevel Dwell Peck Retract FeedEnt EOL END END END IF CallMasterOp? IF NOT FirstRotation? SeqC SubCall CallLabB CallMasterNum# EOL END ELSE IF MasterOp? IF NOT FirstRotation? SeqC SubCall CallLab EOL END ELSE IF Flag?('9') { valid Drill Rotation Sub } SeqC SubCall CallLab EOL END END END IF LastRotation? SeqC DrillOff Rapid ZCP3 EOL END END END IF LastRotation? EachFeat IF LastFeat? IF PointFeat? CalcSCAng ELSE CalcCAng END TrackCNO# MoveC# EOL END NextFeat END NextRotation TrackXNO# Recall# Num#('1') { xOpEP } TrackYNO# Recall# Num#('2') { yOpEP } TrackZNO# ClearancePlane3# RETURN opGuts: IF Rotations? rotaryReps ELSE IF Milling? millingOp ELSE IF Drilling? drillingOp END END END RETURN progStart: InitProg ReverseXZArcs InitWFONum SetFlood SetMaxRPM('10000') IF Metric? SetMaxFeed('12700') SetArcSegmentAccuracy('.0127') ELSE SetMaxFeed('500') SetArcSegmentAccuracy('.0005') END Save# Num#('1') Num#('0') { Status Register Variable for X Axis } Save# Num#('2') Num#('0') { Status Register Variable for Y Axis } Save# Num#('4') Num#('0') { Status Register Variable for C Axis } Save# Num#('5') Num#('0') { AutoCycle SetPass1 C Axis Travel } SetFlagF('1') { Milling ZShiftOnly SepSubs/DrillSubs deactivated } SetFlagF('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } SetFlagF('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP } SetFlagF('9') { For valid Drill Rotation Sub } IF PSComment? AND UseComments? 'Utility Data:' EOL ' At Op Start: All literals and commands will appear at the beginning of the operation.' EOL ' At Op End: All literals and commands will appear at the end of the operation.' 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: may be capital and/or lower case letters. Separate commands with a space.' EOL ' NewWFO(56), NWFO(56) -' EOL ' The Work Fixture Offset # you specify will be used for all following operations.' EOL ' Do not use with the ncPost multiple part option.' EOL ' 5thAxisCW(30), 5ACW(30) -' EOL ' generates a + B move of the value you specify' EOL ' 5thAxisCCW(22.5), 5ACCW(22.5) -' EOL ' generates a - B move of the value you specify' EOL END RETURN initOp: EOR EOL ProgID1 EOL IF UseComments? IF ProgramNameComment? '( PROGRAM: ' ProgramName$ ' )' EOL END IF ProgramComment? '( ' ProgramComment$ ' )' EOL END IF FormatNameComment? '( FORMAT: ' FormatName$ ' )' EOL END IF TimeComment? '( ' Date$ ' AT ' Time$ ' )' EOL END IF MovesComment? '( OUTPUT IN ' MoveType$ ' INCHES )' EOL END IF PartsComment? '( PARTS PROGRAMMED: ' Parts# ' )' EOL END IF StartToolComment? '( FIRST TOOL NOT IN SPINDLE )' EOL END END OpenSub restoreScale RETURN firstOp1: IF ToolChangeAtHome? SetHome END ASCII('13') ASCII('10') EOL {Added 2 space lines - JHE} Seq ASCII('13') ASCII('10') {Added sequence number - JHE} doOpComments {Moved to here - JHE} SeqC OpToolID ToolChng EOL doPostScript RETURN firstOp2: checkPass SeqC Rapid Plane CRCOff wfoStuff DrillOff AbsOrInc doStartPos doRangeCode EOL SeqC Speed SpinOn EOL {Moved to here - JHE} RETURN firstOp3: SeqC OfstOn IF NOT LastTool? PreTool {Added PreTool - JHE} END EOL SeqC CoolOn EOL RETURN newToolOp1: SeqC SubCall 'P8888' EOL {Added - JHE} {*** SeqC CoolOff EOL SeqC incValueC OfstOff EOL ***} {Removed - JHE} setAngleUnder360 RETURN newToolOp2: doEndOpPS IF ToolChangeAtHome? SeqC Rapid absOrIncC Home EOL {Removed SpinOff - JHE} ELSE {*** SeqC SpinOff EOL ***} {Removed - JHE} END IF LAST ProgStop? SeqC 'M0' EOL ELSE SeqC ProgStop EOL END RETURN newToolOp3: {Start new Operation} ASCII('13') ASCII('10') EOL {Added 2 space lines - JHE} Seq ASCII('13') ASCII('10') {Added sequence number - JHE} doOpComments {Moved to here - JHE} SeqC OpToolID ToolChng EOL doPostScript RETURN newToolOp4: checkPass SeqC Rapid Plane CRCOff wfoStuff DrillOff AbsOrInc doStartPos doRangeCode EOL SeqC Speed SpinOn EOL {Moved to here - JHE} RETURN newToolOp5: SeqC OfstOn PreTool EOL {Added PreTool - JHE} SeqC CoolOn EOL RETURN sameToolOp1: doEndOpPS IF LAST ProgStop? SeqC CoolOff EOL SeqC incValueC OfstOff EOL SeqC SpinOff EOL SeqC 'M0' EOL ELSE IF CoolOff? AND LAST NOT CoolOff? SeqC CoolOff EOL END IF NewToolOffset? SeqC incValueC OfstOff EOL END END setAngleUnder360 RETURN sameToolOp2: {Start new Operation} doOpComments doPostScript checkPass RETURN sameToolOp3: {Start new Operation} IF LAST ProgStop? SeqC doRangeCode EOL {Added - JHE} SeqC Speed SpinOn EOL SeqC Rapid PlaneC wfoStuff AbsOrInc doStartPos EOL SeqC OfstOn EOL SeqC CoolOn EOL ELSE SeqC Rapid PlaneC wfoStuff AbsOrInc doStartPos SpeedC EOL IF NewToolOffset? SeqC OfstOn EOL END IF NOT CoolOff? AND LAST CoolOff? SeqC CoolOn EOL END END RETURN end1: SeqC SubCall 'P8888' EOL {Added - JHE} {*** SeqC CoolOff EOL SeqC incValueC OfstOff EOL ***} {Removed - JHE} setAngleUnder360 IF NotEqual? UnitAngle# Num#('0') SeqC RapidC absOrIncC 'A' TrackC# Num#('0') EOL END RETURN end2: doEndOpPS IF ToolChangeAtHome? SeqC absOrIncC Rapid FirstHome EOL {Removed SpinOff - JHE} ELSE {*** SeqC SpinOff EOL ***} {Removed - JHE} END IF ProgStop? SeqC 'M0' EOL END RETURN end3: SeqC UnTool ToolChng EOL {Added - JHE} SeqC EOP EOL ASCII('13') ASCII('10') {Added 2 space lines - JHE} ASCII('13') ASCII('10') 'O8888' EOL {Added tool change custom sub - JHE} '( tool change )' EOL 'G80M9' EOL 'M5' EOL 'G28G91Z0.' EOL 'G30G91Y0.Z0.' EOL 'M1' EOL 'G90M99' EOL CloseSub Post2 {organize Subs into one program} ASCII('13') ASCII('10') {Added 2 space lines - JHE} ASCII('13') ASCII('10') EOR EOL Close 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 RETURN mpAllTools1P: {Multiple Parts, All Tools 1 Part} EachOp {Start of post processing} IF EquallySpacedOffsets? SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } END IF FirstOperation? openMP firstOp1 firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 newToolOp2 {to tool change, CS problem} newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} end1 end2 closeMP end3 RETURN mp1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up} EachOp {Start of post processing} IF EquallySpacedOffsets? SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } END IF FirstOperation? firstOp1 openMP firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 closeMP newToolOp2 {to tool change, CS problem} newToolOp3 openMP newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} end1 closeMP end2 end3 RETURN mp1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane} EachOp {Start of post processing} SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } IF FirstOperation? firstOp1 firstOp2 firstOp3 openMP firstOp2 {need StrtPos in Sub} ELSE IF NewTool? closeMP newToolOp1 newToolOp2 {to tool change, CS problem} newToolOp3 newToolOp4 newToolOp5 openMP newToolOp4 {need StrtPos in Sub} ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} closeMP end1 end2 end3 RETURN noMPs: {no multiple parts} EachOp {Start of post processing} SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } IF FirstOperation? firstOp1 firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 newToolOp2 newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} end1 end2 end3 RETURN {Start of executable Prog, Top Level ****} progStart {setup and initializations} initOp IF MultipleParts? IF AllToolsOnePart? mpAllTools1P ELSE {implied OneToolAllParts?} IF FullUp? mp1ToollAllPfu ELSE {implied ExitClearancePlane?} mp1ToollAllPXcp END END ELSE noMPs END

Wyszukiwarka

Podobne podstrony:
Mazatrol M32 Mazak PM368 17 3
Mazatrol M32 [SK] PMY13 17 3
Mazatrol M32 Mazak [AM] CZ58 14
Mazatrol M32 [CKC] M709 87
Mazatrol M32 Mz [NM] MX55 89 7m
Mazatrol M32 Mazak NM MZ20 89 2
Mazatrol M32 LH [DHL] CW78 12
Mazatrol M32 Mazak [SK] MY13 89 1
Mazatrol M32 [B] M488 89
Mazatrol M32 Mazak PW C155 12m
Mazatrol M32 Mazak M368 89
Fanuc 11M Mat [AM] RM820 17 5
Mazatrol M Plus FH480 PM896 17 3
Mazatrol M32 [CKC] M709 87m
Fadal Format 2 [AM] PMW48 17 6

więcej podobnych podstron