{6/17/93 Copied & modified: Fanuc 11M Mon VMC75 M343.81.4m For: Quasar Ind. Machine: NTC Laser Control: TLV-510 Changed Tool Length Offset Lable from 'H' to 'A' in Mach Specs Strings 2 dialog. Changed First Work Fixture Offset from 'G55' to 'G53' in Mach Specs Commands 5 dialog. Changed FORMAT for Address 'A' from '#####.###;0' to '#0' in Mach Specs Default Formats dialog. Added literal 'M61' At FirstOpertion, NewTool and SameTool. Shutter Open. Added literal 'M100 ' ToolOfst for all Drilling PointFeat and All Milling FirstFeat. Cutting Condition Selection with piercing. Added literal 'M300' at FirstOperation, NewTool, SameTool and end of prog. Oscillation Stop, ZAxis Return to Reference Point. Added literal 'M310 ' for all Drilling PointFeat and All Milling LastFeat. Oscillation Stop, Sensor Up, ZAxis On. Deleted contents at EntryMove. Deleted contents at SubWarning. Deleted contents at FinishSub1. Deleted contents at ZonlyRepAutoCycle. Deleted contents at ZonlyRep. Added SkipZ and UnSkipZ at FinishSubG92 to suppress ZShift. Added SkipZ and UnSkipZ at CloseMP to suppress ZShift. Added CkArcMove sub. This sub checks to make sure ArcIJ is GTEqual Minimum resolution. If ArcIJ is LessThan, Flag(1) is set and call to StdLine instead of ArcMoves. Deleted all occurances of ZMove Boolean. Changed all occurances of MoveXYZC to MoveXYC. Changed MoveSXYZC to MoveSXYC at ToolPath Drilling PointFeat. Changed most of output between EachOp and NextOp in Main. Deleted all support of FeedRates and Deceleration in prog. Deleted all support of Speed, Spindle and Coolant in prog. Deleted all support of Canned Drilling Cycles in prog. DWB}
{2/9/96, Updated .81 number to .84, no changes necessary, MPK}
{3/22/96, Tested ZOnlyRepAutoCycle, Incremented number to .87, MPK}
{Prog Numeric Format Definitions *******************************************}
CkArcMove: SetInc SetStatusOff IF GreaterThan? ArcI# Num#('-.0005') IF LessThan? ArcI# Num#('.0005') IF GreaterThan? ArcJ# Num#('-.0005') IF LessThan? ArcJ# Num#('.0005') SetFlag('1') END END END END SetStatusOn IF NOT AutoCycle? SetAbsOrInc END RETURN
FormatArc: IF ArcCW? CWArcC ELSE CCWArcC END MoveXYC IF ArcIJFormat? ArcIJC ELSE ArcRC END RETURN
StdLine: {enables CRC on first call, .70} IF XMove? OR YMove? SeqC CRCOnC FeedC MoveXYC CRCOffsetC EOL END RETURN
ToolPath: ResetCRCNum {.72} EACHFeat IF PointFeat? IF AutoCycle? SeqC MoveSXYC EOL SeqC SubCall CallLab EOL CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} ELSE SeqC MoveSXYC EOL SeqC 'M100 ' ToolOfst EOL { Cutting Condition Selection with piercing } IF LastFeat? IF LastOp? AND NOT Repeats? SeqC 'M300' EOL { Oscillation Stop, ZAxis Return to Reference Point } ELSE SeqC 'M310 ' ZCP3 EOL { Oscillation Stop, Sensor Up, ZAxis On } END ELSE SeqC 'M310 ' ZCP2 EOL { Oscillation Stop, Sensor Up, ZAxis On } END END ELSE IF FirstFeat? SeqC 'M100 ' ToolOfst EOL { Cutting Condition Selection with piercing } END IF RapidFeat? IF LastFeat? AND AutoCycle? {.70} SeqC CRCOffC RapidC MoveXYC EOL ELSE IF XMove? OR YMove? SeqC RapidC MoveXYC EOL END END ELSE IF LineFeat? IF LastFeat? AND AutoCycle? {.70} SeqC CRCOffC FeedC MoveXYC EOL ELSE StdLine END ELSE IF ArcFeat? SetFlagF('1') CkArcMove IF Flag?('1') SetFlagF('1') StdLine { Arc is too small } ELSE EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } SeqC FormatArc EOL NEXTQuadrant END END END END IF LastFeat? SeqC CRCOffC EOL IF AutoCycle? SeqC AbsOrInc EOL SeqC 'M310 ' ZCP3 EOL { Oscillation Stop, Sensor Up, ZAxis On } ELSE IF Repeats? SeqC 'M310 ' ZCP3 EOL { Oscillation Stop, Sensor Up, ZAxis On } ELSE IF LastOp? SeqC 'M300' EOL { Oscillation Stop, ZAxis Return to Reference Point } ELSE SeqC 'M310 ' ZCP3 EOL { Oscillation Stop, Sensor Up, ZAxis On } END END END END END NEXTFeat 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
{Start of executable Prog **************************************************}
{setup and initializations} InitProg ReverseXZArcs InitWFONum SetFlood UseSeparateSubCalls SetMaxSeparateSubCalls('50') SetMaxRPM('10000') 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 EachOp {Start of post processing *********************} IF FirstOperation? EOR EOL ProgID1 IF UseComments? AND ProgramNameComment? '( ' ProgramName$ ' )' END EOL IF ToolChangeAtHome? SetHome END 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$ ' METERS )' EOL END IF PartsComment? '( PARTS PROGRAMMED: ' Parts# ' )' EOL END IF StartToolComment? '( FIRST TOOL NOT IN SPINDLE )' EOL END END OpenSub RestoreScale IF MultipleParts? AND AllToolsOnePart? OpenMP END SeqC Plane EOL { XYPlane no output } DoOpComments DoPostScript Seq 'M300' EOL { Oscillation Stop, ZAxis Return to Reference Point } SeqC AbsValue Rapid WFOStuff 'X0.Y0.' EOL SeqC AbsValue Preset 'X0.Y0.' EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? OpenMP END CheckPass SeqC AbsOrInc Rapid StrtPos EOL SeqC 'M61' EOL { Shutter Open } IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP SeqC StrtPos EOL END ELSE IF NewTool?
{Finish off last Operation}
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? CloseMP END IF MultipleParts? AND OneToolAllParts? AND FullUp? CloseMP END DoEndOpPS SeqC 'M300' EOL { Oscillation Stop, ZAxis Return to Reference Point } SeqC IncValue 'G28X0.Y0.' EOL IF LAST ProgStop? SeqC 'M0' EOL ELSE SeqC ProgStop EOL END
{Start new Operation}
SeqC PlaneC EOL { XYPlane no output } DoOpComments DoPostScript Seq AbsValue Rapid WFOStuff 'X0.Y0.' EOL SeqC AbsValue Preset 'X0.Y0.' EOL IF MultipleParts? AND OneToolAllParts? AND FullUp? OpenMP END CheckPass SeqC AbsOrInc Rapid StrtPos EOL SeqC 'M61' EOL { Shutter Open } IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? OpenMP SeqC StrtPos EOL END ELSE IF SameTool? DoEndOpPS IF LAST ProgStop? SeqC 'M300' EOL { Oscillation Stop, ZAxis Return to Reference Point } SeqC 'M0' EOL
GetStartOfSameTool SeqC AbsOrInc Rapid WFOStuff StrtPos EOL END END END END {common point for all operations} IF Milling? IF Repeats? NewProg G92Sub ELSE {no repeat OPs} Milling END ELSE IF Drilling? IF Repeats? NewProg StdSub SeqC AbsOrInc Rapid StrtPos EOL END ToolPath 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 IF MultipleParts? AND OneToolAllParts? AND FullUp? CloseMP END DoEndOpPS IF Repeats? OR AutoCycle? SeqC 'M300' EOL { Oscillation Stop, ZAxis Return to Reference Point } END SeqC IncValue 'G28X0.Y0.' EOL IF ProgStop? SeqC 'M0' EOL END IF MultipleParts? AND AllToolsOnePart? CloseMP END SeqC EOP EOL CloseSub Post2 {organize Subs into one program} 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