Bostomatic SPC1 [LAG] M457 87


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

{10/8/91
Copied & modified: Bostomatic SPC-II M081.81
For: L.A. Gauge
Changes made per conversations with Bud Franklin at L.A. Gauge and sample printout.
Changed FORMAT for Dwell# from '###^####;' to '###.####;0.'.
Deleted FORMATs for FeedEntry#, ZDepth#, SPZ#, ClearancePlane1#, ClearancePlane2# and Peck#.
Added FORMATs for Recall# and RapidF#.
Added literal ' ' EOL at beginning of all subs.
Changed SeqLab/SeqLabC to Seq/SeqC in Prog.
Changed Sequence Label from 'N?' to 'N' in MachSpec.
Deleted Retag at end of Prog.
Deleted all occurances of EndSub.
Deleted CheckOptCyc Sub and call to same.
Added CheckCRCOffsetOn and CheckCRCOffsetOff subs.
IF CutterRadiusCompensation? = TRUE.
Outputs 'G29' CRCOfst 'D' ToolDiameter# in FirstOperation, NewTool and SameTool.
Outputs 'G29' LAST CRCOfst 'D-' LAST ToolDiameter# in NewTool and SameTool.
Outputs 'G29' CRCOfst 'D-' ToolDiameter# at end of Prog.
Changed all Drilling Cycles to long-hand output.
Modified FIFO Drilling Cycle to Feed out at 150% of FeedEntry#
Moved EOR after OpenSub at FirstOperation.
'%' cannot occur until after the Subs, and before the Main Program.
Added EndSub to beginning of Output at FirstOperation.
Added Preset Home 'Z14.1' at FirstOperation.
Added DoMasterSubs sub.
Outputs 3 subs to handle Origin Shift/Unshift and Backlash Compensation.
Moved literals 'G48' DoR & 'G49' DoR, SpinOn, SpinOff, CoolOn and CoolOff to DoMasterSubs sub.
Modified output of Main Program.
Outputs OpToolID ToolChng stuff only.
Rest of operation is output as Subroutines.
Combined ToolOfst and ProSpeed on one line.
Deleted all occurances of 'G4X3.' at SpinOn and 'G4X2.' at SpinOff.
Deleted ToolChangeAtHome from NewTool and end of Prog.
Deleted all calls to DoR sub at MoveSXYC in Drilling ToolPath section.
Added LAST ToolOfst to NewTool, and ToolOfst to end of Prog.
Added literal 'N111' UnTool to end of Prog.
DWB}

{11/12/91
Modified: Bostomatic SPC-I [LAG] M457.81
For: L.A. Gauge
Changes made per conversations with George Westbrook at L.A. Gauge and sample printout.
Changed FORMAT for Recall# and Dwell# from '###.####;0.' to '###^###0'.
Changed FORMAT for MUL# from '###.####;0.' to '#^0' for FIFO Drilling operations.
Changed FORMAT for Tool# from '########;0' to '00' for SubID definition output.
Added Flag('1') for outputting literal '2' Tool# at start of EachTool's Subroutine.
Added GetSpeed Sub for outputting ProSpeed value.
Value is a percentage of 4,000 RPM, and 10% to 99% is the only value that is accepted.
Checks to make sure that RPM value is >= 400 and < 3980.
IF NOT, will output either 'S10' or 'S99', and Comment.
Changed SetMaxRPM from ('10000') to ('4000') at setup and initializations.
Added SetMinRPM('400') at setup and initializations.
Replaced all occurances of ProSpeed with call to GetSpeed.
Modified DoMasterSubs Sub as follows:
Moved Backlash Compensation Sub from end to beginning.
Changed NewProg to SetProgNum('199') at Backlash Compensation Sub.
Changed SubID for Backlash Compensation from 'D4' to 'D199'.
Changed NewProg to SetProgNum('1') at Origin Shift Sub.
Changed SubID for Origin Shift from 'D2' to 'D1'.
Changed SubID for Origin Un-Shift from 'D3' to 'D2'.
Changed TrackZNO# ZDepth#/ClearancePlane2# to ZCP3 at Drill Subroutine.
Deleted DrillCP from end of Drill Subroutine.
Deleted ZCP3C DoR from end of Drilling Operation.
Changed literal 'Z14.1' to 'Z141000' because control does not accept decimal points.
Added SetAbs at setup and initializations.
Changed MoveType$ to literal 'ABSOLUTE' at FirstOperation.
Added literal 'M0' at beginning of FirstOperation.
Operator uses this to search for Start of Main Program.
Made sure that all comments are only output based on status of checkbox in ncPost.
Deleted AbsOrInc Feed CRCOff 'G49' safe start-up block in FirstOperation.
Added literal 'M0' to OpToolID in FirstOperation and NewTool.
Deleted ProgStop immediately following this line.
Deleted literal '/' OpToolID ToolChng in FirstOperation and NewTool.
Deleted NewProg from FirstOperation and NewTool.
Changed CallLab to literal 'D2' Tool# in FirstOperation and NewTool.
Deleted LAST ToolOfst from NewTool and ToolOfst from end of Prog.
Moved literal 'M0' and ProgStop combination to before SubCall 'D2' at NewTool and end of Prog.
DWB}

