GE W 3 Wied M681 81 2


{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}

{5/17/94
Copied & modified: Fanuc 6M NoSubs M001.81.2
For: Braden Eng / FMC Corp
Control: GE W-3
Machine: Wiedematic Model 4560 Punch Press with Plasma Attechment.
G91 defines Punch cycle
All XY coordinates are done in Absolute.
G90 defines Plasma cycle
Plasma Rapids, G00, are done in Absulute, Plasma feeds, G01/G02/G03, are done in Incremental.
** Needs AutoCycle Support, all else should be OK **
Jim Radcliffe}

{6/9/94
Modified: GE W-3 Wiedematic Mxxx.81
Bug fix, changed the labels for ArcIJ from IJK to XYZ, thats what "MOV/" command requires.
Added SPX#, SPY# (features start position) and M03 (without punching) before "LAA/" command.
Jim Radcliffe}

{6/24/94, .81.2, moved PostScript calls for placement of literal repositioning commands, JR}

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

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

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(EPMoveAngle#,2) { for LAA/ & LIN/ }
FORMAT(ADD#,2) { SPAngle# }
FORMAT(MUL#,2) { AngleIncrement# & ArcMove# }
FORMAT(ToolDiameter#,4)
FORMAT(Program#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(Parts#,5)
FORMAT(TRUNC#,5) { Hits# & ArcHits# }
FORMAT(DIV#,6) { Increment# }
FORMAT(ArcR#,6) { for Arc/ }
FORMAT(LineLength#,6)
FORMAT(SPX#,6)
FORMAT(SPY#,6)

{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

Space:
' '
RETURN

NoPunch:
'M03'
RETURN

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

DoOpComments:
IF UseComments?
SetScale('1')
IF MultipleParts? AND SubComment?
'( PART ' Tag# ' )' EOL
END
IF OperationIDComment?
'( OPERATION ' Operation# ': ' OperationType$ ' - '
IF RIRO? { Milling }
'Plasma Cut'
ELSE
IF Drilling?
'Punching'
ELSE
'Nibbling'
END
END
' )' 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: {reset flags}
RotateF
RETURN

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

DoPostScript:
PSInit
EachPS
SeqC PostScript EOL
PSStuff
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL
PSStuff
NextPS
RETURN

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

StdRapid:
IF XMove? OR YMove? OR ZMove?
IF Flag?('2')
SeqC RapidC MoveXYZC EOL
ELSE
SeqC MoveXYZC EOL
END
END
RETURN

Hits#:
TRUNC# DIV# LineLength# FeedEntry#
RETURN

Increment#:
DIV# LineLength# Hits#
RETURN

StdLine: {enables CRC on first call, .70}
IF Flag?('2')
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FeedRateC EOL
SeqC 'LIN/' Space LineLength# Space EPMoveAngle# EOL
DecelMove2
END
SeqC DecelFeed EOL
SeqC 'LIN/' Space LineLength# Space EPMoveAngle# EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqC FeedRateC EOL
SeqC 'LIN/' Space LineLength# Space EPMoveAngle# EOL
END
END
ELSE
IF XMove? OR YMove? OR ZMove?
IF NOT FirstFeat? { the first features start position is called with StartPos }
SeqC 'X' SPX# 'Y' SPY# NoPunch EOL { M03 = No Punch, shouldnt need to here }
END
SeqC 'LAA/' Space Increment# Space EPMoveAngle# Space Hits# EOL
END
END
RETURN

SPAngle#:
IF ArcCW?
If GTEqual? SPMoveAngle# Num#('270')
ADD# Num#('-360') {prevent output of angles equal to or greater than 360}
END
ADD# SPMoveAngle# Num#('90')
ELSE
If LessThan? SPMoveAngle# Num#('90')
ADD# Num#('360') {prevent output of angles less than 0}
END
ADD# SPMoveAngle# Num#('-90')
END
RETURN

ArcLength#:
MUL# Num#('.01745329252') MUL# ArcR# ArcAngle#
RETURN

ArcHits#:
TRUNC# DIV# ArcLength# FeedEntry#
RETURN

ArcMove#:
MUL#
IF ArcCW?
Num#('-1')
ELSE
Num#('1')
END
ArcAngle#
RETURN

AngleIncrement#:
MUL#
IF ArcCW?
Num#('-1')
ELSE
Num#('1')
END
DIV# ArcAngle# ArcHits#
RETURN

StdArc:
EACHQuadrant
IF Flag?('2')
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC ArcFeedC EOL
SeqC 'MOV/' ArcIJ EOL
SeqC 'ARC/' Space ArcR# Space SPAngle# Space ArcMove# EOL
DecelMove2
END
SeqC DecelFeed EOL
SeqC 'MOV/' ArcIJ EOL
SeqC 'ARC/' Space ArcR# Space SPAngle# Space ArcMove# EOL
ELSE
SeqC ArcFeedC EOL
SeqC 'MOV/' ArcIJ EOL
SeqC 'ARC/' Space ArcR# Space SPAngle# Space ArcMove# EOL
END
ELSE
SeqC 'MOV/' ArcIJ EOL
SeqC 'ARC/' Space ArcR# Space SPAngle# Space AngleIncrement# Space ArcHits# EOL
END
NEXTQuadrant
RETURN

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

CutAutoCycle:
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
SetAbs
ToolPath2
SetInc
SetSRSubXY {restore tool position}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN

ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
' This Processor does not support AutoCycles' EOL
{
IF NOT FirstFeat?
SeqC
IF Flag?('2')
RapidC
END
MoveSXYC EOL
END
CalcACSRXY
CutAutoCycle
}
ELSE
SeqC MoveSXYZC EOL
END
ELSE
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
END
NEXTFeat
RETURN

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

OpType:
IF RIRO? { Milling - Plasma Operation }
'G90' FeedRate 'Z0'
SetFlag('2')
ELSE { Punching Operation }
IF Flag?('2')
'G91'
SetFlagF('2')
END
END
RETURN

StartPos:
IF Flag?('2')
Rapid StrtPos
ELSE
StrtPos
IF FirstOperation? OR NewTool?
OpToolID
END
END
RETURN

DoOp:
IF FirstOperation?
Plane CheckPass
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
DoOpComments
SeqC StartPos EOL
ELSE
SeqC Home 'M00' EOL { load part }

DoOpComments
DoPostScript
SeqC OpType EOL
SeqC StartPos EOL

END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
{only need to set up for tool change on 1st part}
ELSE
IF Flag?('2')
SeqC 'G91' EOL
SetFlagF('2')
END
DoEndOpPS
IF ProgStop?
SeqC
IF ToolChangeAtHome?
Home
END
'M06' EOL
ELSE
IF ToolChangeAtHome?
SeqC Home NoPunch EOL
END
END
END

{Start new Operation}

Plane CheckPass
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
DoOpComments
SeqC StartPos EOL
ELSE

DoOpComments
DoPostScript
SeqC OpType EOL
SeqC StartPos EOL

END
ELSE
IF SameTool?
IF Flag?('2')
SeqC 'G91' EOL
SetFlagF('2')
END
DoEndOpPS
IF LAST ProgStop?
SeqC
IF ToolChangeAtHome?
Home
END
'M06' EOL
END

{Start new Operation}

Plane CheckPass
DoOpComments
DoPostScript
SeqC OpType EOL
SeqC StartPos EOL
END
END
END
{ Common Point for All Operations }
IF Milling?
IF Repeats?
EACHRep
DoSubComment
IF NOT FirstCycle?
IF Flag?('2') { Plasma Operation }
IF FeedConnect?
SetInc
SeqC Feed StrtPos EOL { feed Plasma moves are in incremental }
SetAbs
ELSE
SeqC Rapid StrtPos EOL
END
ELSE { Punching Operation }
IF FeedConnect?
SeqC 'LAA/' {** need to calc connect to start position **} EOL
ELSE
SeqC StrtPos EOL
END
END
END
END
ToolPath
IF Repeats?
NEXTRep
END
ELSE
IF Drilling?
IF Repeats?
EACHRep
DoSubComment
END
ToolPath
IF Repeats?
NEXTRep
END
END
END
RETURN

FinishLastOp:
IF Flag?('2')
SeqC 'G91' EOL
SetFlagF('2')
END
DoEndOpPS
SeqC
IF FIRST ToolChangeAtHome?
FirstHome
END
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? {no tool change after doing last part}
IF ProgStop?
'M06'
END
ELSE
EOP
END
EOL
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
EachPart
TagInc
DoToolsOps
NextPart
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 **************************************************}

{setup and initializations}
InitProg
SetFlagF('1') {done flag}
SetFlagF('2') {Plasma Flag}
SkipZ
SetAbs
{NoIJKSigns} {used for Plasma corodinate commands, also set MachSpec to incremental arc center}
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: 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
' 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 {Start of post processing *********************}
IF FirstOperation?
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 Absolute INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
END
NextOp
IF MultipleParts?
IF AllToolsOnePart?
EachPart
TagInc
EachOp
DoOp
NextOp
FinishLastOp
NextPart
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


Wyszukiwarka

Podobne podstrony:
GE W 3 Wied M681 87
GE 2000MC [no ATC] M606 81 6
Fanuc 10M (AGA) M147 81 2
Tosnuc 600M VMC 45 M442 81 3
DM 81 Diper Kenwooda
BP IIA (HAC) M200 81
GE 550T LeBlonde L082 82
30 (81)
GE 2000 Burg [SI] MY73 89
Artran Contour MV83 81
Yas MX3 Mat [AbsZAC] M591 81 2
T81 2
node S0281
GE 1050 Monarch ( R) L090 82

więcej podobnych podstron