{Change Comments ***********************************************************}
{4/23/97
Initial: Cin 10VC Big Blue M381.81.3
Initial: Cin Big Blue [OI] M994.89
Created: Cincinnati Big Blue M381.89
ForUser: Precision Machine
Control: Acramatic CNC-MC (Big Blue)
Machine: Cincinnati 10VC
Develop: ComPost2 68K 1.0b11, CatalystPPC v3.33C
Comment: New (should be good) Big Blue Master.
Misc corrections and updating.
Added Helical interpolation, WFOs by request & Drilling Retract to CP1.
Jim Radcliffe}
{5/13/97
Initial: Cincinnati Big Blue M381.89
Created: Cincinnati Big Blue M381.89.1
Develop: ComPost2 68K 1.0b11. CatalystPPC v3.33C
Comment: Changed to output unconditional arc centers when in Incremental.
Jim Radcliffe}
{11/13/97
Initial: Cincinnati Big Blue M381.89.1
Created: Cincinnati Big Blue M381.89.2
Modified GetVector Sub to not output CRC vectors for a Z only move, this was
causing Math errors and/or crashing the app.
MPK
}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '###^##0'
#3 = '*###^##0'
#4 = '###^###0'
#5 = '#0'
#6 = '#.0000'
#7 = '00'
#8 = '+###^###0'
#9 = '#;'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(XSPVec#,4)
FORMAT(YSPVec#,4)
FORMAT(XEPVec#,4)
FORMAT(YEPVec#,4)
FORMAT(XVector#,4)
FORMAT(YVector#,4)
FORMAT(ADD#,4)
FORMAT(TrackZ#,4)
FORMAT(Operation#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Tool#,5)
FORMAT(Tag#,5)
FORMAT(ToolDiameter#,6)
FORMAT(NewWFO#,7)
FORMAT(ArcZRads#,8)
FORMAT(RapidF#,9)
{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
DoSubComment:
IF UseComments? AND SubComment?
'(MSG, CYCLE START )' EOL
END
RETURN
DoOpComments:
IF UseComments?
SetScale('1')
IF MultipleParts? AND SubComment?
'(MSG, PART ' Tag# ' )' EOL
END
IF OperationIDComment?
'(MSG, OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
'(MSG, ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'(MSG, ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
'(MSG, TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'(MSG, ' ToolComment$ ' )' EOL
END
RestoreScale
END
RETURN
PSInit: {reset flags}
NewWFOF
RotateF
RETURN
PSStuff: {revised.72}
{see CheckIndexer for rotate stuff}
RETURN
DoPostScript:
PSInit
EachPS
SeqLabC PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN
ExitType:
IF FIFO?
FeedC
ELSE
RapidC
END
RETURN
ExitFeed:
IF FIFO?
FeedEntC
END
RETURN
GetVector:
IF CutterRadiusCompensation?
IF FirstFeat?
IF ZMove? AND NOT XMove? AND NOT YMove?
MoveX MoveY MoveZC
ELSE
MoveX MoveY MoveZC 'P' XVector# 'Q' YVector# {unconditional to set up proper vectors, cannot have an axis vector without a call to that axis}
END
ELSE
IF LastFeat?
IF XMove?
IF YMove?
MoveXYZC 'P' XEPVec# 'Q' YEPVec#
ELSE
MoveXYZC 'P' XEPVec#
END
ELSE
IF YMove?
MoveXYZC 'Q' YEPVec#
ELSE
MoveXYZC
END
END
ELSE
IF XMove?
IF YMove?
MoveXYZC 'P' XVector# 'Q' YVector#
ELSE
MoveXYZC 'P' XVector#
END
ELSE
IF YMove?
MoveXYZC 'Q' YVector#
ELSE
MoveXYZC
END
END
END
END
ELSE
MoveXYZC
END
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
IF XYPlane? AND ZMove?
GetVector
IF AbsValue?
ArcIJC 'K' ArcZRads#
ELSE
ArcIJ 'K' ArcZRads#
END
ELSE
IF XZPlane? AND YMove?
GetVector
IF AbsValue?
ArcIC 'J' ArcZRads# ArcJC
ELSE
ArcI 'J' ArcZRads# ArcJ
END
ELSE
IF YZPlane? AND XMove?
GetVector
IF AbsValue?
'I' ArcZRads# ArcIC ArcJC
ELSE
'I' ArcZRads# ArcI ArcJ
END
ELSE
GetVector
IF AbsValue?
ArcIJC
ELSE
ArcIJ
END
END
END
END
RETURN
StdRapid:
IF XMove? OR YMove? OR ZMove?
SeqLabC RapidC GetVector EOL
END
RETURN
StdLine: {enables CRC on first call, .70}
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC FeedC GetVector FeedRateC EOL
DecelMove2
END
SeqLabC FeedC GetVector DecelFeed EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqLabC FeedC GetVector FeedRateC EOL
END
END
RETURN
StdArc:
EACHQuadrant
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC FormatArc ArcFeedC EOL
DecelMove2
END
SeqLabC FormatArc DecelFeed EOL
ELSE
SeqLabC FormatArc ArcFeedC 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
EntryMove:
IF FeedEntry?
SeqLabC FeedC ZInC FeedEntC EOL
ELSE
SeqLabC RapidC ZInC EOL
END
RETURN
CutAutoCycle:
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
SeqLabC IncValue EOL
IF Repeats? AND ZshiftOnly?
EachRep
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
IF FeedConnect?
SeqLabC FeedC StrtPosC EOL
ELSE
SeqLabC RapidC StrtPosC EOL
END
END
END
EntryMove
ToolPath2
IF NOT FeedConnect?
SeqLabC ExitType PRIME ZCP2 ExitFeed EOL
END
NextRep
ELSE
EntryMove
ToolPath2
END
SeqLabC AbsOrInc EOL
SeqLabC ExitType ZCP2 ExitFeed EOL
SetSRSubXY {restore tool position}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN
DoPeck:
IF NOT Flag?('2')
SetScale('1')
IF GreaterThan? SUB# Recall# Num#('4') Peck# SPZ#
Save# Num#('4') SUB# Recall# Num#('4') Peck#
RestoreScale
SeqLabC Feed 'Z' TrackZ# MUL# Recall# Num#('4') NumSc#('1') FeedEntC EOL
IF PeckFullRetract?
SeqLabC Rapid ZCP2 EOL
END
SeqLabC RapidC 'Z' TrackZ# ADD# Recall# Num#('4') Retract# EOL
ELSE
RestoreScale
SeqLabC Feed 'Z' TrackZ# SPZ# FeedEntC EOL
IF RetractToCP1?
SeqLabC Rapid ZCP1 EOL
ELSE
SeqLabC Rapid ZCP2 EOL
END
SetFlag('2')
END
END
RETURN
ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
IF NOT FirstFeat?
SeqLabC
IF FIFO?
Rapid
END
MoveSXYC EOL
END
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
CutAutoCycle
ELSE
IF Peck?
SeqLabC RapidC MoveSXYC EOL
SeqLabC ZCP2C EOL
SetFlagF('2')
SetScale('1')
Save# Num#('4') ClearancePlane2#
RestoreScale
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 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
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 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
ELSE
IF RetractToCP1?
IF NOT FirstFeat?
SeqLabC
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
MoveSXYC 'Z' ADD# ZDepth# NumSc#('.1') 'R' ADD# ClearancePlane2# NumSc#('-.1') EOL
END
IF NOT LastFeat?
SeqLabC DrillOff 'R' ADD# ClearancePlane1# NumSc#('-.1') EOL
END
ELSE
SeqLabC MoveSXYC EOL
END
END
END
ELSE
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
END
NEXTFeat
RETURN
WFOStuff:
IF MultipleParts?
IF WorkFixtureOffsets?
SetWFO
END
ELSE
IF NewWFO?
'H' NewWFO#
END
END
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
Approach:
IF Drilling? AND NOT Peck?
GetCycle
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
StrtPos 'Z' ADD# ZDepth# NumSc#('.1') 'R' ADD# ClearancePlane2# NumSc#('-.1') FeedEnt
ELSE {milling or pecking}
Rapid StrtPos
IF Peck?
ZCP2
ELSE {milling}
IF NOT SameTool?
ZCP1
END
END
END
RETURN
CheckPreTool:
IF NOT LastTool?
PreTool
END
RETURN
CheckSpinOn: {turns on spindle and coolant}
IF CoolOff?
IF CWSpindle?
'M03'
ELSE
'M04'
END
ELSE
IF Mist?
IF CWSpindle?
'M17'
ELSE
'M18'
END
ELSE
IF CWSpindle?
'M13'
ELSE
'M14'
END
END
END
RETURN
CheckIndexer:
IF FourthCW?
FORMAT(FourthDegree#,2)
'B' FourthDegree#
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
'B' FourthDegree#
FourthCCWF {reset flag}
END
RETURN
DoOp:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
DoOpComments
ELSE
'O?' Rapid OpToolID ToolChng EOL
DoOpComments
SeqLabC Plane EOL
SeqLabC 'G70' EOL
SeqLabC AbsOrInc EOL
DoPostScript
END
CheckPass
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
SeqLabC Approach WFOStuff EOL
ELSE
'O?' Approach CheckIndexer Speed CheckPreTool CheckSpinOn WFOStuff EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
{only need to set up for tool change on 1st part}
ELSE
DoEndOpPS
IF ToolChangeAtHome?
SeqLabC RapidC Home EOL
END
IF LAST ProgStop?
SeqLabC 'M00' EOL
ELSE
SeqLabC ProgStop EOL
END
END
{Start new Operation}
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
DoOpComments
ELSE
'O?' Rapid OpToolID ToolChng EOL
DoOpComments
SeqLabC PlaneC EOL
DoPostScript
END
CheckPass
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
SeqLabC Approach WFOStuff EOL
ELSE
'O?' Approach CheckIndexer Speed CheckPreTool CheckSpinOn WFOStuff EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
IF ToolChangeAtHome?
SeqLabC Rapid Home EOL
END
SeqLabC 'M00' EOL
END
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
{Start new Operation}
DoOpComments
SeqLabC PlaneC EOL
DoPostScript
CheckPass
'O?' Approach CheckIndexer Speed CheckSpinOn WFOStuff EOL
END
END
END
{ Common Point for All Operations }
RapidF# {forces the output of a conditional feedrate for each operation}
IF Milling?
SeqLabC ZCP2C EOL
IF Repeats?
IF ZshiftOnly? AND AutoCycle?
{done in CutAutoCycle called from ToolPath}
ELSE
EACHRep
DoSubComment
IF NOT FirstCycle?
SeqLabC Connect StrtPos EOL
IF NOT FeedConnect?
SeqLabC ZCP2C EOL
END
END
END
END
IF NOT AutoCycle?
EntryMove
END
ToolPath
IF Repeats?
IF ZshiftOnly? AND AutoCycle?
{done in CutAutoCycle called from ToolPath}
ELSE
IF NOT FeedConnect?
SeqLabC ExitType PRIME ZCP3C ExitFeed EOL
END
NEXTRep
END
END
IF AutoCycle?
SeqLabC ZCP3C EOL
ELSE
SeqLabC ExitType ZCP3C ExitFeed EOL
END
ELSE
IF Drilling?
IF Repeats?
EACHRep
DoSubComment
IF NOT FirstCycle?
SeqLabC Approach EOL
END
END
ToolPath
IF NOT Peck?
SeqLabC DrillOff EOL
END
SeqLabC Rapid ZCP3 EOL
IF Repeats?
NEXTRep
END
END
END
RETURN
FinishLastOp:
DoEndOpPS
IF FIRST ToolChangeAtHome?
SeqLabC RapidC FirstHome EOL
END
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? {no tool change after doing last part}
IF ProgStop?
SeqLabC 'M00' EOL
ELSE
SeqLabC ProgStop EOL
END
ELSE
SeqLabC EOP EOL
END
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
IF WorkFixtureOffsets?
NewWFO
EachWFO
TagInc
DoToolsOps
IncWFO
NextWFO
ELSE
EachPart
TagInc
DoToolsOps
NextPart
END
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
TagInit
SetFlagF('1') {multiple parts done flag}
SetFlagF('2') {pecking done flag}
SetMaxVec('3.2767')
ReverseXZArcs
SetFlood
InitWFONum
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
' Use Literals to specify a Spindle Rotate for probing operations.' 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
' MistCoolant, MCool' EOL
' This is a non-modal command affecting the current operation only.' EOL
' Turns on the spindle with mist coolant.' EOL
' SetMist, SM' EOL
' This is a modal command affecting all operations.' EOL
' Turns on the spindle with mist coolant.' EOL
' FloodCoolant, FCool' EOL
' This is a non-modal command affecting the current operation only.' EOL
' Turns on the spindle with mist coolant.' EOL
' Flood is the default setting.' EOL
' SetFlood, SF' EOL
' This is a modal command affecting all operations.' EOL
' Turns on the spindle with flood coolant.' EOL
' This is the default setting.' EOL
' 4thAxisCW(12.5), 4ACW(12.5) -' EOL
' This is a non-modal command affecting the current operation only.' EOL
' generates a + B move of the value you specify' EOL
' 4thAxisCCW(22.5), 4ACCW(22.5) -' EOL
' This is a non-modal command affecting the current operation only.' EOL
' generates a - B move of the value you specify' EOL
END
EachOp {Start of post processing *********************}
IF FirstOperation?
EOR EOL
IF UseComments?
IF ProgramNameComment?
'(MSG, PROGRAM: ' ProgramName$ ' )' EOL
END
IF ProgramComment?
'(MSG, ' ProgramComment$ ' )' EOL
END
IF FormatNameComment?
'(MSG, FORMAT: ' FormatName$ ' )' EOL
END
IF TimeComment?
'(MSG, ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
'(MSG, OUTPUT IN ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
'(MSG, PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'(MSG, FIRST TOOL NOT IN SPINDLE )' EOL
END
END
IF ToolChangeAtHome?
SetHome
END
OpenSub
RestoreScale
END
NextOp
IF MultipleParts?
IF AllToolsOnePart?
IF WorkFixtureOffsets?
NewWFO
EachWFO
TagInc
EachOp
DoOp
NextOp
FinishLastOp
IncWFO
NextWFO
ELSE
EachPart
TagInc
EachOp
DoOp
NextOp
FinishLastOp
NextPart
END
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?
'(MSG, FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL
END
IF FileFeetComment?
'(MSG, FILE LENGTH: ' FileFeet# ' FEET )' EOL
END
IF FileMetersComment?
'(MSG, FILE LENGTH: ' FileMeters# ' METERS )' EOL
END
END
Close
Retag
Wyszukiwarka
Podobne podstrony:
Cin Big Blue [OI] M994 89Wielki Błękit Le Grand Bleu Big Blue cd1Cin 10VC Big Blue O&F M641 87Cin 10HC Big Blue M413 80 5Cin 10VC Big Blue SP MU38 87 2Wielki Błękit Le Grand Bleu Big Blue cd2Cin 10VC Big Blue [TC] MY29 87Cin 10VC Big Blue [TC] MQ27 87Big Boy s Blue Cheese Dressingblue naturebig (6)wiatem rządzą kobiety Big Cyc txtYou maybe in love Blue CafeBandit IV AB [DM] MV32 89 1Wielka czerwona jedynka (The Big Red One) cz 2więcej podobnych podstron