BP I ProtoTRAK M493 87d


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

{4/15/92
Copied & modified: LongHand2 M001.81.
For: Hi-Stat.
Machine: BridgePort Series I
Control: ProtoTRAK Plus
This Post Processor supports both Absolute and Incremental output.
This Post Processor does not support Sub-Programs.
Though this is a 2-Axis Mill, the control will accept ZMoves.
It will stop whenever a ZMove is encountered so Operator can manually raise the Spindle.
3 Rules to follow:
G Codes must be on every line.
G codes must have spaces between them.
End of block character must be semicolon.
Var(1) stores the current ZPos.
Var(2) stores the next ZPos.
These two are compared for the purposes of suppressing any lines containing only Rapid or Feed.
DWB}

{9/1/92
Modified: BP I ProtoTRAK M493.81.
For: Hi-Stat.
Converted per LongHand [AbsOrInc] M001.81.1
This Post Processor supports MultipleParts.
Changed usage of Var(1) and Var(2) to LoadFeat routines.
DWB}

{10/12/92
Modified: BP I ProtoTRAK M493.81.1
For: Hi-Stat.
Changes made per conversation with Doug Wiltanger at Hi-Stat.
Changed Arcs Stop On Quadrants to TRUE in Mach Spec.
Changed CRCOffsetC to call to CheckCRCOffsetC sub at StdLine.
CheckCRCOffsetC sub that outputs ' D' ToolDiameter# based on status of Flag(1).
DWB}

{11/12/92
Modified: BP I ProtoTRAK M493.81.2
For: Hi-Stat.
Changes made per conversation with Dan Williams at Hi-Stat.
Deleted G17, G18 and G19 in Mach Spec.
Changed Format#2 from ###.###;0. to ##0.0##;0 in Prog and Mach Spec.
Changed Format#3 from *###.###;0. to *##0.0##;0 in Prog.
Changed Format#4 from ####.####;0. to ###0.0###;0 in Prog and Mach Spec.
Changed Formats for G and M-codes from #0 to 00 in Mach Spec.
Deleted all WorkFixtureOffset Commands and routines.
Deleted EntryMove sub and all calls to same.
Deleted LoadFeat and IF ZMove at ExitMove sub.
Changed ZCP2C to ZCP2 at ExitMove sub.
Deleted ExitMove2 sub and call to same.
Changed MoveXYZC to MoveXY at FormatArc sub.
Changed ArcIJC to ArcIJ at FormatArc sub.
Changed all occurances of MoveXYZC to MoveXYC.
Deleted OR ZMove? at StdLine sub.
Deleted OR SPZMove? at ToolPath PointFeat.
Deleted IF ZMove? at ToolPath AutoCycle LineFeat.
Added CRCOnC and CheckCRCOffset at ToolPath ArcFeat.
Deleted Milling sub.
Changed all calls to Milling sub to ToolPath.
Deleted ZCP2 at XYZRep sub.
Deleted all Z related Commands and routines for Drilling Operations.
Deleted FromCP and StrtPos from Drill Cycle Block.
Changed ' G80' CRCOffC to Rapid AbsOrInc Preset ' X0 Y0 Z0' at safe start at FirstOperation.
Changed OpToolID ToolChng to ' T1 M16' at FirstOperation.
Moved Speed SpinOn to StrtPos block at FirstOperation and NewTool.
Deleted AbsOrInc from StrtPos block at FirstOperation, NewTool and SameTool.
Changed OfstOn to ' G45' ToolOfst ZCP1 OpToolID at FirstOperation, NewTool and SameTool.
Moved ' G45' block to before StrtPos block.
Changed IncValue OfstOff to ' G28 Z15.0' at NewTool, SameTool and end of Prog.
Deleted ToolChangeAtHome at NewTool.
Deleted SpinOff at NewTool and SameTool.
Changed ' M0' to ' M00' at NewTool, SameTool and end of Prog.
Deleted ZCP2 at IF Milling.
Outputting ZCP3 for standard Milling with no Repeats, not outputting for AutoCycles at IF Milling.
Deleted ZCP3 at IF Drilling.
Changed FIRST ToolChangeAtHome to ' G28 X0 Y0' at end of Prog.
Added ToolChng to block prior to EOP at end of Prog.
DWB}

