Bendix 892 J & L Bar L240 85


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

{9/25/91
Copied & modified: Fanuc 10T MS [-] L001.82
For: Webco
Machine: Jones & Lamson TNC
Control: Bendix 892
No CannedCycle support.
This Control has two Turrets:
Side Turret ( T1 - T6 ) and End Turret ( T7 - T12 ).
Using G94 (IPM) for Rapids & G95 (IPR) for feeds, both in G01.
GearRanges are M42 ( Low S560 - S380 ) and M43 ( High ).
Bar Feed Sequence has been omitted until processor is proved out.
JR}

{10/30/91,
Modified: Bendix 892 J & L Bar L240.82
Control requires ten EOR's at beginning and end of Program.
Changed ArcIJC to ArcIJ.
Forcing FeedRate at ArcFeat.
Changed literal 'M27' to 'M28' for Turret Rotation.
Dan Pilone}

{12/16/91,
Modified: Bendix 892 J & L Bar L240.82a
Added Bar Feed Sequence in FirstOperation.
Dan Pilone}

{1/7/91,
Modified: Bendix 892 J & L Bar L240.82b
Added XsAreRadii at setup and initilizations.
Changed all occurances of Speed to TABLE(1,Speed,1).
Added SETLASTOP at NewTool to take Program to previous Tools Home Position.
Added following Math Formula at end of prog two places:
'X' MUL# XStockMax# Num#('1') { output negative XCP }
Added FORMAT for MUL#.
Changed Rapid Feed from 3000 to 2500 in Form.
Deleted SpinOff and Dwell at ToolPath LastFeat Tapping.
Added MoveZ to InverseSpinOn at ToolPath LastFeat Tapping.
Changed Format for Thread Lead 'K' address.
Dan Pilone}

{3/10/91,
Modified: Bendix 892 J & L Bar L240.82c
Cleaned-up Prog.
Somehow, during transfer of file from Dan Pilone, to Gibbs, many characters were omitted from
source code.
Rapid outputs G94 ( IPM ) and Feed outputs G95 ( IPR ).
Changed Math Formula to NegSideLathe XCP
Added capability to Index Turrets CW or CCW.
Using Save# Num#('1') to Store Current Tool# for Side Turret.
Using Save# Num#('2') to Store Current Tool# for End Turret.
At beginning, I do an EachOp/NextOp loop to store the LAST Tool#'s for each turret.
Using Save# Num#('3') calculate difference between current Tool# and previous Tool#.
After calculation, I then store in Save# Num#('3'), '-1' for CCW Index, '0' for No Index,
and '1' for CW Index.
Added PosSideTool for Side Turret, and NegSideTool for End Turret.
Added OptCyc1 Post Script Support for outputting a Die-Head Operation instead of Tapping.
DWB}

