{ 7/28/88 }
{ Original Post Fanuc 10T-MS-[-] L001.56 }
{ Jim Radcliffe }
{ new commands added for XZ moves w/ F by WFG, 10/10/88}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{10/7/93 thru 11/10/93
Modified: GE 102C LeBlonde L073.56
Updated to .82 format per Fanuc 10T MS [-] L001.82ż
Need proper GE commands to compile
Modified to "GE 550 LeBlonde [KSW] L219.82.7" format.
Jim Radcliffe}
{5/6/94
Modified: GE 102C Leblond [GV] L073.82
Forced Rapid after each ThreadFeat.
Jim Radcliffe}
{
Format: GE 102C Leblond [GV] L073.82.2
Added StatusOff and StatusOn to the FRN sub routine. This is to compenstate for strange behavior in the ArcR# function. It calls
ArcAngle which stores out the current XY positions incorrectly for Lathe. These functions will be fixed in ncPost in the future,
but for now, this change should work fine.
TH}
{Prog Numeric Format Definitions *******************************************}
#1 = '0.00'
#2 = '0^####'
#3 = '#######0'
#4 = '0#^###'
#5 = '0^######'
#6 = '0'
#7 = '0##^#'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(MUL#,2)
FORMAT(Program#,3) {.72}
FORMAT(Operation#,3) {.72}
FORMAT(Tool#,3) {.72}
FORMAT(Dwell#,4)
FORMAT(FeedIPR#,5)
FORMAT(ToolOffset#,6)
FORMAT(DIV#,7) { For Feed Rate }
{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
SeqC PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN
Dwell06:
'G04Z06'
RETURN
Dwell02:
'G04Z02'
RETURN
Dwell015:
'G04Z015'
RETURN
Dwell005:
'G04Z005'
RETURN
SetTraverseClutch:
Dwell015 'M40'
RETURN
SetFeedClutch:
Dwell015 'M41'
RETURN
EngageEncoder:
Dwell02 'M50'
RETURN
DisengageEncoder:
Dwell02 'M51'
RETURN
FRN:
SetStatusOff
IF ArcFeat?
Save# Num#('9') DIV# MUL# Recall# NUM#('9') NUM#('10') ArcR#
ELSE
Save# Num#('9') DIV# MUL# Recall# NUM#('9') NUM#('10') LineLength#
END
IF GreaterThan? Recall# NUM#('9') NUM#('500')
'F5'
ELSE
'F' DIV# Recall# NUM#('9') NUM#('1') { divided by 1 so I dont need a FORMAT for Recall }
END
SetStatusOn
RETURN
GetRapidF:
IF NOT EmptyLine?
Save# Num#('9') NUM#('100')
FRN
END
RETURN
GetFeedRate:
IF NOT EmptyLine?
Save# Num#('9') MUL# FeedIPR# SpeedRPM#
FRN
END
RETURN
GetTT:
SetAbs
SetStatusOff
StockOff
Save# Num#('2') SUB# SetTTOff CycleStartX# SetTTOk CycleStartX#
Save# Num#('1') SUB# SetTTOff CycleStartZ# SetTTOk CycleStartZ#
SetStatusOn
SetInc
RETURN
GetExit:
SetAbs
SetStatusOff
IF ApproachFace?
Save# Num#('7') ClearancePlane3# { ZEOpCP }
ELSE
Save# Num#('7') MUL# ClearancePlane3# Num#('2') { XEOpCD PosSideLathe }
Save# Num#('8') SUB# ClearancePlane3# Recall# Num#('2') { For XsAreRadii NewTool }
END
SetStatusOn
SetInc
RETURN
GetX:
Save# Num#('6') DIV# Recall# Num#('4') Num#('2') { PosSideLathe }
RETURN
GetZ:
Save# Num#('5') Recall# Num#('3')
RETURN
GetXTT:
Save# Num#('6') DIV# ADD# Recall# Num#('4') Recall# Num#('2') Num#('1') { XsAreRadii PosSideLathe }
RETURN
GetZTT:
Save# Num#('5') ADD# Recall# Num#('3') Recall# Num#('1')
RETURN
DoLoad:
SetAbs
SetTTOff
LoadFeat Recall# Num#('5') Recall# Num#('6')
SetTTOk
SetInc
RETURN
LoadX:
GetX DoLoad
RETURN
LoadZ:
GetZ DoLoad
RETURN
LoadXZ:
GetX GetZ DoLoad
RETURN
LoadXTT:
GetXTT DoLoad
RETURN
LoadZTT:
GetZTT DoLoad
RETURN
LoadXTTZ:
GetXTT GetZ DoLoad
RETURN
LoadXZTT:
GetX GetZTT DoLoad
RETURN
LoadXTTZTT:
GetXTT GetZTT DoLoad
RETURN
DoRapidX:
EachPiece
SeqC RapidC MoveXC GetRapidF EOL
NextPiece
RETURN
DoRapidZ:
EachPiece
SeqC RapidC MoveZC GetRapidF EOL
NextPiece
RETURN
DoRapidXZ:
EachPiece
SeqC RapidC MoveXC MoveZC GetRapidF EOL
NextPiece
RETURN
DoFeedX:
EachPiece
SeqC FeedC MoveXC GetFeedRate EOL
NextPiece
RETURN
DoFeedZ:
EachPiece
SeqC FeedC MoveZC GetFeedRate EOL
NextPiece
RETURN
DoFeedXZ:
EachPiece
SeqC FeedC MoveXC MoveZC GetFeedRate EOL
NextPiece
RETURN
GetXCP:
SetAbs
SetStatusOff
Save# Num#('4') XStockMax#
SetStatusOn
SetInc
RETURN
GetZCP:
SetAbs
SetStatusOff
Save# Num#('3') ZStockMax#
SetStatusOn
SetInc
RETURN
GetXOpCD:
SetAbs
SetStatusOff
Save# Num#('4') XOpCD#
SetStatusOn
SetInc
RETURN
GetZOpCP:
SetAbs
SetStatusOff
Save# Num#('3') ZOpCP#
SetStatusOn
SetInc
RETURN
GetXSP:
SetAbs
SetStatusOff
StockOn
Save# Num#('4') CycleStartX#
StockOff
SetStatusOn
SetInc
RETURN
GetZSP:
SetAbs
SetStatusOff
StockOn
Save# Num#('3') CycleStartZ#
StockOff
SetStatusOn
SetInc
RETURN
GetNewToolXOpECD:
SetAbs
Save# Num#('4') Recall# Num#('8')
SetInc
RETURN
GetSameToolXOpECD:
SetAbs
Save# Num#('4') Recall# Num#('7')
SetInc
RETURN
GetSameToolZOpECP:
SetAbs
Save# Num#('3') Recall# Num#('7')
SetInc
RETURN
ODApproachSP:
GetZSP LoadZTT
StockOff DoRapidZ
GetXOpCD LoadXTT
DoRapidX
SeqC Dwell005 EOL
IF Threading?
SeqC EngageEncoder EOL
ELSE
SeqC SetFeedClutch EOL
END
IF NotEqual? CycleStartX# XOpCD#
GetXSP LoadXTT
StockOff
IF Threading?
DoRapidX
ELSE
DoFeedX
END
END
StockOn
RETURN
IDApproachSP:
GetZSP LoadZTT
StockOff DoRapidZ
GetXOpCD LoadXTT
DoRapidX
SeqC Dwell005 EOL
IF Threading?
SeqC EngageEncoder EOL
ELSE
SeqC SetFeedClutch EOL
END
IF NotEqual? CycleStartX# XOpCD#
GetXSP LoadXTT
StockOff
IF Threading?
DoRapidX
ELSE
DoFeedX
END
END
StockOn
RETURN
FaceApproachSP:
GetXSP LoadXTT
StockOff DoRapidX
GetZOpCP LoadZTT
DoRapidZ
SeqC Dwell005 EOL
IF Threading?
SeqC EngageEncoder EOL
ELSE
SeqC SetFeedClutch EOL
END
IF NotEqual? CycleStartZ# ZOpCP#
GetZSP LoadZTT
StockOff
IF Threading?
DoRapidZ
ELSE
DoFeedZ
END
END
StockOn
RETURN
AppMove:
LoadXTTZTT
StockOff Rapid DoRapidXZ
RETURN
Approach: { NOT FOR TAILSTOCK, .82 }
GetZCP
IF ApproachOD?
GetXCP AppMove
ODApproachSP
ELSE
IF ApproachID?
GetXOpCD AppMove
IDApproachSP
ELSE {ApproachFace}
GetXSP AppMove
FaceApproachSP
END
END
RETURN
CheckOffset:
DoEndOpPS
IF LAST ProgStop?
SeqC Dwell06 'M00' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
END
DoOpComments
DoPostScript
IF NewToolOffset?
SeqC 'T000' EOL
SeqC 'T00' ToolOffset# EOL
END
IF LAST ProgStop?
SeqC Dwell06 TABLE(1,SpeedRPM#,1) SpinOn EOL
SeqC Dwell005 CoolOn EOL
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
SeqC Dwell06 TABLE(1,SpeedRPM#,1) EOL
END
IF NOT CoolOff? AND LAST CoolOff?
SeqC Dwell005 CoolOn EOL
END
END
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXC MoveZC ArcJC ArcIC GetFeedRate
RETURN
GetICosine:
IF Taper?
'I' MUL# FeedIPR# DIV# Taper# FinishZInc#
END
RETURN
GetSingleEdgeCut:
SetStatusOff
SetAbs
Save# Num#('4') EPX#
Save# Num#('3') ADD# SPZ# MUL# Num#('-1') ABS# MUL# SUB# SPX# EPX# TAN# Num#('30')
SetInc
SetStatusOn
LoadXTTZTT
RETURN
ToolPath:
EACHFeat
GetToolTip
{
CalcEpRPM# is not working inside the TABLE argument!
IF ConstantSurfaceFeed?
SeqC TABLE(1,CalcEpRPM#,1) EOL
END
}
IF LastFeat?
IF Drilling?
IF Tap?
SeqC SpinOff EOL
SeqC Dwell02 EOL
SeqC Dwell06 TABLE(1,SpeedRPM#,1) InverseSpinOn EOL
ELSE
IF Dwell?
SeqC 'G04Z' Dwell# EOL
END
END
END
END
IF PointFeat?
SeqC MoveSXYC EOL
ELSE
IF RapidFeat?
IF NOT LAST Rapid?
SeqC Dwell005 EOL
SeqC SetTraverseClutch EOL
END
IF Threading? AND SingleEdgeCut? AND NEXT ThreadFeat? AND NOT Taper?
GetSingleEdgeCut
END
DoRapidXZ
ELSE
IF LineFeat?
IF LAST Rapid?
SeqC Dwell005 EOL
SeqC SetFeedClutch EOL
END
IF CannedCycle? AND Drilling? AND Tap?
EachPiece
SeqC MoveXC MoveZC 'K' FeedIPR# 'F900' EOL
NextPiece
ELSE
DoFeedXZ
END
ELSE
IF ArcFeat?
IF LAST Rapid?
SeqC Dwell005 EOL
SeqC SetFeedClutch EOL
END
EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop }
SeqC FormatArc EOL
NEXTQuadrant
ELSE
IF ThreadFeat?
EachPiece
SeqC 'G33' MoveXC MoveZC GetICosine ThrdLead EOL
NextPiece
Rapid
END
END
END
END
END
IF LastFeat?
SetAbs
SetStatusOff
Save# Num#('4') EPX#
Save# Num#('3') EPZ#
SetStatusOn
SetInc
END
NEXTFeat
RETURN
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
SetInc
PosSideLathe
ReverseXZArcs
XsAreRadii
SetMaxAxis('9.9999')
SetMaxRPM('1323')
SetMaxFeed('500')
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: must be all capital letters when typed in.' 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
EachOp {Start of post processing *********************}
GetLCycle
GetTT
IF FirstOperation?
EOR EOL
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 INCREMENTAL INCHES )' EOL
END
END
RestoreScale
OpenSub
StockOff {.71.2}
SetHome
DoOpComments
DoPostScript
Plane
Seq Dwell06 TABLE(1,SpeedRPM#,1) OpToolID ToolOffset# SpinOn EOL
SeqC SetTraverseClutch EOL
SeqC Dwell005 CoolOn EOL
Approach
ELSE
IF NewTool?
{Finish off last Operation}
StockOff {.62}
SeqC Dwell005 EOL
IF LAST Threading?
SeqC DisengageEncoder EOL
ELSE
IF NOT LAST Rapid?
SeqC SetTraverseClutch EOL
END
END
IF LAST ApproachOD?
GetXCP LoadXTTZTT
DoRapidX
ELSE
IF LAST ApproachID?
GetNewToolXOpECD LoadXTTZTT
DoRapidX
END
END
GetZCP LoadXTTZTT
DoRapidZ
DoEndOpPS
SetStatusOff
Save# Num#('4') NewHomeX#
Save# Num#('3') NewHomeZ#
SetStatusOn
LoadXTTZTT
DoRapidXZ
SeqC 'T000' EOL
IF LAST ProgStop?
SeqC Dwell06 'M00' ASCII('13') EOL
ELSE
SeqC Dwell06 ProgStop ASCII('13') EOL
END
{Start new Operation}
DoOpComments
DoPostScript
Seq Dwell06 TABLE(1,SpeedRPM#,1) OpToolID ToolOffset# SpinOn EOL
SeqC SetTraverseClutch EOL
SeqC Dwell005 CoolOn EOL
SetAbs
SetStatusOff
Save# Num#('4') HomeX#
Save# Num#('3') HomeZ#
SetStatusOn
LoadXTTZTT
TrackXNO# EPX#
TrackZNO# EPZ#
SetInc
Approach
ELSE
IF SameTool? {.62}
{Start new Operation}
StockOff
SeqC Dwell005 EOL
IF LAST Threading?
SeqC DisengageEncoder EOL
ELSE
IF NOT LAST Rapid?
SeqC SetTraverseClutch EOL
END
END
IF LAST StraightConnect?
CheckOffset
GetXSP GetZSP LoadXTTZTT
StockOff DoRapidXZ
StockOn
ELSE
IF ApproachOD?
IF LAST ApproachOD?
GetSameToolXOpECD LoadXZTT
DoRapidX
ELSE {around}
IF LAST ApproachID?
GetSameToolXOpECD LoadXTTZ
DoRapidX
END
GetZCP LoadXTTZTT
DoRapidZ
GetXCP LoadXTTZTT
DoRapidX
END
CheckOffset
ODApproachSP
ELSE
IF ApproachID?
IF LAST ApproachID?
GetSameToolXOpECD LoadXZTT
DoRapidX
ELSE
IF LAST ApproachOD? {around}
GetXCP LoadXTTZ
DoRapidX
END
GetZCP LoadXTTZTT
DoRapidZ
GetXOpCD LoadXTTZTT
DoRapidX
END
CheckOffset
IDApproachSP
ELSE {ApproachFace}
IF LAST ApproachFace?
GetSameToolZOpECP LoadXTTZ
DoRapidZ
ELSE
IF LAST ApproachOD? {around}
GetXCP LoadXTTZ
DoRapidX
ELSE {LAST ApproachID}
GetSameToolXOpECD LoadXTTZ
DoRapidX
END
GetZCP LoadXZTT
DoRapidZ
END
CheckOffset
FaceApproachSP
END
END
END
END
END
END {common point for all operations}
GetExit
StockOn
SetPass1
ToolPath
IF AutoFinish?
IF NOT Drilling? AND NOT Grooving? AND NOT RoughSimple? AND NOT Threading?
StockOff
IF Turning?
SetPass1
IF ApproachOD?
GetSameToolXOpECD LoadXZTT
DoRapidX
ODApproachSP
ELSE
IF ApproachID?
GetSameToolXOpECD LoadXZTT
DoRapidX
IDApproachSP
ELSE {ApproachFace}
GetSameToolZOpECP LoadXTTZ
DoRapidz
FaceApproachSP
END
END
ELSE
SetPass2
END
SetAbs
SetStatusOff
Save# Num#('4') CycleStartX#
Save# Num#('3') CycleStartZ#
SetStatusOn
LoadXTTZTT
SetInc
DoRapidXZ
ToolPath
END
END
IF Drilling? AND Tap?
SeqC SpinOff EOL
SeqC Dwell02 EOL
SeqC Dwell06 TABLE(1,SpeedRPM#,1) SpinOn EOL
END
NextOp {loops back to EachOP until last Operation}
{End of program ************************************************************}
{finish last operation}
StockOff
SeqC Dwell005 EOL
IF Threading?
SeqC DisengageEncoder EOL
ELSE
IF NOT LAST Rapid?
SeqC SetTraverseClutch EOL
END
END
IF ApproachOD?
GetXCP LoadXTTZTT
DoRapidX
ELSE
IF ApproachID?
GetNewToolXOpECD LoadXTTZTT
DoRapidX
END
END
GetZCP LoadXTTZTT
DoRapidZ
DoEndOpPS
SetAbs
SetStatusOff
Save# Num#('4') FirstHomeX#
Save# Num#('3') FirstHomeZ#
SetStatusOn
LoadXTTZTT
SetInc
DoRapidXZ
SeqC Dwell005 EOL
SeqC SetFeedClutch EOL
SeqC Dwell005 SpinOff 'T000' EOL
SeqC Dwell06 EOP EOL
EOR EOL
Post
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
Wyszukiwarka
Podobne podstrony:
GE 1050T LeBlonde [CM] L249 82GE 550 LeBlonde [KSW] L219 82 8GE 1050 LeBlonde [DEW] L250 82GE 550 LeBlonde (CCD) L178 82GE 550 LeBlond (HAC) L115 82GE 550T LeBlonde L082 82GE 550 L&S [GV] L293 82 3GE 550 LeBlonde L080 82GE 550L LeBlonde L083 82GE 550L LeBlonde [R&R] L241 82GE 1050 LeBlonde Rgl L033 85GE 1050T LeBlonde L105 85 1GE 550 Okuma LS N L059 82 1GE 550 HNC [AMC] L246 82GE 1050 Monarch ( R) L090 82GE 1050T (R&M) L151 82GE 1050T Monarch L074 82GE 1050T Farrel L311 82 3więcej podobnych podstron