BP Series II [KSW] M425 80 6


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

{6/21/91,
Copied and modified: No Subs M001.80.1
For: Keystone Steel & Wire
Machine: Bridgeport Series II.
Control: Bridgeport.
This Post Processor outputs Tab Sequential Formats, all incremental, no addresses.
3 different FORMATs allowed are as follows:
( Linear: SeqC, XMoveC, YMoveC, ZMoveC, F, M )
000,##.0###,##.0###,##.0###,#0,#0 or
( Arc: SeqC, XMove, YMove, ArcI, ArcJ, F, M )
000,##.0###,##.0###,##.0###,##.0###,#0,#0 or
( Rotary Table: SeqC, XMoveC, YMoveC, AngleC, F, M )
000,##.0###,##.0###,##.0###,#0,#0
Conditionals for XMoveC, YMoveC, ZMoveC/AngleC can be suppressed from right to left only.
(i.e. If ZMoveC is not conditional, XMoveC and YMoveC MUST be output,
even if XMoveC and YMoveC are conditional. If ZMoveC is conditional, it can be suppressed.)
Rotary Table output CANNOT contain any ZMoves on any line throughout entire program.
NOTE:
There is still a bug with AutoCycles that repeat in X and/or Y.
The Positioning moves for the first group are okay, but each group thereafter does not
position correctly.
DWB}

{6/28/91,
Modified: BP Series II [KSW] M425.80
For: Keystone Steel & Wire
Made following modifications per Customer request.
Corrected FORMAT output of Real numbers (X,Y,Z,I and J).
Whole numbers need a Zero to the right of the decimal Point.
NOTE: There is a bug which outputs 4 Zero's instead of one.
Deleted all occurances ',,5' SpinOff command.
Deleted extra call to DoSeqC sub in FormatArc which caused output of two line numbers on all
ArcFeat lines.
Added output of ToolLengthCompensation at FirstOperation, NewTool and at end of Prog.
Added ',,57' QuillDown in IF Drilling?
Added ',,55' Z Axis Bore Cycle for FIFO operations.
Added logic to output ',,54' to index Tool Cartridge Station.
This is a 12 Station, mono-indexing control.
Customer indicated that they will start with Station #1, and index to the next Station at each
ToolChange.
Added logic at end of Prog to Index back to Station #1.
Deleted ',,6' ToolChng command at end of Prog.
DWB}

{7/18/91,
Modified: BP Series II [KSW] M425.80.1
For: Keystone Steel & Wire
Made following modifications per Customer request.
Deleted output of ToolLengthCompensation at FirstOperation.
Modified output of ToolLengthCompensation at NewTool.
If Compensation is a plus amount, then output is to come before ',,6' ( ToolChng ) command.
If Compensation is a minus amount, then output is to come after ',,7' ( CoolOn ) command.
Modified output to restore Original ToolLengthCompensation at end of Prog.
DWB}

{9/30/91,
Modified: BP Series II [KSW] M425.80.2
For: Keystone Steel & Wire
Made following modifications per Customer request.
Added LAST to ClearancePlane1# at NewTool and SameTool.
Added move to ClearancePlane1# at end of Prog for Non-MultipleParts situation.
Modified logic for ToolIndexing Counter.
There was a bug when final Operation was a SameTool Operation.
Added Logic to output ConstantSurfaceFeed code.
Control is a Tape Reader Environment.
Machine automatically Accelerates and Decelerates at beginning and end of Move, respectfully.
To override this for ConstantSurfaceFeed, block must contain a non-modal, negative FeedRate.
ArcFeats require special Formula ( 'R' = ContourArc; 'r' = ToolRadius; 'F' = Programmed FeedRate ).
Fillets FeedRate Formula = (R-r)/R*F; Outside Corner FeedRate Formula = (R+r)/R*F.
LineFeats are equal to Programmed FeedRate.
Tape Reader Dwell occurs if Table has moved to endpoint before Reader has had a chance to read the
entire block. This would cause the Table to overtravel. One axis move must be GTEqual .0007, two
axis move must have at least one axis move GTEqual .0013, and three axis move must have at least
one axis move GTEqual .002.
Flag('1') is TRUE if ConstantSurfaceFeed is TRUE, and move is above allowed limit.
Added ArcSegmentation for ArcFeat's with ZMoves.
Added QuillDown and QuillUp subs to output ',,57' and ',50' respectfully.
Modified Entry/Exit Repeat Operations to output ',50' ( Quill Up ) for FI-RO, and
PRIME ClearancePlane2# for other Cycle Types.
Flag('2') is set to output '.0' in EntryMove sub to handle this.
Modified Peck Drill Cycle for Manual Peck, Z axis (Knee) output, no Quill Down.
NOTE: Still need Booleans ToolLeft?, ToolCenter?, ToolRight, FirstSegment, LastSegment and
FirstQuadrant? for ConstantSurfaceFeed.
DWB}