{9/24/96, updated to .85 format, MPK}

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

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

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(FirstMoveEPZ#,2)
FORMAT(Program#,3) {.72}
FORMAT(Operation#,3) {.72}
FORMAT(Tool#,3) {.72}
FORMAT(Dwell#,4) {.72}
FORMAT(RapidF#,5)
FORMAT(MUL#,6)

{Prog Subroutines **********************************************************}

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
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
END
RETURN

PSInit: {reset flags from last Op, .70}
OptCyc1F
RETURN

PSStuff:
IF OptCyc1? AND UseComments?
'( Die Head )' EOL
END
RETURN

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

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

StockOnNoCan:
IF NOT CannedCycle?
StockOn {need stock for SP positioning, if not a canned cycle}
END
RETURN

CheckCoolOn:
IF NOT CoolOff?
IF ToolOver?('6')
'M06' { End Turret }
ELSE
'M08' { Side Turret }
END
END
RETURN

ODApproachSP:
SeqC StockOnNoCan ZSPC EOL
SeqC StockOff XOpCDC EOL
StockOnNoCan
IF NotEqual? CycleStartX# XStockMax#
SeqC Feed XSPC FeedRate EOL
END
RETURN

IDApproachSP:
SeqC StockOnNoCan ZSPC EOL
SeqC StockOff XOpCDC EOL { for SameTool ApproachID }
StockOnNoCan
IF NotEqual? CycleStartX# XStockMax#
SeqC Feed XSPC FeedRate EOL
END
RETURN

FaceApproachSP:
SeqC StockOnNoCan XSPC EOL { for SameTool ApproachFace }
SeqC StockOff ZOpCPC EOL
StockOnNoCan
IF NotEqual? CycleStartZ# ZStockMax#
SeqC Feed ZSPC FeedRate EOL
END
RETURN

AppMove1:
CheckCoolOn 'G01' Rapid ToolOfst
RETURN

AppMove2:
ThisOpEntryZCP RapidF
RETURN

Approach: { NOT FOR TAILSTOCK, .82 }
IF ApproachOD?
SeqC AppMove1 ThisOpEntryXCP AppMove2 EOL
ODApproachSP
ELSE
IF ApproachID?
SeqC AppMove1 XOpCD AppMove2 EOL
IDApproachSP
ELSE {ApproachFace}
SeqC AppMove1 StockOnNoCan XSP StockOff AppMove2 EOL
FaceApproachSP
END
END
RETURN

CheckOffset:
DoEndOpPS
IF LAST ProgStop?
SeqC 'M00' EOL
ELSE
IF NewGear?
SeqC SpinOff EOL
END
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
END
IF NewGear?
SeqC GearRange EOL
END
IF NewToolOffset?
SeqC OfstOff EOL
SeqC ToolOfst EOL
END
IF LAST ProgStop?
SeqC TABLE(1,Speed,1) EOL
SeqC SpinOn EOL
SeqC CoolOn EOL
ELSE
IF NewGear?
SeqC TABLE(1,Speed,1) EOL
SeqC SpinOn EOL
ELSE
IF NotEqual? SpeedRPM# LAST SpeedRPM#
SeqC TABLE(1,Speed,1) EOL
END
END
IF NOT CoolOff? AND LAST CoolOff?
SeqC CoolOn EOL
END
END
DoPostScript
RETURN

FormatArc:
IF ArcCW?
'G02'
ELSE
'G03'
END
MoveX MoveZ
IF ArcIJFormat?
ArcIJ
ELSE
ArcR
END
RETURN

ToolPath:
EACHFeat
GetToolTip
IF LastFeat?
IF Drilling?
IF Tap?
IF OptCyc1? { Die-Head Operation }
SeqC 'G04F02' EOL
SeqC Rapid MoveZ RapidF EOL
ELSE
SeqC TABLE(1,Speed,1) InverseSpinOn MoveZ EOL
END
ELSE
IF Dwell?
SeqC 'G04F' Dwell# EOL
END
END
END
END
IF PointFeat?
SeqC MoveSXYC EOL
ELSE
IF RapidFeat?
IF NOT FirstFeat?
IF LAST ThreadFeat?
SeqC Rapid 'G01' MoveXC MoveZC RapidF EOL
ELSE
IF LAST ArcFeat?
'G01'
END
END
END
SeqC RapidC MoveXC MoveZC RapidFC EOL
ELSE
IF LineFeat?
IF NOT FirstFeat? AND LAST ArcFeat?
'G01'
END
IF LastFeat? AND OptCyc1?
{ Die-Head Operation }
ELSE
SeqC FeedC MoveXC MoveZC FeedRateC EOL
END
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop }
SeqC FormatArc FeedRate EOL
NEXTQuadrant
ELSE
IF ThreadFeat?
SeqC Feed 'G33' MoveXC MoveZC ThrdLead EOL
END
END
END
END
END
NEXTFeat
RETURN

GetBarFeed: { Dan Pilone }
Seq 'M43' Rapid AbsValue 'T00' Preset 'X08Z1525F10000' EOL
SeqC 'M38M36' EOL
SeqC 'G73T12X0' RapidF EOL
SeqC ' ' EOL
SeqC 'Z05 ( INPUT PART LENGTH FROM CHUCK FACE HERE )' EOL
SeqC ' ' EOL
SeqC 'M17' EOL
SeqC 'G04F2' EOL
SeqC 'M16' EOL
SeqC 'G04F2' EOL
SeqC 'G73Z12' RapidF EOL
SeqC 'T00X08Z1525' RapidF EOL
SeqC 'M01' EOL
RETURN

GetTurretPos:
EachOp { For Correct Turret Indexing }
IF FirstOperation? OR NewTool?
IF NOT ToolOver?('6') { Side Turret }
Save# Num#('1') Tool#
END
END
NextOp
Save# Num#('2') Num#('12') { End Turret }
RETURN

GetIndexDir:
IF LTEqual? Recall# Num#('3') Num#('-3')
Save# Num#('3') Num#('1') { Index CW }
ELSE
IF LTEqual? Recall# Num#('3') Num#('-1')
Save# Num#('3') Num#('-1') { Index CCW }
ELSE
IF Equal? Recall# Num#('3') Num#('0')
Save# Num#('3') Num#('0') { No Index }
ELSE
IF LTEqual? Recall# Num#('3') Num#('3')
Save# Num#('3') Num#('1') { Index CW }
ELSE
Save# Num#('3') Num#('-1') { Index CCW }
END
END
END
END
RETURN

IndexTool:
IF ToolOver?('6') { End Turret }
NegSideLathe
Save# Num#('3') SUB# Recall# Num#('2') Tool#
GetIndexDir
Save# Num#('2') Tool#
IF Equal? Recall# Num#('3') Num#('-1')
'M37' { Index CCW }
ELSE
IF LTEqual? Recall# Num#('3') Num#('1')
'M38' { Index CCW }
END
END
'M3' SUB# Tool# Num#('6')
ELSE { Side Turret }
PosSideLathe
Save# Num#('3') SUB# Recall# Num#('1') Tool#
GetIndexDir
Save# Num#('1') Tool#
IF Equal? Recall# Num#('3') Num#('-1')
'M27' { Index CCW }
ELSE
IF LTEqual? Recall# Num#('3') Num#('1')
'M28' { Index CCW }
END
END
'M2' Tool#
END
RETURN

CheckRapid:
IF LAST CannedCycle?
IF LAST Roughing? AND LAST RoughPatternShift?
RapidC
ELSE
{ Other CannedCycles end with Rapid }
END
ELSE
RapidC
END
RETURN

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

{setup and initializations}
InitProg
XsAreRadii
SetAbs
SetMaxRPM('2000')
SetMaxFeed('250')
GetTurretPos
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
' OptionalCycle1, OptCyc1 -' EOL
' This commands is intended to cause your Post Processor to output a' EOL
' Die-Head Operation for any Tapping Operation that contains this command.' EOL
END
EachOp {Start of post processing *********************}
GetLCycle
IF FirstOperation?
EOR EOR EOR EOR EOR EOR EOR EOR EOR EOR EOL
IF UseComments?
IF ProgramNameComment?
'( ' 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 ABSOLUTE INCHES )' EOL
END
END
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
OpenSub
StockOff {.71.2}
SetHome
GetBarFeed
DoOpComments
DoPostScript
Plane
CSSOff
Seq IndexTool GearRange EOL
SeqC AbsValue Rapid Preset Home EOL
SeqC TABLE(1,Speed,1) SpinOn EOL
Approach
ELSE
IF NewTool?

{Finish off last Operation}

StockOff {.62}
CheckRapid
IF LAST ApproachOD?
SeqC LAST OpExitXCPC RapidFC EOL
ELSE
IF LAST ApproachID?
SeqC LAST XOpECDC RapidFC EOL
END
END
SeqC LAST OpExitZCPC RapidFC EOL
DoEndOpPS
SeqC CoolOff OfstOff SETLASTOP Home EOL { Dan Pilone }
IF LAST ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END

{Start new Operation}

DoOpComments
DoPostScript
Seq IndexTool GearRange EOL
SeqC Preset Home EOL
SeqC TABLE(1,Speed,1) SpinOn EOL
Approach
ELSE
IF SameTool? {.62}

{Start new Operation}

StockOff
DoOpComments
IF LAST StraightConnect?
CheckOffset
CheckRapid
SeqC StockOnNoCan XSPC ZSPC RapidFC EOL
ELSE
CheckRapid
IF ApproachOD?
IF LAST ApproachOD?
SeqC LAST XOpECDC RapidFC EOL
ELSE {around}
IF LAST ApproachID?
SeqC LAST XOpECDC RapidFC EOL
END
SeqC LAST OpExitZCPC RapidFC EOL
SeqC LAST OpExitXCPC EOL
END
CheckOffset
ODApproachSP
ELSE
IF ApproachID?
IF LAST ApproachID?
SeqC LAST XOpECDC RapidFC EOL
ELSE
IF LAST ApproachOD? {around}
SeqC LAST OpExitXCPC RapidFC EOL
END
SeqC LAST OpExitZCPC RapidFC EOL
SeqC XOpCDC EOL
END
CheckOffset
IDApproachSP
ELSE {ApproachFace}
IF LAST ApproachFace?
SeqC LAST ZOpECPC RapidFC EOL
ELSE
IF LAST ApproachOD? {around}
SeqC LAST OpExitXCPC RapidFC EOL
ELSE {LAST ApproachID}
SeqC LAST XOpECDC RapidC EOL
END
SeqC LAST OpExitZCPC EOL
END
CheckOffset
FaceApproachSP
END
END
END
END
END
END {common point for all operations}
StockOn
SetPass1
ToolPath
IF AutoFinish?
IF NOT Drilling? AND NOT Grooving?
StockOff
IF Turning?
SetPass1
ELSE
SetPass2
END
SeqC RapidC StrtPos RapidFC EOL
ToolPath
END
END
IF Drilling? AND Tap?
IF NOT OptCyc1?
SeqC TABLE(1,Speed,1) SpinOn EOL
END
END
NextOp {loops back to EachOP until last Operation}

{End of program ************************************************************}

{finish last operation}
StockOff
IF CannedCycle?
IF Roughing? AND RoughPatternShift?
RapidC
ELSE
{ Other CannedCycles end with Rapid }
END
ELSE
RapidC
END
IF ApproachOD?
SeqC OpExitXCPC RapidFC EOL
ELSE
IF ApproachID?
SeqC XOpECDC RapidFC EOL
END
END
SeqC OpExitZCPC RapidFC EOL
DoEndOpPS
SeqC CoolOff OfstOff Home EOL
SeqC 'M43' Rapid AbsValue 'T00' Preset 'X0Z14598' RapidF EOL
Save# Num#('3') SUB# Recall# Num#('2') Num#('12')
GetIndexDir
IF Equal? Recall# Num#('3') Num#('0')
{ No Index }
ELSE
IF Equal? Recall# Num#('3') Num#('-1')
'M37' { Index CCW }
ELSE
IF LTEqual? Recall# Num#('3') Num#('1')
'M38' { Index CCW }
END
END
END
SeqC 'M36' EOL
SeqC 'G73T12X-03Z10' RapidF EOL
NegSideLathe
SeqC XCP EOL
SeqC ' ' EOL
SeqC 'Z-0000 ( INPUT PART-OFF DISTANCE FROM CHUCK )' EOL { Dan Pilone }
SeqC ' ( ABOVE LINE MUST BE Z002 OR GREATER )' EOL
SeqC ' ' EOL
SeqC Feed 'G01X0F0018' EOL
SeqC Rapid OpExitXCP 'F10000' EOL
SeqC 'G73Z10' RapidF EOL
SeqC SpinOff 'T00X0Z14598' RapidF EOL
SeqC CoolOff EOP EOL
Post
EOR EOR EOR EOR EOR EOR EOR EOR EOR 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


Wyszukiwarka

Podobne podstrony:
Bendix 892 J&L [BM] L286 82 2m
Bendix 5M Eagle 2000 L316 85
85 (12)
Fanuc 10T HS [KMT] L759 85
Bridgeport EZPath WF L554 85 2
Fanuc 0T DP [TTT] L567 85
Cin Acr CNC TC [12] L273 85 1
Okuma OSP 5020L [PB] L604 85 1
Fanuc 15T Dianichi CGB L754 85 2
Fanuc 16M Edgetec L570 85

więcej podobnych podstron