Fanuc 18M Elgamill M468 13 3


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

{from M001.81, 11/10/91, wfg}
{ .81.02, wfg, 1/8/92, corrected Z polities for top, left, & right, as well as Y polarity for Left}
{ .81.14m, wfg, Feed & RPM rounding}
{ .81.15m, wfg, do not round tap RPM}
{ .81.16m, wfg, 4/16/92, head change corrections}
{ .81.17m, wfg, 5/7/92, feed format, last to tool change, dup RPM, dup PostScript}

{8/28/96
Updated: Siemans M8 Elgamill M468.81.17m
Created: Fanuc 18M Elgamill M468.13
For: LTV Steel
Machine: Butler Elgamill
Control: Fanuc 18M
Versions: Catalyst v3.05.03C/Compost 4.21.37/v1.0b1
Changes made per Joe Yurkus of LTV Steel.
Updated for Catalyst v3.05C per Fanuc 6M M001.13.1 Format.
Too many changes to note, complete rewrite.
Post supports machining on 5 sides of a cube, Front, Top, Bottom, Right and Left.
Back side not supported, any attempt at machining back results in defaulted Front side.
Workgroups must be programmed in XYPlane only.
Side is determined by WorkGroupComment$ which should start with name of side to be machined.
Any additional comments in WorkGroupComment$ should be separated from side by a space character.
Spindle Head rotates perpindicular to side to be machined.
Part and table remain stationary.
Depth coordinate contains formula for adding amount of stock on side to be machine.
Movement between sides needs to take care of clearing part to avoid crashes.
Coolant is turned off, head is retracted to Depth ClearancePlane1, then retracted to safe
position before rotating head into new orientation.
After Head Rotates, Coolant, Spindle and Length Offset needs to be re-activated.
Following list indicates axes in relationship to stock size dialog:
Side H- H+ V- V+ D- D+ Arc I J Plane Ofst MCode DepthComp
ŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃ
Front X- X+ Y- Y+ Z- Z+ G02 I J G17 G43 M46 ZStockMax
Top X- X+ Z+ Z- Y- Y+ G02 I K G18 G43 M48 YStockMax
Bottom X- X+ Z- Z+ Y+ Y- G03 I K G18 G44 M47 YStockMin
Right Z+ Z- Y- Y+ X- X+ G02 K J G19 G43 M45 XStockMax
Left Z- Z+ Y- Y+ X+ X- G03 K J G19 G44 M49 XStockMin
Virtual Advanced Mill Support still requires following modifications:
Post will be a C-version as post will output index command and use WorkFixtureOffsets.
New version of Virtual to allow for 999 subs.
This prog currently contains 97, limit is 98.
Need to replace Front, Top, Bottom, Right and Left conditions with actual CSOffsetA# and
CSOffsetB# tests.
DWB}

{10/1/96
Modified: Fanuc 18M Elgamill M468.13
Created: Fanuc 18M Elgamill M468.13.1
For: LTV Steel
Versions: Catalyst v3.06C/Compost 4.21.37/v1.0b1
Changes made per Joe Yurkus of LTV Steel.
Changed First Work Fixture Offset from G54 to G55 in Compost2 Origins and Values Dialog.
Deleted unused Number Commands at Prog Numeric Format Definitions.
Deleted Recall# from FORMAT#4.
Deleted MUL# from FORMAT#4.
Deleted TrackX# from FORMAT#4.
Deleted TrackY# from FORMAT#4.
Deleted TrackZ# from FORMAT#4.
Deleted RapidF# from FORMAT#4.
Deleted Peck# from FORMAT#4.
Deleted DirectTapFeed# from FORMAT#4.
Deleted SpeedRPM# from FORMAT#5.
Deleted formulas that add SideStock# Max/Min values.
User can control depth via WorkFixtureOffsets.
Deleted ADD# from FORMAT#4 at Prog Numeric Format Definitions.
Deleted XStockMax# from FORMAT#4 at Prog Numeric Format Definitions.
Deleted YStockMax# from FORMAT#4 at Prog Numeric Format Definitions.
Deleted ZStockMax# from FORMAT#4 at Prog Numeric Format Definitions.
Deleted XStockMin# from FORMAT#6 at Prog Numeric Format Definitions.
Deleted YStockMin# from FORMAT#6 at Prog Numeric Format Definitions.
Deleted formulas for ADDing SideStock# Min/Max value to EPZ# at DComp sub.
Deleted formulas for ADDing SideStock# Min/Max value to SPZ# at SPDMove sub.
Deleted formulas for ADDing SideStock# Min/Max value to EPZ# at LastDCP1 sub.
Deleted Tool number info in Side Notes for PSComment at ProgStart sub.
Added Flag(6) test at WFOStuff sub.
Added Flag(6) test at NoMPs sub.
Virtual Advanced Mill Support still requires following modifications:
Post will be a C-version as post will output index command and use WorkFixtureOffsets.
Need to replace Front, Top, Bottom, Right and Left conditions with actual CSOffsetA# and
CSOffsetB# tests.
DWB}

