Bendix 5CM Mon VMC75 DY47 15 3


{5/24/93
created initial NoSubs Processor to .81 format
FIFO stuff not supported
variables: 1 = tools 1st op; 2 = tools last op; 3 = ncCAMs last op
Jim Radcliffe}

{7/29/93, v.81.1, added FIFO handling, JR}
{8/3/93, v.81.2, SameTool WFO, RapidF#, additional FIFO handling, JR}
{9/12/95, v.81.3, FIFO? queries changed to ExitType & ExitFeed calls, WFO MultipleParts, JR}
{5/8/96, v.89, Return to the StrtPos before next iteration of CutAutoCycle Repeats ZshiftOnly, JR}
{6/4/96, v.89.1, minor corrections SeqC, CRCOff & SameTool, JR}

{3/14/97
Initial: Fanuc 6M NoSubs M877.89.1
Created: Fanuc 6M NoSubs D877.15
Develop: ComPost2 68K 1.0b11, Virtual Gibbs 3.31 PPC
Comment: Created Advanced Mill version of this popular NoSubs processor!
Maintained the .89 prog format to simplify creating.
Do not know if we can use the .15 prog format with NoSubs output!
Cannot use Toggling WFO Multiple Parts!
Jim Radcliffe}

{3/18/97
Initial: Fanuc 6M NoSubs D877.15
Created: Bendix 5CM Mon VMC75 Dxxx.15
ForUser: Greenfield Indistries Inc.
Control: Bendix 5CM
Machine: Monarch VMC 75
Develop: ComPost2 68K 1.0b11, Virtual Gibbs 3.31 PPC
Comment: New processor per manual, notes, marked up readout and conversation Rick Kienzle.
Used Bendix 5C Mon VMC75 A005.80.4 & Bendix 5C Mon 150 [PAN] M969.86 sample processors.
Jim Radcliffe}

{3/21/97
Initial: Bendix 5CM Mon VMC75 Dxxx.15
Created: Bendix 5CM Mon VMC75 Dxxx.15.1
Comment: Negated Z axis! Z- is away from the part Z+ is into the part.
Jim Radcliffe}

{4/10/97
Initial: Bendix 5CM Mon VMC75 DY47.15.1
Created: Bendix 5CM Mon VMC75 DY47.15.2
Comment: Modified per marked up readout from Rick Kienzle
Changed CoolOn from M7 to M8
Changed CoolOff from M8 to M9
Jim Radcliffe}

{8/4/97,
Initial: Bendix 5CM Mon VMC75 DY47.15.2
Created: Bendix 5CM Mon VMC75 DY47.15.3
modified the output of home pos to be the home pos minus the CSOffset per Rick Kienzle,
WARNING****IN ORDER TO FUNCTION PROPERLY, THIS POST MUST BE USED WITH VIRTUAL 4.10.38 OR
LATER,
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(SUB#,2)
FORMAT(Recall#,2)
FORMAT(CSOffsetA#,2)
FORMAT(CSOffsetB#,2)
FORMAT(ToolDiameter#,4)
FORMAT(HomeX#,4)
FORMAT(HomeY#,4)
FORMAT(ADD#,5)
FORMAT(CS#,5)
FORMAT(Program#,5)
FORMAT(CallMasterNum#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(NewWFO#,5)
FORMAT(Parts#,5)
FORMAT(ClearancePlane2#,6)
FORMAT(TrackZNO#,6)
FORMAT(RapidF#,7)

{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

WFO:
'G' ADD# PartNum# Num#('53')
RETURN

WFONum:
'G' NewWFO#
RETURN

WFOStuff:
{ This processor does not support Work Fixture Offsets }
{IF MultipleParts? AND WorkFixtureOffsets?
WFO
ELSE
IF NewWFO?
WFONum
ELSE
IF NOT SameTool?
IF NeedWFO1?
WFONum
END
END
END
END}
RETURN

DoSubComment:
IF UseComments? AND SubComment?
'( CYCLE START )' EOL
END
RETURN

DoCSComment:
IF AAxisAvail? OR BAxisAvail?
'( CS#' CS# ' - ' CSComment$ ' )' EOL
END
RETURN

CSComments:
IF FirstOperation? OR NewTool? OR ChangeCS?
DoCSComment
END
RETURN

DoOpComments:
IF UseComments?
SetScale('1')
IF MultipleParts? AND SubComment?
'( PART ' Tag# ' )' EOL
END
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
CSComments
RETURN

CSAngleA:
IF AAxisAvail?
'A'
IF FirstOperation?
IF LessThan? CSOffsetA# Num#('0')
'-'
END
ELSE
IF LessThan? CSOffsetA# LAST CSOffsetA#
'-'
END
END
Save# Num#('4') TRUNC# DIV# CSOffsetA# Num#('360')
IF LessThan? CSOffsetA# Num#('0')
Save# Num#('4') SUB# Recall# Num#('4') Num#('1')
END
SUB# CSOffsetA# MUL# Recall# Num#('4') Num#('360')
END
RETURN

CSAngleAC:
IF AChange?
CSAngleA
END
RETURN

CSAngleB:
IF BAxisAvail?
'B'
IF FirstOperation?
IF LessThan? CSOffsetB# Num#('0')
'-'
END
ELSE
IF LessThan? CSOffsetB# LAST CSOffsetB#
'-'
END
END
Save# Num#('4') TRUNC# DIV# CSOffsetB# Num#('360')
IF LessThan? CSOffsetB# Num#('0')
Save# Num#('4') SUB# Recall# Num#('4') Num#('1')
END
SUB# CSOffsetB# MUL# Recall# Num#('4') Num#('360')
END
RETURN

CSAngleBC:
IF BChange?
CSAngleB
END
RETURN

PSInit:
NewWFOF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN

PSStuff:
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqC 'A' FourthDegree# EOL
FourthCWF
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqC 'A' FourthDegree# EOL
FourthCCWF
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqC 'B' FifthDegree# EOL
FifthCWF
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqC 'B' FifthDegree# EOL
FifthCCWF
END
RETURN

DoPostScript:
PSInit
EachPS
SeqC PostScript EOL
PSStuff
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL
PSStuff
NextPS
RETURN

GetCool:
IF FirstOperation? OR NewTool?
CoolOn
ELSE
IF LAST ProgStop?
CoolOn
ELSE
IF NOT CoolOff? AND LAST CoolOff?
CoolOn
END
END
END
RETURN

ExitTypeC:
IF FIFO?
FeedC
ELSE
RapidC
END
RETURN

ExitFeedC:
IF FIFO? AND NOT EmptyLine?
FeedEntC
END
RETURN

FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXYZC
IF ArcIJFormat?
ArcIJ
ELSE
ArcRC
END
RETURN

StdRapid:
SeqC CRCOnC CRCOffsetC EOL
IF XMove? OR YMove? OR ZMove?
SeqC RapidC MoveXYZC EOL
END
IF LastFeat?
SeqC CRCOffC EOL
END
RETURN

StdLine: {enables CRC on first call, .70}
SeqC CRCOnC CRCOffsetC EOL
IF XMove? OR YMove? OR ZMove?
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FeedC MoveXYZC FeedRateC EOL
DecelMove2
END
SeqC FeedC MoveXYZC DecelFeed EOL
ELSE
SeqC FeedC MoveXYZC FeedRateC EOL
END
END
IF LastFeat?
SeqC CRCOffC EOL
END
RETURN

StdArc:
SeqC CRCOnC CRCOffsetC EOL
EACHQuadrant
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
IF LastFeat?
SeqC CRCOffC EOL
END
RETURN

ToolPath2: {for AutoCycle element moves}
EACHFeat
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
NEXTFeat
RETURN

EntryMove:
FindAnyZMoves
SeqC
IF NoZMoves?
'G86'
ELSE
'G87'
END
'R' ClearancePlane2# ZIn FeedEnt GetCool ToolOfst EOL
RETURN

CutAutoCycle:
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
SeqC IncValue EOL
IF Repeats? AND ZshiftOnly?
EachRep
IF FirstCycle?
EntryMove
ELSE
IF SPXMove? OR SPYMove?
IF FeedConnect?
SeqC FeedC StrtPosC EOL
SeqC FeedC ZInC FeedEntC EOL
ELSE
SeqC RapidC StrtPosC EOL
EntryMove
END
END
END
ToolPath2
IF NOT FeedConnect?
SeqC ExitTypeC PRIME ZCP2 ExitFeedC EOL
END
NextRep
ELSE
EntryMove
ToolPath2
END
SeqC AbsOrInc EOL
SeqC ExitTypeC ZCP2 ExitFeedC EOL
SetSRSubXY {restore tool position}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN

ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
IF NOT FirstFeat?
SeqC
IF FIFO?
Rapid
END
MoveSXYC EOL
END
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
CutAutoCycle
ELSE
SeqC MoveSXYZC EOL {.80.01}
END
ELSE
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
END
NEXTFeat
RETURN

SpeedCode:
Save# Num#('5') SpeedRPM#
IF Tap?
TABLE(2,SpeedRPM#,1)
ELSE
TABLE(1,SpeedRPM#,1)
END
RETURN

SpeedCodeC:
IF NotEqual? SpeedRPM# Recall# Num#('5')
SpeedCode
END
RETURN

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

ProgStart:
InitProg
TagInit
ReverseXZArcs
InitWFONum
SetFlood
NegateZ
SetFlagF('1') {done flag}
Save# Num#('1') Num#('0') {tools first operation}
Save# Num#('2') Num#('0') {tools last operation}
Save# Num#('3') Num#('0') {Virtuals last operation}
Save# Num#('4') Num#('0') {indexing calculations}
Save# Num#('5') Num#('0') {current RPM}
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
' NewWFO(56), NWFO(56) -' EOL
' The Work Fixture Offset # you specify will be used for all following operations.' EOL
' Do not use with the multiple part work fixture offset 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
IF FirstOperation?
EOR 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
END
NextOp
RETURN

DoOp:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
IF FullUp?
SeqC CoolOff EOL
SeqC Rapid ToolChng EOL
END
DoOpComments
SeqC WFOStuff EOL
SeqC PlaneC SpeedCodeC EOL
ELSE
Seq AbsOrInc SpinOn EOL
DoOpComments
DoPostScript
SeqC WFOStuff EOL
SeqC Plane SpeedCode ToolChng OpToolID EOL
END
CheckPass
SeqC Rapid StrtPos CSAngleA CSAngleB EOL
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
{only need to set up for tool change on 1st part}
ELSE
SeqC CoolOff EOL
SeqC Rapid ToolChng EOL
DoEndOpPS
IF ToolChangeAtHome?
SeqC Rapid 'X' SUB# HomeX# Recall# Num#('6') 'Y' SUB# HomeY# Recall# Num#('7') EOL
END
IF LAST ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END
END

{Start new Operation}

IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
IF FullUp?
SeqC CoolOff EOL
SeqC Rapid ToolChng EOL
END
DoOpComments
SeqC WFOStuff EOL
SeqC PlaneC SpeedCodeC EOL
ELSE
Seq AbsOrInc SpinOn EOL
DoOpComments
DoPostScript
SeqC WFOStuff EOL
SeqC Plane SpeedCode ToolChng OpToolID EOL
END
CheckPass
SeqC Rapid StrtPos CSAngleA CSAngleB EOL
ELSE
IF SameTool?

{Finish off last Operation}

IF LAST ProgStop?
SeqC CoolOff EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
END
IF LAST ProgStop? OR NewToolOffset? OR ChangeCS?
SeqC Rapid ToolChng EOL
END
DoEndOpPS
IF LAST ProgStop?
SeqC 'M00' EOL
END

{Start new Operation}

DoOpComments
DoPostScript
SeqC WFOStuff EOL
IF LAST ProgStop?
SeqC AbsOrInc SpinOn EOL
END
SeqC PlaneC SpeedCodeC EOL
CheckPass
SeqC Rapid StrtPos CSAngleA CSAngleB EOL
END
END
END

{ Common Point for All Operations }

ResetCRCNum {call here to reset for each new operation only, call in tool path to reset for each repeat in an operation}
RapidF# {forces the output of a conditional feedrate for each operation}

IF Milling?
IF AutoCycle?
IF Repeats?
IF ZshiftOnly?
ToolPath
ELSE
EACHRep
DoSubComment
IF NOT FirstCycle?
SeqC Connect StrtPos EOL
END
ToolPath
IF NOT FeedConnect?
SeqC ExitTypeC PRIME ZCP3C ExitFeedC EOL
END
SeqC CRCOffC EOL
NEXTRep
END
ELSE
ToolPath
END
SeqC ZCP3C EOL
ELSE
IF Repeats?
EACHRep
DoSubComment
IF FirstCycle?
EntryMove
ELSE
SeqC Connect StrtPos EOL
IF FeedConnect?
SeqC FeedC ZInC FeedEntC EOL
ELSE
EntryMove
END
END
ToolPath
IF NOT FeedConnect?
SeqC ExitTypeC PRIME ZCP3C ExitFeedC EOL
END
SeqC CRCOffC EOL
NEXTRep
ELSE
EntryMove
ToolPath
END
SeqC ExitTypeC ZCP3C ExitFeedC EOL
END
SeqC CRCOffC EOL
ELSE
IF Drilling?
IF Repeats?
EACHRep
DoSubComment
IF NOT FirstCycle?
SeqC Rapid StrtPos EOL
END
END
GetCycle
SeqC Cycle RLevel ZDepth FeedEnt GetCool ToolOfst EOL
TrackZNO# FIRST SPZ#
ToolPath
IF RetractToCP1? {.81}
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
SeqC DrillOff ZCP3 EOL
IF Repeats?
NEXTRep
END
SeqC RapidC ZCP3C EOL
END
END
Save# Num#('6') CSOffsetX#
Save# Num#('7') CSOffsetY#
RETURN

FinishLastOp:
SeqC CoolOff EOL
SeqC Rapid ToolChng EOL
DoEndOpPS
IF FIRST ToolChangeAtHome?
SeqC Rapid 'X' SUB# HomeX# Recall# Num#('6') 'Y' SUB# HomeY# Recall# Num#('7') EOL
END
IF Equal? CSOffsetA# Num#('0') AND Equal? CSOffsetB# Num#('0')
ELSE
SeqC
IF AAxisAvail?
CSAngleA
END
IF BAxisAvail?
CSAngleB
END
EOL
END
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? {no tool change after doing last part}
IF ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END
ELSE
SeqC EOP EOL
END
RETURN

DoToolsOps:
EachOp
IF GTEqual? Operation# Recall# Num#('1') AND LTEqual? Operation# Recall# Num#('2')
{Tools1stOp ² op ² ToolsLastOp}
DoOp
END
NextOp
RETURN

NextTools1stOp:
SetNextToolOp Operation#
RETURN

GetToolsOps:
EachOp
IF Equal? Operation# Recall# Num#('1') {if op = Tools1stOp}
IF GreaterThan? NextTools1stOp Recall# Num#('1') {if NextTools1stOp is greater Tools1stOp}
Save# Num#('2') SUB# NextTools1stOp Num#('1') {ToolsLastOp becomes NextTools1stOp less 1}
ELSE {else}
Save# Num#('2') Recall# Num#('3') {ToolsLastOp becomes ncCAMsLastOp}
END
END
NextOp
RETURN

DoTool:
IF NOT Flag?('1')
GetToolsOps
IF WorkFixtureOffsets?
NewWFO
EachWFO
TagInc
DoToolsOps
IncWFO
NextWFO
ELSE
EachPart
TagInc
DoToolsOps
NextPart
END
IF LessThan? Recall# Num#('2') Recall# Num#('3') {if ToolsLastOp < ncCAMsLastOp}
Save# Num#('1') ADD# Recall# Num#('2') Num#('1') {Tools1stOp becomes NextTools1stOp}
ELSE {else}
SetFlag('1') {set DoneFlag}
END
TagInit
END
RETURN

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

IF MultipleParts? AND WorkFixtureOffsets?
ASCII('13') EOL
ASCII('13') EOL
'This Processor does not' EOL
'support Multiple Parts' EOL
'with Work Fixture Offsets!' EOL
ASCII('13') EOL
'Reprocess with Equally Spaced Offsets!' EOL
ASCII('13') EOL
ASCII('13') EOL
ELSE

ProgStart {setup and initializations}

IF MultipleParts?
IF AllToolsOnePart?
IF WorkFixtureOffsets?
NewWFO
EachWFO
TagInc
EachOp
DoOp
NextOp
FinishLastOp
IncWFO
NextWFO
ELSE
EachPart
TagInc
EachOp
DoOp
NextOp
FinishLastOp
NextPart
END
ELSE
IF OneToolAllParts?
EachOp
IF FirstOperation?
Save# Num#('1') Operation# {ncCAMs1stOp becomes Tools1stOp}
END
IF LastOp?
Save# Num#('3') Operation# {save ncCAMsLastOp}
END
NextOp
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
FinishLastOp
END
END
ELSE
EachOp
DoOp
NextOp
FinishLastOp
END
EOR EOL
CloseSub
Post2
IF UseComments?
SetScale('1')
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
Close
END


Wyszukiwarka

Podobne podstrony:
Bendix 5C Mon VMC75 M125 87
Bendix 5C Mon 150 [PAN] M969 86
Fanuc 11M Mon [AT] MV17 15
Bendix 5C Mon [TSM] MU22 87 2
Fanuc 11M Mon VMC75 M343 87
Bendix 5C Mon [PI] MX33 87 1
Bendix 5C Mon [HTSSG] M755 81 1
Fanuc 11M Mon VMC75 M343 87m
GE 1050 Mon VMC75 M071 87 1m
Bendix VMC75 [NRC] M867 89
Bendix VMC75 [NRC] M867 89m
Fanuc 11M Mon [AT AT] MV44 15
Fanuc 11M Mon [AT NC] MV43 15
Bendix 5 Mon VMC150 M133 80
Bendix VMC75 [SM] C072 12

więcej podobnych podstron