{2/9/96, Updated .81 version to .84, MPK}

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

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

#1 = '#.00'
#2 = '###.###;0.'
#3 = '*###.###;0.'
#4 = '####.####;0.'
#5 = '########;0'
#6 = '###^###0' { See CheckCRCOffsetOn Sub }
#7 = '#^0'
#8 = '#;'
#9 = '00'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Program#,5) {.72}
FORMAT(Operation#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Recall#,6)
FORMAT(Dwell#,6) {.72}
FORMAT(MUL#,7)
FORMAT(RapidF#,8)
FORMAT(Tool#,9) {.72}

{Prog Subroutines **********************************************************}

DoSubComment:
' ' EOL
IF UseComments? AND SubComment?
'( SUB NUMBER: '
IF Flag?('1')
'2' Tool#
ELSE
Program#
END
' )' 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
FORMAT(Tool#,5)
IF ToolTypeComment?
'( TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
FORMAT(Tool#,9)
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
END
RETURN

PSInit: {reset flags}
RotateF
OptCyc1F
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 {literals}
PSStuff {commands}
NextPS
RETURN

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

DoR: { Rapid Moves need 'R' }
IF NOT EmptyLine?
'R'
END
RETURN

EntryMove:
IF FeedEntry?
SeqC FeedC ZIn FeedEnt EOL
ELSE
SeqC FeedC ZIn DoR EOL
END
RETURN

StartSub:
OpenSub
DoSubComment
SeqC 'G92' { G92 = Canned Shape Identifier }
IF Flag?('1')
'D2' Tool#
ELSE
SubID
END
EOL
RETURN

SubWarning:
IF NOT FeedConnect?
IF AnyZshift?
' ' EOL
'( WARNING Z CLEARANCE WILL CHANGE WITH EACH CYCLE OF SUB REPEAT )' EOL
' ' EOL
END
END
RETURN

StdSub:
SeqC SubCall CallLab RepLab RepCycs EOL
StartSub
RETURN

FinishSub1: {part 1}
UnSkipZ
IF NOT FeedConnect?
IF AutoCycle?
SeqC ZCP3C DoR EOL
ELSE
IF FIFO? {.81}
SeqC FeedC ZCP3C FeedRateC EOL
ELSE
SeqC FeedC ZCP3C DoR EOL
END
END
END
RETURN

FinishSubG92: {part 2}
SeqC Preset ShiftRC EOL
CloseSub
SeqC Preset UnshftRC EOL
RETURN

OpenMP:
NewProg
SeqC SubCall CallLab RepLab Parts EOL
StartSub
RETURN

CloseMP:
SeqC Preset ShiftPC EOL
CloseSub
SeqC Preset UnshftPC EOL
RETURN

FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
IF XYPlane?
MoveX MoveY MoveZC
ELSE
IF XZPlane?
MoveX MoveYC MoveZ
ELSE
MoveXC MoveY MoveZ
END
END
IF ArcIJFormat?
ArcIJ
ELSE
ArcR
END
RETURN

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

ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
SeqC MoveSXYC
IF Repeats?
IF NOT FeedConnect?
DoR
END
ELSE
DoR
END
EOL
SeqC SubCall CallLab EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
ELSE
SeqC MoveSXYC EOL {.80.01}
SeqC SubCall CallLab EOL
END
ELSE
IF RapidFeat?
IF LastFeat? AND AutoCycle? {.70}
SeqC CRCOffC FeedC MoveXYZC DoR EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqC FeedC MoveXYZC DoR EOL
END
END
ELSE
IF LineFeat?
IF AutoCycle? {.70}
IF LastFeat?
SeqC CRCOffC FeedC MoveXYZC FeedRateC EOL
ELSE
IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps}
SeqC FeedC MoveXYZC FeedRateC EOL
ELSE
StdLine {enables CRC on first call}
END
END
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 FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
END
END
NEXTFeat
RETURN

WFOStuff:
{Note: This processor does not support work fixture offsets.}
RETURN

AutoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
StartSub
SetSRXYtoSP
SeqC IncValue EOL
RETURN

AutoCycCutSub2: {part 2}
ToolPath
IF Repeats? AND FeedConnect? AND ZshiftOnly?
SeqC AbsOrInc EOL {.69 removed RapidC} {.71.2 removed CRCOffC, gets turned off in ToolPath}
ELSE
IF FIFO? {.81}
SeqC AbsOrInc FeedC ZCP2 FeedRateC EOL
ELSE
SeqC AbsOrInc FeedC ZCP2 DoR EOL {.71.2 removed CRCOffC, gets turned off in ToolPath}
END
END
CloseSub
SetSRSubXY {restore SR to 1st position value}
SetSRSubMove
RETURN

AutoCycPat:
SetPass2 {position pattern}
ToolPath {call after NewProg for correct sub calls}
SetPass1 {reset}
RETURN

Milling:
IF AutoCycle?
NewProg
AutoCycCutSub1
EntryMove
AutoCycCutSub2
AutoCycPat
ELSE
EntryMove
ToolPath
IF CutterRadiusCompensation?
SeqC FeedC CRCOff LastFeatExtend EOL
END
END
RETURN

G92Sub:
SubWarning
StdSub
SeqC AbsOrInc FeedC StrtPos
IF NOT FeedConnect?
DoR
END
EOL
Milling
FinishSub1
FinishSubG92
RETURN

ZonlyRepAutoCycle:
AutoCycPat {write pattern moves and main calls}
StartSub
NewProg
EachCycle
SetSRXYtoEP
IF FeedConnect?
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
SeqC Feed IncValue StrtPosC EOL
SeqC AbsOrInc
ELSE
SeqC Feed
END
ELSE
SeqC Feed
END
ZInPlusInc FeedEnt EOL
ELSE
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
SeqC Rapid IncValue StrtPosC EOL
IF FeedEntry?
SeqC AbsOrInc ZCP2PlusInc EOL
SeqC Feed ZInPlusInc FeedEnt EOL
ELSE
SeqC AbsOrInc ZInPlusInc EOL
END
ELSE
IF FeedEntry?
SeqC Rapid ZCP2PlusInc EOL
SeqC Feed ZInPlusInc FeedEnt EOL
ELSE
SeqC Rapid ZInPlusInc EOL
END
END
ELSE
IF FeedEntry?
SeqC Feed ZInPlusInc FeedEnt EOL
ELSE
SeqC Rapid ZInPlusInc EOL
END
END
END
IF FirstCycle?
SetStatusOff {protect Z position for incremental sub}
END
SeqC SubCall CallLab EOL
NextCycle
SetStatusOn
AutoCycCutSub1 {build element sub}
AutoCycCutSub2
{.69, removed FinishSub1}
IF FeedConnect? {there is no Z up in the sub, .69}
IF FIFO? {.81}
SeqC FeedC ZCP2 FeedRate EOL {.69}
ELSE
SeqC FeedC ZCP2 DoR EOL {.69}
END
END {.69}
CloseSub
{Element shift, not pattern}
RETURN

ZonlyRep:
EachCycle
IF NOT FirstCycle?
SeqC FeedC StrtPos {.71.2, added FeedC}
IF NOT FeedConnect?
DoR
END
EOL
END
IF FeedConnect?
SeqC FeedC ZInPlusInc FeedEnt EOL {.71.2, changed to FeedC}
ELSE {Entry/Exit Connect}
IF FeedEntry?
IF NOT FirstCycle?
SeqC FeedC ZCP2PlusIncC DoR EOL {can't call for cycle =1} {.69 added Rapid, reads better} {.71.2, changed to RapidC, reads better}
END
SeqC FeedC ZInPlusInc FeedEnt EOL
ELSE
SeqC FeedC ZInPlusInc DoR EOL {.69 added Rapid, reads better} {.71.2, changed to RapidC, reads better}
END
END
SeqC SubCall CallLab EOL
NextCycle
StartSub
SkipZ
ToolPath
IF CutterRadiusCompensation?
SeqC FeedC CRCOff LastFeatExtend EOL
END
FinishSub1
CloseSub
RETURN

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

GetStartOfSameTool:
DoOpComments
DoPostScript
CheckPass
PlaneC { No Output }
RETURN

SpeedWarning:
' ( ***** Note. You have selected an out of range Spindle RPM value of ' SpeedRPM# ' ***** )'
RETURN

GetSpeed: { Percentage of 4,000 rpm, only 10% to 99% allowed. }
IF GreaterThan? SpeedRPM# Num#('3960')
'S99' SpeedWarning
ELSE
IF LessThan? SpeedRPM# Num#('400')
'S10' SpeedWarning
ELSE
ProSpeed
END
END
RETURN

CheckCRCOffsetOn:
IF CutterRadiusCompensation?
FORMAT(ToolDiameter#,6)
SeqC 'G29' CRCOfst 'D' ToolDiameter# EOL
FORMAT(ToolDiameter#,4)
END
RETURN

CheckCRCOffsetOff:
FORMAT(ToolDiameter#,6)
IF LastOp?
IF CutterRadiusCompensation?
SeqC 'G29' CRCOfst 'D-' ToolDiameter# EOL
END
ELSE
IF LAST CutterRadiusCompensation?
SeqC 'G29' LAST CRCOfst 'D-' LAST ToolDiameter# EOL
END
END
FORMAT(ToolDiameter#,4)
RETURN

DoPeck:
Save# Num#('1') SUB# Recall# Num#('1') Peck#
IF GTEqual? Recall# Num#('1') ZDepth#
SeqC 'Z' Recall# Num#('1') FeedEntC EOL
IF PeckFullRetract?
SeqC ZCP2 DoR EOL
END
Save# Num#('1') ADD# Recall# Num#('1') Retract#
SeqC 'Z' Recall# Num#('1') DoR EOL
Save# Num#('1') SUB# Recall# Num#('1') Retract#
END
RETURN

Drill:
SeqC StrtPos EOL
NewProg
ToolPath
StartSub
SeqC DrillCP DoR EOL
SeqC FeedC ZCP2C DoR EOL
SeqC SubCall 'D199' RapidF# EOL { Call Backlash Compensation Sub }
RapidF# { No Output }
GetCycle
IF Peck?
Save# Num#('1') ClearancePlane2#
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
SeqC ZDepth EOL
SeqC ZCP3 DoR EOL
ELSE
SeqC ZDepth FeedEnt EOL
IF Tap?
SeqC InverseSpinOn EOL
SeqC ZCP3 EOL
SeqC SpinOn EOL
ELSE
IF Dwell?
SeqC 'G4X' Dwell# EOL
END
IF FIFO?
SeqC ZCP3 'F' MUL# FeedEntry# Num#('1.5') EOL
ELSE
SeqC ZCP3 DoR EOL
END
END
END
CloseSub
RETURN

DoMasterSubs:
SetProgNum('199')
StartSub
IF UseComments? AND SubComment?
'( Backlash Compensation Sub )' EOL
END
SeqC IncValue 'X-20Y-20F10' EOL
SeqC 'X20Y20' EOL
SeqC AbsOrInc 'F400' EOL
CloseSub

SetProgNum('1')
StartSub
IF UseComments? AND SubComment?
'( Origin Shift Sub )' EOL
END
SeqC 'XV1YV2ZV3' DoR SpinOn EOL
SeqC Preset 'XY' ZCP1 EOL
SeqC 'G48' DoR CoolOn EOL { G48 = OfstOn }
CloseSub

NewProg
StartSub
IF UseComments? AND SubComment?
'( Origin Un-Shift Sub )' EOL
END
SeqC ZCP1 DoR SpinOff CoolOff EOL
SeqC 'XY' EOL
SeqC 'G49' DoR EOL { G49 = OfstOff }
SeqC Preset 'XV1YV2ZV3' EOL
SeqC Home 'Z141000' DoR EOL
CloseSub
RETURN

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

{setup and initializations}
InitProg
ReverseXZArcs
ArcsNeedXYZ
SetAbs
SetFlood
UseSeparateSubCalls
SetMaxSeparateSubCalls ('50')
SetMaxRPM('4000')
SetMinRPM('400')
SetMaxFeed('100')
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?
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 ABSOLUTE INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
SeqC EndSub EOL
SeqC 'M0' EOL
' ' EOL
EOR EOL
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
IF MultipleParts? AND AllToolsOnePart?
OpenMP
END
IF UseComments?
'( START OF MAIN PROGRAM )' EOL
END
Plane { No Output }
Seq Preset Home 'Z141000' EOL
DoMasterSubs
SeqC OpToolID 'M0' EOL
SetFlag('1')
SeqC '/' SubCall 'D2' Tool# EOL
StartSub
SetFlagF('1')
DoOpComments
DoPostScript
CheckCRCOffsetOn
SeqC ToolOfst GetSpeed EOL
SeqC SubCall 'D1' EOL { Call Origin Shift Sub }
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
IF Milling?
SeqC StrtPos DoR EOL
END
SeqC ZCP1 DoR EOL
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
IF Milling?
SeqC StrtPos DoR EOL
END
END
ELSE
IF NewTool?

{Finish off last Operation}

IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
CheckCRCOffsetOff
SeqC SubCall 'D2' EOL { Call Origin Un-Shift Sub }
IF LAST ProgStop?
SeqC 'M0' EOL
ELSE
SeqC ProgStop EOL
END
CloseSub

{Start new Operation}

PlaneC { No Output }
Seq OpToolID 'M0' EOL
SetFlag('1')
SeqC '/' SubCall 'D2' Tool# EOL
StartSub
SetFlagF('1')
DoOpComments
DoPostScript
CheckCRCOffsetOn
SeqC ToolOfst GetSpeed EOL
SeqC SubCall 'D1' EOL { Call Origin Shift Sub }
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
IF Milling?
SeqC StrtPos DoR EOL
END
SeqC ZCP1 DoR EOL
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
IF Milling?
SeqC StrtPos DoR EOL
END
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqC LAST ZCP1C DoR SpinOff CoolOff EOL
CheckCRCOffsetOff
SeqC LAST ToolOfst 'G49' DoR EOL { G49 = OfstOff }
SeqC 'M0' EOL

{Start new Operation}

GetStartOfSameTool
CheckCRCOffsetOn
SeqC ToolOfst 'G48' DoR GetSpeed SpinOn EOL { G48 = OfstOn }
IF Milling?
SeqC StrtPos DoR EOL
END
SeqC ZCP1 DoR EOL
SeqC CoolOn EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
IF NewToolOffset?
SeqC LAST ZCP1C DoR EOL
SeqC LAST ToolOfst 'G49' DoR EOL { G49 = OfstOff }

{Start new Operation}

GetStartOfSameTool
SeqC ToolOfst 'G48' DoR { G48 = OfstOn }
IF NotEqual? SpeedRPM# LAST SpeedRPM#
GetSpeed
END
EOL
IF Milling?
SeqC StrtPos DoR EOL
END
SeqC ZCP1 DoR EOL
ELSE

{Start new Operation}

GetStartOfSameTool
IF NotEqual? SpeedRPM# LAST SpeedRPM#
SeqC GetSpeed EOL
END
IF Milling?
SeqC StrtPos DoR EOL
END
END
IF NOT CoolOff? AND LAST CoolOff?
SeqC CoolOn EOL
END
END
END
END
END {common point for all operations}
IF Milling?
SeqC ZCP2C DoR EOL
IF Repeats?
NewProg
IF ZshiftOnly?
IF AutoCycle? {incremental Autocycle sub can have Z moves}
ZonlyRepAutoCycle
ELSE {Z shift only, NOT Auto Cycle}
IF UseSeparateSubCalls? AND CyclesLessThanMaxSubCalls?
FindAnyZMoves {for normal abs subroutine}
IF NoZMoves?
ZonlyRep
ELSE
G92Sub {pattern shift, not element}
END
ELSE {no sep subs desired}
G92Sub
END
END {end Auto Cycle IF}
ELSE {not Z only}
G92Sub
END {end Z only IF}
ELSE {no repeat OPs}
Milling
END
SeqC FeedC ZCP3C
IF FIFO? AND NOT AutoCycle? {.81}
FeedRateC
ELSE
DoR
END
EOL
ELSE
IF Drilling?
IF Repeats?
NewProg
StdSub
END
Drill
IF Repeats?
FinishSubG92
END
END
END
NextOp {loops back to EachOP until last Operation}

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

{finish last operation}
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
CheckCRCOffsetOff
IF ProgStop?
SeqC 'M0' EOL
END
SeqC SubCall 'D2' EOL { Call Origin Un-Shift Sub }
CloseSub
IF MultipleParts? AND AllToolsOnePart?
CloseMP
END
'N111' UnTool EOL
SeqC EOP EOL
CloseSub
Post2 {organize Subs into one program}
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:
Bostomatic SPC II [LAG] M458 87
Bostomatic SPC I [CS] M377 87
Fanuc 10M MVJr[G43r] M192 87
Tosnuc 600M BMC 40 M440 87
Fanuc 6M [MC] M710 87
G&L Numeripath 800M M713 87 1
pref 87
87 Omow znaczenie czynnika geometrycznego dla przeplywu krwi
G & L Numeripath 8000 M499 87

więcej podobnych podstron