plik


{ MILL=T LATHE=F SIMPLE_ROT_POS=F ROTARY_MILL=F ADV_MILL=F SUBS=F MILLTURN_Y-AXIS=F METRIC=F } {Change Comments ***********************************************************} {11/16/98 Initial: Fanuc 6M NMU99.16 Created: Fanuc 6M Leblond NMxxx.16 ForUser: Alco Packaging Machinery Control: Fanuc 6M Machine: Leblond Makino Develop: Compost2 v1.6b8, Virtual 4.29.63 Comment: New processor per marked up readout and sample program and conversation with Chuck Keen. G100 is macro that calls G43 G54 M3 M8 among other things. Set up wFOStuff to output by request only, MPs or NWFO. Jim Radcliffe} {12/3/98 Initial: Fanuc 6M LM [AP] NMT45.16 Created: Fanuc 6M LM [AP] NMT45.16.1 Develop: ComPost2 v1.7b11, Virtual v5.02 Comment: Modified pr marked up readout. Changed program ID label from colon to letter O Added SetAbs to G100 blocks to suppress the G90 output of absOrIncC Jim Radcliffe} {1/21/99 Initial: Fanuc 6M LM [AP] NMT45.16.1 Created: Fanuc 6M LM [AP] NMT45.16.2 Develop: Compost2 PPC 1.7b15, Virtual v5.02 Comment: Modified per fax and conversation with Chuck Keen 303-708-9044 Removed support for Optional Stops At Tool Change Positions. Moved output of Program Stop 'M0' to after ToolChng. Jim Radcliffe} {Prog Numeric Format Definitions ****} #1 = '#.00' #2 = '#####.###;0.' #3 = '*#####.###;0.' #4 = '####.####;0.' #5 = '#######0' #6 = '####^##0' #7 = '#' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(ADD#,4) FORMAT(ToolDiameter#,4) FORMAT(TrackXNO#,4) FORMAT(TrackYNO#,4) FORMAT(TrackZNO#,4) FORMAT(Recall#,5) FORMAT(PartNum#,5) FORMAT(Program#,5) FORMAT(Operation#,5) FORMAT(Tool#,5) FORMAT(NewWFO#,5) FORMAT(Parts#,5) FORMAT(Dwell#,6) FORMAT(RapidF#,7) {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? SetWFO ELSE {wFO} {commented out 11/16/98} END ELSE {wFO} {commented out 11/16/98} END END END END SetFlagF('2') { Do not output WFO second time wFOStuff is called for MP-WFO-OTAP-ECP } RETURN resetWFO: IF WorkFixtureOffsets? SeqC WFO1 EOL END RETURN doPartCycleComment: IF MultipleParts? AND UseComments? AND SubComment? '( PART NO. ' PartNum# ' )' 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: NewWFOF RotateF OptCyc1F MasterOpF CallMasterOpF RETURN pSStuff: IF FourthCW? FORMAT(FourthDegree#,2) SeqC 'A' FourthDegree# EOL FourthCWF END IF FourthCCW? FORMAT(FourthDegree#,3) SeqC 'A' FourthDegree# EOL FourthCCWF END 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 loadPRIMEZCP2: LoadFeat Num#('0') Num#('0') PRIME ClearancePlane2# RETURN pRIMEZCP2: PRIME ZCP2 RETURN loadPRIMEZCP3: LoadFeat Num#('0') Num#('0') PRIME ClearancePlane3# RETURN pRIMEZCP3: PRIME ZCP3 RETURN connectC: IF FeedConnect? FeedC ELSE RapidC END RETURN absValueC: IF NOT AbsValue? AbsValue END RETURN incValueC: IF AbsValue? IncValue END RETURN absOrIncC: IF AbsoluteMoves? absValueC ELSE incValueC END RETURN entryMove: IF Repeats? AND ZShiftOnly? AND FeedConnect? SeqC FeedC ZInC IF NOT EmptyLine? FeedEntC END EOL ELSE IF FeedEntry? SeqC FeedC ZInC IF NOT EmptyLine? FeedEntC END EOL ELSE SeqC RapidC ZInC EOL END END RETURN autoCycExitMove: SeqC absOrIncC CRCOffC IF FIFO? FeedC pRIMEZCP2 FeedEntC ELSE RapidC pRIMEZCP2 END EOL RETURN exitMove: IF AutoCycle? SeqC CRCOffC ZCP3C EOL ELSE IF FIFO? SeqC CRCOffC FeedC ZCP3C FeedEntC EOL ELSE SeqC CRCOffC RapidC ZCP3C EOL END END RETURN finishSub1: SeqC CRCOffC IF NOT FeedConnect? loadPRIMEZCP3 IF ZMove? IF AutoCycle? pRIMEZCP3 ELSE IF FIFO? FeedC pRIMEZCP3 FeedEntC ELSE RapidC pRIMEZCP3 END END END END EOL RETURN formatArc: IF ArcCW? CWArcC ELSE CCWArcC END MoveXYZC IF ArcIJFormat? ArcIJC ELSE ArcRC 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 doPeck: { longDrillStuff } IF GreaterThan? SUB# Recall# Num#('3') Peck# SPZ# { IF OldZ - Peck# > Depth } Save# Num#('3') SUB# Recall# Num#('3') Peck# { Save New Peck Depth } SeqC Feed 'Z' Recall# Num#('3') FeedEntC EOL { Move to New Peck Depth } Rapid IF PeckFullRetract? SeqC ZCP2 EOL { Retract Tool Full Out } END SeqC 'Z' ADD# Recall# Num#('3') Retract# EOL { Move to Retract Position } TrackZNO# ADD# Recall# Num#('3') Retract# { Update Status Register } END RETURN drillFeature: { longDrillStuff } SeqC RapidC MoveSXYC EOL SeqC ZCP2C EOL IF Peck? FORMAT(Recall#,4) Save# Num#('3') ClearancePlane2# doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck doPeck FORMAT(Recall#,5) END SeqC FeedC MoveSZC FeedEntC EOL IF Dwell? SeqC 'G4X' Dwell# EOL END IF FIFO? OR Tap? SeqC FeedC ZCP2C EOL IF RetractToCP1? SeqC RapidC ZCP1C EOL END ELSE IF RetractToCP1? SeqC RapidC ZCP1C EOL ELSE SeqC RapidC ZCP2C EOL END END RETURN toolPath: EACHFeat IF PointFeat? { Drilling Only } SeqC MoveSXYZC EOL ELSE IF RapidFeat? IF XMove? OR YMove? OR ZMove? SeqC ckCRC RapidC MoveXYZC ckCRCNum EOL END ELSE IF LineFeat? IF XMove? OR YMove? OR ZMove? SeqC ckCRC FeedC MoveXYZC FeedRateC ckCRCNum EOL END ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } SeqC formatArc ArcFeedC EOL NEXTQuadrant END END END END NEXTFeat RETURN autoCycCutSub1: {part 1} CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY} SaveSubStatus {save tool position} SetPass1 {element cut moves} SetSRXYtoSP IF Repeats? AND ZShiftOnly? entryMove END SeqC incValueC EOL RETURN autoCycCutSub2: {part 2} SeqC absOrIncC CRCOffC IF FIFO? FeedC ZCP2C FeedEntC ELSE RapidC ZCP2C END EOL SetSRSubXY {restore SR to 1st position value} ReSetPass2 {restore for positioning moves} RETURN cutAutoCycle: IF Repeats? AND NOT ZShiftOnly? EachRep IF NOT FirstCycle? IF FIFO? Rapid END SeqC RapidC StrtPos EOL IF NOT FeedConnect? SeqC ZCP2C EOL END END END EACHFeat doCycleComment IF SPXMove? OR SPYMove? IF FIFO? Rapid END SeqC RapidC MoveSXYC EOL END autoCycCutSub1 IF Repeats? AND ZShiftOnly? EachRep IF NOT FirstCycle? doCycleComment IF SPXMove? OR SPYMove? SeqC connectC incValueC MoveSXYC EOL END absOrIncC IF FeedConnect? entryMove ELSE IF FeedEntry? SeqC RapidC ZCP2C EOL END entryMove END SeqC incValueC EOL END toolPath IF NOT FeedConnect? autoCycExitMove END NextRep ELSE entryMove toolPath END autoCycCutSub2 NEXTFeat IF Repeats? AND NOT ZShiftOnly? finishSub1 NextRep END SetPass1 RETURN milling: IF Repeats? EachRep doCycleComment IF SPXMove? OR SPYMove? SeqC connectC MoveSXYC EOL END IF FeedConnect? entryMove ELSE IF FeedEntry? SeqC RapidC ZCP2C EOL END entryMove END toolPath finishSub1 NextRep ELSE entryMove toolPath END RETURN setDrillEndOpZ: IF RetractToCP1? TrackZNO# ClearancePlane1# ELSE TrackZNO# ClearancePlane2# END RETURN drilling: SeqC DrillCP EOL GetCycle SeqC Cycle FromCP ZDepth RLevel Dwell Peck Retract FeedEnt EOL TrackZNO# FIRST SPZ# {.81.2} toolPath setDrillEndOpZ SeqC DrillOff ZCP3C EOL RETURN longDrilling: SeqC DrillCP EOL GetCycle SeqC StrtPosC EOL toolPath LoadFeat Num#('0') Num#('0') ClearancePlane3# IF ZMove? SeqC RapidC ZCP3C EOL END RETURN checkPass: {use the correct StrtPos} IF AutoCycle? SetPass2 ELSE SetPass1 END RETURN opGuts: ResetCRCNum IF FirstOperation? OR NewTool? RapidF# { Forces FeedEntC/FeedRateC } END IF Milling? SeqC ZCP2C EOL IF AutoCycle? cutAutoCycle ELSE milling END exitMove ELSE IF Drilling? drilling END END RETURN progStart: InitProg ReverseXZArcs InitWFONum SetFlood SetMaxRPM('10000') IF Metric? SetMaxFeed('12700') ELSE SetMaxFeed('500') END Save# Num#('1') Num#('0') { MultipleParts Current Tool FirstOp# } Save# Num#('2') Num#('0') { MultipleParts ToolOp# Counter } Save# Num#('3') Num#('0') { LongHand PeckCycle } SetFlagF('2') { Need to output wFOStuff twice for MP-ESO-OTAP-ECP, once for all others } 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 ' 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 RETURN initOp: EOR EOL 'O' Program# EOL IF UseComments? AND ProgramNameComment? '( ' ProgramName$ ' )' END EOL EachOp IF FirstOperation? IF ToolChangeAtHome? SetHome END END NextOp IF UseComments? 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 restoreScale RETURN firstOp1: SeqC Rapid Plane 'G20' CRCOff WFO1 'G64' DrillOff AbsOrInc 'G98' EOL IF UseComments? '( Mach Work Offset )' EOL END SeqC 'G10L2P1X0Y0Z0' EOL SeqC 'T99' EOL Seq OpToolID EOL Seq ToolChng EOL doPartCycleComment doOpComments doPostScript RETURN firstOp2: checkPass Seq 'G100' SetAbs PlaneC absOrIncC wFOStuff StrtPos ZCP1 Speed IF LastTool? 'T99' ELSE PreTool END ToolOfst EOL RETURN firstOp3: IF CoolOff? SeqC CoolOff EOL END RETURN newToolOp1: RETURN newToolOp2: doEndOpPS IF ToolChangeAtHome? SeqC incValueC OfstOff EOL SeqC absOrIncC Rapid PRIME Home ASCII('13') EOL ELSE ' ' EOL END RETURN newToolOp3: {Start new Operation} Seq ToolChng EOL IF LAST ProgStop? SeqC incValueC 'G28Y0' absOrIncC 'M0' ASCII('13') EOL END doPartCycleComment doOpComments doPostScript RETURN newToolOp4: checkPass Seq 'G100' SetAbs PlaneC absOrIncC wFOStuff StrtPos ZCP1 Speed IF LastTool? 'T99' ELSE PreTool END ToolOfst EOL RETURN newToolOp5: IF CoolOff? SeqC CoolOff EOL END RETURN sameToolOp1: doEndOpPS IF LAST ProgStop? SeqC incValueC OfstOff EOL SeqC 'M0' ASCII('13') EOL ELSE IF NewToolOffset? SeqC incValueC OfstOff ASCII('13') EOL ELSE ' ' EOL END END RETURN sameToolOp2: {Start new Operation} doPartCycleComment doOpComments doPostScript checkPass RETURN sameToolOp3: {Start new Operation} IF LAST ProgStop? SeqC PlaneC absOrIncC wFOStuff RapidC StrtPos SpeedC SpinOn EOL SeqC OfstOn CoolOn EOL ELSE SeqC PlaneC absOrIncC wFOStuff RapidC StrtPos SpeedC EOL SeqC IF NewToolOffset? OfstOn END IF NOT CoolOff? AND LAST CoolOff? CoolOn END IF CoolOff? AND LAST NOT CoolOff? CoolOff END EOL END RETURN end1: RETURN end2: doEndOpPS IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? IF FIRST ToolChangeAtHome? {added FIRST modifier} SeqC incValueC OfstOff EOL SeqC absOrIncC Rapid PRIME FirstHome ASCII('13') EOL ELSE ' ' EOL END ELSE IF FIRST ToolChangeAtHome? {added FIRST modifier} SeqC incValueC OfstOff EOL SeqC absOrIncC Rapid PRIME FirstHome ASCII('13') EOL ELSE ' ' EOL END END RETURN end3: SeqC ToolChng EOL SeqC incValueC 'G28Y0' EOL SeqC UnTool EOL IF UseComments? '( Please Return PCR, Tool Sheet, And Program When Job Is Comp. )' EOL END SeqC EOP EOL 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} IF FirstOperation? OR EquallySpacedOffsets? SetFlag('2') { Need to output wFOStuff twice for MP-ESO-OTAP-ECP, once for all others } END IF FirstOperation? firstOp1 firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 newToolOp2 newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END opGuts RETURN mP1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up} 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 resetWFO newToolOp2 newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END opGuts RETURN mP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane} 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 resetWFO newToolOp2 newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END opGuts RETURN noMPs: {no multiple parts} 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 opGuts RETURN masterSub: IF MultipleParts? IF AllToolsOnePart? mPallTools1P ELSE {implied OneToolAllParts?} IF FullUp? mP1ToollAllPfu ELSE {implied ExitClearancePlane?} mP1ToollAllPXcp END END ELSE noMPs END RETURN endPartSub: {End of program ************************************************************} {finish last operation} end1 IF MultipleParts? AND OneToolAllParts? resetWFO END end2 RETURN newPart1: {Finish off last Part} IF FullUp? SeqC incValueC OfstOff ASCII('13') EOL ELSE ' ' EOL END {doEndOpPS} RETURN newPart2: {Start new Part} sameToolOp2 RETURN newPart3: {Start new Part} SetFlag('2') { Need to output wFOStuff twice for MP-ESO-OTAP-ECP, once for all others } Seq 'G100' SetAbs PlaneC absOrIncC wFOStuff StrtPos IF FullUp? ZCP1 END Speed IF FullUp? ToolOfst END EOL RETURN mPLoop: Save# Num#('2') Recall# Num#('1') IF WorkFixtureOffsets? NewWFO EachWFO ELSE EachPart END IF AllToolsOnePart? EachOp masterSub NextOp endPartSub ELSE { OneToolAllParts } EachOp IF Equal? Operation# Recall# Num#('2') { Valid Tool Op } IF FirstOperation? OR NewTool? IF FirstPart? masterSub ELSE newPart1 newPart2 newPart3 opGuts END ELSE masterSub END IF LastOp? IF LastPart? Save# Num#('1') Num#('0') END Save# Num#('2') Recall# Num#('1') ELSE IF NEXT SameTool? Save# Num#('2') NEXT Operation# ELSE IF LastPart? Save# Num#('1') NEXT Operation# Save# Num#('2') Num#('0') ELSE Save# Num#('2') Recall# Num#('1') END END END END NextOp END IF WorkFixtureOffsets? IncWFO NextWFO ELSE NextPart END RETURN {Start of executable Prog, Top Level ****} progStart {setup and initializations} initOp IF MultipleParts? IF WorkFixtureOffsets? {'NOTE: This Post Processor does not support Work Fixture Offsets for Multiple Parts.' EOL 'It is recommended that you change your selection to Equally Spaced Offsets.' EOL} END IF AllToolsOnePart? mPLoop resetWFO ELSE EachOp IF FirstOperation? Save# Num#('1') Operation# END NextOp 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 end3

Wyszukiwarka

Podobne podstrony:
Fanuc 6M LM [AP] NCT45 16 1
Fanuc 6M LM [AP] BT45 16 1
Fanuc 6M LM [AP] CT45 16 1
Fanuc 6M LM [AP] NBT45 16 1
Fanuc 16M LM [HE] NMQ59 16 1m
Fanuc 12M Toyoda [AP] BU78 16 01
Fanuc 12M Toyoda [AP] BU78 16 01
Fanuc 6M HS [CG] MQ22 16
Fanuc 6M [PMW] NDT40 16
Fanuc 6M [NW] D001 16
Fanuc 6M [PW] C001 16
Fanuc 6M [NW] NDU99 16
Fanuc 6M AH HA [SL] MQ18 16 2
Fanuc 6M [6D] MT02 16
Fanuc 6M linmov M001 16 2m
Fanuc 6M [BR] MT12 16
Fanuc 6M M001 16 2m
Fanuc 6M linmov M001 16 2
Fanuc 6M [DM] B180 16

więcej podobnych podstron