MillPWR #LH [AR] MY26 15 1


{Change Comments ***********************************************************} {2/21/97 Copied: LongHand M001.13.1 Created: MillPWR #LH [AR] MY26.14 For: Acu-Rite Incorporated Machine: Control: MILLPWR 2-axis control/3-axis readout Versions: Catalyst v3.30C/ComPost2 MSL 68K Changes made per Ken Cramer of Acu-Rite Incorporated, phone call, faxes, manual and sample Demo Part. Output is very basic. No Offsets, spindle, coolant, ProgStops, nothing. Only Line and Arc blocks. All non-ToolPath moves are handled via Variables and Flags. Variables used: 1. Current Tool FirstOp# 2. Current Tool LastOp# 3. NewToolOp# 4. Current Status Register SPX 5. Current Status Register SPY 6. Current Status Register SPZ 7. Current Status Register EPX 8. Current Status Register EPY 9. Current Status Register EPZ 10. AutoCycle SetACSPCompF SPX 11. AutoCycle SetACSPCompF SPY 12. AutoCycle SetPass2 SwapX 13. AutoCycle SetPass2 SwapY Flags used: 1. Current Status Register EPXYZ Change 2. MultipleParts OneToolAllParts 3. MultipleParts OneToolAllParts 4. NewToolChange 5. ExitMove Flag for Non-AutoCycle ZMove FeedConnect Repeats 6. ZonlyRepAutoCycle Flag for SetPass2 Positioning DWB} {9/25/97 Updated & Modified: MillPWR #LH [AR] MY26.14 Created: MillPWR #LH [AR] MY26.15 For: Acurite/Reich Tool & Design Versions: Catalyst v3.35C/ComPost2 MSL 68K Changes made per Brett Reich of Reich Tool & Design and Ken Cramer of Acu-Rite Incorporated, phone calls, faxes, manual and sample "MillPwr Test" vnc file. Updated for Catalyst v3.35C per Numbers LongHand M001.12 Format. Numerous changes, too many and too involved to list here. Briefly, the customer reported that they could not load the text file into the control. First problem was caused by file extension used. Customer was using .NSF which tells the control that the output file is in binary. Solution was to change extension to .MPT which tells the control that the output file is in ASCII, the code that Virtual spits out. Second problem was caused by customer using default loading condition which is set to binary load. Solution was for customer to use text loading condition. Third problem was caused by customer trying to load output file from a high density floppy disk using a double density drive. Solution was for customer to load output file from a double density disk. At this point, the posted output could be tested. Changes needed: No zero length moves allowed. This includes ZOnlyMoves, i.e. clearance plane moves. Deleted all ZOnlyMove blocks. Minimize sequencing not allowed. Deleted condition for checking Minimize sequencing check box, i.e. forcing line numbers. Incremental blocks require some kind of reference to other data. From blocks require INC to be followed by previous Step block. To block can either reference From data of current Step block or INC to be followed by previous Step block. Arc Center blocks can either reference From data of current Step block or INC to be followed by previous Step block. To and Arc Center blocks are referencing From data a current Step block as this is easier. All Z blocks are output in Absolute, even Pattern AutoCycles. No longer using total variable output. Variables and Flags from previous version have been changed. New Variables used: 1. MultipleParts Current Tool FirstOp# 2. MultipleParts ToolOp# Counter 3. Not Used 4. GetIncXEPtoSP 5. GetIncYEPtoSP 6. SPX Status Register 7. SPY Status Register 8. EPX Status Register 9. EPY Status Register 10. EPZ Status Register 11. CalcACEPX 12. CalcACEPY New Flags used: 1. ZonlyRepAutoCycle GetIncSXYMove 2. AutoCycle ToolPath FirstFeat MoveSPX 3. ZonlyRepAutoCycle SPXYMoveInc 4. ToolChangeAtHome DWB} {10/23/97 Modified: MillPWR #LH [AR] MY26.15 Created: MillPWR #LH [AR] MY26.15.1 For: Acurite/Reich Tool & Design Versions: Catalyst v4.21.03(mac)/ComPost2 MSL 68K Updated for Catalyst v3.35C per Numbers LongHand M001.12a Format. Simplified routine at GetIncEPtoSP sub. Corrected problem with TagInc limit. When using ² and < for Retag passes, there is a limit to how high Tag# may increase. This was originally intended for use in calling Start and End blocks of SubRoutines. If Tag# reaches 512, the output is corrupted in Virtual while the Gibbs System freezes. This was solved by replacing Tag# with Var(13) however because the Header must contain the total number of Steps which is not known until the end of the output, a creative method was employed. Basically, the Header is output into a temporary Text File and output at the end. By setting Keep Subs in Front to TRUE, the Header can then be output at the beginning after the total number of Steps are calculated. Set Keep Subs in Front of Program to TRUE in ComPost2 Subs Dialog. Changed FORMAT#9 from 'Ä…#bbbb.bbbb#' to '000' at Prog Numeric Format Definitions. Added FORMAT#10, 'Ä…#bbbb.bbbb#'at Prog Numeric Format Definitions. Deleted Tag# from FORMAT#5 at Prog Numeric Format Definitions. Modified FORMATting of Recall# at Report sub. Added OpenSub to beginning of Header sub. Changed ²1 to Var(13) at Steps block of Header sub. Modified FORMATting of Recall# at Steps block of Header sub. Added CloseSub to end of Header sub. Moved GetSeqLabC sub to before SetTool sub. Deleted NOT AbsValue and NOT Flag(2) test at GetSeqLabC sub. Changed '<' TagInc Tag# to Var(13) at GetSeqLabC sub. Modified FORMATting of Recall# at GetSeqLabC sub. Changed literal '?' to GetSeqLabC call at SetTool sub. Changed ' ²' Tag# to SUB# Var(13) Num(1) at GetAbsOrIncStep sub. Deleted TagInit at ProgStart sub. Deleted TagInc at ProgStart sub. Added Var(13) initializer at ProgStart sub. Moved Header call from start of InitOp sub to start of End3 sub. Added OpenSub prior to ProgramComments at InitOp sub. Deleted literal '<1' at End3 sub. Deleted Retag at End3 sub. Added CloseSub at End3 sub. Added Post2 at End3 sub. DWB} {Prog Numeric Format Definitions ****} #1 = '#.00' #2 = '#####.###;0.' #3 = '*#####.###;0.' #4 = '-###0.0000' #5 = '#######0' #6 = '####^##0' #7 = '####.####;0' #8 = '-*###0.0000' #9 = '000' #10 = 'Ä…#bbbb.bbbb#' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(Recall#,4) FORMAT(ADD#,4) FORMAT(SUB#,4) FORMAT(MUL#,4) FORMAT(ToolDiameter#,4) FORMAT(TrackX#,4) FORMAT(TrackY#,4) FORMAT(TrackXNO#,4) FORMAT(TrackYNO#,4) FORMAT(TrackZNO#,4) FORMAT(SPX#,4) FORMAT(SPY#,4) FORMAT(SPZ#,4) FORMAT(EPX#,4) FORMAT(EPY#,4) FORMAT(EPZ#,4) FORMAT(ArcI#,4) FORMAT(ArcJ#,4) FORMAT(PartNum#,5) FORMAT(Program#,5) FORMAT(Operation#,5) FORMAT(Tool#,5) FORMAT(Parts#,5) FORMAT(RapidF#,5) FORMAT(FeedEntry#,5) FORMAT(FeedContour#,5) FORMAT(ArcFeed#,5) FORMAT(Dwell#,6) {Added Subroutines ***} Report: IF Equal? Operation# Num#('0') FORMAT(Recall#,10) ' ' EOL Recall# Num#('4') ' ' Recall# Num#('5') EOL Recall# Num#('6') ' ' Recall# Num#('7') EOL Recall# Num#('8') ' ' Recall# Num#('9') ' ' Recall# Num#('10') EOL Recall# Num#('11') ' ' Recall# Num#('12') EOL ' ' EOL FORMAT(Recall#,4) END RETURN Header: OpenSub 'MillPWR Text File' EOL '; ProgramName = "' ProgramName$ '"' EOL 'FormatVersion = 1.2' EOL 'DimensionUnits = INCH' EOL 'FeedRateUnits = INCH' EOL 'AngleFormat = D.M.S' EOL 'Steps = ' FORMAT(Recall#,9) Recall# Num#('13') FORMAT(Recall#,4) EOL CloseSub RETURN GetSeqLabC: IF NOT MinimizeSequencing? { Leave this for testing purposes } END Save# Num#('13') ADD# Recall# Num#('13') Num#('1') FORMAT(Recall#,9) Recall# Num#('13') FORMAT(Recall#,4) RETURN SetTool: GetSeqLabC ' SET_TOOL' EOL ' Diam = ' ToolDiameter# ' INCH' EOL IF ToolComment? ' Type = "' ToolComment$ '"' EOL END RETURN GetAbsOrIncStep: IF AbsValue? ' ABS' ELSE FORMAT(SUB#,9) ' INC ' SUB# Recall# Num#('13') Num#('1') FORMAT(SUB#,4) END RETURN GetAbsOrIncFrom: IF AbsValue? ' ABS' ELSE ' INC From' END RETURN ckCRC: IF Flag?('4') { ToolChangeAtHome } ' Offset = CENTER' EOL ELSE IF CutterRadiusCompensation? IF CutterLeft? ' Offset = LEFT' EOL ELSE IF CutterCenter? ' Offset = CENTER' EOL ELSE ' Offset = RIGHT' EOL END END ELSE ' Offset = CENTER' EOL END END RETURN GetRapidF: ' Feed_Rate = ' RapidF# EOL RETURN GetFeedEnt: ' Feed_Rate = ' FeedEntry# EOL RETURN GetFeedRate: ' Feed_Rate = ' FeedContour# EOL RETURN GetArcFeed: ' Feed_Rate = ' ArcFeed# EOL RETURN SPisEP: Save# Num#('6') Recall# Num#('8') Save# Num#('7') Recall# Num#('9') RETURN CalcACEP: Save# Num#('11') SUB# Recall# Num#('6') Recall# Num#('4') Save# Num#('12') SUB# Recall# Num#('7') Recall# Num#('5') RETURN GetACEP: Save# Num#('6') Recall# Num#('11') Save# Num#('7') Recall# Num#('12') Report RETURN GetTPEP: IF PointFeat? Save# Num#('6') SPX# Save# Num#('7') SPY# ELSE Save# Num#('6') EPX# Save# Num#('7') EPY# Save# Num#('10') EPZ# END RETURN TPFeature: IF PointFeat? { Drilling Only } ' DRILL_POSITION' EOL ELSE IF RapidFeat? OR LineFeat? ' LINE' EOL ELSE ' ARC' EOL END END RETURN DrillFeature: ' Center.X = ' SPX# GetAbsOrIncStep EOL ' Center.Y = ' SPY# GetAbsOrIncStep EOL ' Depth = ' SPZ# GetAbsOrIncStep EOL RETURN AbsMillFeature: ' From.X = ' SPX# GetAbsOrIncStep EOL ' From.Y = ' SPY# GetAbsOrIncStep EOL ' To.X = ' EPX# GetAbsOrIncFrom EOL ' To.Y = ' EPY# GetAbsOrIncFrom EOL ' Depth = ' EPZ# GetAbsOrIncStep EOL RETURN IncMillFeature: IF Flag?('2') { AutoCycle ToolPath FirstFeat MoveSPX } SetFlagF('2') SetAbs ' From.X = ' Recall# Num#('6') GetAbsOrIncStep EOL ' From.Y = ' Recall# Num#('7') GetAbsOrIncStep EOL TrackXNO# SPX# TrackYNO# SPY# SetInc ELSE ' From.X = ' SPX# GetAbsOrIncStep EOL ' From.Y = ' SPY# GetAbsOrIncStep EOL END ' To.X = ' EPX# GetAbsOrIncFrom EOL ' To.Y = ' EPY# GetAbsOrIncFrom EOL SetAbs ' Depth = ' EPZ# GetAbsOrIncStep EOL SetInc RETURN ArcStuff: ' Center.X = ' ArcI# GetAbsOrIncFrom EOL ' Center.Y = ' ArcJ# GetAbsOrIncFrom EOL IF ArcCW? ' Direction = CW' EOL ELSE ' Direction = CCW' EOL END RETURN AbsHelixFeature1: ' From.X = ' SPX# GetAbsOrIncStep EOL ' From.Y = ' SPY# GetAbsOrIncStep EOL ' To.X = ' ADD# EPX# MUL# Num#('2') SUB# ArcI# EPX# GetAbsOrIncFrom EOL ' To.Y = ' ADD# EPY# MUL# Num#('2') SUB# ArcJ# EPY# GetAbsOrIncFrom EOL IF Equal? SPZ# EPZ# ' Depth = ' EPZ# GetAbsOrIncStep EOL ELSE ' Depth = ' MUL# Num#('.5') ADD# EPZ# SPZ# GetAbsOrIncStep EOL END RETURN IncHelixFeature1: IF Flag?('2') { AutoCycle ToolPath FirstFeat MoveSPX } SetFlagF('2') SetAbs ' From.X = ' Recall# Num#('6') GetAbsOrIncStep EOL ' From.Y = ' Recall# Num#('7') GetAbsOrIncStep EOL TrackXNO# SPX# TrackYNO# SPY# SetInc ELSE ' From.X = ' SPX# GetAbsOrIncStep EOL ' From.Y = ' SPY# GetAbsOrIncStep EOL END ' To.X = ' SetAbs MUL# Num#('2') SUB# ArcI# EPX# SetInc GetAbsOrIncFrom EOL ' To.Y = ' SetAbs MUL# Num#('2') SUB# ArcJ# EPY# SetInc GetAbsOrIncFrom EOL SetAbs IF Equal? SPZ# EPZ# ' Depth = ' EPZ# GetAbsOrIncStep EOL ELSE ' Depth = ' MUL# Num#('.5') ADD# EPZ# SPZ# GetAbsOrIncStep EOL END SetInc RETURN AbsHelixFeature2: ' From.X = ' ADD# EPX# MUL# Num#('2') SUB# ArcI# EPX# GetAbsOrIncStep EOL ' From.Y = ' ADD# EPY# MUL# Num#('2') SUB# ArcJ# EPY# GetAbsOrIncStep EOL ' To.X = ' EPX# GetAbsOrIncFrom EOL ' To.Y = ' EPY# GetAbsOrIncFrom EOL ' Depth = ' EPZ# GetAbsOrIncStep EOL RETURN IncHelixFeature2: ' From.X = 0.0000' GetAbsOrIncStep EOL ' From.Y = 0.0000' GetAbsOrIncStep EOL ' To.X = ' SetAbs MUL# Num#('-2') SUB# ArcI# EPX# SetInc GetAbsOrIncFrom EOL ' To.Y = ' SetAbs MUL# Num#('-2') SUB# ArcJ# EPY# SetInc GetAbsOrIncFrom EOL SetAbs ' Depth = ' EPZ# GetAbsOrIncStep EOL SetInc FORMAT(ArcI#,8) FORMAT(ArcJ#,8) RETURN VarMove: GetSeqLabC ' LINE' EOL IF AbsValue? ' From.X = ' Recall# Num#('6') GetAbsOrIncStep EOL ' From.Y = ' Recall# Num#('7') GetAbsOrIncStep EOL ' To.X = ' Recall# Num#('8') GetAbsOrIncFrom EOL ' To.Y = ' Recall# Num#('9') GetAbsOrIncFrom EOL ' Depth = ' Recall# Num#('10') GetAbsOrIncStep EOL ELSE ' From.X = 0.0000' GetAbsOrIncStep EOL ' From.Y = 0.0000' GetAbsOrIncStep EOL IF Flag?('3') { ZonlyRepAutoCycle SPXYMoveInc } ' To.X = ' Recall# Num#('4') GetAbsOrIncFrom EOL ' To.Y = ' Recall# Num#('5') GetAbsOrIncFrom EOL ELSE ' To.X = ' SUB# Recall# Num#('8') Recall# Num#('6') GetAbsOrIncFrom EOL ' To.Y = ' SUB# Recall# Num#('9') Recall# Num#('7') GetAbsOrIncFrom EOL END SetAbs ' Depth = ' Recall# Num#('10') GetAbsOrIncStep EOL SetInc END RETURN GetStartPos: SetAbs Save# Num#('6') TrackXNO# StartPosX# Save# Num#('7') TrackYNO# StartPosY# SetAbsOrInc RETURN GetStartPosC: SetAbs LoadFeat StartPosX# StartPosY# Num#('0') IF XMove? OR YMove? Save# Num#('6') TrackXNO# StartPosX# Save# Num#('7') TrackYNO# StartPosY# END SetAbsOrInc RETURN GetHome: SetAbs LoadFeat PRIME HomeX# PRIME HomeY# LAST ClearancePlane1# SetAbsOrInc IF XMove? OR YMove? Save# Num#('8') PRIME HomeX# Save# Num#('9') PRIME HomeY# Save# Num#('10') LAST ClearancePlane1# SetFlag('4') { ToolChangeAtHome } VarMove ckCRC GetRapidF SetFlagF('4') { ToolChangeAtHome } SPisEP END RETURN GetFirstHome: SetAbs LoadFeat FIRST PRIME HomeX# FIRST PRIME HomeY# ClearancePlane1# SetAbsOrInc IF XMove? OR YMove? Save# Num#('8') FIRST PRIME HomeX# Save# Num#('9') FIRST PRIME HomeY# Save# Num#('10') ClearancePlane1# SetFlag('4') { ToolChangeAtHome } VarMove ckCRC GetRapidF SetFlagF('4') { ToolChangeAtHome } SPisEP END RETURN GetMoveSXYC: SetAbs Save# Num#('8') TrackXNO# SPX# Save# Num#('9') TrackYNO# SPY# SetAbsOrInc IF AutoCycle? SPisEP CalcACEP SetFlag('2') { ToolPath FirstFeat MoveSPX } ELSE IF Repeats? AND FeedConnect? VarMove ckCRC GetFeedEnt END SPisEP END RETURN GetPRIMEZCP2: SetAbs Save# Num#('10') TrackZNO# PRIME ClearancePlane2# SetAbsOrInc RETURN GetIncEPtoSP: { ZonlyRepAutoCycle } SetAbs SetPass1 Save# Num#('4') Num#('0') { ZonlyRepAutoCycle GetIncXEPtoSP } Save# Num#('5') Num#('0') { ZonlyRepAutoCycle GetIncYEPtoSP } SetFlagF('1') { ZonlyRepAutoCycle GetIncSXYMove } EachFeat IF LastFeat? TrackXNO# FIRST SPX# TrackYNO# FIRST SPY# IF XMove? OR YMove? SetFlag('1') { SPXMove } Save# Num#('4') SUB# FIRST SPX# EPX# Save# Num#('5') SUB# FIRST SPY# EPY# END END NextFeat SetPass2 TrackXNO# StartPosX# TrackYNO# StartPosY# TrackZNO# ClearancePlane2# SetAbsOrInc CalcACEP Report RETURN GetSXYMoveC: { ZonlyRepAutoCycle } SetFlag('3') { SPXYMoveInc } IF FeedConnect? VarMove ckCRC GetFeedEnt ELSE VarMove ckCRC GetRapidF END SPisEP SetFlagF('3') { SPXYMoveInc } RETURN TrackSPXY: { ZonlyRepAutoCycle } EachFeat IF FirstFeat? SetAbs TrackXNO# SPX# TrackYNO# SPY# SetInc END NextFeat RETURN {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 WFONum: { Not Supported } RETURN WFOStuff: { Not Supported } RETURN ResetWFO: { Not Supported } 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? FORMAT(ToolDiameter#,7) '; TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ EOL FORMAT(ToolDiameter#,4) END IF ToolComment? '; ' ToolComment$ EOL END RestoreScale END RETURN PSInit: NewWFOF RotateF OptCyc1F MasterOpF CallMasterOpF FourthCWF FourthCCWF FifthCWF FifthCCWF RETURN PSStuff: RETURN DoPostScript: PSInit EachPS PostScript EOL PSStuff NextPS RETURN DoEndOpPS: PSInit EachEOPS EndOpPS EOL PSStuff NextPS RETURN ToolPath: EACHFeat IF PointFeat? { Drilling Only } GetSeqLabC TPFeature DrillFeature EOL ELSE IF RapidFeat? IF XMove? OR YMove? IF AbsValue? GetSeqLabC TPFeature AbsMillFeature ckCRC GetRapidF EOL ELSE GetSeqLabC TPFeature IncMillFeature ckCRC GetRapidF EOL END END ELSE IF LineFeat? IF XMove? OR YMove? IF AbsValue? GetSeqLabC TPFeature AbsMillFeature ckCRC GetFeedRate EOL ELSE GetSeqLabC TPFeature IncMillFeature ckCRC GetFeedRate EOL END END ELSE IF ArcFeat? IF XMove? OR YMove? IF AbsValue? GetSeqLabC TPFeature AbsMillFeature ArcStuff ckCRC GetArcFeed EOL ELSE GetSeqLabC TPFeature IncMillFeature ArcStuff ckCRC GetArcFeed EOL END ELSE IF AbsValue? GetSeqLabC TPFeature AbsHelixFeature1 ArcStuff ckCRC GetArcFeed EOL GetSeqLabC TPFeature AbsHelixFeature2 ArcStuff ckCRC GetArcFeed EOL ELSE GetSeqLabC TPFeature IncHelixFeature1 ArcStuff ckCRC GetArcFeed EOL GetSeqLabC TPFeature IncHelixFeature2 ArcStuff ckCRC GetArcFeed EOL FORMAT(ArcI#,4) FORMAT(ArcJ#,4) END TrackXNO# EPX# TrackYNO# EPY# TrackZNO# EPZ# END END END END END IF LastFeat? IF AbsValue? GetTPEP ELSE SetAbs GetTPEP SetInc END END NEXTFeat RETURN AutoCycCutSub1: {part 1} CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY} SaveSubStatus {save tool position} SetPass1 {element cut moves} SetSRXYtoSP SetInc RETURN AutoCycCutSub2: {part 2} SetAbsOrInc SetSRSubXY {restore SR to 1st position value} SetSRSubMove ReSetPass2 {restore for positioning moves} RETURN Milling: ToolPath RETURN XYZRep: EachRep DoCycleComment IF NOT FirstCycle? IF SPXMove? OR SPYMove? GetMoveSXYC END END ToolPath NextRep RETURN NoRepAutoCycle: GetIncEPtoSP EACHFeat DoCycleComment GetMoveSXYC AutoCycCutSub1 Milling AutoCycCutSub2 NEXTFeat GetACEP RETURN XYZRepAutoCycle: GetIncEPtoSP EachRep DoCycleComment GetMoveSXYC EACHFeat IF NOT FirstFeat? DoCycleComment END IF SPXMove? OR SPYMove? GetMoveSXYC END AutoCycCutSub1 Milling AutoCycCutSub2 NEXTFeat NextRep GetACEP RETURN ZonlyRepAutoCycle: GetIncEPtoSP Report EACHFeat DoCycleComment GetMoveSXYC AutoCycCutSub1 EachRep IF NOT FirstCycle? IF FeedConnect? DoCycleComment IF Flag?('1') { SPXMove OR SPYMove } GetSXYMoveC END SetAbsOrInc ELSE SetAbsOrInc DoCycleComment IF Flag?('1') { SPXMove OR SPYMove } GetPRIMEZCP2 SetInc GetSXYMoveC SetAbsOrInc END END SetInc END TrackSPXY ToolPath NextRep AutoCycCutSub2 NEXTFeat GetACEP RETURN DrillStuff: GetCycle RETURN CheckPass: IF AutoCycle? {use the correct StrtPos} SetPass2 ELSE SetPass1 END RETURN ProgStart: InitProg SetLowerCaseOK ReverseXZArcs IF Metric? SetMaxFeed('2540') ELSE SetMaxFeed('100') END Save# Num#('1') Num#('0') { MultipleParts Current Tool FirstOp# } Save# Num#('2') Num#('0') { MultipleParts ToolOp# Counter } Save# Num#('4') Num#('0') { GetIncXEPtoSP } Save# Num#('5') Num#('0') { GetIncYEPtoSP } Save# Num#('6') Num#('0') { SPX Status Register } Save# Num#('7') Num#('0') { SPY Status Register } Save# Num#('8') Num#('0') { EPX Status Register } Save# Num#('9') Num#('0') { EPY Status Register } Save# Num#('10') Num#('0') { EPZ Status Register } Save# Num#('11') Num#('0') { CalcACEPX } Save# Num#('12') Num#('0') { CalcACEPY } Save# Num#('13') Num#('0') { SeqC Step Number } SetFlagF('1') { ZonlyRepAutoCycle GetIncSXYMove } SetFlagF('2') { AutoCycle ToolPath FirstFeat MoveSPX } SetFlagF('3') { ZonlyRepAutoCycle SPXYMoveInc } SetFlagF('4') { ToolChangeAtHome } 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 END RETURN SetDrillEndOpZ: IF RetractToCP1? Save# Num#('10') TrackZNO# ClearancePlane1# ELSE Save# Num#('10') TrackZNO# ClearancePlane2# END RETURN OpGuts: IF Milling? IF AutoCycle? IF Repeats? IF ZShiftOnly? ZonlyRepAutoCycle ELSE XYZRepAutoCycle END ELSE NoRepAutoCycle END SetPass1 ELSE { NOT AutoCycle } IF Repeats? XYZRep ELSE Milling END END ELSE IF Drilling? IF Repeats? EachRep DoCycleComment IF FirstCycle? DrillStuff END ToolPath NextRep ELSE DrillStuff ToolPath END SetDrillEndOpZ END END RETURN InitOp: EachOp IF FirstOperation? IF ToolChangeAtHome? SetHome END END NextOp OpenSub 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: Plane { No Output } SetTool DoPartCycleComment DoOpComments DoPostScript RETURN FirstOp2: CheckPass SetAbsOrInc GetStartPos RETURN FirstOp3: RETURN NewToolOp1: RETURN NewToolOp2: DoEndOpPS IF ToolChangeAtHome? GetHome END RETURN NewToolOp3: {Start new Operation} PlaneC { No Output } SetTool DoPartCycleComment DoOpComments DoPostScript RETURN NewToolOp4: CheckPass SetAbsOrInc GetStartPos RETURN NewToolOp5: RETURN SameToolOp1: DoEndOpPS RETURN SameToolOp2: {Start new Operation} DoPartCycleComment DoOpComments DoPostScript CheckPass RETURN SameToolOp3: {Start new Operation} PlaneC { No Output } SetAbsOrInc GetStartPos RETURN End1: RETURN End2: DoEndOpPS IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier} GetFirstHome END RETURN End3: Header CloseSub Post2 {organize Subs into one program} 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? 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} IF FirstOperation? IF FirstPart? FirstOp1 FirstOp2 FirstOp3 END ELSE IF NewTool? IF FirstPart? NewToolOp1 NewToolOp2 NewToolOp3 NewToolOp4 NewToolOp5 END ELSE {implied SameTool?} SameToolOp1 SameToolOp2 SameToolOp3 END END OpGuts RETURN MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane} IF FirstOperation? IF FirstPart? FirstOp1 FirstOp2 FirstOp3 END ELSE IF NewTool? IF FirstPart? NewToolOp1 NewToolOp2 NewToolOp3 NewToolOp4 NewToolOp5 END ELSE {implied SameTool?} SameToolOp1 SameToolOp2 SameToolOp3 END END OpGuts RETURN NoMPs: {no multiple parts} 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 End2 RETURN DoNewPart: {Finish off last Part} {DoEndOpPS} {Start new Part} SameToolOp2 PlaneC { No Output } CheckPass GetStartPosC 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') { Tool First Op } IF FirstOperation? OR NewTool? IF NOT FirstPart? DoNewPart END END MasterSub 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 AllToolsOnePart? MPLoop 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:
Centurion V LH [CT] MW13 15 2m
Yasnac MX3 HS LH [NO] MV65 15
Fanuc 15M Mat LH [KP] CV71 15
BP EZ Trak LH [WD] MV22 15
Fanuc Pro3 Mak LH [AE] CV70 15
Haas LH [AM] CV24 15 2
Haas LH [TI] MX14 15
Dynapath 20M LH [SDT] CV52 15
Fanuc 11M LH [JBT] DW53 15
Fanuc 11M LH [JBT] DW53 15
Fanuc 10M LH [LAM] DW59 15
K&T Gemini D MM180 LH CY81 15 1
K&T Gemini D MM180 LH CY81 15 1
Centurion V LH MY53 15
15 3

więcej podobnych podstron