{Change Comments ***********************************************************}
{6/14/95, Updated for Catalyst v2.20 per Fanuc 10T MS [-] L001.85 Format, DWB}
{7/18/95, Added IF NOT LastFeat? at ckCRC sub, DWB}
{10/30/97
Changes to .86 format:
Changed all subroutine names to start w/ lower case letter,
modified max feed rate when in metric,
modified PostScript comment to reflect Virtual Utility Data,
fixed problem w/ CheckOffset of outputting 2 S words in a row,
added DoThreadSpringPass and SpringPass subs to properly output thread spring passes,
removed IF AutoFinish? sections in Canned threading and all non-canned ops, this
condition could never be true,
modified ThreadFeat?, RapidFeat?, added AND LAST Threading? to CheckRapid, and added
AND Threading? to section at end of program that checks Rapid status,
MPK
}
{10/30/97
Initial: Fanuc 10T MS L001.86 (my own version, not yet made standard)
Created: Fanuc 6T Tak [NE]Lxxx.85
For: Northern Engraving
Northern Eng wanted a Fanuc 6T post that changed gears like their Siemens 3T Tacchi NE L614.85.2 post,
added the subroutines to accomplish the gear changes per Siemens 3T Tacchi NE L614.85.2,
changed flag to suppress redundant G92 output for canned threading spring passes to Flag('3'),
changed Max RPM to 2000,
MPK
}
{12/7/97
Intial: Fanuc 6T Tak [NE] L686.86
Created: Fanuc 6T Tak [NE] L686.86.1
For: Northern Engraving
This is the first attempt at supporting tailstock for the customer, thus:
Major changes the approach and exit movement in FirstOp, NewTool, and end of program,
In FirstOp and NewTool, OD approaches should stay at the X home pos and then move back to the
ZSP, rapid to the XOpCD and feed to the XSP, ID should rapid to the XOpCD while at Z home pos,
rapid to the ZSP, then feed to the XSP. Face Ops should rapid to the XSP at the Z home pos, rapid
to the ZOpCP, then feed to the ZSP.
Exits should occur as follows for NewTool and at end of program:
OD should rapid to the X home pos (of the current tool) and then to the Z home pos
ID should rapid to XOpECD, then to the Z home pos, then to X home pos,
Face should rapid to the Z home pos and then to the X home pos.
Added extra G50 block at start of program that outputs the tool change pos with no offset or turret
shift changes,
made several cosmetic changes per customer fax.
fixed bugs in tpToolPath the would have resulted in wrong toolpath if a feature caused the machine to
jump two gears.
modified form to use R format arcs,
MPK
}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '###.####;0.'
#3 = '#######0'
#4 = '###^##0'
#5 = '#.######;0.'
#6 = '###0'
#7 = '#'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Recall#,2)
FORMAT(SUB#,2)
FORMAT(FirstMoveEPZ#,2)
FORMAT(HomeZ#,2)
FORMAT(TrackX#,2)
FORMAT(TrackZ#,2)
FORMAT(Program#,3)
FORMAT(Operation#,3)
FORMAT(Tool#,3)
FORMAT(Dwell#,4)
FORMAT(FeedIPR#,5)
FORMAT(CalcEPRPM#,6)
FORMAT(RapidF#,7)
{Gear Change Subroutines ****************************************}
checkGear:
IF ConstantSurfaceFeed?
IF NOT Metric?
Save# Num#('5') Abs# DIV# MUL# Num#('12') SpeedSFPM# MUL# Num#('3.1416') CycleStartX#
ELSE
Save# Num#('5') Abs# DIV# MUL# Num#('1000') SpeedSFPM# MUL# Num#('3.1416') CycleStartX#
END
{ **** This section then saves into a variable what the gearrange was at the feature SP ***}
IF LessThan? Recall# Num#('5') Num#('300')
SeqLabC 'M41' EOL
Save# Num#('6') Num#('1')
ELSE
IF LessThan? Recall# Num#('5') Num#('750')
SeqLabC 'M42' EOL
Save# Num#('6') Num#('2')
ELSE
SeqLabC 'M43' EOL
Save# Num#('6') Num#('3')
END
END
ELSE
IF LessThan? SpeedRPM# Num#('300')
SeqLabC 'M41' EOL
Save# Num#('6') Num#('1')
ELSE
IF LessThan? SpeedRPM# Num#('750')
SeqLabC 'M42' EOL
Save# Num#('6') Num#('2')
ELSE
SeqLabC 'M43' EOL
Save# Num#('6') Num#('3')
END
END
END
RETURN
stCheckGear: {checks for necessary gear changes in ApproachSP when SameTool? is true}
IF SameTool?
IF ConstantSurfaceFeed?
{saves into a var which X pos will be used, depending on approach type}
IF ApproachFace?
Save# Num#('10') CycleStartX#
ELSE
Save# Num#('10') XOpCD#
END
{ **** This section Calculates CSS RPM at Cycle start ***}
IF NOT Metric?
Save# Num#('5') Abs# DIV# MUL# Num#('12') SpeedSFPM# MUL# Num#('3.1416') Recall# Num#('10')
ELSE
Save# Num#('5') Abs# DIV# MUL# Num#('1000') SpeedSFPM# MUL# Num#('3.1416') Recall# Num#('10')
END
{ **** This section then saves into a variable what the gearrange will be at the Cycle start. ***}
IF LessThan? Recall# Num#('5') Num#('300')
Save# Num#('7') Num#('1')
ELSE
IF LessThan? Recall# Num#('5') Num#('750')
Save# Num#('7') Num#('2')
ELSE
Save# Num#('7') Num#('3')
END
END
{outputs the gearchange and other required code}
IF NOT Equal? Recall# Num#('6') Recall# Num#('7')
SeqLabC SpinOff EOL
SeqLabC 'G04F1.' EOL
IF Equal? Recall# Num#('7') Num#('1')
SeqLabC 'M41' EOL
Save# Num#('6') Num#('1')
SeqLabC Preset 'S300' EOL
ELSE
IF Equal? Recall# Num#('7') Num#('2')
SeqLabC 'M42' EOL
Save# Num#('6') Num#('2')
SeqLabC Preset 'S750' EOL
ELSE
SeqLabC 'M43' EOL
Save# Num#('6') Num#('3')
SeqLabC Preset 'S1000'
EOL
END
END
SeqLabC SpinOn EOL
SeqLabC 'G04F1.' EOL
END
END
END
RETURN
getGearDirection:
{Determines the direction of the cutting in order to determine which direction to allow gear changes}
IF Roughing? AND NOT CannedCycle? AND ConstantSurfaceFeed?
EachFeat
IF LastFeat?
Save# Num#('10') EPX#
END
IF GTEqual? CycleStartX# Recall# Num#('10')
SetFlag('2')
SetFlagF('1')
ELSE
SetFlag('1')
SetFlagF('2')
END
NextFeat
END
RETURN
tpCheckGear: {checks gears inside of toolPath}
{*** This sub only allows the post to shift gears one direction per operation.}
{*** If the calculated RPM dictates a gear change in the opposite direction than what has been established,}
{*** the gear change will be suppressed}
IF Roughing? AND NOT CannedCycle? AND ConstantSurfaceFeed?
{ **** This section Calculates CSS RPM at feature EP ***}
IF NOT Metric?
Save# Num#('5') Abs# DIV# MUL# Num#('12') SpeedSFPM# MUL# Num#('3.1416') EPX#
ELSE
Save# Num#('5') Abs# DIV# MUL# Num#('1000') SpeedSFPM# MUL# Num#('3.1416') EPX#
END
{ **** This section then saves into a variable what the gearrange will be at the feature EP ***}
IF LessThan? Recall# Num#('5') Num#('300')
Save# Num#('7') Num#('1')
ELSE
IF LessThan? Recall# Num#('5') Num#('750')
Save# Num#('7') Num#('2')
ELSE
Save# Num#('7') Num#('3')
END
END
{*** This section allows gear changes to occur in the downward direction only if that is the direction determined by getGearDirection}
IF Flag?('1')
IF LessThan? Recall# Num#('7') Recall# Num#('6')
IF Equal? SPX# EPX#
SeqLabC RapidC MoveXC MoveZC EOL
ELSE
IF NOT Equal? SPZ# EPZ#
IF Equal? Recall# Num#('6') Num#('1')
SeqLabC 'X' Recall# Num#('8') 'Z' SUB# SPZ# DIV# SUB# SPZ# EPZ# DIV# SUB# EPX# SPX# SUB# Recall# Num#('8') SPX#
ELSE
IF Equal? Recall# Num#('6') Num#('2')
IF Equal? Recall# Num#('7') Num#('1')
SeqLabC 'X' Recall# Num#('8') 'Z' SUB# SPZ# DIV# SUB# SPZ# EPZ# DIV# SUB# EPX# SPX# SUB# Recall# Num#('8') SPX#
END
ELSE
SeqLabC 'X' Recall# Num#('9') 'Z' SUB# SPZ# DIV# SUB# SPZ# EPZ# DIV# SUB# EPX# SPX# SUB# Recall# Num#('9') SPX#
END
END
END
EOL
END
IF Equal? Recall# Num#('7') Num#('2')
SeqLabC SpinOff EOL
SeqLabC 'M42' EOL
Save# Num#('6') Num#('2')
SeqLabC Preset 'S750' EOL
ELSE
SeqLabC SpinOff EOL
SeqLabC Preset 'S300' EOL
SeqLabC 'M41' EOL
IF Equal? Recall# Num#('6') Num#('3') AND Equal? Recall# Num#('7') Num#('1')
SeqLabC RapidC MoveXC MoveZC EOL {IF feature goes through 2 gears, goes to endpoint before starting spindle}
END
Save# Num#('6') Num#('1')
END
SeqLabC SpinOn EOL
END
END
{*** This section allows gear changes to occur in the upward direction only if that is the direction determined by getGearDirection}
IF Flag?('2')
IF GreaterThan? Recall# Num#('7') Recall# Num#('6')
IF Equal? SPX# EPX#
SeqLabC RapidC MoveXC MoveZC EOL
ELSE
IF NOT Equal? SPZ# EPZ#
IF Equal? Recall# Num#('6') Num#('1')
SeqLabC 'X' Recall# Num#('8') 'Z' SUB# SPZ# DIV# SUB# SPZ# EPZ# DIV# SUB# EPX# SPX# SUB# Recall# Num#('8') SPX#
ELSE
IF Equal? Recall# Num#('6') Num#('2') AND Equal? Recall# Num#('7') Num#('1')
SeqLabC 'X' Recall# Num#('8') 'Z' SUB# SPZ# DIV# SUB# SPZ# EPZ# DIV# SUB# EPX# SPX# SUB# Recall# Num#('8') SPX#
ELSE
SeqLabC 'X' Recall# Num#('9') 'Z' SUB# SPZ# DIV# SUB# SPZ# EPZ# DIV# SUB# EPX# SPX# SUB# Recall# Num#('9') SPX#
END
END
END
EOL
END
IF Equal? Recall# Num#('7') Num#('2')
SeqLabC Preset 'S750' EOL
SeqLabC SpinOff EOL
SeqLabC 'M42' EOL
Save# Num#('6') Num#('2')
ELSE
SeqLabC Preset 'S2000' EOL
SeqLabC SpinOff EOL
SeqLabC 'M43' EOL
IF Equal? Recall# Num#('6') Num#('1') AND Equal? Recall# Num#('7') Num#('3')
SeqLabC RapidC MoveXC MoveZC EOL
END
Save# Num#('6') Num#('3')
END
SeqLabC SpinOn EOL
END
END
END
RETURN
CalcBreakPoint:
{*** This sub calculates the X points at which a gear chang is appropriate given the current SFPM}
IF ConstantSurfaceFeed?
Save# Num#('8') Abs# DIV# MUL# Num#('12') SpeedSFPM# MUL# Num#('3.1416') NUM#('300')
Save# Num#('9') Abs# DIV# MUL# Num#('12') SpeedSFPM# MUL# Num#('3.1416') NUM#('750')
END
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
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# ': ' ToolSize$ ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
restoreScale
END
RETURN
psInit: {reset flags from last Op, .70}
RETURN
psStuff:
RETURN
doPostScript:
psInit
EachPS
SeqLabC PostScript EOL {literals}
psStuff {commands}
NextPS
RETURN
doEndOpPS:
psInit
EachEOPS
SeqLabC EndOpPS EOL {literals}
psStuff {commands}
NextPS
RETURN
tagNext: {outputs the ASCII character that Retag uses}
ASCII('62') {with Tag# to reference the sequence # stored with tagNext}
RETURN
tagNextRef: {outputs the ASCII character that Retag uses}
ASCII('179') {with Tag# to reference the sequence # stored with tagNext}
RETURN
tagPrev: {outputs the ASCII character that Retag uses}
ASCII('60') {with Tag# to store the previous sequence #}
RETURN
tagPrevRef: {outputs the ASCII character that Retag uses}
ASCII('178') {with Tag# to reference the sequence # stored with tagPrev}
RETURN
stockOnNoCan:
IF NOT CannedCycle?
StockOn {need stock for SP positioning, if not a canned cycle}
END
RETURN
feedNoCan:
IF NOT CannedCycle?
FeedC
END
RETURN
feedRateNoCan:
IF NOT CannedCycle?
FeedRateC
END
RETURN
approachSP:
IF ApproachFace?
stCheckGear
SeqLabC stockOnNoCan XSPC EOL
SeqLabC StockOff ZOpCPC EOL
stockOnNoCan
IF NotEqual? CycleStartZ# ZOpCP#
SeqLabC feedNoCan ZSPC feedRateNoCan EOL
END
ELSE { ODApproach/IDApproach }
SeqLabC stockOnNoCan ZSPC EOL
stCheckGear
SeqLabC StockOff XOpCDC EOL
stockOnNoCan
IF NotEqual? CycleStartX# XOpCD#
SeqLabC feedNoCan XSPC feedRateNoCan EOL
END
END
RETURN
appMove:
StockOff CoolOn
RETURN
approach: { MODIFIED FOR TAILSTOCK, 12/7/97 - MPK }
Rapid RapidF# { RapidF# Forces FeedRate }
IF ApproachOD?
SeqLabC ZSP AppMove EOL
ELSE
IF ApproachID?
SeqLabC XOpCD appMove EOL
SeqLabC ThisOpEntryZCP EOL
ELSE {ApproachFace}
SeqLabC stockOnNoCan XSP appMove EOL
END
END
approachSP
RETURN
approachSP1:
IF ApproachFace?
stCheckGear
SeqLabC stockOnNoCan XSPC EOL
SeqLabC StockOff ZOpCPC EOL
stockOnNoCan
IF NotEqual? CycleStartZ# ZOpCP#
SeqLabC feedNoCan ZSPC feedRateNoCan EOL
END
ELSE { ODApproach/IDApproach }
SeqLabC stockOnNoCan ZSPC EOL
stCheckGear
SeqLabC StockOff XOpCDC EOL
stockOnNoCan
IF NotEqual? CycleStartX# XOpCD#
SeqLabC feedNoCan XSPC feedRateNoCan EOL
END
END
RETURN
appMove1:
StockOff ThisOpEntryZCP CoolOn
RETURN
approach1: { NOT FOR TAILSTOCK, .82 }
Rapid RapidF# { RapidF# Forces FeedRate }
IF ApproachOD?
SeqLabC ThisOpEntryXCP appMove EOL
ELSE
IF ApproachID?
SeqLabC XOpCD appMove EOL
ELSE {ApproachFace}
SeqLabC stockOnNoCan XSP appMove EOL
END
END
approachSP
RETURN
checkOffset:
doEndOpPS
IF LAST ProgStop?
SeqLabC 'M0' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
END
IF NewToolOffset?
SeqLabC LOfstOff '00' EOL
SeqLabC OpToolID LatheOffset EOL
END
IF ConstantSurfaceFeed?
IF LAST ConstantSurfaceFeed?
IF NotEqual? MaxRPM# LAST MaxRPM#
SeqLabC Preset MaxRPM EOL
END
IF NotEqual? SpeedRPM# LAST SpeedRPM#
SeqLabC Speed
END
ELSE
SeqLabC Preset MaxRPM EOL
SeqLabC CSSOn 'G96' Speed
END
ELSE
IF LAST ConstantSurfaceFeed?
SeqLabC CSSOff 'G97' Speed
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
SeqLabC Speed
END
END
END
IF LAST ProgStop?
SpinOn EOL
SeqLabC CoolOn EOL
ELSE
EOL
IF NOT CoolOff? AND LAST CoolOff?
SeqLabC CoolOn EOL
END
END
doPostScript
RETURN
formatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXC MoveZC
IF ArcIJFormat?
ArcIJC
ELSE
ArcRC
END
RETURN
ckCRC: { 4.2 }
IF XMove? OR ZMove? { Approach Length Feature and Multiple Pockets }
IF NOT LastFeat?
CRCOnC
END
END
IF LastFeat? AND EmptyLine? { Exit Length Feature }
CRCOffC
END
RETURN
toolPath:
getGearDirection
EACHFeat
GetToolTip
IF LastFeat?
IF Drilling?
IF Tap?
SeqLabC SpinOff EOL
SeqLabC 'G4P2000' EOL
SeqLabC Speed InverseSpinOn EOL
ELSE
IF Dwell?
SeqLabC 'G4P' Dwell# EOL
END
END
ELSE
IF CannedCycle?
SeqLab
END
END
END
IF PointFeat?
SeqLabC MoveSXYC EOL
ELSE
IF RapidFeat?
tpCheckGear
SeqLabC
IF NOT FirstFeat? AND LAST ThreadFeat?
Rapid
ELSE
RapidC
END
MoveXC MoveZC EOL
ELSE
IF LineFeat?
SeqLabC ckCRC FeedC MoveXC MoveZC FeedRateC EOL
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop }
SeqLabC formatArc FeedRateC EOL
NEXTQuadrant
ELSE
IF ThreadFeat?
IF NOT FirstFeat? AND LAST ThreadFeat?
SeqLabC MoveXC MoveZC EOL
ELSE
SeqLabC 'G32' MoveXC MoveZC ThrdLead EOL
END
END
END
END
END
END
NEXTFeat
RETURN
checkRapid:
CRCOffC
IF LAST CannedCycle? OR LAST Threading?
Rapid
ELSE
RapidC
END
RETURN
SpringPass:
IF GreaterThan? Recall# NUM#('9') NUM#('0')
IF Flag?('3')
SeqLabC 'G92' XatFinZ EOL
SetFlagF('3')
ELSE
SeqLabC XatFinZ EOL
END
END
END
Save# NUM#('9') SUB# Recall# NUM#('9') NUM#('1') {counter}
RETURN
DoThreadSpringPass:
IF Taper?
'**********WARNING***G92 SPRING PASS WILL NOT WORK PROPERLY*********' EOL
'******WITH TAPERED THREAD. SET NO. OF SPRING PASSES TO ZERO.*******' EOL
ELSE
Save# NUM#('9') SpringPasses#
SetFlag('3')
SpringPass SpringPass SpringPass SpringPass SpringPass
END
RETURN
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
SetAbs
PosSideLathe
SetFlag('3') {canned threading spring passes}
SetMaxRPM('2000')
IF Metric?
SetMaxFeed('10000')
ELSE
SetMaxFeed('500')
END
IF PSComment? AND UseComments?
'Utility Data:' EOL
' AT OP START / AT OP END' EOL
' all literals and commands in AT OP START box' EOL
' will appear at the beginning of the operation. ' EOL
' All literals and commands in AT OP END box' EOL
' will appear at the end of the operation. ' 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
END
EachOp {Start of post processing *********************}
GetLCycle
IF FirstOperation?
EOR EOL
ProgID1
IF UseComments? AND ProgramNameComment?
'( ' ProgramName$ ' )'
END
EOL
IF UseComments?
IF ProgramComment?
'( ' ProgramComment$ ' )' EOL
END
IF FormatNameComment?
'( FORMAT: ' FormatName$ ' )' EOL
END
IF TimeComment?
'( ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
'( OUTPUT IN ABSOLUTE INCHES )' EOL
END
END
restoreScale
OpenSub
StockOff {.71.2}
SetHome
doOpComments
doPostScript
Plane
SeqLab Preset 'X' SUB# TurretX# PRIME TurretX# 'Z' SUB# TurretZ# PRIME TurretZ# EOL
SeqLabC 'M16' EOL
SeqLabC 'Z' HomeZ# EOL
SeqLab Preset Home MaxRPM EOL
SeqLabC OpToolID LatheOffset 'M16' EOL
SeqLabC checkGear EOL
SeqLabC
IF ConstantSurfaceFeed?
'G96' CSSOn
ELSE
'G97' CSSOff
END
Speed SpinOn EOL
approach
ELSE
IF NewTool?
{Finish off last Operation}
StockOff {.62}
checkRapid
IF LAST ApproachOD?
SeqLabC 'X' TrackX# NewHomeX# CoolOff EOL
SeqLabC 'Z' TrackZ# NewHomeZ# EOL
ELSE
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
SeqLabC 'Z' TrackZ# NewHomeZ# CoolOff EOL
SeqLabC 'X' TrackX# NewHomeX# EOL
ELSE {Approach Face}
SeqLabC 'Z' TrackZ# NewHomeZ# CoolOff EOL
SeqLabC 'X' TrackX# NewHomeX# EOL
END
END
doEndOpPS
SeqLabC LOfstOff '00' EOL
IF LAST ProgStop?
SeqLabC 'M0' EOL
ELSE
SeqLabC ProgStop EOL
END
{Start new Operation}
doOpComments
doPostScript
SeqLab Preset Home MaxRPM EOL
SeqLabC OpToolID LatheOffset 'M16' EOL
SeqLabC checkGear EOL
SeqLabC
IF ConstantSurfaceFeed?
'G96' CSSOn
ELSE
'G97' CSSOff
END
Speed SpinOn EOL
approach
ELSE
IF SameTool? {.62}
{Start new Operation}
StockOff
doOpComments
IF LAST StraightConnect?
checkOffset
checkRapid
SeqLabC stockOnNoCan XSPC ZSPC EOL
ELSE
checkRapid
IF ApproachOD?
IF LAST ApproachOD?
SeqLabC LAST XOpECDC EOL
ELSE {around}
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
END
SeqLabC LAST OpExitZCPC EOL
SeqLabC LAST OpExitXCPC EOL
END
ELSE
IF ApproachID?
IF LAST ApproachID?
SeqLabC LAST XOpECDC EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC EOL
END
SeqLabC LAST OpExitZCPC EOL
SeqLabC XOpCDC EOL
END
ELSE {ApproachFace}
IF LAST ApproachFace?
SeqLabC LAST ZOpECPC EOL
ELSE
IF LAST ApproachOD? {around}
SeqLabC LAST OpExitXCPC EOL
ELSE {LAST ApproachID}
SeqLabC LAST XOpECDC EOL
END
SeqLabC
LAST OpExitZCPC EOL
END
END
END
checkOffset
approachSP
END
END
END
END {common point for all operations}
calcBreakPoint
IF CannedCycle?
StockOff
IF Roughing?
IF RoughSimple?
StockOn
SetPass1
SeqLabC LCycle
IF ApproachFace?
'Z' FirstMoveEPZ# XatFinZ
ELSE
XatFinZ FinZ
END
XTapAtZ FeedRate EOL
SimpleRough
ELSE
TagInc
SetPass2
IF RoughContour?
SeqLabC LCycle 'P' tagNextRef Tag# 'Q' tagPrevRef Tag# XStkLeft ZStkLeft CutDepth FeedRate EOL
tagNext Tag# EOL
SeqLab StepMove StrtPos EOL
ELSE
IF RoughPatternShift?
SeqLabC LCycle 'P' tagNextRef Tag# 'Q' tagPrevRef Tag# XStkLeft ZStkLeft XminusU ZminusW NumCuts FeedRate EOL
tagNext Tag# EOL
SeqLab Rapid StrtPos EOL
END
END
toolPath
tagPrev Tag# EOL
IF AutoFinish?
SeqLabC 'G70' 'P' tagNextRef Tag# 'Q' tagPrevRef Tag# EOL
END
SetPass1
TrackXNO# CycleStartX#
TrackZNO# CycleStartZ#
END
ELSE
IF Threading?
IF Chamfer?
SeqLabC 'M23' EOL
END
SeqLabC LCycle XatFinZ FinZ XTapAtZ CutMethod ThrdHeight CutDepth ThrdLead ToolAngle EOL
IF GreaterThan? SpringPasses# Num#('0')
DoThreadSpringPass
END
IF Chamfer?
SeqLabC 'M24' EOL
END
ELSE
IF Drilling?
IF Tap?
SeqLabC LCycle ZDepth 'E' FeedIPR# EOL
SeqLabC SpinOff EOL
SeqLabC 'G4P2000' EOL
SeqLabC Speed InverseSpinOn EOL
SeqLabC ZSP EOL
ELSE
IF PeckChipBreaker?
SeqLabC LCycle ZDepth RLevel Dwell Peck Retract FeedRate EOL
SeqLabC DrillOff EOL
IF AutoFinish?
SeqLabC Feed ZDepth EOL
IF Dwell?
SeqLabC 'G4P' Dwell# EOL
END
SeqLabC Rapid ZSP EOL
END
END
END
END
END
END
ELSE
StockOn
SetPass1
toolPath
END
IF Drilling? AND Tap?
SeqLabC SpinOff EOL
SeqLabC 'G4P2000' EOL
SeqLabC Speed SpinOn EOL
END
NextOp {loops back to EachOP until last Operation}
{End of program ************************************************************}
{finish last operation}
StockOff
CRCOffC
IF CannedCycle? OR Threading?
Rapid
ELSE
RapidC
END
IF ApproachOD?
SeqLabC 'X' TrackX# HomeX# CoolOff EOL
SeqLabC 'Z' TrackZ# HomeZ# EOL
ELSE
IF ApproachID?
SeqLabC XOpECDC EOL
SeqLabC 'Z' TrackZ# HomeZ# CoolOff EOL
SeqLabC 'X' TrackX# HomeX# EOL
ELSE {ApproachFace}
SeqLabC 'Z' TrackZ# HomeZ# CoolOff EOL
SeqLabC 'X' TrackX# HomeX# EOL
END
END
doEndOpPS
SeqLabC CoolOff EOL
SeqLabC OpToolID '00' EOL
IF ProgStop?
SeqLabC 'M0' EOL
ELSE
SeqLabC ProgStop EOL
END
SeqLabC SpinOff EOL
SeqLabC EOP EOL
Post
EOR EOL
Close
Retag
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
Wyszukiwarka
Podobne podstrony:
Fanuc 6T Tak [ DI] L416 85 1Fanuc 6T Mazak [Mat] L393 82mFanuc 3TF Tak TS LTM L263 82 2Fanuc 6T HS [CSD] L208 85 2Fanuc 6T MS [SE] L683 85Fanuc 6T MS ( ) L005 85mFanuc 6T MS [ ] L016 85mFanuc 6T MS [VE] L392 85 1Fanuc 6T Tsugami 6 L199 82Fanuc 6T MS [JBT] L480 85Fanuc 6T Tsugami 4 L198 82Fanuc 6T MS [G92 R] L071 85Fanuc 6T Mazak [LAM] L621 85 5mFanuc 6T Dainichi B70 L229 82 2Fanuc 6T Mazak [AE] L454 85 1Fanuc 6T Mazak [GH] L688 85 1więcej podobnych podstron