plik


{Change Comments ***********************************************************} {8/2/95, Updated for Catalyst v2.20 per Fanuc 6M M001.85.01 Format. This is a Tagging Post. DWB} {11/2/95, Modified: Dynapath 20M M074.85.01 Added CallMasterNum# to FORMAT#5 at Prog Numeric Format Definitions. Added OptCyc1F at PSInit sub. Modified CRC handling. SetUp for Virtual RapidFeat and LineFeat, not Gibbs System DogBone! Added Flag(3) Various necessary minor changes, too numerous to list due to time constraints. DWB} {1/17/96, Updated .85 to .86 version, MPK} {3/22/96, Tested ZOnlyRepAutoCycle, Changed version # to .89, MPK} {10/07/97, Initial: Dynapath 20M M074.89 Created: Dynapath 20M Mxxx.89 For: Polaroid Moved Rapids in FirstOp and NewTool to same line as StartPos. CDH } {Prog Numeric Format Definitions *******************************************} #1 = '#.00' #2 = '###.###;0.' #3 = '*###.###;0.' #4 = '####.####;0.' #5 = '#######0' #6 = '###.#;0' #7 = '00' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(SPX#,4) FORMAT(SPY#,4) FORMAT(Retract#,4) FORMAT(ToolDiameter#,4) {.72} FORMAT(Recall#,5) FORMAT(Tag#,5) FORMAT(CallMasterNum#,5) FORMAT(Program#,5) {.72} FORMAT(Operation#,5) {.72} FORMAT(Tool#,5) {.72} FORMAT(Parts#,5) {.72} FORMAT(RapidF#,6) FORMAT(Dwell#,6) {.72} FORMAT(NewWFO#,7) {.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 Get$: { For conversational output } IF NOT EmptyLine? '$' END RETURN TurnCRCOn: IF CutterRadiusCompensation? AND NOT Flag?('2') IF NOT LastFeat? AND NOT ZMove? SetFlag('2') SetFlag('3') { CRCOff } SeqLab FeedC EOL SeqLab CRCOff MoveSX MoveSY EOL END END RETURN TurnCRCOff: IF CutterRadiusCompensation? AND Flag?('2') SetFlagF('2') SetFlagF('3') { CRCOff } SeqLab FeedC EOL SeqLab IncValue EOL SeqLab CRCOff MoveXY EOL IF NOT AutoCycle? SeqLab AbsValue EOL END END RETURN DoSubComment: IF UseComments? AND SubComment? SeqLab '(T) SUB NUMBER ' Tag# Get$ EOL END RETURN DoOpComments: IF UseComments? SetScale('1') IF OperationIDComment? SeqLab '(T) OPERATION ' Operation# ' ' OperationType$ Get$ EOL END IF OperationComment? SeqLab '(T) ' OperationComment$ Get$ EOL END IF WorkGroupComment? SeqLab '(T) ' WorkGroupComment$ Get$ EOL END IF ToolTypeComment? SeqLab '(T) TOOL# ' Tool# ' ' ToolDiameter# ' ' ToolType$ Get$ EOL END IF ToolComment? SeqLab '(T) ' ToolComment$ Get$ EOL END RestoreScale END RETURN PSInit: {reset flags} NewWFOF RotateF OptCyc1F MasterOpF CallMasterOpF RETURN PSStuff: {revised.72} IF FourthCW? FORMAT(FourthDegree#,2) SeqLab '(0)' 'A' FourthDegree# Get$ EOL FourthCWF {reset flag} END IF FourthCCW? FORMAT(FourthDegree#,3) SeqLab '(0)' 'A' FourthDegree# Get$ EOL FourthCCWF {reset flag} END IF FifthCW? FORMAT(FifthDegree#,2) SeqLab '(0)' 'B' FifthDegree# Get$ EOL FifthCWF {reset flag} END IF FifthCCW? FORMAT(FifthDegree#,3) SeqLab '(0)' 'B' FifthDegree# Get$ EOL FifthCCWF {reset flag} END RETURN DoPostScript: PSInit EachPS SeqLab PostScript Get$ EOL {literals} PSStuff {commands} NextPS RETURN DoEndOpPS: PSInit EachEOPS SeqLab EndOpPS Get$ EOL {literals} PSStuff {commands} NextPS RETURN EntryMove: IF FeedEntry? SeqLab Feed ZIn FeedEnt EOL ELSE SeqLab RapidC ZIn EOL END RETURN StartSub: OpenSub DoSubComment '>' Tag# EOL RETURN SubWarning: IF NOT FeedConnect? IF AnyZshift? SeqLab '(T) ' Get$ EOL SeqLab '(T) *** WARNING ***' Get$ EOL SeqLab '(T) Z CLEARANCE WILL' Get$ EOL SeqLab '(T) CHANGE WITH EACH' Get$ EOL SeqLab '(T) CYCLE OF SUB!' Get$ EOL SeqLab '(T) ' Get$ EOL END END RETURN StdSub: 'È' Tag# EOL SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL SeqLab '(6)FÇ' Tag# 'T' RepsLess1 Get$ EOL StartSub RETURN FinishSub1: {part 1} IF NOT FeedConnect? SeqLab IF AutoCycle? ZCP3C ELSE IF FIFO? {.81} FeedC ZCP3C FeedEntC ELSE RapidC ZCP3C END END EOL END RETURN FinishSubG92: {part 2} SeqLab Preset ShiftRC EOL '<' Tag# EOL TagDown CloseSub SeqLab Preset UnshftRC EOL RETURN OpenMP: TagUp TagInc IF WorkFixtureOffsets? NewWFO EachWFO SeqLab SetWFO EOL SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL IncWFO NextWFO ELSE 'È' Tag# EOL SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL SeqLab '(6)FÇ' Tag# 'T' PartsLess1 Get$ EOL END StartSub RETURN CloseMP: IF WorkFixtureOffsets? '<' Tag# EOL TagDown CloseSub SeqLab WFO1 EOL ELSE SeqLab Preset ShiftPC EOL '<' Tag# EOL TagDown CloseSub SeqLab Preset UnshftPC EOL END RETURN DoAbsOrInc: IF Flag?('1') { AbsoluteMoves? = TRUE } IF ZMove? AND AbsValue? IncValue ELSE IF NOT ZMove? AND NOT AbsValue? AbsValue END END END RETURN DoDrillAbsOrInc: IF Flag?('1') { AbsoluteMoves? = TRUE } IF SPZMove? AND AbsValue? IncValue ELSE IF NOT SPZMove? AND NOT AbsValue? AbsValue END END END RETURN RestoreAbsOrInc: IF Flag?('1') AND NOT AbsValue? { AbsoluteMoves? = TRUE } SeqLab AbsValue EOL END RETURN FormatArc: IF ArcCW? CWArcC ELSE CCWArcC END MoveXYZC ArcIJ RETURN ckCRC: IF CutterRadiusCompensation? AND Flag?('2') IF NOT LastFeat? AND NOT ZMove? IF NOT Flag?('3') { CRCOff } SetFlag('3') FeedC EOL SeqLab END CRCOnC END END RETURN FormatLine: ckCRC FeedC MoveXYZC RETURN ckCRCNum: { Not supported } RETURN ToolPath: EACHFeat IF PointFeat? IF AutoCycle? SeqLab MoveSXYC EOL SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} ELSE SeqLab DoDrillAbsOrInc MoveSXYZC EOL {.80.01} END ELSE IF RapidFeat? IF XMove? OR YMove? OR ZMove? TurnCRCOn SeqLab DoAbsOrInc EOL IF CutterRadiusCompensation? AND Flag?('2') SeqLab FormatLine RapidFC EOL ELSE SeqLab ckCRC RapidC MoveXYZC EOL END END ELSE IF LineFeat? IF XMove? OR YMove? OR ZMove? TurnCRCOn SeqLab DoAbsOrInc EOL IF Decelerate? IF RoomToDecel? DecelMove1 SeqLab FormatLine FeedRateC EOL DecelMove2 SeqLab DoAbsOrInc EOL END SeqLab FormatLine DecelFeed EOL ELSE SeqLab FormatLine FeedRateC EOL END END ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } SeqLab DoAbsOrInc EOL IF LastQuadrant? AND Decelerate? IF RoomToDecel? DecelMove1 SeqLab FormatArc ArcFeedC EOL DecelMove2 SeqLab DoAbsOrInc EOL END SeqLab FormatArc DecelFeed EOL ELSE SeqLab FormatArc ArcFeedC EOL END NEXTQuadrant END END END IF LastFeat? { Exit Length Feature } TurnCRCOff {.70} END END NEXTFeat RestoreAbsOrInc RETURN WFOStuff: IF NewWFO? IF MultipleParts? EOL SeqLab '(T) ' Get$ EOL SeqLab '(T) *** WARNING ***' Get$ EOL SeqLab '(T) DO NOT USE' Get$ EOL SeqLab '(T) NEWWFO() WITH' Get$ EOL SeqLab '(T) NCPOST MULTIPLE' Get$ EOL SeqLab '(T) PARTS!' Get$ EOL SeqLab '(T) ' Get$ EOL ELSE 'E' NewWFO# END ELSE IF NOT SameTool? IF NeedWFO1? 'E' NewWFO# END END END RETURN AutoCycCutSub1: {part 1} SaveSubStatus {save tool position} SetPass1 {element cut moves} StartSub SetSRXYtoSP SeqLab IncValue EOL RETURN AutoCycCutSub2: {part 2} ToolPath SeqLab AbsValue EOL IF Repeats? AND FeedConnect? AND ZshiftOnly? {.69 removed RapidC} {.71.2 removed CRCOffC, gets turned off in ToolPath} ELSE IF FIFO? {.81} SeqLab FeedC ZCP2 FeedEntC EOL ELSE SeqLab RapidC ZCP2 EOL END END '<' Tag# EOL CloseSub SetSRSubXY {restore SR to 1st position value} SetSRSubMove RETURN AutoCycPat: SetPass2 {position pattern} ToolPath {call after TagInc for correct sub calls} SetPass1 {reset} RETURN Milling: IF AutoCycle? TagUp TagInc AutoCycCutSub1 EntryMove AutoCycCutSub2 AutoCycPat TagDown ELSE EntryMove ToolPath END RETURN G92Sub: SubWarning StdSub SeqLab AbsValue EOL SeqLab Connect StrtPos EOL Milling FinishSub1 FinishSubG92 RETURN ZonlyRepAutoCycle: AutoCycPat {write pattern moves and main calls} StartSub TagUp TagInc EachCycle SetSRXYtoEP IF FeedConnect? IF NOT FirstCycle? IF SPXMove? OR SPYMove? SeqLab Feed IncValue StrtPosC EOL SeqLab AbsOrInc ELSE SeqLab Feed END ELSE SeqLab Feed END ZInPlusInc FeedEnt EOL ELSE IF NOT FirstCycle? IF SPXMove? OR SPYMove? SeqLab Rapid IncValue StrtPosC EOL IF FeedEntry? SeqLab AbsOrInc ZCP2PlusInc EOL SeqLab Feed ZInPlusInc FeedEnt EOL ELSE SeqLab AbsOrInc ZInPlusInc EOL END ELSE IF FeedEntry? SeqLab Rapid ZCP2PlusInc EOL SeqLab Feed ZInPlusInc FeedEnt EOL ELSE SeqLab Rapid ZInPlusInc EOL END END ELSE IF FeedEntry? SeqLab Feed ZInPlusInc FeedEnt EOL ELSE SeqLab Rapid ZInPlusInc EOL END END END IF FirstCycle? SetStatusOff {protect Z position for incremental sub} END SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL NextCycle SetStatusOn AutoCycCutSub1 {build element sub} AutoCycCutSub2 {.69, removed FinishSub1} IF FeedConnect? {there is no Z up in the sub, .69} IF FIFO? {.81} SeqLab Feed ZCP2 FeedEnt EOL {.69} ELSE SeqLab Rapid ZCP2 EOL {.69} END END {.69} TagDown '<' Tag# EOL CloseSub {Element shift, not pattern} TagDown RETURN ZonlyRep: EachCycle IF NOT FirstCycle? SeqLab Connect StrtPos EOL {.71.2, added Connect} END IF FeedConnect? SeqLab FeedC ZInPlusInc FeedEnt EOL {.71.2, changed to FeedC} ELSE {Entry/Exit Connect} IF FeedEntry? IF NOT FirstCycle? SeqLab RapidC ZCP2PlusIncC EOL {can't call for cycle =1} {.69 added Rapid, reads better} {.71.2, changed to RapidC, reads better} END SeqLab Feed ZInPlusInc FeedEnt EOL ELSE SeqLab RapidC ZInPlusInc EOL {.69 added Rapid, reads better} {.71.2, changed to RapidC, reads better} END END SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL NextCycle StartSub TrackZNO# FIRST SPZ# ToolPath FinishSub1 '<' Tag# EOL TagDown 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 GetStartOfSameTool: DoOpComments DoPostScript CheckPass SeqLab SpeedC WFOStuff EOL SeqLab PlaneC EOL SeqLab AbsValue EOL RETURN {Start of executable Prog **************************************************} {setup and initializations} InitProg TagInit ReverseXZArcs InitWFONum SetFlood UseSeparateSubCalls SetMaxSeparateSubCalls('50') SetMaxRPM('10000') SetMaxFeed('500') SetFlagF('1') { Milling ZShiftOnly SepSubs } SetFlagF('2') { TurnCRCOff } SetFlagF('3') { CRCOff } SetFlagF('4') { SubPrograms require 2nd M30 at end } IF PSComment? AND UseComments? SeqLab '(T) PostScript:' Get$ EOL SeqLab '(T) Literals: put between single or double quotes.' Get$ EOL SeqLab '(T) Separate commands and literals with at least one space.' Get$ EOL SeqLab '(T) A CR ( RETURN key ) will start a new line.' Get$ EOL SeqLab '(T) Commands: may be capital and/or lower case letters. Separate commands with a space.' Get$ EOL SeqLab '(T) EndOP -' Get$ EOL SeqLab '(T) all literals and commands before an ENDOP command' Get$ EOL SeqLab '(T) will appear at the beginning of the operation. All' Get$ EOL SeqLab '(T) literals and commands after an ENDOP command will appear' Get$ EOL SeqLab '(T) at the end of the operation.' Get$ EOL SeqLab '(T) NewWFO(56), NWFO(56) -' Get$ EOL SeqLab '(T) The Work Fixture Offset # you specify will be used for all following operations.' Get$ EOL SeqLab '(T) Do not use with the ncPost multiple part option.' Get$ EOL SeqLab '(T) 4thAxisCW(12.5), 4ACW(12.5) -' Get$ EOL SeqLab '(T) generates a + A move of the value you specify' Get$ EOL SeqLab '(T) 4thAxisCCW(22.5), 4ACCW(22.5) -' Get$ EOL SeqLab '(T) generates a - A move of the value you specify' Get$ EOL SeqLab '(T) 5thAxisCW(30), 5ACW(30) -' Get$ EOL SeqLab '(T) generates a + B move of the value you specify' Get$ EOL SeqLab '(T) 5thAxisCCW(22.5), 5ACCW(22.5) -' Get$ EOL SeqLab '(T) generates a - B move of the value you specify' Get$ EOL END EachOp {Start of post processing *********************} IF FirstOperation? '(' Program# ')' EOL IF ToolChangeAtHome? SetHome END IF UseComments? IF ProgramNameComment? SeqLab '(T) PROGRAM ' ProgramName$ Get$ EOL END IF ProgramComment? SeqLab '(T) ' ProgramComment$ Get$ EOL END IF FormatNameComment? SeqLab '(T) FORMAT ' FormatName$ Get$ EOL END IF TimeComment? SeqLab '(T) ' Date$ ' AT ' Time$ Get$ EOL END IF MovesComment? SeqLab '(T) OUTPUT IN ABSOLUTE INCHES' Get$ EOL END IF PartsComment? SeqLab '(T) PARTS PROGRAMMED ' Parts# Get$ EOL END IF StartToolComment? SeqLab '(T) FIRST TOOL NOT IN SPINDLE' Get$ EOL END END OpenSub RestoreScale IF MultipleParts? AND AllToolsOnePart? OpenMP END DoOpComments DoPostScript SeqLab Speed WFOStuff EOL SeqLab Plane EOL SeqLab 'G70' EOL SeqLab AbsValue EOL SeqLab ToolOfst ToolChng EOL SeqLab SpinOn EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? OpenMP END CheckPass SeqLab Rapid StrtPos EOL SeqLab ZCP1 EOL SeqLab CoolOn EOL IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP SeqLab StrtPos EOL END ELSE IF NewTool? {Finish off last Operation} IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP END SeqLab CoolOff EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? CloseMP END DoEndOpPS IF LAST ProgStop? SeqLab 'M0' EOL ELSE IF OptionalStops? SeqLab ProgStop EOL END END {Start new Operation} DoOpComments DoPostScript SeqLab Speed WFOStuff EOL SeqLab PlaneC EOL SeqLab AbsValue EOL SeqLab ToolOfst ToolChng EOL SeqLab SpinOn EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? OpenMP END CheckPass SeqLab Rapid StrtPos EOL SeqLab ZCP1 EOL SeqLab CoolOn EOL IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP SeqLab StrtPos EOL END ELSE IF SameTool? DoEndOpPS IF LAST ProgStop? SeqLab CoolOff EOL SeqLab 'M0' EOL {Start new Operation} GetStartOfSameTool SeqLab ToolOfst EOL SeqLab SpinOn EOL SeqLab Rapid StrtPos EOL SeqLab ZCP1 EOL SeqLab CoolOn EOL ELSE IF CoolOff? AND LAST NOT CoolOff? SeqLab CoolOff EOL END IF NewToolOffset? {Start new Operation} GetStartOfSameTool SeqLab ToolOfst EOL SeqLab Rapid StrtPos EOL SeqLab ZCP1 EOL ELSE {Start new Operation} GetStartOfSameTool SeqLab Rapid StrtPos EOL END IF NOT CoolOff? AND LAST CoolOff? SeqLab CoolOn EOL END END END END END {common point for all operations} IF MultipleParts? OR Repeats? OR AutoCycle? SetFlag('4') { SubPrograms require 2nd M30 at end } END IF Milling? SeqLab ZCP2C EOL IF Repeats? TagUp TagInc 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? SeqLab ZCP3C EOL ELSE IF FIFO? {.81} SeqLab FeedC ZCP3C FeedEntC EOL ELSE SeqLab RapidC ZCP3C EOL END END ELSE IF Drilling? IF Repeats? TagUp TagInc StdSub SeqLab AbsValue EOL SeqLab Rapid StrtPos EOL END SeqLab DrillCP EOL GetCycle SeqLab Cycle StrtPos ZDepth RLevel Dwell Peck IF PeckChipBreaker? 'Q' Retract# END FeedEnt EOL IF CallMasterOp? SeqLab '(7)' 'F³' CallMasterNum# 'L²' CallMasterNum# Get$ EOL SkipToLastFeat ELSE TrackZNO# FIRST SPZ# IF MasterOp? SetFlag('1') {std sep sub Zreps in effect} SetFlag('4') { SubPrograms require 2nd M30 at end } TagUp NewMasterTag SeqLab '(7)F³' Tag# 'L²' Tag# Get$ EOL StartSub ToolPath '<' Tag# EOL TagDown CloseSub SetFlagF('1') {not std sep sub Zreps in effect} ELSE ToolPath END END SetDrillEndOpZ SeqLab Rapid 'G80' ZCP3 EOL IF Repeats? FinishSubG92 END END END NextOp {loops back to EachOP until last Operation} {End of program ************************************************************} {finish last operation} IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP END SeqLab CoolOff EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? CloseMP END DoEndOpPS IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier} SeqLab AbsValue EOL SeqLab Rapid FirstHome SpinOff EOL ELSE SeqLab SpinOff EOL END IF ProgStop? SeqLab 'M0' EOL END IF MultipleParts? AND AllToolsOnePart? CloseMP END SeqLab EOP EOL CloseSub Post2 {organize Subs into one program} IF Flag?('4') { SubPrograms exist } SetFlagF('4') SeqLab EOP EOL { This is required a second time, at end of all subs } END 'END' EOL Close ReTag IF UseComments? SetScale('1') {restore scale for comments} Reopen IF FileBytesComment? 'N9997(T) FILE LENGTH: ' FileBytes# ' CHARACTERS' Get$ EOL END IF FileFeetComment? 'N9998(T) FILE LENGTH: ' FileFeet# ' FEET' Get$ EOL END IF FileMetersComment? 'N9999(T) FILE LENGTH: ' FileMeters# ' METERS' Get$ EOL END Close END

Wyszukiwarka