{3/24/92
Modified: BP Series II [KSW] M425.80.3
For: Keystone Steel & Wire
Corrected problems for PeckFullOut Drill Cycle.
Added PeckChipBreaker Drill Cycle.
Changed the DoPeck sub and labeled the old DoPeckOld for future reference purposes.
Commented out some of the Math in the Drill sub.
Added the QuillDown GetEOL to the DrillStart sub 'ClearancePlane2#' line.
DWB & KM}

{5/8/92
Modified: BP Series II [KSW] M425.80.4
For: Keystone Steel & Wire
Made drastic changes per LongHand [inc] M001.81.
Added Quill & Knee Drill Cycles.
IF ToolDiameter# ˛ Num#('.3125'), then don't output QuillDown, QuillUp and FeedEnt.
Added QuillDown and QuillUp to Peck Drill Cycles.
Modified PeckChipBreaker Drill Cycle.
Cleaned up all drill cycles, was able to simplify from original.
Customer reported that XY Repeat AutoCycles, Helical Entry was not correct.
He said that it does it correctly in ncCAM, but not at the machine.
He also said that it repeated the Cycle 15 times.
I don't know what his original Repeat value was, but I verified that it works.
Modified Turret indexing counter at NewTool to only increment when Tool# ˛ 12.
NOTE: Still need Booleans ToolLeft?, ToolCenter?, ToolRight, FirstSegment, LastSegment and
FirstQuadrant? for ConstantSurfaceFeed.
NOTE: Customer wants a Sum Checker to validate Absolute Status Register Axis Coordinates.
DWB}