{10/30/96
Modified: Fanuc 18M Elgamill M468.13.1
Created: Fanuc 18M Elgamill M468.13.2
For: LTV Steel
Versions: Catalyst v3.09C/Compost 4.21.37/v1.0b1
Changes made per Joe Yurkus of LTV Steel.
Added RapidF# back to FORMAT#4 at Prog Numeric Format Definitions.
Added PartClear sub.
Called prior to StrtPos from FirstOp3, NewToolOp5 and SameToolOp3 subs.
Ensures that Tool will clear part sides before positioning.
Outputs X-20. for Left.
Outputs X20. for Right, Top and Bottom.
Outputs Y20. for Top.
Outputs Y-20. for Bottom.
Added SetLastOfstOff sub.
Called from NewToolOp1 and SameToolOp1 subs.
Outputs G49 H0 Z20. for OfstOff.
Takes care of correct Address for Side Depth.
Replaces LastDCP1 sub.
Added SetOfstOff sub.
Same as SetLastOfstOff sub except called from End1 sub.
Deleted LastDCP1 sub.
See SetLastOfstOff sub notes.
Moved SetFlagF(6) from SameToolOp1 to CheckHead sub.
Was not getting cleared for LAST ProgStop condition.
Added IF SameTool? AND LAST ProgStop? condition at WFOStuff.
Added SpinOff block prior to ToolChng block at FirstOp1a, NewToolOp3a and End3 subs.
Deleted PreTool at FirstOp2 and NewToolOp4 subs.
Added OpToolID block at NewToolOp3a sub.
Moved call to CheckHead sub before LAST ProgStop condition at SameToolOp1 sub.
Was not checking for LAST ProgStop condition.
Added NewWFO test for calling SetLastOfstOff sub at SameToolOp1 sub.
Added NewWFO test for calling SetOfstOn ToolOfst DCP1 subs at SameToolOp3 sub.
Added LAST ProgStop test for calling SetPlane WFOStuff subs at NoMPs sub.
Added NewWFO test for calling SetPlane WFOStuff subs at NoMPs sub.
DWB}

{1/15/97
Modified: Fanuc 18M Elgamill M468.13.2
Created: Fanuc 18M Elgamill M468.13.3
For: LTV Steel
Versions: Catalyst v3.25C/Compost 4.21.37/v1.0b4
Changes made per Joe Yurkus of LTV Steel.
Customer reported that Spindle must be turned off prior to changing sides during SameTool.
Added SpinOff two places at SameToolOp1 sub.
DWB}

{Prog Numeric Format Definitions ****}