{1/11/94
Modified: BP I ProtoTRAK M493.81.3
Created: BP I ProtoTRAK M493.81.3d for Virtual DOS only.
For: Gibbs & Associates/Jack Laugle.
Changes made per Pete Jackson.
Jack claimed that virtual posted output file was fine, but when opened in DOS Editor, the output
was all on one block.
Added '10' to 3rd field of ASCII Line Terminators in Compost Numbers Dialog.
This is the ASCII value for Line Feed.
1st field contains '59' which is the ASCII value for semi-colon and is a required rule of the
ProtoTRAK manual.
2nd field contains '13' which is the ASCII value for Carriage Return.
DWB}

{2/9/96, Updated .81 number to .84, no changes necessary, MPK}

{3/22/96, Tested ZOnlyRepAutCycle, Incremented number to .87, MPK}

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

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

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(Dwell#,6) {.72}
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

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

DoCycleComment:
IF UseComments? AND SubComment?
'( CYCLE START )' EOL
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# ': ' 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 Rapid ' A' FourthDegree# EOL
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqC Rapid ' A' FourthDegree# EOL
FourthCCWF {reset flag}
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqC Rapid ' B' FifthDegree# EOL
FifthCWF {reset flag}
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqC Rapid ' B' FifthDegree# EOL
FifthCCWF {reset flag}
END
RETURN

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

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

GetConnect:
IF FeedConnect?
Feed
ELSE
Rapid
END
RETURN

ExitMove:
IF NOT FeedConnect?
SeqC CRCOffC
IF FIFO? { .81 }
Feed PRIME ZCP2 FeedEntC
ELSE
Rapid PRIME ZCP2
END
EOL
END
RETURN

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

FormatArc:
IF ArcCW?
CWArc
ELSE
CCWArc
END
MoveXY ArcIJ
RETURN

CheckCRCOffsetC:
IF Flag?('1')
ELSE
SetFlag('1')
IF CutterRadiusCompensation?
' D' ToolDiameter#
END
END
RETURN

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

ToolPath:
SetFlagF('1') { ResetCRCNum }
EACHFeat
IF PointFeat? { Drilling Only }
IF SPXMove? OR SPYMove?
SeqC Rapid MoveSXYC EOL
END
ELSE
IF RapidFeat?
IF LastFeat? AND AutoCycle? {.70}
SeqC CRCOffC Rapid MoveXYC EOL
ELSE
IF XMove? OR YMove?
SeqC Rapid MoveXYC EOL
END
END
ELSE
IF LineFeat?
IF LastFeat? AND AutoCycle? {.70}
SeqC CRCOffC Feed MoveXYC FeedRateC EOL
ELSE
StdLine
END
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC CRCOnC FormatArc ArcFeedC CheckCRCOffsetC EOL
DecelMove2
END
SeqC CRCOnC FormatArc DecelFeed CheckCRCOffsetC EOL
ELSE
SeqC CRCOnC FormatArc ArcFeedC CheckCRCOffsetC EOL
END
NEXTQuadrant
END
END
END
END
NEXTFeat
RETURN

WFOStuff: { Called at beginning only. }
{ 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}
IF FIFO? {.81}
SeqC AbsOrInc Feed ZCP2 FeedEntC EOL {.71.2 removed CRCOffC, gets turned off in ToolPath}
ELSE
SeqC AbsOrInc Rapid ZCP2 EOL
END
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN

XYZRep:
CycleWarning
EachRep
DoCycleComment
IF NOT FirstCycle?
SeqC CRCOffC GetConnect StrtPosC EOL
END
ToolPath
ExitMove
NextRep
RETURN

NoRepAutoCycle:
EACHFeat
IF SPXMove? OR SPYMove?
SeqC Rapid MoveSXYC EOL
END
AutoCycCutSub1
DoCycleComment
ToolPath
AutoCycCutSub2
NEXTFeat
RETURN

XYZRepAutoCycle:
CycleWarning
EachRep
EACHFeat
IF FirstCycle? AND FirstFeat?
ELSE
SeqC GetConnect MoveSX MoveSY EOL
END
AutoCycCutSub1
DoCycleComment
ToolPath
AutoCycCutSub2
NEXTFeat
NextRep
RETURN

ZonlyRepAutoCycle:
EACHFeat
IF SPXMove? OR SPYMove?
SeqC GetConnect MoveSXYC EOL
END
AutoCycCutSub1
EachRep
IF FirstCycle?
DoCycleComment
ELSE
IF NOT FeedConnect?
ExitMove
END
IF SPXMove? OR SPYMove?
SeqC GetConnect MoveSXYC EOL
END
DoCycleComment
END
ToolPath
NextRep
AutoCycCutSub2
ReSetPass2 {restore for positioning moves}
NEXTFeat
RETURN

DrillStuff:
GetCycle
SeqC Cycle RLevel ZDepth Dwell Peck Retract FeedEnt EOL
RETURN

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

GetStartOfSameTool:
Plane
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
RETURN

MasterSub:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE
Seq Plane Rapid AbsOrInc Preset ' X0 Y0 Z0' EOL
SeqC ' T1 M16' EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC Rapid StrtPos Speed SpinOn EOL
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC CoolOn EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE

{Finish off last Operation}

SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
DoEndOpPS
IF LAST ProgStop?
SeqC ' M00' EOL
ELSE
SeqC ProgStop EOL
END

{Start new Operation}

PlaneC
Seq ToolChng EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos Speed SpinOn EOL
SeqC CoolOn EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
SeqC ' M00' EOL

{Start new Operation}

GetStartOfSameTool
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos SpeedC SpinOn EOL
SeqC CoolOn EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
IF NewToolOffset?
SeqC ' G28 Z15.0' EOL

{Start new Operation}

GetStartOfSameTool
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos SpeedC EOL
ELSE

{Start new Operation}

GetStartOfSameTool
SeqC Rapid StrtPos SpeedC EOL
END
IF NOT CoolOff? AND LAST CoolOff?
SeqC CoolOn EOL
END
END
END
END
END {common point for all operations}
RapidF# { No Output }
IF Milling?
IF AutoCycle?
IF Repeats?
IF ZshiftOnly?
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
ELSE
NoRepAutoCycle
END
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
ToolPath
END
END
SeqC CRCOffC EOL
ELSE
IF Drilling?
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStuff
END
ToolPath
NextRep
ELSE
DrillStuff
ToolPath
END
SeqC ' G80' EOL
END
END
RETURN

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

{finish last operation}
SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
DoEndOpPS
SeqC ' G28 X0 Y0' SpinOff EOL
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 }
IF LTEqual? Recall# Num#('1') Recall# Num#('3')
Save# Num#('2') Recall# Num#('1')
EachOp
IF GTEqual? Operation# Recall# Num#('1')
IF Equal? Recall# Num#('1') Recall# Num#('2')
IF LastOp?
Save# Num#('2') ADD# Operation# Num#('1')
ELSE
IF NewTool? AND NOT FirstOperation?
Save# Num#('2') Operation#
END
END
END
END
NextOp
EachPart
TagInc
EachOp
IF GTEqual? Operation# Recall# Num#('1')
IF LessThan? Operation# Recall# Num#('2')
IF Equal? Operation# Recall# Num#('1')
IF NOT FirstPart?