{7/13/92
Modified: BP Series II [KSW] M425.80.5
For: Keystone Steel & Wire
Changes made per conversations with Al Roe @ Keystone Steel & Wire and sample part/output.
Modified Quill & Knee Drill Cycles at QuillDown and DrillStart subs, and ToolPath PointFeat.
Added warning if Operation is of the Tapping or Boring type at IF Drilling.
Corrected Line Number Bug.
Modified the times that DoSeqC sub is called, a Line Number was being imbedded within a block.
Modifications made at QuillDown, QuillUp, GetXYSP, AutoCycCutSub1, XYZRep and ZOnlyRepAutoCycle
subs and ToolPath PointFeat.
DWB}

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

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

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Recall#,2)
FORMAT(ADD#,2)
FORMAT(SUB#,2)
FORMAT(ClearancePlane1#,2)
FORMAT(ClearancePlane2#,2)
FORMAT(ClearancePlane3#,2)
FORMAT(HomeX#,2)
FORMAT(HomeY#,2)
FORMAT(StartPosX#,2)
FORMAT(StartPosY#,2)
FORMAT(SPX#,2)
FORMAT(SPY#,2)
FORMAT(SPZ#,2)
FORMAT(EPX#,2)
FORMAT(EPY#,2)
FORMAT(EPZ#,2)
FORMAT(ToolLength#,2)
FORMAT(Peck#,4)
FORMAT(Retract#,4)
FORMAT(ArcI#,3)
FORMAT(ArcJ#,3)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Program#,5) {.72}
FORMAT(Operation#,5) {.72}
FORMAT(Tool#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Dwell#,6) {.72}
FORMAT(TRUNC#,7)
FORMAT(RapidF#,7)
FORMAT(FeedEntry#,7)
FORMAT(FeedContour#,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

DoSeqC:
IF NOT MinimizeSequencing?
{ Because line numbers must start every block that contains a command to the control,
and because PostScript may contain one of these commands, we need to call this sub. If the
PostScript Dialog is empty, the line number will be output anyway. If we could check for
the contents, we could eliminate this problem.}
'?'
END
RETURN

GetEOL:
IF NOT EmptyLine?
'$' EOL
END
RETURN

DoPartCycleComment:
IF UseComments? AND SubComment?
TagInc
'( START PART NO. ' Tag# ' )' GetEOL
IF LastPart?
TagInit
END
END
RETURN

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

DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
'( OPERATION ' Operation# ': ' OperationType$ ' )' GetEOL
END
IF OperationComment?
'( ' OperationComment$ ' )' GetEOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' GetEOL
END
IF ToolTypeComment?
'( TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' GetEOL
END
IF ToolComment?
'( ' ToolComment$ ' )' GetEOL
END
RestoreScale
END
RETURN

PSInit: {reset flags}
RotateF
RETURN

PSStuff: {revised.72}
IF FourthCW?
FORMAT(FourthDegree#,2)
DoSeqC ',0.,0.,' FourthDegree# GetEOL
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
DoSeqC ',0.,0.,' FourthDegree# GetEOL
FourthCCWF {reset flag}
END
RETURN

DoPostScript:
PSInit
EachPS
DoSeqC PostScript GetEOL {literals}
PSStuff {commands}
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
DoSeqC EndOpPS GetEOL {literals}
PSStuff {commands}
NextPS
RETURN

GetRapidF:
',' RapidF#
Save# Num#('7') RapidF#
RETURN

GetRapidFC:
IF NotEqual? Recall# Num#('7') RapidF#
GetRapidF
END
RETURN

GetFeedEnt:
IF Drilling?
IF GreaterThan? ToolDiameter# Num#('.3125')
',' FeedEntry#
Save# Num#('7') FeedEntry#
END
ELSE
',' FeedEntry#
Save# Num#('7') FeedEntry#
END
RETURN

GetFeedEntC:
IF NotEqual? Recall# Num#('7') FeedEntry#
GetFeedEnt
END
RETURN

GetFeedRate:
',' FeedContour#
Save# Num#('7') FeedContour#
RETURN

GetFeedRateC:
IF NotEqual? Recall# Num#('7') FeedContour#
GetFeedRate
END
RETURN

QuillDown:
IF Flag?('1')
SetFlagF('1')
IF Milling?
DoSeqC ',,57' GetEOL
ELSE
IF GreaterThan? ToolDiameter# Num#('.3125')
',,57'
END
END
END
RETURN

QuillUp:
IF NOT Flag?('1')
SetFlag('1')
',50'
END
RETURN

EntryMove:
Save# Num#('3') SPZ#
DoSeqC ',.0,.0,' SPZ#
IF FeedEntry?
GetFeedEnt
ELSE
GetRapidFC
END
GetEOL
QuillDown
RETURN

EntryMove2:
IF NotEqual? Recall# Num#('3') SPZ#
Save# Num#('3') SPZ#
DoSeqC ',.0,.0,' SPZ#
IF FeedEntry?
GetFeedEntC
ELSE
GetRapidFC
END
GetEOL
END
RETURN

GetConnect:
IF Repeats? AND FeedConnect?
GetFeedRateC
ELSE
GetRapidFC
END
RETURN

GetXYSP:
IF NotEqual? Recall# Num#('2') SPY#
DoSeqC ',' SPX# ',' SPY#
IF AutoCycle?
IF Repeats?
GetConnect
ELSE
GetRapidFC
END
END
ELSE
IF NotEqual? Recall# Num#('1') SPX#
DoSeqC ',' SPX#
IF AutoCycle?
IF Repeats?
GetConnect
ELSE
GetRapidFC
END
END
END
END
Save# Num#('1') SPX#
Save# Num#('2') SPY#
RETURN

ExitMove:
IF NOT FeedConnect?
IF NotEqual? Recall# Num#('3') PRIME ClearancePlane2#
Save# Num#('3') PRIME ClearancePlane2#
DoSeqC ',.0,.0,' PRIME ClearancePlane2#
IF FIFO?
GetFeedEntC
ELSE
IF NOT AutoCycle?
GetRapidFC
END
END
IF AutoCycle? AND Repeats? AND ZshiftOnly?
ELSE { NOT AutoCycle }
IF Equal? Recall# Num#('6') Repeats#
QuillUp
END
END
GetEOL
END
END
RETURN

ExitMove2:
IF NotEqual? Recall# Num#('3') ClearancePlane3#
Save# Num#('3') ClearancePlane3#
DoSeqC ',.0,.0,' ClearancePlane3#
IF FIFO?
GetFeedEntC
ELSE
GetRapidFC
END
QuillUp GetEOL
END
RETURN

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

FormatMove:
IF ZMove?
',' EPX# ',' EPY# ',' EPZ#
ELSE
IF YMove?
',' EPX# ',' EPY#
ELSE
IF XMove?
',' EPX#
END
END
END
RETURN

DrillStart:
IF NOT Peck?
IF LTEqual? ToolDiameter# Num#('.3125')
DoSeqC ',,51' GetEOL { Drill Cycle On }
IF Equal? Recall# Num#('3') ClearancePlane2#
DoSeqC ',.0' GetEOL { DrillCP }
END
END
END
DoSeqC
IF NotEqual? Recall# Num#('3') ClearancePlane2#
Save# Num#('3') ClearancePlane2#
',.0,.0,' ClearancePlane2# GetRapidFC { DrillCP }
END
QuillDown GetEOL
IF NOT Peck?
IF GreaterThan? ToolDiameter# Num#('.3125')
DoSeqC ',,51' GetEOL { Drill Cycle On }
END
END
RETURN

DoFIFO:
IF LTEqual? ToolDiameter# Num#('.3125')
',' { For suppression of FeedEnt }
END
',55' { Z Axis Bore Cycle }
RETURN

CheckFIFO:
IF FIFO?
IF RetractToCP1?
DoFIFO
ELSE
IF Repeats?
IF FirstCycle? AND FirstFeat?
DoFIFO
END
ELSE
IF FirstFeat?
DoFIFO
END
END
END
END
RETURN

DoPeck:
Save# Num#('11') SUB# Recall# Num#('11') Peck#
IF GTEqual? Recall# Num#('11') SPZ#
IF Flag?('3') { First Peck }
SetFlagF('3')
DoSeqC ',.0,.0,-' Peck# GetFeedEnt GetEOL
Save# Num#('12') Peck#
ELSE
IF PeckFullRetract?
DoSeqC ',.0,.0,' Recall# Num#('12') GetRapidFC GetEOL
DoSeqC ',.0,.0,-' SUB# Recall# Num#('12') Retract# GetEOL
ELSE
DoSeqC ',.0,.0,' Retract# GetRapidFC GetEOL
END
DoSeqC ',.0,.0,-' ADD# Peck# Retract# GetFeedEnt GetEOL
Save# Num#('12') ADD# Recall# Num#('12') Peck#
END
END
RETURN

ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
IF RetractToCP1?
GetXYSP GetRapidFC GetEOL
IF Repeats?
IF FirstCycle? AND FirstFeat?
ELSE
GetXYSP GetRapidFC GetEOL
DrillStart
END
ELSE
IF NOT FirstFeat?
GetXYSP GetRapidFC GetEOL
DrillStart
END
END
ELSE
IF Peck?
GetXYSP GetRapidFC GetEOL
END
END
IF Peck?
Save# Num#('11') ClearancePlane2#
Save# Num#('12') Num#('0')
SetFlag('3')
DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck
IF PeckFullRetract?
DoSeqC ',.0,.0,' Recall# Num#('12') GetRapidFC GetEOL { ZCP2 }
Save# Num#('12') SUB# Recall# Num#('12') Retract#
DoSeqC ',.0,.0,-' Recall# Num#('12') GetEOL { Retract }
ELSE
DoSeqC ',.0,.0,' Retract# GetRapidFC GetEOL { Retract }
Save# Num#('12') SUB# Recall# Num#('12') Retract#
END
Save# Num#('11') SUB# ClearancePlane2# SPZ#
DoSeqC ',.0,.0,-'
SUB# Recall# Num#('11') Recall# Num#('12') { Zdepth }
GetFeedEnt GetEOL
Save# Num#('1') SPX#
Save# Num#('2') SPY#
TrackZNO# SPZ#
DoSeqC ',' SPX# ',' SPY# ','
IF RetractToCP1?
ClearancePlane1# { ZCP2 }
Save# Num#('3') ClearancePlane1#
ELSE
ClearancePlane2# { ZCP2 }
Save# Num#('3') ClearancePlane2#
END
GetRapidFC
IF RetractToCP1?
QuillUp
END
GetEOL
ELSE
IF LTEqual? ToolDiameter# Num#('.3125')
IF NOT RetractToCP1?
IF NOT FirstFeat?
DoSeqC
IF NotEqual? SPY# LAST SPY#
',' SPX# ',' SPY#
ELSE
',' SPX#
END
GetEOL
END
END
ELSE
DoSeqC
IF RetractToCP1?
',' SPX# ',' SPY# ',' SPZ#
ELSE
IF FirstFeat?
',' SPX# ',' SPY# ',' SPZ#
ELSE
IF NotEqual? SPZ# LAST SPZ#
',' SPX# ',' SPY# ',' SPZ#
ELSE
IF NotEqual? SPY# LAST SPY#
',' SPX# ',' SPY#
ELSE
',' SPX#
END
END
END
END
GetFeedEntC CheckFIFO GetEOL
END
Save# Num#('1') SPX#
Save# Num#('2') SPY#
TrackZNO# ClearancePlane2#
IF RetractToCP1?
DoSeqC
IF LTEqual? ToolDiameter# Num#('.3125')
GetRapidF
ELSE
GetRapidFC
END
QuillUp GetEOL
DoSeqC ',' SPX# ',' SPY# ',' ClearancePlane1# GetEOL
Save# Num#('3') ClearancePlane1#
ELSE
Save# Num#('3') ClearancePlane2#
END
END
ELSE
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
DoSeqC FormatMove GetRapidFC GetEOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
DoSeqC FormatMove GetFeedRateC GetEOL
END
ELSE
IF ArcFeat?
IF ZMove?
EACHArcSegment
DoSeqC ',' EPX# ',' EPY# ',' EPZ# GetFeedRateC GetEOL
NEXTArcSegment
ELSE
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
DoSeqC ',' EPX# ',' EPY# ',' ArcI# ',' ArcJ# GetFeedRateC GetEOL
NEXTQuadrant
END
END
END
END
IF LastFeat?
Save# Num#('1') EPX#
Save# Num#('2') EPY#
Save# Num#('3') EPZ#
END
END
NEXTFeat
RETURN

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

GetACOrigin:
SetStatusOff
SetACSPCompF
Save# Num#('4') SPX#
Save# Num#('5') SPY#
SetACSPComp
SetStatusOn
RETURN

AutoCycCutSub1: {part 1}
Save# Num#('1') Recall# Num#('4')
Save# Num#('2') Recall# Num#('5')
GetXYSP GetEOL
CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY}
GetACOrigin
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
RETURN

AutoCycCutSub2: {part 2}
Save# Num#('3') ClearancePlane2#
DoSeqC ',.0,.0,' ClearancePlane2#
IF FIFO?
GetFeedEntC
ELSE
GetRapidFC
END
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
IF Repeats? AND ZshiftOnly?
IF LastFeat?
QuillUp
END
ELSE
IF LastFeat? AND Flag?('2')
SetFlagF('2')
QuillUp
END
END
GetEOL
RETURN

Milling:
EntryMove
ToolPath
RETURN

XYZRep:
CycleWarning
Save# Num#('6') Num#('0')
EachRep
Save# Num#('6') ADD# Recall# Num#('6') Num#('1')
GetXYSP
IF NOT FirstCycle?
GetConnect
END
GetEOL
DoCycleComment
IF NOT FirstCycle? AND NOT FeedConnect? AND FeedEntry?
IF NotEqual? Recall# Num#('3') ClearancePlane2#
Save# Num#('3') ClearancePlane2#
DoSeqC ',.0,.0,' ClearancePlane2# GetRapidFC GetEOL
END
END
EntryMove2
QuillDown
ToolPath
ExitMove
NextRep
RETURN

NoRepAutoCycle:
SetFlag('2')
EACHFeat
AutoCycCutSub1
DoCycleComment
Milling
AutoCycCutSub2
NEXTFeat
RETURN

XYZRepAutoCycle:
CycleWarning
Save# Num#('6') Num#('0')
EachRep
Save# Num#('6') ADD# Recall# Num#('6') Num#('1')
IF Equal? Recall# Num#('6') Repeats#
SetFlag('2')
END
EACHFeat
AutoCycCutSub1
DoCycleComment
Milling
AutoCycCutSub2
TrackXNO# Recall# Num#('4')
TrackYNO# Recall# Num#('5')
NEXTFeat
NextRep
RETURN

ZonlyRepAutoCycle:
EACHFeat
AutoCycCutSub1
EachRep
IF FirstCycle?
DoCycleComment
EntryMove
ELSE
ExitMove
IF NOT FirstFeat?
GetXYSP GetConnect GetEOL
END
DoCycleComment
EntryMove2
END
ToolPath
NextRep
AutoCycCutSub2
NEXTFeat
RETURN

CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
Save# Num#('4') SPX#
Save# Num#('5') SPY#
ELSE
SetPass1
Save# Num#('1') StartPosX#
Save# Num#('2') StartPosY#
END
RETURN

GetStartOfSameTool:
Plane { No Output }
DoOpComments
DoPostScript
CheckPass
RETURN

DoToolIndex:
DoSeqC ',,54' GetEOL { Index Current Tool to Next Cartridge position }
RETURN

IndexToToolOne:
IF GreaterThan? Recall# Num#('8') Num#('1')
IF LessThan? Recall# Num#('8') Num#('13') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('12') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('11') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('10') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('9') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('8') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('7') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('6') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('5') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('4') DoToolIndex END
IF LessThan? Recall# Num#('8') Num#('3') DoToolIndex END
END
RETURN

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

{setup and initializations}
InitProg
ReverseXZArcs
SetInc
SetFlood
SetMaxFeed('39')
SetArcSegmentAccuracy('.001')
Save# Num#('8') Num#('0') { Initialize Cartridge Position Counter }
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
' NewWFO(56), NWFO(56) -' EOL
' The Work Fixture Offset # you specify will be used for all following operations.' EOL
' Do not use with the ncPost multiple part 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 {Start of post processing *********************}
IF FirstOperation?
{ Advance Counter to initial Cartridge Position }
IF LTEqual? Tool# Num#('12')
Save# Num#('8') ADD# Recall# Num#('8') Num#('1')
END
EOR '+' GetEOL
IF ToolChangeAtHome?
SetHome
END
IF UseComments?
IF ProgramNameComment?
'( ' ProgramName$ ' )' GetEOL
END
IF ProgramComment?
'( ' ProgramComment$ ' )' GetEOL
END
IF FormatNameComment?
'( FORMAT: ' FormatName$ ' )' GetEOL
END
IF TimeComment?
'( ' Date$ ' AT ' Time$ ' )' GetEOL
END
IF MovesComment?
'( OUTPUT IN INCREMENTAL INCHES )' GetEOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' GetEOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' GetEOL
END
END
OpenSub
RestoreScale
IF MultipleParts? AND AllToolsOnePart?
EachPart
DoPartCycleComment
END
Plane { No Output }
DoOpComments
DoPostScript
'?,,4' GetEOL { SpinOn }
IF MultipleParts? AND OneToolAllParts? AND FullUp?
EachPart
DoPartCycleComment
IF NOT FirstPart?
DoOpComments
END
END
CheckPass
DoSeqC ',' StartPosX# ',' StartPosY# GetRapidF GetEOL
Save# Num#('3') TrackZNO# ClearancePlane1#
IF NOT CoolOff?
DoSeqC ',,7' GetEOL { CoolOn }
END
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
EachPart
DoPartCycleComment
IF NOT FirstPart?
DoOpComments
CheckPass
DoSeqC ',' StartPosX# ',' StartPosY# GetEOL
END
END
ELSE
IF NewTool?

{Finish off last Operation}

IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
NextPart
END
DoSeqC ',,9' GetEOL { CoolOff }
IF NotEqual? Recall# Num#('3') ClearancePlane1#
Save# Num#('3') ClearancePlane1#
DoSeqC ',.0,.0,' ClearancePlane1# GetRapidFC GetEOL
END
IF MultipleParts? AND OneToolAllParts? AND FullUp?
NextPart
END
DoEndOpPS
IF LTEqual? Tool# Num#('12')
{ Advance Counter to next Cartridge Position }
Save# Num#('8') ADD# Recall# Num#('8') Num#('1')
IF Equal? Recall# Num#('8') Num#('13')
Save# Num#('8') Num#('1') { Re-Set Counter to Cartridge #1 Position }
END
DoToolIndex
END
IF ToolChangeAtHome?
DoSeqC ',' HomeX# ',' HomeY# GetEOL
END
IF GreaterThan? ToolLength# LAST ToolLength#
DoSeqC ',.0,.0,'
SUB# ToolLength# LAST ToolLength# { Compensate for New ToolLength }
GetEOL
END
DoSeqC ',,6' GetEOL { SpinOff/CoolOff/CycleOff }
IF LAST ProgStop?
DoSeqC ',,0' GetEOL { ProgStop }
ELSE
IF OptionalStops?
DoSeqC ',,0' GetEOL { ProgStop }
END
END

{Start new Operation}

Plane { No Output }
DoOpComments
DoPostScript
'?,,4' GetEOL { SpinOn }
IF MultipleParts? AND OneToolAllParts? AND FullUp?
EachPart
DoPartCycleComment
IF NOT FirstPart?
DoOpComments
END
END
CheckPass
DoSeqC ',' StartPosX# ',' StartPosY# GetRapidF GetEOL
IF NOT CoolOff?
DoSeqC ',,7' GetEOL { CoolOn }
END
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
EachPart
DoPartCycleComment
IF NOT FirstPart?
DoOpComments
CheckPass
DoSeqC ',' StartPosX# ',' StartPosY# GetEOL
END
END
IF LessThan? ToolLength# LAST ToolLength#
DoSeqC ',.0,.0,'
SUB# ToolLength# LAST ToolLength# { Compensate for New ToolLength }
GetEOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
DoSeqC ',,9' GetEOL { CoolOff }
IF NotEqual? Recall# Num#('3') ClearancePlane1#
Save# Num#('3') ClearancePlane1#
DoSeqC ',.0,.0,' ClearancePlane1# GetRapidFC GetEOL
END
DoSeqC ',,6' GetEOL { SpinOff/CoolOff/CycleOff }
DoSeqC ',,0' GetEOL { ProgStop }

{Start new Operation}

GetStartOfSameTool
DoSeqC ',,4' GetEOL { SpinOn }
DoSeqC ',' StartPosX# ',' StartPosY# GetRapidF GetEOL
DoSeqC ',,7' GetEOL { CoolOn }
ELSE
IF CoolOff? AND LAST NOT CoolOff?
DoSeqC ',,9' GetEOL { CoolOff }
END
IF NewToolOffset?
IF NotEqual? Recall# Num#('3') ClearancePlane1#
Save# Num#('3') ClearancePlane1#
DoSeqC ',.0,.0,' ClearancePlane1# GetRapidFC GetEOL
END

{Start new Operation}

GetStartOfSameTool
DoSeqC ',' StartPosX# ',' StartPosY# GetRapidF GetEOL
ELSE

{Start new Operation}

GetStartOfSameTool
IF Drilling? AND RetractToCP1?
IF NotEqual? Recall# Num#('3') ClearancePlane1#
Save# Num#('3') ClearancePlane1#
DoSeqC ',.0,.0,' ClearancePlane1# GetRapidF GetEOL
DoSeqC ',' StartPosX# ',' StartPosY# GetEOL
ELSE
DoSeqC ',' StartPosX# ',' StartPosY# GetRapidF GetEOL
END
ELSE
DoSeqC ',' StartPosX# ',' StartPosY# GetRapidF GetEOL
END
END
IF NOT CoolOff? AND LAST CoolOff?
DoSeqC ',,7' GetEOL { CoolOn }
END
END
END
END
END {common point for all operations}
SetFlag('1') { For QuillDown }
IF Milling?
IF NotEqual? Recall# Num#('3') ClearancePlane2#
Save# Num#('3') ClearancePlane2#
DoSeqC ',.0,.0,' ClearancePlane2# GetRapidFC GetEOL
END
IF AutoCycle?
IF Repeats?
IF ZShiftOnly?
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
IF NOT FeedConnect?
ExitMove2
END
ELSE
NoRepAutoCycle
ExitMove2
END
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
Milling
END
ExitMove2
END
ELSE
IF Drilling?
GetCycle
IF LTEqual? ToolDiameter# Num#('.3125')
IF Tap? OR FIFO?
' ' GetEOL
'(NOTE: Quill/Knee Drilling Cycle requires FI-RO or RI-RO to work properly.' GetEOL
'( You have selected a '
IF Tap?
'Tap'
ELSE
IF FIFO?
'FIFO'
END
END
' Cycle.' GetEOL
' ' GetEOL
END
END
IF NOT Peck?
FORMAT(SPZ#,3) { Change the sign }
END
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStart
END
ToolPath
NextRep
ELSE
DrillStart
ToolPath
END
IF RetractToCP1?
IF NotEqual? Recall# Num#('3') ClearancePlane3#
Save# Num#('3') ClearancePlane3#
DoSeqC ',.0,.0,' ClearancePlane3# GetRapidFC QuillUp GetEOL
END
ELSE
IF NotEqual? Recall# Num#('3') ClearancePlane3#
Save# Num#('3') ClearancePlane3#
DoSeqC ',.0,.0,' ClearancePlane3# GetRapidFC QuillUp GetEOL
ELSE
IF NOT Flag?('1')
DoSeqC GetRapidF QuillUp GetEOL
END
END
END
FORMAT(SPZ#,2) { Restore the sign }
END
END
IF MultipleParts? AND LastOp?

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

{finish last operation}
IF OneToolAllParts? AND ExitClearancePlane?
NEXTPart
END
DoSeqC ',,9' GetEOL { CoolOff }
IF NotEqual? ToolLength# FIRST ToolLength#
DoSeqC ',.0,.0,'
SUB# FIRST ToolLength# ToolLength# { Compensate for Original ToolLength }
GetEOL
END
IF NotEqual? Recall# Num#('3') ClearancePlane1#
Save# Num#('3') ClearancePlane1#
DoSeqC ',.0,.0,' ClearancePlane1# GetRapidFC GetEOL
END
IF OneToolAllParts? AND FullUp?
NEXTPart
END
DoEndOpPS
IndexToToolOne
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
DoSeqC ',' FIRST HomeX# ',' FIRST HomeY# GetEOL
END
IF ProgStop?
DoSeqC ',,0' GetEOL { ProgStop }
END
IF AllToolsOnePart?
NEXTPart
END
ELSE { NOT MultipleParts }
NextOp {loops back to EachOP until last Operation}

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

{finish last operation}
DoSeqC ',,9' GetEOL { CoolOff }
IF NotEqual? ToolLength# FIRST ToolLength#
DoSeqC ',.0,.0,'
SUB# FIRST ToolLength# ToolLength# { Compensate for Original ToolLength }
GetEOL
END
IF NotEqual? Recall# Num#('3') ClearancePlane1#
Save# Num#('3') ClearancePlane1#
DoSeqC ',.0,.0,' ClearancePlane1# GetRapidFC GetEOL
END
DoEndOpPS
IndexToToolOne
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
DoSeqC ',' FIRST HomeX# ',' FIRST HomeY# GetEOL
END
IF ProgStop?
DoSeqC ',,0' GetEOL { ProgStop }
END
END
DoSeqC ',,2' GetEOL { EOP }
Post
EOR '$' EOL
Close
Retag
IF UseComments?
SetScale('1') {restore scale for comments}
Reopen
IF FileBytesComment?
'( FILE LENGTH: ' FileBytes# ' CHARACTERS )' GetEOL
END
IF FileFeetComment?
'( FILE LENGTH: ' FileFeet# ' FEET )' GetEOL
END
IF FileMetersComment?
'( FILE LENGTH: ' FileMeters# ' METERS )' GetEOL
END
Close
END


Wyszukiwarka

Podobne podstrony:
BP Series II R2E3 CSD M659 12 7
BP Boss 5 Series II M527 81 3
BP Boss 6 Series II M289 89 1
BP Boss 6 Series II M289 81 3
BP Series I (HAC) M226 80 1
CITROEN XM SERIES I&II DIAGNOZA KODY MIGOWE INSTRUKCJA
B&K AV2500 Series II Service
BP Series 1 (R2E4) M128 79
BP Series 1 Boss 5 M266 79
BP Series 3 MZ12 89 2
BP Boss 5 Series I GI M822 89
TĹ‚umaczenia (80) Informacji Renault Scenic II
BP Boss 6 Ser II [NM] M549 81 3
OTWP BP 2009 TEST II
OTWP BP 2008 TEST II

więcej podobnych podstron