Fanuc 5M [HM] M653 81 4


{Change Comments ***********************************************************} {12/13/88, Added missing connect info for milling repeats, JR} {5/26/90, Updated: Fanuc 5M M015.54 to .72.1 format, fixed MultipleParts endless loop, JR} {7/24/90, Replaced all occurances of SetSRXYZero with SetSRXYtoSP, DWB} {9/18/90, Updated: Fanuc 5M M015.73 to .76.1 format, JR} {4/3/91 Modified: Fanuc 5M M015.76.1 For: Gibbs & Associates Updated to Version 4.0 per Fanuc 6M M001.80 Format. DWB} {12/21/92 Modified: Fanuc 5M M015.76.1 For: Gibbs & Associates Updated to Version 4.1 per LongHand [AbsOrInc] M001.81.2 Format. This supports both Absolute and Incremental output. This supports MultipleParts. Using Var(1), Var(2) and Var(3) for logical control of MultiplePart Operations. Using Var(4), Var(5), Var(6) and Var(7) for correct Positioning of AutoCycles that Repeat in X and/or Y, and when AbsoluteMoves = FALSE. DWB} {1/31/94 Updated: Fanuc 5M M015.81.2 For: Gibbs & Associates Versions: ncCad 4.32/ncCam 4.32/ncPost 4.32.2/Compost 4.21.19 Changes made per Pete Jackson Updated to Version 4.2 per LongHand M001.81.3 Format. Changed TrackZNO# ZDepth# to TrackZNO# FIRST SPZ# at DrillStuff. SPZ# is affected by SetScale, whereas ZDepth# is not. Changed logic of MPLoop sub to handle IF NewTool? and LastOp? situations. Commented out DoEndOpPS at MPLoop for OneToolAllParts, it does not work correctly. Added CRCOffC per version 4.2. CutterRadiusCompensation ExitLength will output G40 on LastFeat AND LineFeat at StdLine sub. Added Move to ZInC for Non-AutoCycle FeedConnect Repeats with ZMoves at ExitMove sub. Moved DoCycleComment call to before StrtPos move in related subs. DWB} {4/27/94 Modified: Fanuc 5M M015.81.3 For: Hillar Malm/Fructus Versions: ncCad 4.32.03/ncCAM 4.32.03/ncPost 4.32.03/Compost 4.21.20 Changes made per Mikael Bagge of Fructus. Updated to Version 4.2 per LongHand M001.81.3a Format. Moved SeqC and EOL outside of IF ELSE condition at ExitMove sub. Moved SeqC AbsOrInc and EOL outside of IF ELSE condition at AutoCycCutSub2 sub. Deleted ReSetPass2 at end of ZonlyRepAutoCycle sub. Already executed at end of call to AutoCycCutSub2 sub. Following changes made per Mikael Bagge of Fructus Added literal G80G92X0Y0Z0 following DoOpComments at FirstOperation. Changed all occurances of Speed5M to TABLE(1,SpeedRPM#,1). Changed all occurances of OfstOn to IncValue 'G45Z-0' ToolOfst. Added SetAbs TrackZNO# ClearancePlane1# following this block to update internal register. Added AbsOrInc following this block to restore Processor to user choice. Moved CoolOn to OfstOn block. Added logic to output turret index code for ToolChng at NewTool and end of Prog. Machine stores 7 tools in turret. M6L2 will index turret 2 places. M6L2 will cause turret Position 6 to index to turret Position 1. Moved SpinOff to OfstOff block at EndPartSub. Added Preset 'X0Y0' at end of Prog. Added literal 'G28X0Y0' at end of Prog. Added Tool List Dump following EOR at end of Prog DWB} {Prog Numeric Format Definitions *******************************************} #1 = '#.00' #2 = '###.###;0.' #3 = '*###.###;0.' #4 = '####.####;0.' #5 = '#######0' #6 = '####^###0' #7 = '#' #8 = 'ą#bbbb.bbbb#' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(ToolDiameter#,4) {.72} FORMAT(Tag#,5) FORMAT(Program#,5) {.72} FORMAT(Operation#,5) {.72} FORMAT(Tool#,5) {.72} FORMAT(Parts#,5) {.72} FORMAT(Dwell#,6) {.72} FORMAT(RapidF#,7) FORMAT(PartShiftX#,8) FORMAT(PartShiftY#,8) FORMAT(PartShiftZ#,8) {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 DoPartCycleComment: IF MultipleParts? AND UseComments? AND SubComment? '( PART NO. ' Tag# ' )' EOL END RETURN DoCycleComment: IF UseComments? AND SubComment? '( CYCLE START )' 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} RotateF RETURN PSStuff: {revised.72} IF FourthCW? FORMAT(FourthDegree#,2) SeqC 'A' FourthDegree# EOL FourthCWF {reset flag} END IF FourthCCW? FORMAT(FourthDegree#,3) SeqC 'A' FourthDegree# EOL FourthCCWF {reset flag} END IF FifthCW? FORMAT(FifthDegree#,2) SeqC 'B' FifthDegree# EOL FifthCWF {reset flag} END IF FifthCCW? FORMAT(FifthDegree#,3) SeqC 'B' FifthDegree# EOL FifthCCWF {reset flag} END RETURN DoPostScript: PSInit EachPS SeqC PostScript EOL {literals} PSStuff {commands} NextPS RETURN DoEndOpPS: PSInit EachEOPS SeqC EndOpPS EOL {literals} PSStuff {commands} NextPS RETURN EntryMove: IF FeedEntry? SeqC FeedC ZInC FeedEntC EOL ELSE SeqC RapidC ZInC EOL END RETURN GetConnect: IF FeedConnect? FeedC ELSE RapidC END RETURN ExitMove: SeqC IF FeedConnect? IF NOT AutoCycle? IF NOT NoZMoves? FeedC ZInC FeedEntC END END ELSE CRCOffC IF FIFO? { .81 } FeedC ELSE RapidC END PRIME ZCP2C IF FIFO? { .81 } FeedEntC END END EOL RETURN ExitMove2: IF FIFO? FeedC ZCP3C FeedEntC ELSE RapidC ZCP3C END RETURN CycleWarning: { NOTE: This Post Processor takes care of Z Clearance. } RETURN FormatArc: IF ArcCW? CWArcC ELSE CCWArcC END MoveXYZC IF ArcIJFormat? ArcIJC ELSE ArcRC END RETURN CkCRC: { 4.2 } IF LastFeat? CRCOffC ELSE CRCOnC END RETURN StdLine: {enables CRC on first call, .70} IF Decelerate? IF RoomToDecel? DecelMove1 SeqC CkCRC FeedC MoveXYZC FeedRateC CRCOffsetC EOL DecelMove2 END SeqC CkCRC FeedC MoveXYZC DecelFeed CRCOffsetC EOL ELSE IF XMove? OR YMove? OR ZMove? SeqC CkCRC FeedC MoveXYZC FeedRateC CRCOffsetC EOL END END RETURN ToolPath: EACHFeat IF PointFeat? { Drilling Only } SeqC MoveSXYZC EOL {.80.01} ELSE IF RapidFeat? IF LastFeat? AND AutoCycle? {.70} SeqC CRCOffC RapidC MoveXYZC EOL ELSE IF XMove? OR YMove? OR ZMove? SeqC RapidC MoveXYZC EOL END END ELSE IF LineFeat? IF AutoCycle? {.70} IF LastFeat? SeqC CRCOffC FeedC MoveXYZC FeedRateC EOL ELSE IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps} SeqC FeedC MoveXYZC FeedRateC EOL ELSE StdLine {enables CRC on first call} END END ELSE StdLine END ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } IF LastQuadrant? AND Decelerate? IF RoomToDecel? DecelMove1 SeqC FormatArc ArcFeedC EOL DecelMove2 END SeqC FormatArc DecelFeed EOL ELSE SeqC FormatArc ArcFeedC EOL END NEXTQuadrant END END END IF AutoCycle? SetAbs Save# Num#('6') SUB# EPX# CurOriginPosX# Save# Num#('7') SUB# EPY# CurOriginPosY# SetInc END END NEXTFeat RETURN WFOStuff: { NOTE: This Post Processor does not support WorkFixtureOffsets. } RETURN AutoCycCutSub1: {part 1} CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY} SaveSubStatus {save tool position} SetPass1 {element cut moves} SetSRXYtoSP SeqC IncValue EOL RETURN AutoCycCutSub2: {part 2} SeqC AbsOrInc IF FIFO? {.81} FeedC ZCP2 FeedEntC {.71.2 removed CRCOffC, gets turned off in ToolPath} ELSE RapidC ZCP2 END EOL SetSRSubXY {restore SR to 1st position value} ReSetPass2 {restore for positioning moves} RETURN Milling: EntryMove ToolPath RETURN XYZRep: CycleWarning FindAnyZMoves EachRep DoCycleComment IF FirstCycle? EntryMove ELSE SeqC CRCOffC GetConnect StrtPosC EOL IF FeedConnect? IF ZshiftOnly? EntryMove END ELSE IF FeedEntry? SeqC ZCP2C EOL END EntryMove END END ToolPath ExitMove NextRep RETURN NoRepAutoCycle: EACHFeat DoCycleComment IF SPXMove? OR SPYMove? SeqC RapidC MoveSXYC EOL END AutoCycCutSub1 Milling AutoCycCutSub2 NEXTFeat RETURN XYZRepAutoCycle: CycleWarning EachRep EACHFeat DoCycleComment IF SPXMove? OR SPYMove? SeqC GetConnect MoveSXYC EOL END SetAbs Save# Num#('4') SPX# Save# Num#('5') SPY# SetInc AutoCycCutSub1 Milling AutoCycCutSub2 SetAbs TrackXNO# ADD# Recall# Num#('4') Recall# Num#('6') TrackYNO# ADD# Recall# Num#('5') Recall# Num#('7') SetAbsOrInc NEXTFeat NextRep RETURN ZonlyRepAutoCycle: EACHFeat DoCycleComment IF SPXMove? OR SPYMove? SeqC GetConnect MoveSXYC EOL END AutoCycCutSub1 EachRep IF FirstCycle? EntryMove ELSE IF NOT FeedConnect? ExitMove END DoCycleComment IF SPXMove? OR SPYMove? SeqC GetConnect MoveSXYC EOL END IF NOT FeedConnect? EntryMove END END ToolPath NextRep AutoCycCutSub2 NEXTFeat RETURN DrillStuff: SeqC DrillCP EOL GetCycle SeqC Cycle FromCP StrtPos ZDepth RLevel Dwell Peck Retract FeedEnt EOL TrackZNO# FIRST SPZ# {.81.2} RETURN CheckPass: IF AutoCycle? {use the correct StrtPos} SetPass2 ELSE SetPass1 END RETURN GetStartOfSameTool: DoPartCycleComment DoOpComments DoPostScript CheckPass RETURN MasterSub: IF FirstOperation? IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart? ELSE IF ToolChangeAtHome? SetHome END Seq Plane 'G80' CRCOff EOL SeqC OpToolID EOL SeqC ToolChng EOL DoPartCycleComment DoOpComments SeqC 'G80G92X0Y0Z0' EOL DoPostScript SeqC TABLE(1,SpeedRPM#,1) EOL SeqC SpinOn EOL CheckPass SeqC AbsOrInc Rapid StrtPos EOL SeqC IncValue 'G45Z-0' ToolOfst CoolOn EOL { OfstOn } SetAbs TrackZNO# ClearancePlane1# SeqC AbsOrInc EOL END ELSE IF NewTool? IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart? ELSE {Finish off last Operation} SeqC CoolOff EOL SeqC IncValue OfstOff EOL DoEndOpPS IF ToolChangeAtHome? SetAbs LoadFeat SUB# HomeX# CurOriginPosX# SUB# HomeY# CurOriginPosY# Num#('0') { Dummy Z } SeqC AbsOrInc Rapid MoveXY SpinOff EOL ELSE SeqC SpinOff EOL END IF LAST ProgStop? SeqC 'M00' EOL ELSE SeqC ProgStop EOL END {Start new Operation} Seq Plane 'G80' CRCOffC EOL SeqC OpToolID EOL SeqC ToolChng IF GreaterThan? Tool# LAST Tool# IF GreaterThan? SUB# Tool# LAST Tool# Num#('1') { Do not output if only one index } 'L' SUB# Tool# LAST Tool# END ELSE 'L' ADD# Num#('7') SUB# Tool# LAST Tool# END EOL DoPartCycleComment DoOpComments DoPostScript SeqC TABLE(1,SpeedRPM#,1) EOL SeqC SpinOn EOL CheckPass SeqC AbsOrInc Rapid StrtPos EOL SeqC IncValue 'G45Z-0' ToolOfst CoolOn EOL { OfstOn } SetAbs TrackZNO# ClearancePlane1# SeqC AbsOrInc EOL END ELSE IF SameTool? DoEndOpPS IF LAST ProgStop? SeqC CoolOff EOL SeqC IncValue OfstOff EOL SeqC SpinOff EOL SeqC 'M00' EOL {Start new Operation} GetStartOfSameTool SeqC TABLE(1,SpeedRPM#,1) EOL SeqC SpinOn EOL SeqC PlaneC AbsOrInc Rapid StrtPos EOL SeqC IncValue 'G45Z-0' ToolOfst CoolOn EOL { OfstOn } SetAbs TrackZNO# ClearancePlane1# SeqC AbsOrInc EOL ELSE IF CoolOff? AND LAST NOT CoolOff? SeqC CoolOff EOL END IF NewToolOffset? SeqC IncValue OfstOff EOL {Start new Operation} GetStartOfSameTool IF NotEqual? SpeedRPM# LAST SpeedRPM# SeqC TABLE(1,SpeedRPM#,1) EOL END SeqC PlaneC AbsOrInc Rapid StrtPos EOL SeqC IncValue 'G45Z-0' ToolOfst EOL { OfstOn } SetAbs TrackZNO# ClearancePlane1# SeqC AbsOrInc EOL ELSE {Start new Operation} GetStartOfSameTool IF NotEqual? SpeedRPM# LAST SpeedRPM# SeqC TABLE(1,SpeedRPM#,1) EOL END SeqC PlaneC AbsOrInc Rapid StrtPos EOL END IF NOT CoolOff? AND LAST CoolOff? SeqC CoolOn EOL END END END END END {common point for all operations} ResetCRCNum {.72} RapidF# { No Output } IF Milling? SeqC ZCP2C EOL IF AutoCycle? IF Repeats? IF ZshiftOnly? ZonlyRepAutoCycle ELSE XYZRepAutoCycle END IF NOT FeedConnect? SeqC ExitMove2 EOL END ELSE NoRepAutoCycle SeqC ExitMove2 EOL END ELSE { NOT AutoCycle } IF Repeats? XYZRep ELSE Milling END SeqC CRCOffC ExitMove2 EOL END ELSE IF Drilling? IF Repeats? EachRep DoCycleComment IF FirstCycle? DrillStuff END ToolPath NextRep ELSE DrillStuff ToolPath END IF RetractToCP1? {.81} TrackZNO# ClearancePlane1# ELSE TrackZNO# ClearancePlane2# END SeqC 'G80' EOL SeqC RapidC ZCP3C EOL END END RETURN EndPartSub: {End of program ************************************************************} {finish last operation} SeqC CoolOff EOL SeqC IncValue OfstOff SpinOff EOL DoEndOpPS IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier} SetAbs LoadFeat SUB# FIRST HomeX# CurOriginPosX# SUB# FIRST HomeY# CurOriginPosY# Num#('0') { Dummy Z } SeqC AbsOrInc Rapid MoveXY EOL END SeqC Preset 'X0Y0' EOL SeqC 'G28X0Y0' EOL SeqC ToolChng IF GreaterThan? FIRST Tool# Tool# IF GreaterThan? SUB# FIRST Tool# Tool# Num#('1') { Do not output if only one index } 'L' SUB# FIRST Tool# Tool# END ELSE IF NotEqual? FIRST Tool# Tool# 'L' ADD# Num#('7') SUB# FIRST Tool# Tool# END END EOL IF ProgStop? SeqC 'M00' EOL ELSE IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? SeqC ProgStop EOL END END RETURN MPLoop: TagInit IF AllToolsOnePart? EachPart TagInc EachOp MasterSub NextOp EndPartSub NextPart ELSE { OneToolAllParts } Save# Num#('2') Recall# Num#('1') IF LTEqual? Recall# Num#('1') Recall# Num#('3') EachOp IF Equal? Operation# Recall# Num#('2') Save# Num#('2') ADD# Operation# Num#('1') IF NewTool? IF Equal? Recall# Num#('1') Recall# Num#('3') Save# Num#('2') Operation# ELSE IF NotEqual? Recall# Num#('1') SUB# Recall# Num#('2') Num#('1') Save# Num#('2') SUB# Operation# Num#('1') END END END END NextOp EachPart TagInc EachOp IF GTEqual? Operation# Recall# Num#('1') IF LTEqual? Operation# Recall# Num#('2') IF Equal? Operation# Recall# Num#('1') IF NOT FirstPart? {Finish off last Operation} IF FullUp? SeqC CoolOff EOL SeqC IncValue OfstOff EOL END {DoEndOpPS} {Start new Operation} GetStartOfSameTool IF NotEqual? SpeedRPM# LAST SpeedRPM# SeqC TABLE(1,SpeedRPM#,1) EOL END SeqC PlaneC AbsOrInc Rapid StrtPos EOL IF FullUp? SeqC IncValue 'G45Z-0' ToolOfst CoolOn EOL { OfstOn } SetAbs TrackZNO# ClearancePlane1# SeqC AbsOrInc EOL END END END MasterSub END END NextOp NextPart Save# Num#('1') ADD# Recall# Num#('2') Num#('1') END END RETURN {Start of executable Prog **************************************************} {setup and initializations} InitProg ReverseXZArcs SetFlood SetMaxRPM('10000') SetMaxFeed('500') Save# Num#('1') Num#('0') { This Tool FirstOp# } Save# Num#('2') Num#('0') { This Tool LastOp# } Save# Num#('3') Num#('0') { LastOp# } Save# Num#('4') Num#('0') { XPos Status Register Updated Position for Repeated AutoCycles } Save# Num#('5') Num#('0') { YPos Status Register Updated Position for Repeated AutoCycles } Save# Num#('6') Num#('0') { LastFeat EPX# AbsPosValue for Repeated AutoCycles } Save# Num#('7') Num#('0') { LastFeat EPY# AbsPosValue for Repeated AutoCycles } 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 ' 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 EOR 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 IF MultipleParts? IF WorkFixtureOffsets? 'NOTE: This Post Processor does not support Work Fixture Offsets for Multiple Parts.' EOL 'Therefore, the output will be controlled by the following values that are' EOL 'already entered in Equally Spaced Offsets Edit Fields:' EOL 'X' PartShiftX# ' Y' PartShiftY# ' Z' PartShiftZ# EOL 'It is recommended that you change your selection to Equally Spaced Offsets.' EOL END Save# Num#('1') Num#('1') EachOp IF LastOp? Save# Num#('3') Operation# END NextOp MPLoop IF OneToolAllParts? MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop MPLoop EndPartSub END ELSE EachOp MasterSub NextOp EndPartSub END SeqC EOP EOL Post EOR EOL EachTool SetFlag('1') EachOp IF Equal? TLNum# Tool# IF Flag?('1') SetFlagF('1') '( TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL END END NextOp NextTool 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

Wyszukiwarka

Podobne podstrony:
Fanuc 5M [HM] M653 81 4m
Fanuc 5M Router [SP] M571 81 3
Fanuc 10M (AGA) M147 81 2
Fanuc 6M (AGA1) M148 81 2
Fanuc 5M Mazak LH [JT] MU88 16m
Dynapath 5M Excello M091 81 3
AT Fanuc 5M M083 80
Fanuc 0M Kiwa M216 81 3
Fanuc 5M M015 87m
Fanuc 0M [HM] M629 87
Fanuc 5M [NM] M961 89 1
Fanuc 3M Enshu M070 81 2m
Fanuc 5M M015 87
Fanuc 5M Mazak V5 M657 89

więcej podobnych podstron