{4/9/91 New Processor from: Anilam Crusader (VT) M220.79 For: Excell Mold Control: Anilam Series GXM Machine: Eagle Supercut (Knee Type Mill) Too many changes to mention, same basic format idea used. Does not use tool offsets, uses the tool number only. TO cancels all offsets Any T call cancels Origin Offsets Cannot do a Z origin shift. Jim Radcliffe}
{07/15/91 For: National Research Council Put all 'G17' on a line by itself, per request Removed all 'M44' Changed 'M00' to 'M05' Replaced: EachTool SeqLab 'T100' TLNum# 'X' TLDia# 'Z' TLLength# EOL NextTool
With: SeqLab 'M1401' EOL SeqLab 'M1000' EOL Kim Michelman}
DoSubComment: IF UseComments? AND SubComment? '( SUB NUMBER: ' Tag# ' )' 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 IF Metric? {CAM file is in metric, tools and tool path} SetScale('.03937007874') { change to English, this is an English post} END END RETURN
PSInit: RotateF RETURN
PSStuff: IF FourthCW? FORMAT(FourthDegree#,5) SeqLab 'A' FourthDegree# EOL FourthCWF END IF FourthCCW? FORMAT(FourthDegree#,6) SeqLab 'A' FourthDegree# EOL FourthCCWF END IF FifthCW? FORMAT(FifthDegree#,5) SeqLab 'B' FifthDegree# EOL FifthCWF END IF FifthCCW? FORMAT(FifthDegree#,6) SeqLab 'B' FifthDegree# EOL FifthCCWF END RETURN
SubWarning: IF NOT FeedConnect? AND UseComments? IF AnyZshift? ' ' EOL '( WARNING Z CLEARANCE WILL CHANGE WITH EACH CYCLE OF SUB REPEAT )' EOL ' ' EOL END END RETURN
FinishSub1: {part 1} UnSkipZ SeqLab CRCOffC IF NOT FeedConnect? RapidC ZCP3C END EOL RETURN
OpenMP1T: TagInc EachPart IF NOT FirstPart? SeqLab 'M1101' 'X' CurOriginPosX# 'Y' CurOriginPosY# 'Z' ToolLength# EOL END SeqLab SubCall CallLabB Tag# EOL NextPart StartSub RETURN
OpenMPAT: EachPart RETURN
CallMPAT: TagInc IF NOT FirstPart? SeqLab 'M1101' 'X' CurOriginPosX# 'Y' CurOriginPosY# 'Z' ToolLength# EOL END SeqLab SubCall CallLabB Tag# EOL IF FirstPart? StartSub DoOpComments END RETURN
CloseMP1T: SeqLab EndSub EOL CloseSub RETURN
RetMPAT: SeqLab EndSub EOL CloseSub RETURN
CloseMPAT: NextPart RETURN
FormatArc: IF ArcCW? CWArc ELSE CCWArc END IF XYPlane? MoveX MoveY MoveZC { force endpoints in proper plane } ELSE IF XZPlane? MoveX MoveZ MoveYC ELSE MoveY MoveZ MoveXC { YZ plane } END END IF ArcIJFormat? ArcIJ ELSE ArcR END RETURN
StdLine: {enables CRC on first call, .70} IF Decelerate? IF RoomToDecel? DecelMove1 SeqLab CRCOnC FeedC MoveXYZC FeedRateC EOL DecelMove2 END SeqLab CRCOnC FeedC MoveXYZC DecelFeed EOL ELSE IF XMove? OR YMove? OR ZMove? SeqLab CRCOnC FeedC MoveXYZC FeedRateC EOL END END RETURN
ToolPath: EACHFeat IF PointFeat? SeqLab MoveSXYC EOL IF AutoCycle? SeqLab SubCall CallLabB Tag# EOL CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} END ELSE IF RapidFeat? IF LastFeat? AND AutoCycle? {.70} SeqLab CRCOffC RapidC MoveXYZC EOL ELSE IF XMove? OR YMove? OR ZMove? SeqLab RapidC MoveXYZC EOL END END ELSE IF LineFeat? IF AutoCycle? {.70} IF LastFeat? SeqLab CRCOffC FeedC MoveXYZC FeedRateC EOL ELSE IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps} SeqLab FeedC MoveXYZC FeedRateC EOL ELSE StdLine {enables CRC on first call} END END ELSE StdLine END ELSE IF ArcFeat? EACHQuadrant IF LastQuadrant? AND Decelerate? IF RoomToDecel? DecelMove1 SeqLab FormatArc ArcFeedC EOL DecelMove2 END SeqLab FormatArc DecelFeed EOL ELSE SeqLab FormatArc ArcFeedC EOL END NEXTQuadrant END END END END NEXTFeat RETURN
AutoCycCutSub2: {part 2} ToolPath IF Repeats? AND FeedConnect? AND ZshiftOnly? SeqLab AbsOrInc EOL {.69 removed RapidC} {.71.2 removed CRCOffC, gets turned off in ToolPath} ELSE SeqLab AbsOrInc RapidC ZCP2 EOL {.71.2 removed CRCOffC, gets turned off in ToolPath} END SeqLab EndSub EOL CloseSub SetSRSubXY {restore tool position} SetSRSubMove RETURN
AutoCycPat: SetPass2 {position pattern} ToolPath {call after TagInc for correct sub calls} SetPass1 {reset} RETURN
Milling: IF AutoCycle? TagInc AutoCycCutSub1 EntryMove AutoCycCutSub2 AutoCycPat ELSE EntryMove ToolPath END RETURN
G92Sub: SubWarning IF MultipleParts? OR AnyZShift? IF UseComments? '( THIS REPEAT OP WILL BE LONGHAND DUE TO MULT PARTS OR Z SHIFT)' EOL END EachRep {can't nest origin shifts or origin shift Z} IF NOT FirstCycle? SeqLab Connect StrtPos EOL END ELSE TagInc EachRep IF NOT FirstCycle? SeqLab 'M1101' 'X' CurOriginPosX# 'Y' CurOriginPosY# 'Z' ToolLength# EOL END SeqLab SubCall CallLabB Tag# EOL NextRep StartSub SeqLab Connect StrtPos EOL END Milling FinishSub1 IF MultipleParts? OR AnyZShift? NextRep Else SeqLab EndSub EOL CloseSub SeqLab 'M1101' 'X0Y0Z' ToolLength# EOL END RETURN
ZonlyRepAutoCycle: TagInc AutoCycPat {write pattern moves and main calls} StartSub TagInc EachCycle IF FeedConnect? SeqLab Feed ZInPlusInc FeedEnt EOL ELSE IF FeedEntry? IF NOT FirstCycle? SeqLab Rapid ZCP2PlusInc EOL {.69 added Rapid, reads better} {can't call for cycle = 1, .69 changed to ZCP2PlusInc} END SeqLab Feed ZInPlusInc FeedEnt EOL ELSE SeqLab Rapid ZInPlusInc EOL {.69 added Rapid, reads better} END END IF FirstCycle? SetStatusOff {protect Z position for incremental sub} END SeqLab SubCall CallLabB Tag# EOL NextCycle SetStatusOn AutoCycCutSub1 {build element sub} AutoCycCutSub2 {.69, removed FinishSub1} IF FeedConnect? {there is no Z up in the sub, .69} SeqLab Rapid ZCP2 EOL {.69} END {.69} SeqLab EndSub EOL CloseSub {Element shift, not pattern} RETURN
ZonlyRep: TagInc EachCycle IF FeedConnect? IF NOT FirstCycle? SeqLab Feed StrtPos EOL END SeqLab FeedC ZInPlusInc FeedEnt EOL ELSE IF NOT FirstCycle? SeqLab Rapid StrtPos EOL END IF FeedEntry? IF NOT FirstCycle? SeqLab ZCP2PlusIncC EOL END SeqLab Feed ZInPlusInc FeedEnt EOL ELSE SeqLab ZInPlusInc EOL END END SeqLab SubCall CallLabB Tag# EOL NextCycle SetStatusRapid {force next G1,G2,G3,etc.} StartSub SkipZ ToolPath FinishSub1 SeqLab EndSub EOL CloseSub RETURN
CheckPass: IF AutoCycle? {use the correct StrtPos} SetPass2 ELSE SetPass1 END RETURN
{Start of executable Prog **************************************************}
{setup and initializations} InitProg ReverseXZArcs UseSeparateSubCalls SetMaxSeparateSubCalls ('1000') SetMaxRPM('10000') {?} SetMaxFeed('500') {?} 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 IF MultipleParts? AND AllToolsOnePart? OpenMPAT {EachPart} TagInit END EachOp IF FirstOperation? IF FirstPart? EOR EOL OpenSub SeqLab 'G37J' Program# EOL 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 IN SPINDLE )' EOL END END IF Metric? {CAM file is in metric, tools and tool path} SetScale('.03937007874') { change to English, this is an English post} END SeqLab 'M1401' EOL SeqLab 'M1000' EOL SeqLab 'G70' AbsOrInc EOL END {end firstPart?} SeqLab OpToolID EOL IF MultipleParts? IF AllToolsOnePart? CallMPAT {has DoOpComments} ELSE IF OneToolAllParts? AND FullUp? DoOpComments OpenMP1T ELSE {OTAP&ECP} DoOpComments END END ELSE DoOpComments END IF FirstPart? DoPostScript SeqLab Speed SpinOn EOL CheckPass SeqLab Plane EOL SeqLab Rapid StrtPos EOL SeqLab ZCP1 EOL IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP1T SeqLab Rapid StrtPos EOL END END {end firstPart?} ELSE IF NewTool? IF FirstPart? IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP1T {EndSub CloseSub} END SeqLab Rapid OfstOff EOL {cancels tool & origin offsets, full up} DoEndOpPS END {end firstPart?} IF MultipleParts? IF OneToolAllParts? AND FullUp? CloseMP1T IF ToolChangeAtHome? SeqLab Rapid Home EOL END ELSE IF AllToolsOnePart? IF FirstPart? IF ToolChangeAtHome? SeqLab Rapid Home EOL END RetMPAT END {end firstPart?} ELSE {OTAP&ECP} IF ToolChangeAtHome? SeqLab Rapid Home EOL END END END ELSE {no MP} IF ToolChangeAtHome? SeqLab Rapid Home EOL END END SeqLab 'M05' EOL {change tools} SeqLab OpToolID EOL
{Start new Operation}
IF MultipleParts? IF OneToolAllParts? AND FullUp? DoOpComments OpenMP1T ELSE IF AllToolsOnePart? CallMPAT {has DoOpComments} ELSE {OTAP&ECP} DoOpComments END END ELSE {no MP} DoOpComments END IF FirstPart? DoPostScript SeqLab Speed SpinOn EOL CheckPass SeqLab Plane EOL {add plane} SeqLab Rapid StrtPos EOL {add plane} SeqLab ZCP1 EOL IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP1T SeqLab Rapid StrtPos EOL END END {end firstPart?} ELSE IF SameTool? AND FirstPart? DoEndOpPS IF LAST ProgStop? SeqLab 'M05' EOL SeqLab SpeedC SpinOn EOL END
{Start new Operation}
DoOpComments DoPostScript SeqLab SpeedC EOL CheckPass SeqLab PlaneC EOL {add plane} SeqLab Rapid StrtPos EOL {add plane} END END END IF FirstPart? IF Milling? SeqLab ZCP2C EOL IF Repeats? IF ZshiftOnly? IF AutoCycle? {incremental Autocycle sub can have Z moves} ZonlyRepAutoCycle ELSE {Z shift only, NOT Auto Cycle} IF UseSeparateSubCalls? AND CyclesLessThanMaxSubCalls? FindAnyZMoves {for normal abs subroutine} IF NoZMoves? ZonlyRep ELSE G92Sub {pattern shift, not element} END 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 SeqLab RapidC CRCOffC ZCP3C EOL ELSE IF Drilling? IF Repeats? SubWarning IF MultipleParts? OR AnyZShift? IF UseComments? '( THIS REPEAT OP WILL BE LONGHAND DUE TO MULT PARTS OR Z SHIFT)' EOL END EachRep {can't nest origin shifts or origin shift Z} IF NOT FirstCycle? SeqLab Rapid StrtPos EOL END ELSE TagInc EachRep IF NOT FirstCycle? SeqLab 'M1101' 'X' CurOriginPosX# 'Y' CurOriginPosY# 'Z' ToolLength# EOL END SeqLab SubCall CallLabB Tag# EOL NextRep StartSub SeqLab Rapid StrtPos EOL END END GetCycle SeqLab 'V20R' FeedEntry# EOL SeqLab 'V21R' ClearancePlane2# EOL IF Dwell? SeqLab 'V22R' Dwell# EOL END IF Peck? SeqLab 'V23R' PeckValue EOL END IF RetractToCP1? SeqLab 'V24R' ClearancePlane1# EOL ELSE SeqLab 'V24R' ClearancePlane2# EOL END IF Tap? SeqLab 'V26R0' EOL END IF FIFO? AND Dwell? SeqLab 'G89' EOL ELSE SeqLab Cycle EOL END SeqLab ZDepth EOL SeqLab StrtPos EOL ToolPath SeqLab 'G80' EOL IF Repeats? IF MultipleParts? OR AnyZShift? NextRep ELSE SeqLab EndSub EOL CloseSub SeqLab 'M1101' 'X0Y0Z' ToolLength# EOL END END SeqLab Rapid ZCP3 EOL END END END {end firstPart?} NextOp IF FirstPart? IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP1T END SeqLab Rapid OfstOff EOL DoEndOpPS END {end firstPart?} IF MultipleParts? IF OneToolAllParts? AND FullUp? CloseMP1T IF FIRST ToolChangeAtHome? SeqLab Rapid FirstHome EOL END ELSE IF AllToolsOnePart? IF FirstPart? IF FIRST ToolChangeAtHome? SeqLab Rapid FirstHome EOL END RetMPAT END {end firstPart?} IF LastPart? {no need to change tools} ELSE SeqLab 'M05' EOL {change tools} END ELSE {OTAP&ECP} IF FIRST ToolChangeAtHome? SeqLab Rapid FirstHome EOL END END END ELSE {no MP} IF FIRST ToolChangeAtHome? SeqLab Rapid FirstHome EOL END END IF ProgStop? SeqLab 'M05' EOL END IF MultipleParts? AND AllToolsOnePart? CloseMPAT {NextPart} END SeqLab EOP ProgID1 EOL Post EOR EOL Close Retag IF UseComments? SetScale('1') 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