AB 4300 Router [SP] M572 81 3


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

{5/13/93
Copied & modified: Fanuc 5M Router [SP] M571.81.3
For: Swiss Plywood
Machine:
Control: Allen Bradley 4300
Changes made per conversations with Wayne Jacob at Swiss Plywood and FAX.
This supports both Absolute and Incremental output.
This supports MultipleParts.
Using Var(1), Var(2) and Var(3) for logical control of MultiplePart Operations.
Using Var(4), Var(5), Var(6) and Var(7) for correct Positioning of AutoCycles that Repeat in
X and/or Y, and when AbsoluteMoves = FALSE.
This control has 3 Heads on a Main Slide, any combination of which can be used, activated by
M11 - M13 codes. M04 lowers the Main Slide and M08 raises it, and M15 raises all the auxillary
Heads.
Combination of Heads are controlled through Tool List # 1 - 7.
Deleted 'M1' Tool# at FirstOperation and NewTool, calling DoIndex sub instead.
Added DoToolTypeComment sub called from DoOpComments to output Head Combinations.
Added DoIndex sub called from FirstOperation and NewTool following move to StartPos.
Added literal 'G04F120000', .5-second Dwell at DoIndex sub.
Deleted FORMAT#7, changed RapidF# to FORMAT#6.
Added DIV# to FORMAT#6 for Dwell Formula.
Customer specifies that Dwell value = 60 Ö Dwell#.
Customer specifies that Output re-establish G01 and RapidF, FeedEnt or FeedRate following Dwell.
Changed ToolPath PointFeat to output Dwell formula and G01 FeedEnt rule.
Changed literal 'M24' to 'M04' and added literal 'G04F60000', 1-second Dwell at HeadDown sub.
Changed literal 'M28' to 'M08' and added literal 'G04F80000', .75-second Dwell at HeadUp sub.
Deleted GetConnect sub and changed all calls to Feed command.
Added GetConnectF sub to output RapidF or FeedEnt and called where GetConnect sub was called.
Changed ExitMove2 sub to call HeadUp sub IF Repeats = TRUE or Move to ZCP3.
Changed all occurances of Rapid(C) to Feed(C) and added RapidF(C).
Deleted RapidF# at commonpoint.
Added TrackZNO# at end of ToolPath for ExitMove2 sub.
Deleted all occurances of SetLineStrtChr('/'), block deletes.
Deleted literal 'M21' and call to HeadUp at FirstOperation.
Added 'G94' tp Plane AbsOrInc block at FirstOperation.
Deleted routine to send SameTool to Home IF ToolChangeAtHome = TRUE.
Changed all literal 'M01' to 'M00'.
Added test for conditions move to StartPos at SameTool.
Added literal 'M15' and 'G04F80000', .75-second Dwell at EndPart sub.
Changed AbsOrInc to AbsValue for FIRST ToolChangeAtHome at EndPart sub.
Added NoIJKSigns at setup and initializations.
Deleted SkipZ at setup and initializations.
Changed SetFlagF(1) to SetFlag(1) at setup and initializations.
DWB}

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

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

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(PartShiftX#,4)
FORMAT(PartShiftY#,4)
FORMAT(PartShiftZ#,4)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Program#,5) {.72}
FORMAT(Operation#,5) {.72}
FORMAT(Tool#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Tag#,5)
FORMAT(DIV#,6) {For Dwell}
FORMAT(Dwell#,6) {.72}
FORMAT(RapidF#,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

DoPartCycleComment:
IF MultipleParts? AND UseComments? AND SubComment?
'( PART NO. ' Tag# ' )' EOL
END
RETURN

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

DoToolTypeComment:
IF LTEqual? Tool# Num#('3')
'( HEAD ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
ELSE
IF Equal? Tool# Num#('4')
'( HEAD 1: ' ToolDiameter# ' ' ToolType$ ' )' EOL
'( HEAD 2: ' ToolDiameter# ' ' ToolType$ ' )' EOL
ELSE
IF Equal? Tool# Num#('5')
'( HEAD 1: ' ToolDiameter# ' ' ToolType$ ' )' EOL
'( HEAD 3: ' ToolDiameter# ' ' ToolType$ ' )' EOL
ELSE
IF Equal? Tool# Num#('6')
'( HEAD 2: ' ToolDiameter# ' ' ToolType$ ' )' EOL
'( HEAD 3: ' ToolDiameter# ' ' ToolType$ ' )' EOL
ELSE
IF Equal? Tool# Num#('7')
'( HEAD 1: ' ToolDiameter# ' ' ToolType$ ' )' EOL
'( HEAD 2: ' ToolDiameter# ' ' ToolType$ ' )' EOL
'( HEAD 3: ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
END
END
END
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?
DoToolTypeComment
END
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
RestoreScale
END
RETURN

PSInit: {reset flags}
RETURN

PSStuff: {revised.72}
RETURN

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

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

DoIndex: { Index Position }
IF GTEqual? Tool# Num#('8')
SeqC 'M15' EOL { All Auxillary Heads Up }
' ' EOL
' NOTE: You have selected Tool# ' Tool# ' which is outside of the allowable database range!!!' EOL
' ' EOL
ELSE
IF LTEqual? Tool# Num#('3')
SeqC 'M1' Tool# EOL
ELSE
IF Equal? Tool# Num#('4')
SeqC 'M11' EOL
SeqC 'M12' EOL
ELSE
IF Equal? Tool# Num#('5')
SeqC 'M11' EOL
SeqC 'M13' EOL
ELSE
IF Equal? Tool# Num#('6')
SeqC 'M12' EOL
SeqC 'M13' EOL
ELSE
IF Equal? Tool# Num#('7')
SeqC 'M11' EOL
SeqC 'M12' EOL
SeqC 'M13' EOL
END
END
END
END
END
SeqC 'G04F120000' EOL { .5 Second Dwell }
END
RETURN

HeadDown:
IF Flag?('1')
SetFlagF('1')
SetFlag('2')
SeqC 'M04' EOL
SeqC 'G04F60000' EOL { 1 Second Dwell }
END
RETURN

HeadUp:
IF NOT Flag?('1')
SetFlag('1')
SeqC 'M08' EOL
SeqC 'G04F80000' EOL { .75 Second Dwell }
END
RETURN

EntryMove:
HeadDown
RETURN

GetConnectF:
IF FeedConnect?
FeedEnt
ELSE
RapidF
END
RETURN

GetConnectFC:
IF FeedConnect?
FeedEntC
ELSE
RapidFC
END
RETURN

ExitMove:
IF NOT FeedConnect?
HeadUp
END
RETURN

ExitMove2:
IF AutoCycle?
HeadUp
ELSE
IF Repeats?
HeadUp
ELSE
LoadFeat Num#('0') Num#('0') ClearancePlane3#
IF ZMove?
HeadUp
END
END
END
TrackZNO# ClearancePlane3#
RETURN

CycleWarning:
{ NOTE: This Post Processor takes care of Z Clearance. }
RETURN

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

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

ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
IF NOT FirstFeat?
SeqC Feed MoveSXYC FeedEnt EOL {.80.01}
END
IF Dwell?
SeqC 'G04P' DIV# Num#('60') Dwell# EOL
END
HeadDown
HeadUp
ELSE
IF RapidFeat?
IF Flag?('2')
SetFlagF('2')
SeqC Feed
IF XMove? OR YMove?
MoveXYC
ELSE
MoveXY
END
RapidF EOL
ELSE
IF XMove? OR YMove?
SeqC FeedC MoveXYC RapidFC EOL
END
END
ELSE
IF LineFeat?
IF Flag?('2')
SetFlagF('2')
SeqC Feed
IF XMove? OR YMove?
MoveXYC
ELSE
MoveXY
END
FeedRate EOL
ELSE
IF XMove? OR YMove?
StdLine
END
END
ELSE
IF ArcFeat?
IF Flag?('2')
SetFlagF('2')
SeqC Feed FeedRate EOL
END
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
END
IF AutoCycle?
SetAbs
Save# Num#('6') SUB# EPX# CurOriginPosX#
Save# Num#('7') SUB# EPY# CurOriginPosY#
SetInc
END
TrackZNO# EPZ#
END
NEXTFeat
RETURN

WFOStuff:
{ NOTE: This Post Processor does not support WorkFixtureOffsets. }
RETURN

AutoCycCutSub1: {part 1}
CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
SeqC IncValue EOL
RETURN

AutoCycCutSub2: {part 2}
SeqC AbsOrInc EOL
HeadUp
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN

Milling:
EntryMove
ToolPath
RETURN

XYRep:
CycleWarning
EachRep
IF NOT FirstCycle?
IF FeedConnect?
SeqC FeedC StrtPosC GetConnectFC EOL
ELSE
SeqC Feed
LoadFeat StartPosX# StartPosY# ClearancePlane2#
IF XMove? OR YMove?
StrtPosC
ELSE
StrtPos
END
GetConnectF EOL
END
END
DoCycleComment
IF FirstCycle?
EntryMove
ELSE
IF FeedConnect?
IF ZshiftOnly?
EntryMove
END
ELSE
IF FeedEntry?
HeadUp
END
EntryMove
END
END
ToolPath
ExitMove
NextRep
RETURN

NoRepAutoCycle:
EACHFeat
IF SPXMove? OR SPYMove?
SeqC Feed MoveSXYC RapidF EOL
END
AutoCycCutSub1
DoCycleComment
Milling
AutoCycCutSub2
NEXTFeat
RETURN

XYRepAutoCycle:
CycleWarning
EachRep
EACHFeat
IF SPXMove? OR SPYMove?
SeqC Feed MoveSXYC GetConnectF EOL
END
SetAbs
Save# Num#('4') SPX#
Save# Num#('5') SPY#
SetInc
AutoCycCutSub1
DoCycleComment
Milling
AutoCycCutSub2
SetAbs
TrackXNO# ADD# Recall# Num#('4') Recall# Num#('6')
TrackYNO# ADD# Recall# Num#('5') Recall# Num#('7')
SetAbsOrInc
NEXTFeat
NextRep
RETURN

DrillStuff:
GetCycle
RETURN

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

GetStartOfSameTool:
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
RETURN

MasterSub:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE
IF ToolChangeAtHome?
SetHome
SeqC Preset Home EOL
END
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC Plane AbsOrInc 'G94' EOL { IPM }
SeqC Feed StrtPos RapidF EOL
DoIndex
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE

{Finish off last Operation}

DoEndOpPS
IF ToolChangeAtHome?
SetAbs
LoadFeat
SUB# HomeX# CurOriginPosX#
SUB# HomeY# CurOriginPosY#
Num#('0') { Dummy Z }
SeqC AbsOrInc EOL
SeqC Feed MoveXY RapidF EOL
END
IF LAST ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END

{Start new Operation}

IF ToolChangeAtHome?
SeqC Preset Home EOL
END
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC PlaneC AbsOrInc EOL
SeqC Feed StrtPos RapidF EOL
DoIndex
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqC 'M00' EOL
END

{Start new Operation}

GetStartOfSameTool
SeqC PlaneC Feed
LoadFeat StartPosX# StartPosY# ClearancePlane2#
IF XMove? OR YMove?
StrtPosC
ELSE
StrtPos
END
IF Milling? AND FeedEntry? AND NOT Flag?('1')
FeedEnt
ELSE
RapidF
END
EOL
END
END
END {common point for all operations}
IF Milling?
IF AutoCycle?
IF Repeats?
XYRepAutoCycle
IF NOT FeedConnect?
SeqC ExitMove2 EOL
END
ELSE
NoRepAutoCycle
SeqC ExitMove2 EOL
END
ELSE { NOT AutoCycle }
IF Repeats?
XYRep
ELSE
Milling
END
SeqC ExitMove2 EOL
END
ELSE
IF Drilling?
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStuff
ELSE
SeqC Feed StrtPos FeedEnt EOL
END
ToolPath
NextRep
ELSE
DrillStuff
ToolPath
END
END
END
RETURN

EndPartSub:
{End of program ************************************************************}

{finish last operation}
DoEndOpPS
SeqC 'M15' EOL { All Auxillary Heads Up }
SeqC 'G04F80000' EOL { .75 Second Dwell }
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
SetAbs
LoadFeat
SUB# FIRST HomeX# CurOriginPosX#
SUB# FIRST HomeY# CurOriginPosY#
Num#('0') { Dummy Z }
SeqC AbsValue EOL
SeqC Feed MoveXY RapidF EOL
END
IF ProgStop?
SeqC 'M00' EOL
ELSE
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart?
SeqC ProgStop EOL
END
END
RETURN

MPLoop:
TagInit
IF AllToolsOnePart?
EachPart
TagInc
EachOp
MasterSub
NextOp
EndPartSub
NextPart
ELSE { OneToolAllParts }
Save# Num#('2') Recall# Num#('1')
IF LTEqual? Recall# Num#('1') Recall# Num#('3')
EachOp
IF Equal? Operation# Recall# Num#('2')
Save# Num#('2') ADD# Operation# Num#('1')
IF NewTool?
IF Equal? Recall# Num#('1') Recall# Num#('3')
Save# Num#('2') Operation#
ELSE
IF NotEqual? Recall# Num#('1') SUB# Recall# Num#('2') Num#('1')
Save# Num#('2') SUB# Operation# Num#('1')
END
END
END
END
NextOp
EachPart
TagInc
EachOp
IF GTEqual? Operation# Recall# Num#('1')
IF LTEqual? Operation# Recall# Num#('2')
IF Equal? Operation# Recall# Num#('1')
IF NOT FirstPart?

{Finish off last Operation}

DoEndOpPS

{Start new Operation}

DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC PlaneC AbsOrInc EOL
SeqC Feed StrtPos RapidF EOL
END
END
MasterSub
END
END
NextOp
NextPart
Save# Num#('1') ADD# Recall# Num#('2') Num#('1')
END
END
RETURN

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

{setup and initializations}
InitProg
ReverseXZArcs
NoIJKSigns
SetMaxFeed('400')
Save# Num#('1') Num#('0')
Save# Num#('2') Num#('0')
Save# Num#('3') Num#('0')
SetFlag('1') { For M04/M08 Head Down/Up }
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
END
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 ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
WFOStuff
IF MultipleParts?
IF WorkFixtureOffsets?
'NOTE: This Post Processor does not support Work Fixture Offsets for Multiple Parts.' EOL
'Therefore, the output will be controlled by the following values that are' EOL
'already entered in Equally Spaced Offsets Edit Fields:' EOL
'X' PartShiftX# ' Y' PartShiftY# ' Z' PartShiftZ# EOL
'It is recommended that you change your selection to Equally Spaced Offsets.' EOL
END
Save# Num#('1') Num#('1')
EachOp
IF LastOp?
Save# Num#('3') Operation#
END
NextOp
MPLoop
IF OneToolAllParts?
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
EndPartSub
END
ELSE
EachOp
MasterSub
NextOp
EndPartSub
END
SeqC EOP 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:
Fanuc 5M Router [SP] M571 81 3
Dynapath Delta 20 SP M780 81 2
AB 7360 Hardinge [SP] L822 85
Fanuc 0M [SP] M455 81 2
Stromlaufplan Passat 81 Climatronic Motor AHU,AHH,AFN,AVG,AJM,ATJ,AVB,AFB,AKN ab 05 1998
Stromlaufplan Passat 81 Radio Navigationssystem (MFD) mit schwarz weiß Display ab 05 2001
AB 8600MC V M537 81 5m
Black&Decker Router M699 81 4m
AB 9 230 [XY] M720 81 4
Fanuc 10M (AGA) M147 81 2
SP KARTA ODPOWIEDZI
Bandit IV AB [DM] MV32 89 1
Tosnuc 600M VMC 45 M442 81 3
Podstawy dzialania routerow i routingu
Pronator Quadratus tape SP

więcej podobnych podstron