{
MILL=T
LATHE=F
SIMPLE_ROT_POS=T
ROTARY_MILL=F
ADV_MILL=F
SUBS=T
MILLTURN_Y-AXIS=F
METRIC=F
}
{Change Comments ***********************************************************}
{6/1/89
Modified; Cincinnati 900V2 (1) M099.54, for C G Richter.
Change "RapidC" to "Rapid" after Drilling.
Add "NullFoot" twice to beginning and twice to end of prog.
Changed "'( MSG" to "'(MSG".
Checked "Use Absolute Drill Depths" in Booleans.
Jim Radcliffe}
{9/6/89
Copied & modified: Cincinnati 900V2 (1) M099.55
For: Hughes T&CSD
Machine: Cincinnati Cintimatic 5VC-750
Control: Acramatic 900 V2
New processer from Manual and Customer requests.
Jim Radcliffe}
{9/15/89, add PostScript, JR}
{9/21/89
Copied & modified: Cin 5VC Acr 900V2 M238.56
For: Hughes T&CSD
Machine: Cincinnati Cintimatic 10VC
Control: Acramatic 900 MC
Added Probing Operation utilizing PostScript commands SetZSurf & OptCyc1.
Probing and setting of Z axis should be OK.
Needs method for X an Y axis.
Jim Radcliffe}
{10/11/89, modified operation comments, JR}
{12/5/89
Modified: Cin 10VC Acr 900MC M245.62
For: Hughes T&CSD
Machine: Cincinnati Cintimatic 10VC
Control: Acramatic 900 MC
Added PostScript for Coolant, Program Stop & Index.
Jim Radcliffe}
{3/29/90, Updated: Cin 10VC Acr 900MC M245.63 to .70.3 format, JR}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{7/24/90, Replaced all occurances of SetSRXYZero with SetSRXYtoSP, DWB}
{7/24/90, Deleted SetZSurf command at start of prog, DWB}
{12/14/90, Updated: Cin 10VC Acr 900MC M245.71 to .76.1 format, JR}
{12/17/90 - 4/23/91
Copied & modified: Cin 10VC Acr 900MC M245.76.1
For: Hughes
Control: Acramatic CNC-MC (Big Blue)
Machine: Cincinati 10HC
Added P & Q vectoring for cutter compensation.
Updated to .80 format.
Jim Radcliffe}
{6/18/91, Changed ArcIJC & ArcRC to ArcIJ & ArcR. Added OptCyc1f to PSInit, JC}
{6/27/91
Modified: Cin 10HC Big Blue M413.80.1
For: Hughes T&CSD per Terry Lowe
Modified Subs;
changed Sub ID from "PGM" to "DFS",
changed to output subs in front of program,
deleted all EOR codes except for the 1st one.
Modified header and operation comments per 10VC M245.80.
Modified tool ID and tool call per 10VC M245.80.
Jim Radcliffe}
{8/21/91
Modified: Cin 10HC Big Blue M413.80.2
For: Hughes T&CSD per Terry Lowe
Added codes to allow Retract to 1st Clearance Plane for Drilling Cycles.
For proper drill cycle depths:
changed ZDepth to 'Z' ADD# ZDepth# NumSc#('.1'),
unchecked "Use Absolute Drill Depths" in the MachSpec.
Jim Radcliffe}
{1/22/92
Modified: Cin 10HC Big Blue M413.80.3
Changed to no sub output, all long hand output.
Jim Radcliffe}
{4/14/92
Modified: Cin 10HC Big Blue M413.80.4
Changed "PreToolComment$" to "SetNextToolOp TrimToolComment$('8')" in ckPreTool sub.
Changed ToolComment$ to TrimToolComment$('8') on ToolChng lines.
Changed MaxRPM to 5500
Changed MaxFeed to 200
Added PostScript and commands for tool change Z position.
Jim Radcliffe}
{2/20/96
Copied: Cin 10HC Big Blue M413.80.4
Created: Cin 10HC [ST&D] M931.85
For: Schroeder Tool & Die
Machine: Cincinatti 10HC
Control: Cincinatti Milacron Acramatic
Versions: ncCad 4.33.02/ncCAM 4.33.01/ncPost 4.33.09/Catalyst v3.02.01/Compost 4.21.34/1.0a
Changes made per on sight visit with customer, phone calls, sample parts and printouts.
Updated for Catalyst v2.20 per Fanuc 6M M001.85.02 Format
Converted from Longhand, no subprogram format.
Added ASCII(10) at start of blocks, $ at end of blocks.
Added '=' for EOR code.
Numerous other changes.
DWB}
{2/21/96
Modified: Cin 10HC [ST&D] M931.85
For: Schroeder Tool & Die
Versions: ncCad 4.33.02/ncCAM 4.33.01/ncPost 4.33.09/Catalyst v3.02.02/Compost 4.21.34/1.0a
Changes made per Tom Hubina.
Updated for Catalyst v3.0 per Fanuc 6M M001.86 Format.
Modified ASCII(10).
Tom said outputting character first, before anything else was causing problems with DOS conversion.
Changed SetLineStrtChr(
) to literal
at FirstOperation.
Added to Numbers Dialog in Mach Spec.
DWB}
{3/22/96, Tested ZOnlyRepAutoCycle, Changed version # to .89, MPK}
{12/22/98
Initial: Cin 10HC [ST&D] M931.89
Created: Cin 10HC [ST&D] PM931.17
ForUser: Coupling Corporation of America
Develop: ComPost2 v1.7b11, Virtual v5.02
Comment: Updated for Simple Rotary Positioning.
Corrected Pecking.
Deleted Drill Subs as there is no FromCP command and no peck cycles.
Jim Radcliffe}
{1/24/99
Updated & Modified: Cin 10HC [ST&D] PM931.17
Created: Cin 10HC [ST&D] PM931.17.3
For: Coupling Corporation of America
Versions: Virtual 5.04.05/ComPost2 1.7b15
Changes made per Pete Jackson.
Updated for Catalyst v5 per Fanuc 6M PM001.17.3 Format.
DWB}
{Prog Numeric Format Definitions ****}
#1 = '#.00'
#2 = '#####^##0'
#3 = '*#####^##0'
#4 = '###^###0'
#5 = '#######0'
#6 = '#.0000'
#7 = '#'
#8 = '00'
#9 = 'ą#bbb.bbb000'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(TrackC#,3)
FORMAT(TrackCNO#,3)
FORMAT(MoveC#,3)
FORMAT(UnitAngle#,3)
FORMAT(Recall#,4)
FORMAT(ADD#,4)
FORMAT(SUB#,4)
FORMAT(TrackXNO#,4)
FORMAT(TrackYNO#,4)
FORMAT(TrackZNO#,4)
FORMAT(Dwell#,4)
FORMAT(TCZ#,4)
FORMAT(XEPVec#,4)
FORMAT(YEPVec#,4)
FORMAT(XVector#,4)
FORMAT(YVector#,4)
FORMAT(ArcZRads#,4)
FORMAT(TRUNC#,5)
FORMAT(Program#,5)
FORMAT(Program2#,5)
FORMAT(CallMasterNum#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(Parts#,5)
FORMAT(Repeats#,5)
FORMAT(ToolDiameter#,6)
FORMAT(RapidF#,7)
FORMAT(NewWFO#,8)
{Added Subroutines ****}
resetSP: {update to the correct StartPos}
IF Rotations? OR Repeats? OR AutoCycle?
IF AbsValue?
TrackXNO# SPX#
TrackYNO# SPY#
ELSE
SetAbs
TrackXNO# SPX#
TrackYNO# SPY#
SetInc
END
END
RETURN
saveEP: {save the correct EndPos}
IF PointFeat?
IF AutoCycle?
SetACSPCompF
Save# Num#('1') ADD# Recall# Num#('1') SPX# { xOpEP }
Save# Num#('2') ADD# Recall# Num#('2') SPY# { yOpEP }
SetACSPComp
ELSE
Save# Num#('1') SPX# { xOpEP }
Save# Num#('2') SPY# { yOpEP }
END
ELSE
Save# Num#('1') EPX# { xOpEP }
Save# Num#('2') EPY# { yOpEP }
END
RETURN
getEP: {save the correct EndPos}
IF Rotations? OR Repeats? OR AutoCycle?
IF AbsValue?
saveEP
ELSE
SetAbs
saveEP
SetInc
END
END
RETURN
setSRXYtoACEP:
TrackXNO# Recall# Num#('1') { xOpEP }
TrackYNO# Recall# Num#('2') { yOpEP }
RETURN
{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
wfo:
'H' NewWFO#
RETURN
wfoStuff:
IF NewWFO?
IF MultipleParts? AND WorkFixtureOffsets?
EOL
'*** WARNING *** DO NOT USE NEWWFO() WITH MULTIPLE PARTS AND WORK FIXTURE OFFSETS' EOL
SeqLabC
ELSE
wfo
END
ELSE
IF Flag?('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
IF NOT SameTool?
IF MultipleParts?
IF WorkFixtureOffsets?
WFO1
ELSE
wfo
END
ELSE
wfo
END
END
END
END
SetFlagF('2') { Do not output WFO second time wfoStuff is called for MP-WFO-OTAP-ECP }
RETURN
doSubComment:
IF UseComments? AND SubComment?
'(SUB NUMBER - ' Program# ' )' EOL
END
RETURN
doOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
'(MSG, OPERATION ' Operation# ' - ' OperationType$ ' )' EOL
END
IF OperationComment?
'(MSG, ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'(MSG, ' WorkGroupComment$ ' )' EOL
END
IF SameTool?
IF NewToolOffset?
IF ToolTypeComment?
'(MSG, TOOL ' Tool# ' - ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'(MSG, T' ToolComment$ ' )' EOL
END
END
ELSE
IF ToolTypeComment?
'(MSG, TOOL ' Tool# ' - ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'(MSG, T' ToolComment$ ' )' EOL
END
END
restoreScale
END
RETURN
psInit:
NewWFOF
FourthCWF
FourthCCWF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN
psStuff:
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqLabC 'A' FifthDegree# EOL
FifthCWF
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqLabC 'A' FifthDegree# EOL
FifthCCWF
END
RETURN
doPostScript:
psInit
EachPS
SeqLabC PostScript EOL
psStuff
NextPS
RETURN
doEndOpPS:
psInit
EachEOPS
SeqLabC EndOpPS EOL
psStuff
NextPS
RETURN
absValueC:
IF NOT AbsValue?
AbsValue
END
RETURN
incValueC:
IF AbsValue?
IncValue
END
RETURN
absOrIncC:
IF AbsoluteMoves?
absValueC
ELSE
incValueC
END
RETURN
setAngleUnder360: {sets status register and machine to current rotary position between -360 and 360 deg}
IF AAxisAvail?
IF GTEqual? MoveC# Num#('360') {reset the A-axis to be between 0 and 359.999}
ResetAngle
SeqLabC Preset 'B' TrackC# UnitAngle# EOL
ELSE
IF LTEqual? MoveC# Num#('-360')
IF Equal? UnitAngle# Num#('0') {reset the A-axis to be 0}
ResetAngle
SeqLabC Preset 'B' TrackC# UnitAngle# EOL
ELSE {reset the A-axis to be between -0.001 and -359.999}
ResetAngle
SeqLabC Preset 'B' TrackC# SUB# UnitAngle# Num#('360') EOL
END
END
END
END
RETURN
doStartPos:
StrtPos
IF AAxisAvail?
CalcSCAng MoveC
ELSE
TrackCNO# Num#('0')
END
RETURN
entryMove:
IF FirstOperation? OR NewTool?
RapidF# { Forces FeedEnt/FeedRate }
ELSE
IF LAST Rotations? OR LAST Repeats?
RapidF# { Forces FeedEnt/FeedRate }
END
END
IF FeedEntry?
SeqLabC Feed ZIn FeedEntC EOL
ELSE
SeqLabC RapidC ZIn EOL
END
RETURN
startSub:
OpenSub
SeqLabC '(PRG,I' Program# ')' EOL
doSubComment
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:
SeqLabC '(CLS,I' Program# ',R' Repeats# ')' EOL
startSub
RETURN
finishSub1: {part 1}
IF NOT FeedConnect?
SeqLabC RapidC ZCP3C EOL
END
RETURN
finishSubG92: {part 2}
SeqLabC Preset ShiftRC EOL
SeqLabC EndSub EOL
CloseSub
SeqLabC Preset UnshftRC EOL
RETURN
doWFOOps:
IF Flag?('5')
SetFlagF('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP }
ELSE
SeqLabC SetWFO EOL
END
SeqLabC '(CLS,I' Program# ')' EOL
RETURN
openMP:
NewProg
IF WorkFixtureOffsets?
IF OneToolAllParts? AND ExitClearancePlane?
SetFlag('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP }
END
NewWFO
EachWFO {simple eachPart}
doWFOOps
IncWFO
NextWFO {simple NextPart}
startSub
ELSE
SeqLabC '(CLS,I' Program# ',R' Parts# ')' EOL
IF OneToolAllParts? AND ExitClearancePlane?
SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
END
startSub
END
RETURN
closeMP:
IF WorkFixtureOffsets?
SeqLabC EndSub EOL
CloseSub
SeqLabC WFO1 EOL
ELSE
SeqLabC Preset ShiftPC EOL
SeqLabC EndSub EOL
CloseSub
SeqLabC Preset UnshftPC EOL
END
RETURN
doAbsOrInc:
IF Flag?('1') { Milling ZShiftOnly SepSubs/DrillSubs activated }
IF ZMove?
incValueC
ELSE
absOrIncC
END
END
RETURN
doDrillAbsOrInc:
IF Flag?('1') { DrillSubs activated }
IF SPZMove?
incValueC
ELSE
absOrIncC
END
END
RETURN
restoreAbsOrInc:
IF Flag?('1') { Milling ZShiftOnly SepSubs/DrillSubs activated }
SeqLabC absOrIncC EOL
END
RETURN
getVector:
IF CutterRadiusCompensation?
IF FirstFeat?
IF LastFeat?
MoveXYZC
ELSE
{ unconditional to set up proper vectors, cannot
have an axis vector without a call to that axis }
MoveX MoveY MoveZC 'P' XVector# 'Q' YVector#
END
ELSE
IF LastFeat?
IF XMove?
IF YMove?
MoveXYZC 'P' XEPVec# 'Q' YEPVec#
ELSE
MoveXYZC 'P' XEPVec#
END
ELSE
MoveXYZC 'Q' YEPVec#
END
ELSE
IF ArcFeat?
IF XMove?
IF YMove?
MoveXYZC 'P' XVector# 'Q' YVector#
ELSE
MoveXYZC 'P' XVector#
END
ELSE
IF YMove?
MoveXYZC 'Q' YVector#
ELSE
MoveXYZC
END
END
ELSE
IF Equal? NEXT SPX# NEXT EPX# AND Equal? NEXT SPY# NEXT EPY#
IF Equal? LAST SPX# LAST EPX# AND Equal? LAST SPY# LAST EPY#
{ Engraving XY Clearance Move }
{ unconditional to set up proper vectors, cannot
have an axis vector without a call to that axis }
MoveX MoveY MoveZC 'P' XEPVec# 'Q' YEPVec#
ELSE
{ Engraving ZCP2/ZIn Clearance Move }
IF XMove?
IF YMove?
MoveXYZC 'P' XEPVec# 'Q' YEPVec#
ELSE
MoveXYZC 'P' XEPVec#
END
ELSE
IF YMove?
MoveXYZC 'Q' YEPVec#
ELSE
MoveXYZC
END
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
END
END
ELSE
MoveXYZC
END
RETURN
ckCRC:
{ NOTE: This Post Processor uses Vectors }
RETURN
ckCRCNum:
{ NOTE: This Post Processor uses Vectors }
RETURN
doPeck: { longDrillStuff }
IF GreaterThan? SUB# Recall# Num#('23') Peck# SPZ# { IF OldZ - Peck# > Depth }
Save# Num#('23') SUB# Recall# Num#('23') Peck# { Save New Peck Depth }
SeqLabC Feed 'Z' Recall# Num#('23') FeedEntC EOL { Move to New Peck Depth }
Rapid
IF PeckFullRetract?
SeqLabC ZCP2 EOL { Retract Tool Full Out }
END
SeqLabC 'Z' ADD# Recall# Num#('23') Retract# EOL { Move to Retract Position }
TrackZNO# ADD# Recall# Num#('23') Retract# { Update Status Register }
END
RETURN
drillFeature: { Peck OR RetractToCP1 }
IF Peck?
IF FirstFeat?
IF Flag?('9') { valid Drill Rotation Sub }
SeqLabC Rapid ZCP2 EOL
END
ELSE
SeqLabC RapidC MoveSXYC EOL
SeqLabC ZCP2C EOL
END
Save# Num#('23') 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 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
SeqLabC FeedC MoveSZC FeedEntC EOL
IF Dwell?
SeqLabC 'G04F' Dwell# EOL
END
IF Flag?('9') { valid Drill Rotation Sub }
IF RetractToCP1?
SeqLabC RapidC ZCP1C EOL
ELSE
SeqLabC RapidC ZCP2C EOL
END
ELSE
IF NOT LastFeat?
IF RetractToCP1?
SeqLabC RapidC ZCP1C EOL
ELSE
SeqLabC RapidC ZCP2C EOL
END
END
END
ELSE { Canned Cycle with RetractToCP1 }
IF NOT FirstFeat?
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
SeqLabC MoveSXYC 'Z' SUB# Num#('.1') SUB# ClearancePlane2# SPZ# RLevelCin EOL
IF Flag?('9') { valid Drill Rotation Sub }
SeqLabC DrillOff 'R' SUB# ClearancePlane1# NumSc#('.1') EOL
END
END
IF NOT LastFeat?
IF NOT Flag?('9') { valid Drill Rotation Sub }
SeqLabC DrillOff 'R' SUB# ClearancePlane1# NumSc#('.1') EOL
END
END
END
RETURN
tpPointFeat:
IF AutoCycle?
SeqLabC MoveSXYC EOL
IF Repeats? AND ZshiftOnly?
SeqLabC '(CLS,I' TRUNC# SUB# Program# Num#('1') ')' EOL
ELSE
SeqLabC '(CLS,I' Program# ')' EOL
END
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
ELSE
IF FirstFeat?
SetFlagF('9') { For valid Drill Rotation Sub }
IF Rotations?
IF NOT LastFeat?
IF NOT MasterOp?
SetFlag('9') { valid Drill Rotation Sub }
NewProg
StartSub
END
END
END
IF Peck? OR RetractToCP1?
IF Flag?('1') { DrillSubs activated }
TrackXNO# SPX#
TrackYNO# SPY#
TrackZNO# SPZ#
ELSE
DrillFeature
END
END
ELSE
IF Peck? OR RetractToCP1?
IF Flag?('1') { DrillSubs activated }
SeqLabC doDrillAbsOrInc MoveSXYZC EOL
ELSE
DrillFeature
END
ELSE
SeqLabC doDrillAbsOrInc MoveSXYZC EOL
END
END
IF LastFeat?
IF Flag?('9') { valid Drill Rotation Sub }
restoreAbsOrInc
IF NOT MasterOp?
SeqLabC EndSub EOL
CloseSub
END
END
END
END
RETURN
tpRapidFeat:
IF XMove? OR YMove? OR ZMove?
SeqLabC doAbsOrInc EOL
SeqLabC RapidC getVector EOL
END
RETURN
tpLineFeat:
IF XMove? OR YMove? OR ZMove?
SeqLabC doAbsOrInc EOL
SeqLabC FeedC getVector FeedRateC EOL
END
RETURN
tpArcFeat:
SeqLabC doAbsOrInc EOL
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
SeqLabC
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
IF XYPlane? AND ZMove?
getVector ArcIJ 'K' ArcZRads#
ELSE
IF XZPlane? AND YMove?
getVector ArcI 'J' ArcZRads# ArcJ
ELSE
IF YZPlane? AND XMove?
getVector 'I' ArcZRads# ArcIJ
ELSE
getVector ArcIJ
END
END
END
ArcFeedC EOL
NEXTQuadrant
RETURN
toolPath:
EACHFeat
IF FirstFeat?
resetSP
END
IF PointFeat?
tpPointFeat
ELSE
IF RapidFeat?
tpRapidFeat
ELSE
IF LineFeat?
tpLineFeat
ELSE
IF ArcFeat?
tpArcFeat
END
END
END
END
IF LastFeat?
getEP
END
NEXTFeat
restoreAbsOrInc
RETURN
autoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
startSub
SetSRXYtoSP
SeqLabC incValueC EOL
RETURN
autoCycCutSub2: {part 2}
toolPath
SeqLabC absOrIncC EOL
IF Repeats? AND FeedConnect? AND ZshiftOnly?
ELSE
SeqLabC RapidC ZCP2 EOL
END
SeqLabC EndSub EOL
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
END
RETURN
g92Sub:
subWarning
stdSub
SeqLabC absOrIncC EOL
SeqLabC Connect doStartPos EOL
milling
finishSub1
finishSubG92
RETURN
doSepSubContour:
SetPass1
TrackZNO# SPZ#
startSub
RapidF#
IF AutoCycle?
NewProg
autoCycCutSub1 {build element sub}
TrackZNO# SPZ#
autoCycCutSub2
ELSE
toolPath
finishSub1
SeqLabC EndSub EOL
CloseSub
END
SetPass1
SetStatusRapid
RapidF#
SetSRXYtoEP
TrackZNO# ClearancePlane2#
RETURN
doSepSubFeedConnect:
IF FeedConnect?
FeedEntC
END
RETURN
doSepSubSPMove:
SetStatusOff
IF SPXMove? OR SPYMove?
IF AutoCycle?
SeqLabC incValueC EOL
END
SeqLabC Connect StrtPosC doSepSubFeedConnect EOL
SeqLabC absOrIncC EOL
ELSE
Connect
END
SetStatusOn
RETURN
doSepSubZMoves:
IF FeedConnect?
SeqLabC FeedC ZInPlusInc FeedEnt EOL
ELSE
IF FeedEntry?
IF NOT FirstCycle?
SeqLabC RapidC ZCP2PlusInc EOL
END
SeqLabC Feed ZInPlusInc FeedEnt EOL
ELSE
IF FirstCycle? AND AutoCycle?
Rapid
END
SeqLabC RapidC ZInPlusInc EOL
END
END
SeqLabC '(CLS,I' Program# ')' EOL
IF NOT FeedConnect? AND NOT AbsValue?
TrackZNO# ZCP2PlusInc#
SeqLabC ZCP2C EOL
IF NOT AutoCycle?
TrackZNO# ClearancePlane3#
END
END
RETURN
setSepSubZ:
SetAbs
TrackZNO# ADD# SPZ# MUL# RepsLess1# RepeatZ#
SetInc
RETURN
doSepSubExit:
IF NOT AbsValue?
setSepSubZ
END
IF AutoCycle?
SeqLabC Rapid ZCP2 EOL
ELSE
Rapid { Will be output at millingOp ZCP3 }
END
RETURN
resetSepSubSR:
SetPass1
SetStatusRapid
RapidF#
TrackXNO# Recall# Num#('1') { xOpEP }
TrackYNO# Recall# Num#('2') { yOpEP }
RETURN
zonlyRepAutoCycle:
doSepSubContour
EachCycle
IF NOT FirstCycle?
doSepSubSPMove
END
doSepSubZMoves
NextCycle
IF FeedConnect?
doSepSubExit
END
SeqLabC EndSub EOL
CloseSub
{Element shift, not pattern}
autoCycPat {write pattern moves and main calls}
resetSepSubSR
TrackZNO# ClearancePlane2#
RETURN
zonlyRep:
doSepSubContour
EachCycle
IF NOT FirstCycle?
doSepSubSPMove
END
doSepSubZMoves
NextCycle
resetSepSubSR
IF FeedConnect?
doSepSubExit
ELSE
TrackZNO# ClearancePlane3#
END
RETURN
millingOp:
SeqLabC ZCP2C EOL
IF Repeats?
NewProg
IF ZshiftOnly?
IF AutoCycle? {incremental Autocycle sub can have Z moves}
zonlyRepAutoCycle
ELSE {Z shift only, NOT Auto Cycle}
SetFlag('1') { Milling ZShiftOnly SepSubs activated }
zonlyRep
SetFlagF('1') { Milling ZShiftOnly SepSubs deactivated }
END {end Auto Cycle IF}
ELSE {not Z only}
g92Sub
END {end Z only IF}
ELSE {no repeat OPs}
milling
END
IF AutoCycle?
SeqLabC ZCP3C EOL
setSRXYtoACEP
ELSE
SeqLabC RapidC ZCP3C EOL
END
RETURN
skipToLastFeat:
EachFeat
IF LastFeat?
TrackXNO# SPX#
TrackYNO# SPY#
END
NextFeat
RETURN
setDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN
drillingOp:
IF CallMasterOp?
IF Peck? OR RetractToCP1?
toolPath
ELSE
SeqLabC '(CLS,I' CallMasterNum# ')' EOL
skipToLastFeat
END
ELSE
TrackZNO# SPZ#
IF MasterOp?
IF Peck? OR RetractToCP1?
toolPath
END
SetFlag('1') { DrillSubs activated }
NewMasterProg
IF NOT Peck? AND NOT RetractToCP1?
SeqLabC '(CLS,I' Program# ')' EOL
END
startSub
toolPath
SeqLabC EndSub EOL
CloseSub
SetFlagF('1') { DrillSubs deactivated }
ELSE
toolPath
END
END
setDrillEndOpZ
IF NOT Rotations?
IF NOT Peck?
SeqLabC DrillOff EOL
END
SeqLabC Rapid ZCP3 EOL
END
RETURN
checkPass: {use the correct StrtPos}
IF AutoCycle?
SetPass2
ELSE
SetPass1
END
RETURN
rotateStartPosC:
TrackXNO# Recall# Num#('1') { xOpEP }
MoveSXC
TrackYNO# Recall# Num#('2') { yOpEP }
MoveSYC
CalcSCAng MoveC
RETURN
rotaryReps: {use the correct EndPos}
EachRotation
IF Milling?
IF FirstRotation?
NewProg
SaveProgNum2
StartSub
millingOp
SeqLabC EndSub EOL
CloseSub
checkPass
ELSE
SeqLabC rotateStartPosC EOL
END
SeqLabC '(CLS,I' Program2# ')' EOL
ELSE
IF Drilling?
IF FirstRotation?
drillingOp
checkPass
ELSE
IF Peck?
IF NOT Flag?('9')
SeqLabC Rapid ZCP3 EOL
END
SeqLabC rotateStartPosC EOL
ELSE
IF RetractToCP1? AND Equal? ClearancePlane1# ClearancePlane3#
SeqLabC rotateStartPosC EOL
ELSE
IF NOT RetractToCP1? AND Equal? ClearancePlane2# ClearancePlane3#
SeqLabC rotateStartPosC EOL
ELSE { Need to cancel Drill Cycle between Rotations }
IF Flag?('9')
IF NOT Peck?
IF NOT RetractToCP1?
SeqLabC DrillOff 'R' SUB# ClearancePlane3# NumSc#('.1') EOL
END
END
ELSE
SeqLabC DrillOff 'R' SUB# ClearancePlane3# NumSc#('.1') EOL
END
SeqLabC rotateStartPosC EOL
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
SeqLabC rotateStartPosC 'Z' SUB# Num#('.1') SUB# ClearancePlane2# SPZ# RLevelCin FeedEnt EOL
END
END
END
END
IF Peck? OR RetractToCP1?
IF Flag?('9') { valid Drill Rotation Sub }
IF NOT Peck?
SeqLabC DrillOff 'R' SUB# ClearancePlane3# NumSc#('.1') EOL
END
SeqLabC '(CLS,I' Program# ')' EOL
ELSE
IF NOT FirstRotation?
IF Peck?
SeqLabC ZCP2C EOL
toolPath
END
END
END
ELSE
IF CallMasterOp?
IF NOT FirstRotation?
SeqLabC '(CLS,I' CallMasterNum# ')' EOL
END
ELSE
IF MasterOp?
IF NOT FirstRotation?
SeqLabC '(CLS,I' Program# ')' EOL
END
ELSE
IF Flag?('9') { valid Drill Rotation Sub }
SeqLabC '(CLS,I' Program# ')' EOL
END
END
END
END
IF LastRotation?
IF Peck?
IF NOT Flag?('9') { valid Drill Rotation Sub }
SeqLabC Rapid ZCP3 EOL
END
ELSE
IF RetractToCP1?
IF NOT Flag?('9') { valid Drill Rotation Sub }
SeqLabC DrillOff EOL
END
ELSE
SeqLabC DrillOff EOL
END
SeqLabC Rapid ZCP3 EOL
END
END
END
END
NextRotation
TrackXNO# Recall# Num#('1') { xOpEP }
TrackYNO# Recall# Num#('2') { yOpEP }
TrackZNO# ClearancePlane3#
RETURN
opGuts:
IF Rotations?
rotaryReps
ELSE
IF Milling?
millingOp
ELSE
IF Drilling?
drillingOp
END
END
END
RETURN
approach:
IF Milling?
Rapid doStartPos
IF FirstOperation? OR NewTool? OR LAST ProgStop? OR NewToolOffset?
ZCP1
END
ELSE {Drilling}
GetCycle
IF Peck?
Rapid doStartPos ZCP2
ELSE
IF FirstOperation? OR NewTool? OR LAST ProgStop? OR NewToolOffset?
TrackZNO# ClearancePlane1#
END
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
doStartPos 'Z' SUB# Num#('.1') SUB# ClearancePlane2# SPZ# RLevelCin FeedEnt
END
END
RETURN
ckSpinOn: {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
progStart:
InitProg
SetTCZ('10.0')
SetMaxVec('3.2767')
ReverseXZArcs
InitWFONum
SetFlood
SetMaxRPM('5500')
IF Metric?
SetMaxFeed('5080')
ELSE
SetMaxFeed('200')
END
Save# Num#('1') Num#('0') { Status Register Variable for X Axis }
Save# Num#('2') Num#('0') { Status Register Variable for Y Axis }
Save# Num#('23') Num#('0') { LongHand Peck Drilling Cycle TrackZ }
SetFlagF('1') { Milling ZShiftOnly SepSubs/DrillSubs deactivated }
SetFlagF('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
SetFlagF('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP }
SetFlagF('9') { For valid Drill Rotation Sub }
IF PSComment? AND UseComments?
'Utility Data:' EOL
' At Op Start: All literals and commands will appear at the beginning of the operation.' EOL
' At Op End: All literals and commands will appear at the end of the operation.' 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
' 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
' 5thAxisCW(30), 5ACW(30) -' EOL
' generates a + A move of the value you specify' EOL
' 5thAxisCCW(22.5), 5ACCW(22.5) -' EOL
' generates a - A move of the value you specify' 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
' 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
' TCZ(), TOOLCHANGEZ() -' EOL
' This is a modal command affecting all operations.' EOL
' The value in () establishes the Z tool change position.' EOL
' Internally set to Z10.0000 as a default.' EOL
END
RETURN
initOp:
IF UseComments?
ASCII('10')
'PARTNO ' ProgramName$ ' BY - T. LOWE PROG -' ProgramComment$ ' ' EOL
' ' EOL { }
'=' EOL { EOR }
'(MSG, MACHINE 10HC )' EOL
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
'(MSG, )' EOL
EachOp
IF FirstOperation? OR NewTool? OR NewToolOffset?
'( TOOL ' Tool# ' - ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF LastOp?
'(MSG, )' EOL
END
NextOp
END
OpenSub
restoreScale
RETURN
firstOp1:
IF ToolChangeAtHome?
SetHome
END
'O?' Rapid OpToolID ToolChng EOL
doOpComments
SeqLabC Plane EOL
SeqLabC AbsOrInc EOL
doPostScript
RETURN
firstOp2:
checkPass
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
SeqLabC Rapid doStartPos Speed wfoStuff ckSpinOn EOL
END
RETURN
firstOp3:
checkPass
SeqLabC approach Speed
IF NOT LastTool?
PreTool
END
wfoStuff ckSpinOn EOL
RETURN
newToolOp1:
setAngleUnder360
RETURN
newToolOp2:
doEndOpPS
IF NotEqual? TCZ# LAST ClearancePlane3#
SeqLabC RapidC 'Z' TCZ# EOL
END
IF ToolChangeAtHome?
SeqLabC RapidC Home EOL
END
IF LAST ProgStop?
SeqLabC 'M00' EOL
ELSE
SeqLabC ProgStop EOL
END
RETURN
newToolOp3: {Start new Operation}
'O?' Rapid OpToolID ToolChng EOL
doOpComments
SeqLabC PlaneC EOL
doPostScript
RETURN
newToolOp4:
checkPass
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
SeqLabC Rapid doStartPos Speed wfoStuff ckSpinOn EOL
END
RETURN
newToolOp5:
checkPass
SeqLabC approach Speed PreTool wfoStuff ckSpinOn EOL
RETURN
sameToolOp1:
doEndOpPS
IF LAST ProgStop?
IF NotEqual? TCZ# LAST ClearancePlane3#
SeqLabC RapidC 'Z' TCZ# EOL
END
IF ToolChangeAtHome?
SeqLabC RapidC Home EOL
END
SeqLabC CoolOff EOL
SeqLabC 'M00' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
END
setAngleUnder360
RETURN
sameToolOp2: {Start new Operation}
doOpComments
doPostScript
checkPass
RETURN
sameToolOp3: {Start new Operation}
SeqLabC PlaneC EOL
IF LAST ProgStop?
SeqLabC approach Speed wfoStuff ckSpinOn EOL
ELSE
SeqLabC approach SpeedC wfoStuff EOL
IF NOT CoolOff? AND LAST CoolOff?
SeqLabC CoolOn EOL
END
END
RETURN
end1:
setAngleUnder360
IF NotEqual? UnitAngle# Num#('0')
SeqLabC absOrIncC EOL
SeqLabC RapidC 'B' TrackC# Num#('0') EOL
END
RETURN
end2:
doEndOpPS
IF NotEqual? TCZ# ClearancePlane3#
SeqLabC RapidC 'Z' TCZ# EOL
END
IF ToolChangeAtHome?
SeqLabC RapidC FirstHome EOL
END
IF LAST ProgStop?
SeqLabC 'M00' EOL
END
RETURN
end3:
SeqLabC EOP EOL
CloseSub
Post2 {organize Subs into one program}
Close
Retag
IF UseComments?
SetScale('1') {restore scale for comments}
Reopen
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
Close
END
RETURN
mpAllTools1P: {Multiple Parts, All Tools 1 Part}
EachOp {Start of post processing}
IF EquallySpacedOffsets?
SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
END
IF FirstOperation?
openMP
firstOp1
firstOp2
firstOp3
ELSE
IF NewTool?
newToolOp1
newToolOp2 {to tool change, CS problem}
newToolOp3
newToolOp4
newToolOp5
ELSE {implied SameTool?}
sameToolOp1
sameToolOp2
sameToolOp3
END
END {common point for all operations}
opGuts
NextOp {loops back to EachOP until last Operation}
end1
end2
closeMP
end3
RETURN
mp1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up}
EachOp {Start of post processing}
IF EquallySpacedOffsets?
SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
END
IF FirstOperation?
firstOp1
openMP
firstOp2
firstOp3
ELSE
IF NewTool?
newToolOp1
closeMP
newToolOp2 {to tool change, CS problem}
newToolOp3
openMP
newToolOp4
newToolOp5
ELSE {implied SameTool?}
sameToolOp1
sameToolOp2
sameToolOp3
END
END {common point for all operations}
opGuts
NextOp {loops back to EachOP until last Operation}
end1
closeMP
end2
end3
RETURN
mp1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane}
EachOp {Start of post processing}
SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
IF FirstOperation?
firstOp1
{firstOp2}
firstOp3
openMP
firstOp2 {need StrtPos in Sub}
ELSE
IF NewTool?
closeMP
newToolOp1
newToolOp2 {to tool change, CS problem}
newToolOp3
{newToolOp4}
newToolOp5
openMP
newToolOp4 {need StrtPos in Sub}
ELSE {implied SameTool?}
sameToolOp1
sameToolOp2
sameToolOp3
END
END {common point for all operations}
opGuts
NextOp {loops back to EachOP until last Operation}
closeMP
end1
end2
end3
RETURN
noMPs: {no multiple parts}
EachOp {Start of post processing}
SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others }
IF FirstOperation?
firstOp1
firstOp2
firstOp3
ELSE
IF NewTool?
newToolOp1
newToolOp2
newToolOp3
newToolOp4
newToolOp5
ELSE {implied SameTool?}
sameToolOp1
sameToolOp2
sameToolOp3
END
END {common point for all operations}
opGuts
NextOp {loops back to EachOP until last Operation}
end1
end2
end3
RETURN
{Start of executable Prog, Top Level ****}
progStart {setup and initializations}
initOp
IF MultipleParts?
IF AllToolsOnePart?
mpAllTools1P
ELSE {implied OneToolAllParts?}
IF FullUp?
mp1ToollAllPfu
ELSE {implied ExitClearancePlane?}
mp1ToollAllPXcp
END
END
ELSE
noMPs
END
Wyszukiwarka
Podobne podstrony:
Cin 10HC [ST&D] M931 89Fanuc 6M Mat [ST] RMU89 17 7Cin 10HC Acr 900 PMW DV69 15 1Fanuc 6M Mat [ST] PMU89 17 3Cin 10HC Big Blue M413 80 5Cin Acr 850SX Sabre PM689 17 3ST 17 KsiegaEsteryCin Acr 850SX Lancer PM688 17 3Administracja bezpieczenstwa stwitamina K1 St Maj17 Prawne i etyczne aspekty psychiatrii, orzecznictwo lekarskie w zaburzeniach i chorobach psychiczn17 (30)arm mat mult ?st q15?więcej podobnych podstron