plik


{Change Comments ***********************************************************} {8/16/93 Copied & modified: Fanuc 6M M001.81.2 For: Olson Manufacturing & Distribution, Inc. Control: Centurion V Machine: Milltronics Partner 1 Created new processor from FastCAM II manual (same info as Centurion V manual!). Added 'G20', Inch Program, to Saftey Start Block. Added 'G32', for a Z move to Tool Change position, to Saftey Start Block. CRCOff on last non-arc feat. OfstOn, G43 H value, is applied to the axis perpendicular to the current plane. Call literal G17 before OfstOn and added sub GetPlane, Plane has not output. OfstOff outputs G49Z0. Modifications for support and enhancement Drilling section. Jim Radcliffe} {8/19/93, .81.3, corrected an ELSE/END bug in ToolPath, JR} {8/27/93, .81.4, no Home, machine home at end of program, 4 place O codes, JR} {8/18/94 Copied & modified: Centurion V M589.81.4 For: Plymouth Plastics Added 'X0Y0' to output of all WFO lines. Changed CoolOn M8 to M7 Changed output of OfstOff from G49Z0 to G32. Jim Radcliffe} {8/19/94 Modified: Centurion V [PP] Mxxx.81.4 For: Plymouth Plastics Deleted EOR from beginning and end of program. First Tool IN Spindle. Moved WFOStuff call to StrtPos line, removed literal X0Y0. Jim Radcliffe} {12/12/94 Modified: Centurion V [PP] M691.81.5 For: CNCCS / Plymoth Plastics Changed the program ID label from O to N Deleted Sequence label from MachSpec and changed Seq to SeqLab. This prevents sequencing without deleteing the sequnce commands! Added OpToolID & 'D' Tool# to OfstOn lines. Changed sub call from M98Pxx to GOSUBxx Changed end sub from M99 to RETURN Added X-15. to G53 line at end of program. Jim Radcliffe} {9/27/95, Updated Centurion V [PP] M691.81.6 to .85 format per Fanuc 6M M001.85.01.03, JR} {1/17/96 - Updated .85 to .86 format, MPK} {3/22/96, Tested ZOnlyRepAutoCycle, Changed version # to .89, MPK} {8/4/97, chaged drilling EndSub to RETURN per Danotech chaged version to .89.1 JM } {4/21/98, Initial : Centurion V [PP] M691.89.1 Created: Centurion V [LB] MV60.89 Customer: Lighthouse for the Blind Changes to "Form": 1. Under General Info, added N? as the Sequence Label 2. Under Spindle and Coolant, changed Coolant On Number to 8 Changes to "Prog": 1. Added Retag, removed SeqLabC from GOSUB & RETURN blocks. 2. Added SetProgNum('0') so the 1st sub will always be 1. IT IS THE CUSTOMER'S RESPONSABILITY TO START THE PROGRAM WITH A SEQUENCE NUMBER GREATER THAN THE LAST SUB NUMBER. 3. Changed ProgID1 to 'O' Program# and moved it outside of EachOp loop. 4. Under drilling, changed SubCall to GOSUB and CallLab to Program#. 5. Removed 1st tool TC at tape end and added it to tape start. Also added NOT in StartToolComment. 6. Removed OpToolID from OfstOn (G43) blocks. 7. Changed X-15 to X-22.5 at tape end. 8. For Tap, added B0P0. 9. For RigidTap, changed code to G88, F to thread lead, and added P0. 10. Added FORMAT to FeedTapIPR#. JHE} {Prog Numeric Format Definitions *******************************************} #1 = '#.00' #2 = '###.###;0.' #3 = '*###.###;0.' #4 = '####.####;0.' #5 = '#######0' #6 = '####.##' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(ToolDiameter#,4) {.72} FORMAT(Retract#,4) FORMAT(FeedTapIPR#,4) {Added - JHE} FORMAT(Program#,5) {.72} FORMAT(CallMasterNum#,5) FORMAT(Operation#,5) {.72} FORMAT(Tool#,5) {.72} FORMAT(NewWFO#,5) {.72} FORMAT(Parts#,5) {.72} FORMAT(Dwell#,6) {.72} {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: 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: {reset flags} NewWFOF RotateF OptCyc1F MasterOpF CallMasterOpF RETURN PSStuff: {revised.72} IF FourthCW? FORMAT(FourthDegree#,2) SeqLabC 'A' FourthDegree# EOL FourthCWF {reset flag} END IF FourthCCW? FORMAT(FourthDegree#,3) SeqLabC 'A' FourthDegree# EOL FourthCCWF {reset flag} END IF FifthCW? FORMAT(FifthDegree#,2) SeqLabC 'B' FifthDegree# EOL FifthCWF {reset flag} END IF FifthCCW? FORMAT(FifthDegree#,3) SeqLabC 'B' FifthDegree# EOL FifthCCWF {reset flag} END RETURN DoPostScript: PSInit EachPS SeqLabC PostScript EOL {literals} PSStuff {commands} NextPS RETURN DoEndOpPS: PSInit EachEOPS SeqLabC EndOpPS EOL {literals} PSStuff {commands} NextPS RETURN EntryMove: IF FeedEntry? SeqLabC Feed ZIn FeedEnt EOL ELSE SeqLabC RapidC ZIn EOL END RETURN StartSub: OpenSub 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: 'GOSUB ' Program# RepLab RepCycs EOL {Removed SeqLabC - JHE} StartSub RETURN FinishSub1: {part 1} SeqLabC CRCOffC IF NOT FeedConnect? IF AutoCycle? ZCP3C ELSE IF FIFO? {.81} FeedC ZCP3C FeedEntC ELSE RapidC ZCP3C END END END EOL RETURN FinishSubG92: {part 2} SeqLabC Preset ShiftRC EOL 'RETURN' EOL {Removed SeqLabC - JHE} CloseSub SeqLabC Preset UnshftRC EOL RETURN OpenMP: NewProg IF WorkFixtureOffsets? NewWFO EachWFO SeqLabC SetWFO 'X0Y0' EOL 'GOSUB ' Program# RepLab OnePart EOL {Removed SeqLabC - JHE} IncWFO NextWFO ELSE 'GOSUB ' Program# RepLab Parts EOL {Removed SeqLabC - JHE} END StartSub RETURN CloseMP: IF WorkFixtureOffsets? 'RETURN' EOL {Removed SeqLabC - JHE} CloseSub SeqLabC WFO1 'X0Y0' EOL ELSE SeqLabC Preset ShiftPC EOL 'RETURN' EOL {Removed SeqLabC - JHE} CloseSub SeqLabC Preset UnshftPC EOL END RETURN DoAbsOrInc: IF Flag?('1') AND AbsoluteMoves? IF ZMove? AND AbsValue? IncValue ELSE IF NOT ZMove? AND NOT AbsValue? AbsValue END END END RETURN DoDrillAbsOrInc: IF Flag?('1') AND AbsoluteMoves? IF SPZMove? AND AbsValue? IncValue ELSE IF NOT SPZMove? AND NOT AbsValue? AbsValue END END END RETURN RestoreAbsOrInc: IF Flag?('1') AND AbsoluteMoves? AND NOT AbsValue? SeqLabC AbsValue EOL END RETURN FormatArc: DoAbsOrInc IF ArcCW? CWArcC ELSE CCWArcC END MoveXYZC IF ArcIJFormat? ArcIJC ELSE ArcRC END RETURN ToolPath: ResetCRCNum {.72} EACHFeat IF PointFeat? IF AutoCycle? SeqLabC MoveSXYC EOL 'GOSUB ' Program# EOL {Removed SeqLabC - JHE} CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} ELSE SeqLabC DoDrillAbsOrInc MoveSXYZC EOL {.80.01} END ELSE IF RapidFeat? IF LastFeat? SeqLabC DoAbsOrInc CRCOffC RapidC MoveXYZC EOL ELSE IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps} SeqLabC DoAbsOrInc RapidC MoveXYZC EOL ELSE IF XMove? OR YMove? OR ZMove? SeqLabC DoAbsOrInc CRCOnC RapidC MoveXYZC CRCOffsetC EOL END END END ELSE IF LineFeat? IF LastFeat? SeqLabC DoAbsOrInc CRCOffC FeedC MoveXYZC FeedRateC EOL ELSE IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps} SeqLabC DoAbsOrInc FeedC MoveXYZC FeedRateC EOL ELSE IF Decelerate? IF RoomToDecel? DecelMove1 SeqLabC DoAbsOrInc CRCOnC FeedC MoveXYZC FeedRateC CRCOffsetC EOL DecelMove2 END SeqLabC DoAbsOrInc CRCOnC FeedC MoveXYZC DecelFeed CRCOffsetC EOL ELSE IF XMove? OR YMove? OR ZMove? SeqLabC DoAbsOrInc CRCOnC FeedC MoveXYZC FeedRateC CRCOffsetC EOL END END END END ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } IF LastQuadrant? AND Decelerate? IF RoomToDecel? DecelMove1 SeqLabC FormatArc ArcFeedC EOL DecelMove2 END SeqLabC FormatArc DecelFeed EOL ELSE SeqLabC FormatArc ArcFeedC EOL END NEXTQuadrant END END END END NEXTFeat RestoreAbsOrInc RETURN WFOStuff: IF NewWFO? IF MultipleParts? EOL '*** WARNING *** DO NOT USE NEWWFO() WITH NCPOST MULTIPLE PARTS' EOL ELSE 'G' NewWFO# END ELSE IF NOT SameTool? IF NeedWFO1? 'G' NewWFO# END END END RETURN AutoCycCutSub1: {part 1} SaveSubStatus {save tool position} SetPass1 {element cut moves} StartSub SetSRXYtoSP SeqLabC IncValue EOL RETURN AutoCycCutSub2: {part 2} ToolPath SeqLabC AbsOrInc IF Repeats? AND FeedConnect? AND ZshiftOnly? {.69 removed RapidC} {.71.2 removed CRCOffC, gets turned off in ToolPath} ELSE IF FIFO? {.81} FeedC ZCP2 FeedEntC ELSE RapidC ZCP2 END END EOL 'RETURN' EOL {Removed SeqLabC - JHE} 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 SeqLabC AbsOrInc Connect StrtPos EOL Milling FinishSub1 FinishSubG92 RETURN ZonlyRepAutoCycle: AutoCycPat {write pattern moves and main calls} StartSub NewProg EachCycle SetSRXYtoEP IF FeedConnect? IF NOT FirstCycle? IF SPXMove? OR SPYMove? SeqLabC Feed IncValue StrtPosC EOL SeqLabC AbsOrInc ELSE SeqLabC Feed END ELSE SeqLabC Feed END ZInPlusInc FeedEnt EOL ELSE IF NOT FirstCycle? IF SPXMove? OR SPYMove? SeqLabC Rapid IncValue StrtPosC EOL IF FeedEntry? SeqLabC AbsOrInc ZCP2PlusInc EOL SeqLabC Feed ZInPlusInc FeedEnt EOL ELSE SeqLabC AbsOrInc ZInPlusInc EOL END ELSE IF FeedEntry? SeqLabC Rapid ZCP2PlusInc EOL SeqLabC Feed ZInPlusInc FeedEnt EOL ELSE SeqLabC Rapid ZInPlusInc EOL END END ELSE IF FeedEntry? SeqLabC Feed ZInPlusInc FeedEnt EOL ELSE SeqLabC Rapid ZInPlusInc EOL END END END IF FirstCycle? SetStatusOff {protect Z position for incremental sub} END 'GOSUB ' Program# EOL {Removed SeqLabC - JHE} NextCycle SetStatusOn AutoCycCutSub1 {build element sub} AutoCycCutSub2 {.69, removed FinishSub1} IF FeedConnect? {there is no Z up in the sub, .69} IF FIFO? {.81} SeqLabC Feed ZCP2 FeedEnt EOL {.69} ELSE SeqLabC Rapid ZCP2 EOL {.69} END END {.69} 'RETURN' EOL {Removed SeqLabC - JHE} CloseSub {Element shift, not pattern} RETURN ZonlyRep: EachCycle IF NOT FirstCycle? SeqLabC Connect StrtPos EOL {.71.2, added Connect} END IF FeedConnect? SeqLabC FeedC ZInPlusInc FeedEnt EOL {.71.2, changed to FeedC} ELSE {Entry/Exit Connect} IF FeedEntry? IF NOT FirstCycle? SeqLabC RapidC ZCP2PlusIncC EOL {can't call for cycle =1} {.69 added Rapid, reads better} {.71.2, changed to RapidC, reads better} END SeqLabC Feed ZInPlusInc FeedEnt EOL ELSE SeqLabC RapidC ZInPlusInc EOL {.69 added Rapid, reads better} {.71.2, changed to RapidC, reads better} END END 'GOSUB ' Program# EOL {Removed SeqLabC - JHE} NextCycle StartSub TrackZNO# FIRST SPZ# ToolPath FinishSub1 'RETURN' EOL {Removed SeqLabC - JHE} CloseSub RETURN CheckPass: IF AutoCycle? {use the correct StrtPos} SetPass2 ELSE SetPass1 END RETURN SkipToLastFeat: EachFeat IF LastFeat? TrackXNO# SPX# TrackYNO# SPY# END NextFeat RETURN SetDrillEndOpZ: IF RetractToCP1? TrackZNO# ClearancePlane1# ELSE TrackZNO# ClearancePlane2# END RETURN GetPlane: IF XYPlane? {G17 is allready active} ELSE IF XZPlane? 'G18' ELSE 'G19' END END RETURN {Start of executable Prog **************************************************} {setup and initializations} InitProg ReverseXZArcs InitWFONum SetFlood UseSeparateSubCalls SetMaxSeparateSubCalls('50') SetMaxRPM('10000') SetMaxFeed('500') SetFlagF('1') { Milling ZShiftOnly SepSubs } 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: may be capital and/or lower case letters. Separate commands with a space.' 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 ' 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 ' 4thAxisCW(12.5), 4ACW(12.5) -' EOL ' generates a + A move of the value you specify' EOL ' 4thAxisCCW(22.5), 4ACCW(22.5) -' EOL ' generates a - A move of the value you specify' 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 'O' Program# EOL {Changed from ProgID1, moved outside EachOp - JHE} SetProgNum('0') {Added this line - JHE} EachOp {Start of post processing *********************} IF FirstOperation? IF ToolChangeAtHome? SetHome END 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 {Added NOT - JHE} END END OpenSub RestoreScale IF MultipleParts? AND AllToolsOnePart? OpenMP END SeqLabC 'G17' 'G20' 'G32' CRCOff DrillOff EOL SeqLabC OpToolID ToolChng EOL {Added this line - JHE} DoOpComments DoPostScript SeqLabC Speed SpinOn EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? OpenMP END CheckPass SeqLabC AbsOrInc WFOStuff Rapid StrtPos EOL SeqLabC OfstOn 'D' Tool# CoolOn EOL {Removed OpToolID - JHE} IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP SeqLabC StrtPos EOL END ELSE IF NewTool? {Finish off last Operation} IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP END SeqLabC CoolOff EOL SeqLabC OfstOff EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? CloseMP END DoEndOpPS SeqLabC SpinOff EOL IF LAST ProgStop? SeqLabC 'M0' EOL ELSE SeqLabC ProgStop EOL END {Start new Operation} SeqLabC 'G17' 'G20' 'G32' CRCOff DrillOff EOL SeqLabC OpToolID ToolChng EOL DoOpComments DoPostScript SeqLabC Speed SpinOn EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? OpenMP END CheckPass SeqLabC AbsOrInc WFOStuff Rapid StrtPos EOL SeqLabC OfstOn 'D' Tool# CoolOn EOL {Removed OpToolID - JHE} IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP SeqLabC StrtPos EOL END ELSE IF SameTool? {Finish off last Operation} IF LAST ProgStop? OR CoolOff? AND LAST NOT CoolOff? SeqLabC CoolOff EOL END IF LAST ProgStop? OR NewToolOffset? SeqLabC OfstOff EOL END DoEndOpPS IF LAST ProgStop? SeqLabC SpinOff EOL SeqLabC 'M0' EOL END {Start new Operation} IF LAST ProgStop? OR NewToolOffset? SeqLabC 'G17' 'G20' CRCOff DrillOff EOL END DoOpComments DoPostScript WFOStuff CheckPass SeqLabC SpeedC IF LAST ProgStop? SpinOn END EOL SeqLabC AbsOrInc WFOStuff Rapid StrtPos EOL SeqLabC IF LAST ProgStop? OR NewToolOffset? OfstOn 'D' Tool# {Removed OpToolID - JHE} END IF LAST ProgStop? OR NOT CoolOff? AND LAST CoolOff? CoolOn END EOL END END END {common point for all operations} SeqLabC Plane GetPlane EOL IF Milling? SeqLabC ZCP2C EOL IF Repeats? NewProg IF ZshiftOnly? IF AutoCycle? {incremental Autocycle sub can have Z moves} ZonlyRepAutoCycle ELSE {Z shift only, NOT Auto Cycle} IF UseSeparateSubCalls? AND CyclesLessThanMaxSubCalls? SetFlag('1') { Milling ZShiftOnly SepSubs } ZonlyRep SetFlagF('1') ELSE {no sep subs desired} G92Sub END END {end Auto Cycle IF} ELSE {not Z only} G92Sub END {end Z only IF} ELSE {no repeat OPs} Milling END IF AutoCycle? SeqLabC ZCP3C EOL ELSE IF FIFO? {.81} SeqLabC FeedC CRCOffC ZCP3C FeedEntC EOL ELSE SeqLabC RapidC CRCOffC ZCP3C EOL END END ELSE IF Drilling? IF Repeats? NewProg StdSub SeqLabC AbsOrInc Rapid StrtPos EOL END SeqLabC DrillCP EOL GetCycle SeqLabC IF FIFO? AND Dwell? 'G89' ELSE IF Tap? AND NOT CWSpindle? 'G74' ELSE IF RigidTap? {Added this check - JHE} 'G88' {Added this line - JHE} ELSE Cycle END END END FromCP StrtPos ZDepth RLevel Dwell Peck IF PeckChipBreaker? 'U' Retract# END IF Peck? 'D' Retract# END IF Tap? AND NOT RigidTap? {Added this check - JHE} 'B0P0' FeedEnt EOL {Added B0P0 - JHE} ELSE IF RigidTap? {Added this check - JHE} 'P0F' FeedTapIPR#('1') EOL {Added this line - JHE} ELSE FeedEnt EOL END END IF CallMasterOp? 'GOSUB ' CallMasterNum# EOL {Added this line - JHE} {SeqLabC SubCall CallLabB CallMasterNum# EOL} {Removed - JHE} SkipToLastFeat ELSE TrackZNO# FIRST SPZ# IF MasterOp? SetFlag('1') {std sep sub Zreps in effect} NewMasterProg 'GOSUB ' Program# EOL {Added this line - JHE} {SeqLabC SubCall CallLab EOL} {Removed - JHE} StartSub ToolPath 'RETURN' EOL {Removed SeqLabC - JHE} CloseSub SetFlagF('1') {not std sep sub Zreps in effect} ELSE ToolPath END END SetDrillEndOpZ SeqLabC 'G80' EOL SeqLabC RapidC ZCP3C EOL IF Repeats? FinishSubG92 END SeqLabC RapidC ZCP3C EOL END END NextOp {loops back to EachOP until last Operation} {End of program ************************************************************} {finish last operation} IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP END SeqLabC CoolOff EOL SeqLabC OfstOff EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? CloseMP END DoEndOpPS SeqLabC SpinOff EOL IF ProgStop? SeqLabC 'M0' EOL END IF MultipleParts? AND AllToolsOnePart? CloseMP END SeqLabC 'G53' Rapid 'X-22.5Y0.' EOL {Changed from X-15.Y0. - JHE} {SeqLabC UnTool ToolChng EOL} {Moved this line to tape start - JHE} SeqLabC EOP EOL CloseSub Post2 {organize Subs into one program} Close Retag {Added this line - JHE} 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:
Centurion I [PDS] MX35 89
Fanuc 0MB LeBlond [LB] MY10 89
BP DX32 Boss 9 [LB] MV59 89 6
Centurion V [SS] M977 89
Centurion VI [DT] MX62 89 1
Centurion IV [IS] M387 89
Centurion V M589 89 1m
Centurion V LH [TPIS] MV82 89
Bandit IV AB [DM] MV32 89 1
Fadal Format 2 [MM] MW60 89
Fadal Format 2 [PEP] M116 89 1
Fanuc MF M4 MS NS SSI M421 89 2

więcej podobnych podstron