{Finish off last Operation}

IF FullUp?
SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
END
DoEndOpPS

{Start new Operation}

PlaneC
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos SpeedC EOL
IF FullUp?
SeqC CoolOn EOL
END
END
END
MasterSub
END
END
NextOp
NextPart
Save# Num#('1') Recall# Num#('2')
END
END
RETURN

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

{setup and initializations}
InitProg
ReverseXZArcs
SetFlood
SetMaxRPM('10000')
SetMaxFeed('500')
Save# Num#('1') Num#('0')
Save# Num#('2') Num#('0')
Save# Num#('3') Num#('0')
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
EOR EOL
ProgID1
IF UseComments? AND ProgramNameComment?
'( ' 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 ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
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 ToolChng EOL
SeqC 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:
BP I ProtoTRAK M493 87m
BP I ProtoTRAK M493 87
Prototrak BP [RI] NMT67 16 1
2009 03 BP KGP Niebieska karta sprawozdanie za 2008rid&657
BP IIA (HAC) M200 81
bp
BP SSEP wyklad5
BP Boss 1 6 M041 89 1
BP EZ Trak [WD] MX65 13
BP BTC [VT] M959 89 1
BP Boss 9 M174 89 2
Test BP
BP EZPath DX32R Romi L832 85 1
BP Boss 6 M284 89 1
Eula BP

więcej podobnych podstron