#1 = '#.00'
#2 = '#####.###;0.'
#3 = '*#####.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '*####.####;0.'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(StartPosX#,4)
FORMAT(StartPosY#,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(TrackXNO#,4)
FORMAT(TrackYNO#,4)
FORMAT(TrackZNO#,4)
FORMAT(OriginShiftRX#,4)
FORMAT(OriginShiftRY#,4)
FORMAT(OriginShiftRZ#,4)
FORMAT(OriginUSRXCTP#,4)
FORMAT(OriginUSRYCTP#,4)
FORMAT(OriginUSRZCTP#,4)
FORMAT(OriginShiftPX#,4)
FORMAT(OriginShiftPY#,4)
FORMAT(OriginShiftPZ#,4)
FORMAT(OriginUSPXCTP#,4)
FORMAT(OriginUSPYCTP#,4)
FORMAT(OriginUSPZCTP#,4)
FORMAT(Dwell#,4)
FORMAT(RapidF#,4)
FORMAT(ToolDiameter#,4)
FORMAT(CallMasterNum#,5)
FORMAT(Program#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(NewWFO#,5)
FORMAT(Parts#,5)

{Added Subroutines ***}

SetPlane:
IF Top? OR Bottom?
' G18'
ELSE
IF Right? OR Left?
' G19'
ELSE { Default to Front }
' G17'
END
END
RETURN

HeadClear:
' M98 P10' { User Macro Positions Head to Y-12.5 Z20. }
RETURN

SetHead:
IF Right?
' M45'
ELSE
IF Front?
' M46'
ELSE
IF Bottom?
' M47'
ELSE
IF Top?
' M48'
ELSE
IF Left?
' M49'
ELSE
' M46 ***** Bad Side Type in SetHead *****'
END
END
END
END
END
RETURN

PartClear:
IF Left?
SeqC AbsOrInc Feed ' X-20.' RapidF EOL
ELSE
SeqC AbsOrInc Feed ' X20.' RapidF EOL
IF Top?
SeqC ' Y20.' EOL
ELSE
IF Bottom?
SeqC ' Y-20.' EOL
END
END
END
TrackZNO# Num#('20')
IF Top? OR Bottom?
TrackXNO# Num#('20')
END
RETURN

SetOfstOn:
IF Bottom? OR Left?
' G44' { Tool Length Comp - Direction }
ELSE
' G43' { Tool Length Comp + Direction }
END
RETURN

SetLastOfstOff:
' G49 H0' { OfstOff }
IF LAST Top?
' Y20.'
ELSE
IF LAST Bottom?
' Y-20.'
ELSE
IF LAST Right?
' X20.'
ELSE
IF LAST Left?
' X-20.'
ELSE
' Z20.'
END
END
END
END
RETURN

SetOfstOff:
' G49 H0' { OfstOff }
IF Top?
' Y20.'
ELSE
IF Bottom?
' Y-20.'
ELSE
IF Right?
' X20.'
ELSE
IF Left?
' X-20.'
ELSE
' Z20.'
END
END
END
END
RETURN

GetCoolOn:
IF FirstOperation? OR NewTool? OR LAST ProgStop? OR LAST CoolOff?
SeqC CoolOn EOL
ELSE
IF Top? AND LAST NOT Top?
SeqC CoolOn EOL
ELSE
IF Bottom? AND LAST NOT Bottom?
SeqC CoolOn EOL
ELSE
IF Right? AND LAST NOT Right?
SeqC CoolOn EOL
ELSE
IF Left? AND LAST NOT Left?
SeqC CoolOn EOL
ELSE
IF Front? AND LAST NOT Front? AND LAST NOT Back?
SeqC CoolOn EOL
ELSE
IF Back? AND LAST NOT Front? AND LAST NOT Back?
SeqC CoolOn EOL
END
END
END
END
END
END
END
RETURN

GetCoolOff:
IF LastOp? OR NEXT NewTool? OR ProgStop? OR NEXT CoolOff?
SeqC CoolOff EOL
ELSE
IF Top? AND NEXT NOT Top?
SeqC CoolOff EOL
ELSE
IF Bottom? AND NEXT NOT Bottom?
SeqC CoolOff EOL
ELSE
IF Right? AND NEXT NOT Right?
SeqC CoolOff EOL
ELSE
IF Left? AND NEXT NOT Left?
SeqC CoolOff EOL
ELSE
IF Front? AND NEXT NOT Front? AND NEXT NOT Back?
SeqC CoolOff EOL
ELSE
IF Back? AND NEXT NOT Front? AND NEXT NOT Back?
SeqC CoolOff EOL
END
END
END
END
END
END
END
RETURN

HLabel:
IF Right? OR Left?
' Z'
ELSE
' X'
END
RETURN

VLabel:
IF Top? OR Bottom?
' Z'
ELSE
' Y'
END
RETURN

DLabel:
IF Top? OR Bottom?
' Y'
ELSE
IF Right? OR Left?
' X'
ELSE
' Z'
END
END
RETURN

HMove:
IF Right?
FORMAT(EPX#,6)
END
HLabel EPX#
FORMAT(EPX#,4)
RETURN

VMove:
IF Top?
FORMAT(EPY#,6)
END
VLabel EPY#
FORMAT(EPY#,4)
RETURN

HVMove:
HMove VMove
RETURN

HVMoveC:
IF XMove?
HMove
END
IF YMove?
VMove
END
RETURN

StartPos:
IF Right?
FORMAT(StartPosX#,6)
END
IF Top?
FORMAT(StartPosY#,6)
END
HLabel StartPosX#
VLabel StartPosY#
FORMAT(StartPosX#,4)
FORMAT(StartPosY#,4)
RETURN

StartPosC:
IF Right?
FORMAT(StartPosX#,6)
END
IF Top?
FORMAT(StartPosY#,6)
END
IF SPXMove?
HLabel StartPosX#
END
IF SPYMove?
VLabel StartPosY#
END
FORMAT(StartPosX#,4)
FORMAT(StartPosY#,4)
RETURN

DComp:
IF Bottom? OR Left?
FORMAT(EPZ#,6)
END
EPZ#
FORMAT(EPZ#,4)
RETURN

DMove:
DLabel DComp
RETURN

DMoveC:
IF ZMove?
DMove
END
RETURN

SPHMove:
IF Right?
FORMAT(SPX#,6)
END
HLabel SPX#
FORMAT(SPX#,4)
RETURN

SPVMove:
IF Top?
FORMAT(SPY#,6)
END
VLabel SPY#
FORMAT(SPY#,4)
RETURN

SPHMoveC:
IF SPXMove?
SPHMove
END
RETURN

SPVMoveC:
IF SPYMove?
SPVMove
END
RETURN

SPHVMoveC:
SPHMoveC SPVMoveC
RETURN

SPDMove:
DLabel
IF Bottom? OR Left?
FORMAT(SPZ#,6)
END
SPZ#
FORMAT(SPZ#,4)
RETURN

SPDMoveC:
IF SPZMove?
SPDMove
END
RETURN

DCP1:
LoadFeat Num#('0') Num#('0') ClearancePlane1#
DMove
TrackZNO# ClearancePlane1#
RETURN

DCP2:
LoadFeat Num#('0') Num#('0') ClearancePlane2#
DMove
TrackZNO# ClearancePlane1#
RETURN

DCP2C:
LoadFeat Num#('0') Num#('0') ClearancePlane2#
IF ZMove?
DMove
TrackZNO# ClearancePlane2#
END
RETURN

DCP3:
LoadFeat Num#('0') Num#('0') ClearancePlane3#
DMove
TrackZNO# ClearancePlane3#
RETURN

DCP3C:
LoadFeat Num#('0') Num#('0') ClearancePlane3#
IF ZMove?
DMove
TrackZNO# ClearancePlane3#
END
RETURN

DInPlusInc:
LoadFeat Num#('0') Num#('0') ZInPlusInc#
DMove
TrackZNO# ZInPlusInc#
RETURN

DCP2PlusInc:
LoadFeat Num#('0') Num#('0') ZCP2PlusInc#
DMove
TrackZNO# ZCP2PlusInc#
RETURN

DCP2PlusIncC:
LoadFeat Num#('0') Num#('0') ZInPlusInc#
IF ZMove?
DMove
TrackZNO# ZInPlusInc#
END
RETURN

CheckHead:
SetFlagF('6')
IF Top? AND LAST NOT Top?
SetFlag('6')
ELSE
IF Bottom? AND LAST NOT Bottom?
SetFlag('6')
ELSE
IF Right? AND LAST NOT Right?
SetFlag('6')
ELSE
IF Left? AND LAST NOT Left?
SetFlag('6')
ELSE
IF Front? AND LAST NOT Front? AND LAST NOT Back?
SetFlag('6')
ELSE
IF Back? AND LAST NOT Front? AND LAST NOT Back?
SetFlag('6')
END
END
END
END
END
END
RETURN

GetDrillCP:
IF RetractToCP1?
LoadFeat Num#('0') Num#('0') ClearancePlane1#
IF ZMove?
DMove
TrackZNO# ClearancePlane1#
END
ELSE
LoadFeat Num#('0') Num#('0') ClearancePlane2#
IF ZMove?
DMove
TrackZNO# ClearancePlane2#
END
END
RETURN

DDepth:
LoadFeat Num#('0') Num#('0') FIRST SPZ#
DMove
TrackZNO# FIRST SPZ#
RETURN

DRLevel:
LoadFeat Num#('0') Num#('0') ClearancePlane2#
' R' DComp
TrackZNO# FIRST SPZ#
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 - ' Program# ' )' 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:
NewWFOF
FourthCWF
FourthCCWF
FifthCWF
FifthCCWF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN

PSStuff:
RETURN

DoPostScript:
PSInit
EachPS
SeqC PostScript EOL
PSStuff
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL
PSStuff
NextPS
RETURN

EntryMove:
LoadFeat Num#('0') Num#('0') FIRST SPZ#
IF FeedEntry?
SeqC Feed DMove FeedEntC EOL
ELSE
SeqC FeedC DMove RapidFC EOL
END
TrackZNO# FIRST SPZ#
RETURN

StartSub:
OpenSub
SubID EOL
DoSubComment
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:
SeqC SubCall CallLab RepLab RepCycs EOL
StartSub
RETURN

FinishSub1: {part 1}
SetFlagF('7') { CRCOffC }
SeqC CRCOffC
IF NOT FeedConnect?
IF AutoCycle?
DCP3C
ELSE
IF FIFO?
FeedC DCP3C FeedEntC
ELSE
RapidC DCP3C
END
END
END
EOL
RETURN

FinishSubG92: {part 2}
IF Right?
FORMAT(OriginShiftRX#,6)
FORMAT(OriginUSRXCTP#,6)
END
IF Top?
FORMAT(OriginShiftRY#,6)
FORMAT(OriginUSRYCTP#,6)
END
IF Bottom? OR Left?
FORMAT(OriginShiftRZ#,6)
FORMAT(OriginUSRZCTP#,6)
END
SeqC Preset
IF NotEqual? RepeatX# Num#('0')
HLabel OriginShiftRX#
END
IF NotEqual? RepeatY# Num#('0')
VLabel OriginShiftRY#
END
IF NotEqual? RepeatZ# Num#('0')
DLabel OriginShiftRZ#
END
EOL
SeqC EndSub EOL
CloseSub
SeqC Preset
IF NotEqual? RepeatX# Num#('0')
HLabel OriginUSRXCTP#('1')
END
IF NotEqual? RepeatY# Num#('0')
VLabel OriginUSRYCTP#('1')
END
IF NotEqual? RepeatZ# Num#('0')
DLabel OriginUSRZCTP#('1')
END
EOL
FORMAT(OriginShiftRX#,4)
FORMAT(OriginShiftRY#,4)
FORMAT(OriginShiftRZ#,4)
FORMAT(OriginUSRXCTP#,4)
FORMAT(OriginUSRYCTP#,4)
FORMAT(OriginUSRZCTP#,4)
RETURN

OpenMP:
NewProg
IF WorkFixtureOffsets?
NewWFO
EachWFO {simple eachPart}
SeqC SetWFO EOL
SeqC SubCall CallLab RepLab OnePart EOL
IncWFO
NextWFO {simple NextPart}
ELSE
SeqC SubCall CallLab RepLab Parts EOL
END
StartSub
RETURN

CloseMP:
IF WorkFixtureOffsets?
SeqC EndSub EOL
CloseSub
SeqC WFO1 EOL
ELSE
IF Right?
FORMAT(OriginShiftPX#,6)
FORMAT(OriginUSPXCTP#,6)
END
IF Top?
FORMAT(OriginShiftPY#,6)
FORMAT(OriginUSPYCTP#,6)
END
IF Bottom? OR Left?
FORMAT(OriginShiftPZ#,6)
FORMAT(OriginUSPZCTP#,6)
END
SeqC Preset
IF NotEqual? PartShiftX# Num#('0')
HLabel OriginShiftPX#
END
IF NotEqual? PartShiftY# Num#('0')
VLabel OriginShiftPY#
END
IF NotEqual? PartShiftZ# Num#('0')
DLabel OriginShiftPZ#
END
EOL
SeqC EndSub EOL
CloseSub
SeqC Preset
IF NotEqual? PartShiftX# Num#('0')
HLabel OriginUSPXCTP#('1')
END
IF NotEqual? PartShiftY# Num#('0')
VLabel OriginUSPYCTP#('1')
END
IF NotEqual? PartShiftZ# Num#('0')
DLabel OriginUSPZCTP#('1')
END
EOL
FORMAT(OriginShiftPX#,4)
FORMAT(OriginShiftPY#,4)
FORMAT(OriginShiftPZ#,4)
FORMAT(OriginUSPXCTP#,4)
FORMAT(OriginUSPYCTP#,4)
FORMAT(OriginUSPZCTP#,4)
END
RETURN

DoAbsOrInc:
IF Flag?('1') AND AbsoluteMoves?
IF ZMove? AND AbsValue?
IncValue
ELSE
IF NOT ZMove? AND NOT AbsValue?
AbsValue
END
END
END
RETURN

DoDrillAbsOrInc:
IF Flag?('1') AND AbsoluteMoves?
IF SPZMove? AND AbsValue?
IncValue
ELSE
IF NOT SPZMove? AND NOT AbsValue?
AbsValue
END
END
END
RETURN

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

FormatArc:
DoAbsOrInc
IF Bottom? OR Left? { Reverse Arc }
IF ArcCW?
CCWArcC
ELSE
CWArcC
END
ELSE
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
END
HVMoveC DMoveC
IF Right?
FORMAT(ArcI#,6)
END
IF Top?
FORMAT(ArcJ#,6)
END
IF Right? OR Left?
' K' ArcI#
ELSE
ArcI
END
IF Top? OR Bottom?
' K' ArcJ#
ELSE
ArcJ
END
FORMAT(ArcI#,4)
FORMAT(ArcJ#,4)
RETURN

ckCRC:
IF LastFeat?
SetFlagF('7') { CRCOffC }
CRCOffC
ELSE
IF NOT ZMove? AND CutterRadiusCompensation?
CRCOnC { No Output }
SetFlag('5')
IF NOT Flag?('7')
SetFlag('7') { CRCOnC }
IF Left? OR Bottom? {reverse CRC}
IF CRCLeft?
' G42'
ELSE
' G41'
END
ELSE
IF CRCLeft?
' G41'
ELSE
' G42'
END
END
END
END
END
RETURN

FormatLine:
DoAbsOrInc ckCRC FeedC HVMoveC DMoveC
RETURN

ckCRCNum:
IF Flag?('5')
SetFlagF('5')
CRCOffsetC
END
RETURN

ToolPath:
ResetCRCNum
EACHFeat
IF PointFeat?
IF AutoCycle?
SeqC SPHVMoveC EOL
SeqC SubCall CallLab EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
ELSE
SeqC DoDrillAbsOrInc SPHVMoveC SPDMoveC EOL
END
ELSE
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
SeqC DoAbsOrInc ckCRC RapidC HVMoveC DMoveC ckCRCNum EOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatLine FeedRateC ckCRCNum EOL
DecelMove2
END
SeqC FormatLine DecelFeed ckCRCNum EOL
ELSE
SeqC FormatLine FeedRateC ckCRCNum EOL
END
END
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
END
END
NEXTFeat
RestoreAbsOrInc
RETURN

AutoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
StartSub
SetSRXYtoSP
SeqC IncValue EOL
RETURN

AutoCycCutSub2: {part 2}
ToolPath
SeqC AbsOrInc
IF Repeats? AND FeedConnect? AND ZshiftOnly?
ELSE
IF FIFO?
FeedC DCP2 FeedEntC
ELSE
RapidC DCP2 EOL
END
END
EOL
SeqC EndSub EOL
CloseSub
SetSRSubXY {restore SR to 1st position value}
SetSRSubMove
RETURN

AutoCycPat:
SetPass2 {position pattern}
ToolPath {call after NewProg for correct sub calls}
SetPass1 {reset}
RETURN

Milling:
IF AutoCycle?
NewProg
AutoCycCutSub1
EntryMove
AutoCycCutSub2
AutoCycPat
ELSE
EntryMove
ToolPath
END
RETURN

G92Sub:
SubWarning
StdSub
SeqC AbsOrInc Feed StartPos
IF NOT FeedConnect?
RapidF
END
EOL
Milling
FinishSub1
FinishSubG92
RETURN

ZonlyRepAutoCycle:
AutoCycPat {write pattern moves and main calls}
StartSub
NewProg
EachCycle
SetSRXYtoEP
IF FeedConnect?
Feed
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
SeqC IncValue StartPosC EOL
AbsOrInc
END
END
SeqC DInPlusInc FeedEnt EOL
ELSE
IF NOT FirstCycle?
Feed
IF SPXMove? OR SPYMove?
SeqC IncValue StartPosC RapidFC EOL
AbsOrInc
END
IF FeedEntry?
SeqC DCP2PlusInc RapidFC EOL
END
END
IF FeedEntry?
SeqC Feed DInPlusInc FeedEnt EOL
ELSE
IF FirstCycle?
Feed
END
SeqC FeedC DInPlusInc RapidFC EOL
END
END
IF FirstCycle?
SetStatusOff {protect Z position for incremental sub}
END
SeqC SubCall CallLab EOL
NextCycle
SetStatusOn
AutoCycCutSub1 {build element sub}
AutoCycCutSub2
IF FeedConnect? {there is no Z up in the sub}
IF FIFO?
SeqC Feed DCP2 FeedEnt EOL
ELSE
SeqC Rapid DCP2 EOL
END
END
SeqC EndSub EOL
CloseSub
{Element shift, not pattern}
RETURN

ZonlyRep:
EachCycle
IF NOT FirstCycle?
SeqC Feed StartPos
IF NOT FeedConnect?
RapidF
END
EOL {added Connect}
END
IF FeedConnect?
SeqC FeedC DInPlusInc FeedEnt EOL {changed to FeedC}
ELSE {Entry/Exit Connect}
IF FeedEntry?
IF NOT FirstCycle?
SeqC FeedC DCP2PlusIncC RapidFC EOL {can't call for cycle =1} {added Rapid, reads better} {.71.2, changed to RapidC, reads better}
END
SeqC Feed DInPlusInc FeedEnt EOL
ELSE
SeqC FeedC DInPlusInc RapidFC EOL {added Rapid, reads better} {changed to RapidC, reads better}
END
END
SeqC SubCall CallLab EOL
NextCycle
StartSub
TrackZNO# FIRST SPZ#
ToolPath
FinishSub1
SeqC EndSub EOL
CloseSub
RETURN

CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN

ProgStart:
InitProg
ReverseXZArcs
InitWFONum
SetFlood
UseSeparateSubCalls
SetMaxSeparateSubCalls('50')
SetMaxRPM('2200')
SetMaxFeed('600')
SetFlagF('1') { Milling ZShiftOnly SepSubs }
SetFlagF('5') { CRCOffsetC }
SetFlagF('6') { SameTool CheckHead }
SetFlagF('7') { CRCOffC }
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
' ' EOL
'Side Notes:' EOL
' Side to be machined is controlled by WorkGroup Comment which must start with:' EOL
' Front, Top, Bottom, Right or Left.' EOL
' Additional portion of WorkGroup Comment must follow one of these commands and be' EOL
' separated by a space character.' EOL

END
RETURN

SkipToLastFeat:
EachFeat
IF LastFeat?
TrackXNO# SPX#
TrackYNO# SPY#
END
NextFeat
RETURN

SetDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN

OpGuts:
IF Milling?
SeqC DCP2C EOL
GetCoolOn
IF Repeats?
NewProg
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
GetCoolOff
IF AutoCycle?
SeqC DCP3C EOL
ELSE
IF FIFO?
SeqC FeedC CRCOffC DCP3C FeedEntC EOL
ELSE
SeqC RapidC CRCOffC DCP3C EOL
END
SetFlagF('7') { CRCOffC }
END
ELSE
IF Drilling?
IF Repeats?
NewProg
StdSub
SeqC AbsOrInc Feed StartPos RapidF EOL
END
SeqC GetDrillCP EOL
GetCoolOn
GetCycle
SeqC Cycle FromCP StartPos DDepth DRLevel Dwell Peck Retract FeedEnt EOL
IF CallMasterOp?
SeqC SubCall CallLabB CallMasterNum# EOL
SkipToLastFeat
ELSE
TrackZNO# FIRST SPZ#
IF MasterOp?
SetFlag('1') {std sep sub Zreps in effect}
NewMasterProg
SeqC SubCall CallLab EOL
StartSub
ToolPath
SeqC EndSub EOL
CloseSub
SetFlagF('1') {not std sep sub Zreps in effect}
ELSE
ToolPath
END
END
SetDrillEndOpZ
GetCoolOff
SeqC Rapid DrillOff DCP3 EOL
IF Repeats?
FinishSubG92
END
END
END
RETURN

WFOStuff:
IF MultipleParts? AND WorkFixtureOffsets? AND NewWFO?
'*** WARNING *** DO NOT USE NEWWFO() WITH NCPOST MULTIPLE PARTS' EOL
ELSE
IF NewWFO?
' G' NewWFO#
ELSE
IF NeedWFO1? AND NOT SameTool?
' G' NewWFO#
ELSE
IF Flag?('6')
' G' NewWFO#
ELSE
IF SameTool? AND LAST ProgStop?
' G' NewWFO#
END
END
END
END
END
RETURN

InitOp:
EOR EOL
ProgID1
IF UseComments? AND ProgramNameComment?
' ( PROGRAM - ' 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$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED - ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
RETURN

FirstOp1:
Seq AbsOrInc Rapid CRCOff DrillOff ' G54 H0 D0' EOL
DoOpComments
DoPostScript
Plane { No Output }
RETURN

FirstOp1a:
SeqC SpinOff EOL
SeqC OpToolID EOL
SeqC ToolChng EOL
SeqC HeadClear EOL
SeqC SetHead EOL
RETURN

FirstOp2:
SeqC Speed SpinOn EOL
RETURN

FirstOp3:
CheckPass
IF Front?
SeqC AbsOrInc Feed StartPos RapidF EOL
ELSE
PartClear
SeqC StartPos EOL
END
RETURN

FirstOp4:
SeqC SetOfstOn ToolOfst DCP1 EOL
RETURN

NewToolOp1:
SeqC SetLastOfstOff EOL
RETURN

NewToolOp2:
DoEndOpPS
SeqC SpinOff EOL
IF LAST ProgStop?
SeqC ' M0' EOL
ELSE
SeqC ProgStop EOL
END
RETURN

NewToolOp3: {Start new Operation}
DoOpComments
DoPostScript
Plane { No Output }
RETURN

NewToolOp3a:
SeqC SpinOff EOL
SeqC OpToolID EOL
SeqC ToolChng EOL
SeqC HeadClear EOL
SeqC SetHead EOL
RETURN

NewToolOp4:
SeqC Speed SpinOn EOL
RETURN

NewToolOp5:
CheckPass
IF Front?
SeqC AbsOrInc Feed StartPos RapidF EOL
ELSE
PartClear
SeqC StartPos EOL
END
RETURN

NewToolOp6:
SeqC SetOfstOn ToolOfst DCP1 EOL
RETURN

SameToolOp1:
DoEndOpPS
CheckHead
IF Flag?('6') { SameTool CheckHead }
SeqC SetLastOfstOff EOL
SeqC SpinOff EOL
SeqC HeadClear EOL
IF LAST ProgStop?
SeqC ' M0' EOL
END
ELSE
IF LAST ProgStop?
SeqC SetLastOfstOff EOL
SeqC SpinOff EOL
SeqC HeadClear EOL
SeqC ' M0' EOL
ELSE
IF NewToolOffset?
SeqC SetLastOfstOff EOL
ELSE
IF NewWFO?
SeqC SetLastOfstOff EOL
END
END
END
END
RETURN

SameToolOp2: {Start new Operation}
Plane { No Output }
DoOpComments
DoPostScript
CheckPass
RETURN

SameToolOp3: {Start new Operation}
IF Flag?('6') { SameTool CheckHead }
SeqC SetHead EOL
SeqC Speed SpinOn EOL
IF Front?
SeqC AbsOrInc Feed StartPos RapidF EOL
ELSE
PartClear
SeqC StartPos EOL
END
SeqC SetOfstOn ToolOfst DCP1 EOL
ELSE
IF LAST ProgStop?
SeqC SetHead EOL
SeqC Speed SpinOn EOL
SeqC AbsOrInc Feed StartPos RapidF EOL
SeqC SetOfstOn ToolOfst DCP1 EOL
ELSE
SeqC SpeedC EOL
SeqC AbsOrInc Feed StartPos RapidF EOL
IF NewToolOffset?
SeqC SetOfstOn ToolOfst DCP1 EOL
ELSE
IF NewWFO?
SeqC SetOfstOn ToolOfst DCP1 EOL
END
END
END
END
RETURN

End1:
SeqC SetOfstOff EOL
RETURN

End2:
DoEndOpPS
IF ProgStop?
SeqC ' M0' EOL
END
RETURN

End3:
SeqC SpinOff EOL
SeqC ToolChng EOL
SeqC HeadClear EOL
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
RETURN

MPallTools1P: {Multiple Parts, All Tools 1 Part}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
OpenMP
FirstOp1
SeqC SetPlane WFOStuff EOL
FirstOp1a
FirstOp2
FirstOp3
FirstOp4
ELSE
IF NewTool?
NewToolOp1
NewToolOp2 {to tool change, CS problem}
NewToolOp3
Seq SetPlane WFOStuff EOL
NewToolOp3a
NewToolOp4
NewToolOp5
NewToolOp6
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
End1 {End of program}
End2
CloseMP
End3
RETURN

MP1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
FirstOp1
SeqC SetPlane WFOStuff EOL
FirstOp1a
FirstOp2
OpenMP
FirstOp3
FirstOp4
ELSE
IF NewTool?
NewToolOp1
CloseMP
NewToolOp2 {to tool change, CS problem}
NewToolOp3
Seq SetPlane WFOStuff EOL
NewToolOp3a
NewToolOp4
OpenMP
NewToolOp5
NewToolOp6
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
End1 {End of program}
CloseMP
End2
End3
RETURN

MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
FirstOp1
SeqC SetPlane WFOStuff EOL
FirstOp1a
FirstOp2
FirstOp4
OpenMP
FirstOp3 {can't XY position before WFO}
ELSE
IF NewTool?
CloseMP
NewToolOp1
NewToolOp2 {to tool change, CS problem}
NewToolOp3
Seq SetPlane WFOStuff EOL
NewToolOp3a
NewToolOp4
NewToolOp6
OpenMP
NewToolOp5 {can't XY position before WFO}
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
CloseMP {End of program}
End1
End2
End3
RETURN

NoMPs: {no multiple parts}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
FirstOp1
SeqC SetPlane WFOStuff EOL
FirstOp1a
FirstOp2
FirstOp3
FirstOp4
ELSE
IF NewTool?
NewToolOp1
NewToolOp2
NewToolOp3
Seq SetPlane WFOStuff EOL
NewToolOp3a
NewToolOp4
NewToolOp5
NewToolOp6
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
IF LAST ProgStop?
SeqC SetPlane WFOStuff EOL
ELSE
IF Flag?('6')
SeqC SetPlane WFOStuff EOL
ELSE
IF NewWFO?
SeqC SetPlane WFOStuff EOL
END
END
END
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
End1 {End of program}
End2
End3
RETURN

{Start of executable Prog, Top Level ****}

ProgStart {setup and initializations}

IF MultipleParts?
IF AllToolsOnePart?
MPallTools1P
ELSE {implied OneToolAllParts?}
IF FullUp?
MP1ToollAllPfu
ELSE {implied ExitClearancePlane?}
MP1ToollAllPXcp
END
END
ELSE
NoMPs
END


Wyszukiwarka

Podobne podstrony:
Fanuc 18M Elgamill D468 15
Fanuc 18M MS [CST] NCT81 16
Fanuc 16M [AP] C789 13 5m
Fanuc 16M [SB] CX54 13 1
Fanuc 0M G54 D107 13
Fanuc 18M MS [MT] MT07 89
Fanuc 16M [AP] C789 13 5
Fanuc 11M Acromax M098 13
Fanuc 6M HS M048 13
Fanuc 0M G54 B107 13
Fanuc 18M Okuma Howa M973 89
Fanuc 18M MS [WP] CV86 15
Fanuc 16M LM [M&L] CT52 13 4
Fanuc 18M MS [RO] CQ52 15
Fanuc 11M MTS LH M059 13 1
Fanuc 3000C HS [NI] D384 13

więcej podobnych podstron