Emco F1 CNC MZ98 89 5


{Change Comments ***********************************************************}

{6/14/95, Updated for Catalyst v2.20 per Fanuc 6M M001.85 Format, DWB}
{7/18/95, Added IF NOT LastFeat? at CkCRC sub, DWB}
{8/18/95, .85.01.01, Added format CallMasterNum#, changed 'P' to CallLabB, added OptCyc1F, JR}
{8/19/95, .85.01.02, Modified CRC handling, set up for Virtual, not Gibbs System DogBone!, JR}
{8/23/95, .85.01.03, Simplified/corrected SameTool section, JR}
{3/20/96, .86, New ZonlyRepAutoCycle sub per Fanuc 6M M001.11, JR}
{4/17/96, .89, Changed version number per new version identification, JR}

{12/18/96
Initial: Fanuc 6M M001.89
Created: Emco F1-CNC Mxxx.89
ForUser: Wolverine
Control: Emco F1-CNC ( CPU F1A 114 001 )
Machine: Emco
Develop: ComPost 4.21.37PPC, Virtual Gibbs 3.23
Comment: New Processor per sample file and manual.
Var#1 = X Position
Var#2 = Y Position
Var#3 = Z Position
Var#4 = Feed Rate
Var#5 = Peck Drilling Current Z Position
Bugs:
Sequence number in sub call line has a decimal point.
I tried:
changing prog formatter #1
adding a formatter for Tag
Jim Radcliffe}

{3/4/97
Initial: Emco F1-CNC MZ98.89
Created: Emco F1-CNC MZ98.89.1
Develop: ComPost2 68K 1.0b11, Virtual Gibbs 3.23
Comment: Modified per fax and conversation with Peter Menze
Modified MachSpec so that Arcs Stop On Quadrants.
Changed tool home position on Z from TCZ to ZCP1.
Jim Radcliffe}

{4/10/97
Initial: Emco F1-CNC MZ98.89.1
Created: Emco F1-CNC MZ98.89.2
Develop: CatalystPPC v3.33C, ComPost2 68K 1.0b11
Comment: Corrected Tag# output.
In CatalystPPC v3.33C, Tag# for sub calls is now using the Sequence# Prog Format upon ReTag.
I corrected the spacing on the sub call line.
Jim Radcliffe}

{7/21/98
Initial: Emco F1-CNC MZ98.89.2
Created: Emco F1-CNC MZ98.89.3
Develop: ComPost2 1.1b3, Virtual Gibbs 4.24
Comment: Modified per conversation with Don from Cell.
Added G21 line to beginning of program.
Added G90 to beginning of tools.
Cannot do SepSubs in absolute as every move must have an XYZ on it!
Changed SetMaxSeparateSubCalls from 50 to 0 to force G92Sub instead of ZonlyRep.
Jim Radcliffe}

{7/22/98
Initial: Emco F1-CNC MZ98.89.3
Created: Emco F1-CNC MZ98.89.4
Comment: Modified for Incremental output.
Corrected bad incremental move.
Added SaveStrtPos to AutoCycCutSub1 to correct bug in output.
Also to be sure, but there was no change in the ouput.
Moved SaveStrtPos to after G91 in ZonlyRepAutoCycle.
Moved SaveEPXYZ to after DoAbsOrInc in ToolPath.
Jim Radcliffe}

{7/23/98
Initial: Emco F1-CNC MZ98.89.4
Created: Emco F1-CNC MZ98.89.5
Comment: Final bug fixes and clean up per Don Schulze
Forced arc moves, that only move in one axis, to linear moves.
Modified ToolPath ArcFeat.
Changed MachSpec Default Formats XYZ to 3 decimal places.
These are not used for output but the Move booleans
use them to determine if there would be output!
Cleaned up some redundant moves. Control has limited storage.
Made conditional the output of ZCP1 line at beginning of operations.
Made conditional the output of ZCP1 line at end of operations.
Suppress output of AutoCycles First SP move in ToolPath.
Jim Radcliffe}

{Prog Numeric Format Definitions *******************************************}

#1 = '#.00'
#2 = '###.###;0.'
#3 = '*###.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = 'bbbb^b0'
#7 = '-bb^bb0'
#8 = '-b^bb0'
#9 = 'bbb^b'
#10 = 'bbbb'
#11 = 'bbbbb'
#12 = 'bbbbb0'
#13 = 'bb^bb0'
#14 = 'b^bb0'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Tag#,5)
FORMAT(Operation#,5) {.72}
FORMAT(NewWFO#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Dwell#,6)
FORMAT(ToolLength#,7)
FORMAT(DIV#,7)
FORMAT(TrackX#,7)
FORMAT(TrackZ#,7)
FORMAT(TrackY#,8)
FORMAT(Recall#,9) { for feed rate output with RecallF# }
FORMAT(Tool#,10)
FORMAT(SpeedRPM#,11)
FORMAT(Sequence#,12)
FORMAT(ArcI#,13)
FORMAT(ArcJ#,14)

{Special Subroutines *******************************************************}

G21:
' 21'
RETURN

G02:
' 02'
RETURN

G03:
' 03'
RETURN

G90:
' 90' SetAbs
RETURN

G91:
' 91' SetInc
RETURN

G92:
' 92'
RETURN

G00:
' 00'
RETURN

G01:
' 01'
RETURN

NoAxis:
' '
RETURN

NoX:
' '
RETURN

NoY:
' '
RETURN

NoZ:
' '
RETURN

NoF:
' '
RETURN

SaveShiftR:
Save# Num#('1') OriginShiftRX#
Save# Num#('2') OriginShiftRY#
Save# Num#('3') OriginShiftRZ#
RETURN

SaveUnShiftR:
Save# Num#('1') OriginUSRXCTP#('0')
Save# Num#('2') OriginUSRYCTP#('0')
Save# Num#('3') OriginUSRZCTP#('0')
RETURN

SaveShiftP:
Save# Num#('1') OriginShiftPX#
Save# Num#('2') OriginShiftPY#
Save# Num#('3') OriginShiftPZ#
RETURN

SaveUnShiftP:
Save# Num#('1') OriginUSPXCTP#('0')
Save# Num#('2') OriginUSPYCTP#('0')
Save# Num#('3') OriginUSPZCTP#('0')
RETURN

SaveHome:
Save# Num#('1') HomeX#
Save# Num#('2') HomeY#
RETURN

SaveStrtPos:
Save# Num#('1') StartPosX#
Save# Num#('2') StartPosY#
RETURN

SaveSPXYZ:
Save# Num#('1') SPX#
Save# Num#('2') SPY#
Save# Num#('3') SPZ#
RETURN

SaveSPXY:
Save# Num#('1') SPX#
Save# Num#('2') SPY#
RETURN

SaveSPZ:
Save# Num#('3') SPZ#
RETURN

SaveEPXYZ:
Save# Num#('1') EPX#
Save# Num#('2') EPY#
Save# Num#('3') EPZ#
RETURN

SaveCP1:
Save# Num#('3') ClearancePlane1#
RETURN

SaveCP2:
Save# Num#('3') ClearancePlane2#
RETURN

SaveCP3:
Save# Num#('3') ClearancePlane3#
RETURN

SaveZDepth:
Save# Num#('3') ZDepth#
RETURN

SaveZInPlusInc:
Save# Num#('3') ZInPlusInc#
RETURN

SaveZCP2PlusInc:
Save# Num#('3') ZCP2PlusInc#
RETURN

SavePeck:
Save# Num#('3') MUL# Recall# Num#('5') NumSc#('1')
RETURN

SaveRetract:
Save# Num#('3') ADD# Recall# Num#('5') Retract#
RETURN

SaveRapid:
Save# Num#('4') RapidF#
RETURN

SaveFeedEnt:
Save# Num#('4') FeedEntry#
RETURN

SaveFeed:
Save# Num#('4') FeedContour#
RETURN

SaveArc:
Save# Num#('4') ArcFeed#
RETURN

SaveDecel:
Save# Num#('4') DecelFeed#
RETURN

RecallX#:
Recall# Num#('1')
RETURN

RecallY#:
Recall# Num#('2')
RETURN

RecallZ#:
Recall# Num#('3')
RETURN

RecallF#:
Recall# Num#('4')
RETURN

Position:
TrackX# RecallX# TrackY# RecallY# TrackZ# RecallZ# RecallF#
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

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
RestoreScale
END
RETURN

PSInit: {reset flags}
NewWFOF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN

PSStuff: {revised.72}
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqLab 'A' FourthDegree# EOL
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqLab 'A' FourthDegree# EOL
FourthCCWF {reset flag}
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqLab 'B' FifthDegree# EOL
FifthCWF {reset flag}
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqLab 'B' FifthDegree# EOL
FifthCCWF {reset flag}
END
RETURN

DoPostScript:
PSInit
EachPS
SeqLab PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqLab EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN

EntryMove:
IF FeedEntry?
SaveSPZ SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveSPZ SaveRapid
SeqLab G00 Position EOL
END
RETURN

StartSub:
OpenSub
DoSubComment
'>' Tag# EOL
RETURN

SubWarning:
IF NOT FeedConnect?
IF AnyZshift?
' ' EOL
'( WARNING Z CLEARANCE WILL CHANGE WITH EACH CYCLE OF SUB REPEAT )' EOL
' ' EOL
END
END
RETURN

StdSub:
EachCycle
SeqLab ' 25' NoX NoY ' ł' Tag# EOL
NextCycle
StartSub
RETURN

FinishSub1: {part 1}
IF NotEqual? RecallZ# ClearancePlane3#
IF NOT FeedConnect?
IF FIFO? {.81}
SaveCP3 SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveCP3 SaveRapid
SeqLab G00 Position EOL
END
END
END
RETURN

FinishSubG92: {part 2}
SaveShiftR
SeqLab G92 Position EOL
SeqLab EndSub NoAxis EOL
CloseSub
SaveUnShiftR
SeqLab G92 Position EOL
RETURN

OpenMP:
IF EquallySpacedOffsets?
TagInc
EachPart
SeqLab ' 25' NoX NoY ' ł' Tag# EOL
NextPart
StartSub
END
RETURN

CloseMP:
IF EquallySpacedOffsets?
SaveShiftP
SeqLab G92 Position EOL
SeqLab EndSub NoAxis EOL
CloseSub
SaveUnShiftP
SeqLab G92 Position EOL
END
RETURN

DoAbsOrInc:
IF Flag?('1') AND AbsoluteMoves?
IF ZMove? AND AbsValue?
SeqLab G91 NoAxis EOL
ELSE
IF NOT ZMove? AND NOT AbsValue?
SeqLab G90 NoAxis EOL
END
END
END
RETURN

DoDrillAbsOrInc:
IF Flag?('1') AND AbsoluteMoves?
IF SPZMove? AND AbsValue?
SeqLab G91 NoAxis EOL
ELSE
IF NOT SPZMove? AND NOT AbsValue?
SeqLab G90 NoAxis EOL
END
END
END
RETURN

RestoreAbsOrInc:
IF Flag?('1') AND AbsoluteMoves? AND NOT AbsValue?
SeqLab G90 NoAxis EOL
END
RETURN

FormatArc1:
IF ArcCW?
G02
ELSE
G03
END
Position
RETURN

FormatArc2:
'M99'
IF XYPlane?
FORMAT(ArcI#,13)
FORMAT(ArcJ#,14)
'I' ArcI# 'J' ArcJ# 'K 0'
ELSE
IF XZPlane?
FORMAT(ArcI#,13)
FORMAT(ArcJ#,13)
'I' ArcI# 'J 0' 'K' ArcJ#
ELSE
FORMAT(ArcI#,14)
FORMAT(ArcJ#,13)
'I 0' 'J' ArcI# 'K' ArcJ#
END
END
NoF
RETURN

DoArc:
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
DoAbsOrInc
SaveEPXYZ SaveArc
SeqLab FormatArc1 EOL
SeqLab FormatArc2 EOL
DecelMove2
END
DoAbsOrInc
SaveEPXYZ SaveDecel
SeqLab FormatArc1 EOL
SeqLab FormatArc2 EOL
ELSE
DoAbsOrInc
SaveEPXYZ SaveArc
SeqLab FormatArc1 EOL
SeqLab FormatArc2 EOL
END
RETURN

ToolPath:
ResetCRCNum
EACHFeat
IF PointFeat?
IF AutoCycle?
IF NOT FirstFeat?
SaveSPXY SaveRapid
SeqLab G00 Position EOL
END
SeqLab ' 25' NoX NoY ' ł' Tag# EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
ELSE
DoDrillAbsOrInc
SaveSPXY SaveRapid
SeqLab G00 Position EOL
END
ELSE
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
DoAbsOrInc
SaveEPXYZ SaveRapid
SeqLab G00 Position EOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
IF Decelerate?
IF RoomToDecel?
DecelMove1
DoAbsOrInc
SaveEPXYZ SaveFeed
SeqLab G01 Position EOL
DecelMove2
END
DoAbsOrInc
SaveEPXYZ SaveDecel
SeqLab G01 Position EOL
ELSE
DoAbsOrInc
SaveEPXYZ SaveFeed
SeqLab G01 Position EOL
END
END
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF XYPlane? AND XMove? AND YMove?
DoArc
ELSE
IF XZPlane? AND XMove? AND ZMove?
DoArc
ELSE
IF YMove? AND ZMove?
DoArc
ELSE
DoAbsOrInc
SaveEPXYZ SaveFeed
SeqLab G01 Position EOL
END
END
END
NEXTQuadrant
END
END
END
END
NEXTFeat
RestoreAbsOrInc
RETURN

DoPeck:
IF NOT Flag?('2')
SetScale('1')
IF GreaterThan? SUB# Recall# Num#('5') Peck# SPZ# {IF OldZ - Peck# > Depth}
Save# Num#('5') SUB# Recall# Num#('5') Peck# {Save#1 = OldZ - Peck# = NewZ}
RestoreScale
SavePeck SaveFeedEnt
SeqLab G01 Position EOL {move to NewZ}
IF PeckFullRetract?
SaveCP2 SaveRapid
SeqLab G00 Position EOL {move to CP2}
END
SaveRetract SaveRapid
SeqLab G00 Position EOL {move to RetractZ}
ELSE {Last Peck}
RestoreScale
SaveSPZ SaveFeedEnt
SeqLab G01 Position EOL {move to Depth}
IF RetractToCP1?
SaveCP1 SaveRapid
SeqLab G00 Position EOL
ELSE
SaveCP2 SaveRapid
SeqLab G00 Position EOL
END
SetFlag('2')
END
END
RETURN

DrillPath:
EACHFeat
IF NOT FirstFeat?
SaveSPXY SaveRapid
SeqLab G00 Position EOL
END
IF NotEqual? RecallZ# ClearancePlane2#
SaveCP2 SaveRapid
SeqLab G00 Position EOL
END
IF Peck?
SetFlagF('2') { done flag }
SetScale('1')
Save# Num#('5') ClearancePlane2#
RestoreScale
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
ELSE
SaveZDepth SaveFeedEnt
SeqLab G01 Position EOL
IF Dwell?
SeqLab ' 04' Dwell# NoY NoZ NoF EOL
END
IF FIRO?
IF RetractToCP1?
SaveCP1 SaveRapid
SeqLab G00 Position EOL
ELSE
SaveCP2 SaveRapid
SeqLab G00 Position EOL
END
END
IF FIFO?
SaveCP2
SeqLab G01 Position EOL
IF RetractToCP1?
SaveCP1 SaveRapid
SeqLab G00 Position EOL
END
END
IF TAP?
SeqLab InverseSpinOn NoAxis EOL
SaveCP2
SeqLab G01 Position EOL
SeqLab SpinOn NoAxis EOL
IF RetractToCP1?
SaveCP1 SaveRapid
SeqLab G00 Position EOL
END
END
END
NEXTFeat
RETURN

AutoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
StartSub
SetSRXYtoSP
SeqLab G91 NoAxis EOL
SaveStrtPos
RETURN

AutoCycCutSub2: {part 2}
ToolPath
SeqLab G90 NoAxis EOL
IF Repeats? AND FeedConnect? AND ZshiftOnly?
{.69 removed RapidC} {.71.2 removed CRCOffC, gets turned off in ToolPath}
ELSE
IF FIFO? {.81}
SaveCP2 SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveCP2 SaveRapid
SeqLab G00 Position EOL
END
END
SeqLab EndSub NoAxis 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?
TagInc
AutoCycCutSub1
EntryMove
AutoCycCutSub2
AutoCycPat
ELSE
EntryMove
ToolPath
END
RETURN

G92Sub:
SubWarning
StdSub
IF FeedConnect?
SaveFeed
SeqLab G01 Position EOL
ELSE
SaveRapid
SeqLab G01 Position EOL
END
Milling
FinishSub1
FinishSubG92
RETURN

ZonlyRepAutoCycle:
AutoCycPat {write pattern moves and main calls}
StartSub
TagInc
EachCycle
SetSRXYtoEP
IF FeedConnect?
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
SeqLab G91 NoAxis EOL
SaveStrtPos SaveFeed
SeqLab G01 Position EOL
SeqLab G90 NoAxis EOL
END
END
SaveZInPlusInc SaveFeedEnt
SeqLab G01 Position EOL
ELSE
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
SeqLab G91 NoAxis EOL
SaveStrtPos SaveRapid
SeqLab G00 Position EOL
SeqLab G90 NoAxis EOL
IF FeedEntry?
SaveZCP2PlusInc
SeqLab G00 Position EOL
SaveZInPlusInc SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveZInPlusInc
SeqLab G00 Position EOL
END
ELSE
IF FeedEntry?
SaveZCP2PlusInc SaveRapid
SeqLab G00 Position EOL
SaveZInPlusInc SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveZInPlusInc SaveRapid
SeqLab G00 Position EOL
END
END
ELSE
IF FeedEntry?
SaveZInPlusInc SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveZInPlusInc SaveRapid
SeqLab G00 Position EOL
END
END
END
IF FirstCycle?
SetStatusOff {protect Z position for incremental sub}
END
SeqLab ' 25' NoX NoY ' ł' Tag# EOL
NextCycle
SetStatusOn
AutoCycCutSub1 {build element sub}
AutoCycCutSub2
IF FeedConnect? {there is no Z up in the sub}
IF FIFO?
SaveCP2 SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveCP2 SaveRapid
SeqLab G00 Position EOL
END
END
SeqLab EndSub NoAxis EOL
CloseSub
{Element shift, not pattern}
RETURN

ZonlyRep:
EachCycle
IF NOT FirstCycle?
IF FeedConnect?
SaveStrtPos SaveFeed
SeqLab G01 Position EOL
ELSE
SaveStrtPos SaveRapid
SeqLab G00 Position EOL
END
END
IF FeedConnect?
SaveZInPlusInc SaveFeedEnt
SeqLab G01 Position EOL
ELSE {Entry/Exit Connect}
IF FeedEntry?
IF NOT FirstCycle?
SaveZCP2PlusInc SaveRapid
SeqLab G00 Position EOL
END
SaveZInPlusInc SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveZInPlusInc SaveRapid
SeqLab G00 Position EOL
END
END
SeqLab ' 25' NoX NoY ' ł' Tag# EOL
NextCycle
StartSub
TrackZNO# FIRST SPZ#
ToolPath
FinishSub1
SeqLab EndSub NoAxis EOL
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

{Start of executable Prog **************************************************}

{setup and initializations}
InitProg
TagInit
ReverseXZArcs
NoIJKSigns
InitWFONum
SetFlood
UseSeparateSubCalls
SetMaxSeparateSubCalls('0')
SetMaxRPM('10000')
SetMaxFeed('500')
SetFlagF('1') { Milling ZShiftOnly SepSubs }
Save# Num#('1') Num#('0') { current X position }
Save# Num#('2') Num#('0') { current X position }
Save# Num#('3') Num#('0') { current X position }
Save# Num#('4') Num#('0') { current feed rate }
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
' N` G` X ` Y ` Z ` F ' 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 NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
SeqLab G21 NoAxis EOL
SaveHome SaveCP1 SaveRapid
SeqLab G92 Position EOL
IF MultipleParts? AND AllToolsOnePart?
OpenMP
END
Plane { no output }
SeqLab G90 NoAxis EOL
SeqLab ToolChng DIV# ToolDiameter# Num#('2') SpeedRPM# ToolLength# Tool# EOL
DoOpComments
DoPostScript
SeqLab SpinOn NoAxis EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
SaveStrtPos
SeqLab G00 Position EOL
IF NotEqual? RecallZ# ClearancePlane1#
SaveCP1
SeqLab G00 Position EOL
END
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
SeqLab G00 Position EOL
END
ELSE
IF NewTool?

{Finish off last Operation}

IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
SaveRapid
IF NotEqual? RecallZ# ClearancePlane1#
SaveCP1
SeqLab G00 Position EOL
END
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
IF ToolChangeAtHome?
SaveHome
SeqLab G00 Position EOL
END
SeqLab SpinOff NoAxis EOL
IF LAST PRogStop?
SeqLab 'M00' NoAxis EOL
END

{Start new Operation}

Plane { no output }
SeqLab G90 NoAxis EOL
SeqLab ToolChng DIV# ToolDiameter# Num#('2') SpeedRPM# ToolLength# Tool# EOL
DoOpComments
DoPostScript
SeqLab SpinOn NoAxis EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
SaveStrtPos
SeqLab G00 Position EOL
IF NotEqual? RecallZ# ClearancePlane1#
SaveCP1
SeqLab G00 Position EOL
END
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
SeqLab G00 Position EOL
END
ELSE
IF SameTool?

{Finish off last Operation}

IF LAST ProgStop? OR NewToolOffset?
SaveRapid
IF NotEqual? RecallZ# ClearancePlane1#
SaveCP1
SeqLab G00 Position EOL
END
END
DoEndOpPS
IF LAST ProgStop?
SeqLab SpinOff NoAxis EOL
SeqLab 'M00' NoAxis EOL
END

{Start new Operation}

PlaneC
DoOpComments
DoPostScript
CheckPass
SaveStrtPos SaveRapid
SeqLab G00 Position EOL
IF LAST ProgStop?
SeqLab SpinOn NoAxis EOL
END
IF LAST ProgStop? OR NewToolOffset?
IF NotEqual? RecallZ# ClearancePlane1#
SaveCP1
SeqLab G00 Position EOL
END
END
END
END
END {common point for all operations}
IF Milling?
IF NotEqual? RecallZ# ClearancePlane2#
SaveCP2
SeqLab G00 Position EOL
END
IF Repeats?
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 NotEqual? RecallZ# ClearancePlane3#
IF FIFO? {.81}
SaveCP3 SaveFeedEnt
SeqLab G01 Position EOL
ELSE
SaveCP3 SaveRapid
SeqLab G00 Position EOL
END
END
ELSE
IF Drilling?
IF Repeats?
TagInc
StdSub
SaveStrtPos SaveRapid
SeqLab G00 Position EOL
END
DrillPath
IF NotEqual? RecallZ# ClearancePlane3#
SaveCP3 SaveRapid
SeqLab G00 Position EOL
END
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
SaveRapid
IF NotEqual? RecallZ# ClearancePlane1#
SaveCP1
SeqLab G00 Position EOL
END
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
SaveHome
SeqLab G00 Position EOL
END
SeqLab SpinOff NoAxis EOL
IF MultipleParts? AND AllToolsOnePart?
SeqLab 'M00' NoAxis EOL
CloseMP
END
SeqLab EOP EOL
CloseSub
Post2 {organize Subs into one program}
IF UseComments?
SetScale('1') {restore scale for comments}
IF FileBytesComment?
'( FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL
END
IF FileFeetComment?
'( FILE LENGTH: ' FileFeet# ' FEET )' EOL
END
IF FileMetersComment?
'( FILE LENGTH: ' FileMeters# ' METERS )' EOL
END
END
' ' ASCII('34') ASCII('73') EOL
Close
Retag



Wyszukiwarka

Podobne podstrony:
CNC Pro BP [SE] MZ60 89 1
CNC Pro Bridgeport M915 89 1
K&T CNC [GH] MW98 89 1
Heidenhain CNC 234 M117 89 4m
Maho CNC 432 M194 89
CNC 8800 Retro Tek M045 89
F1 28 Formy bool 4
Bandit IV AB [DM] MV32 89 1
Fadal Format 2 [MM] MW60 89
Fadal Format 2 [PEP] M116 89 1
Fanuc MF M4 MS NS SSI M421 89 2
Fanuc 10M MVJR [DM] M740 89

więcej podobnych podstron