Cin Acr 5 Heald [CI] MY92 87 1


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

{7/24/90, Added InitProg globally to posts with this remark, DWB}

{ 8/29/88 }
{ original prog: Cincinnati-225W M027.53 }
{ customer had M029, but this was closer to start with }
{ updated per marked-up read-out }
{ note that this post needs a new hard coded peck cycle:
first feed z
rapid to cp
FAST FEED, AT F2000, BACK IN
next FEED z
can this be written manually? each peck ; next peck loop?}
{ Jim Radcliffe }

{12/4/91
Modified: Cincinnati 720 Acr 5 M144.55
For: Gibbs & Associates
Updated to Version 4.0 per Fanuc 6M M001.81 Format.
Kim Michelman}

{3/2/92
Modified: Cincinnati 720 Acr 5 M144.81
For: LTS
Changed CW, CCW, and IJ in FormatArc to Unconditional.
Kim Michelman}

{4/23/92
Modified: Cincinnati 720 Acr 5 M492.81.1
For: LTS
Changed from the obsolete command of 'PostCinc', at the end of the prog to 'Post'.
Changed the literal 'M17' to SpinOn to output 'M03', per request.
Added '%' in the form to output '%' at the end of the record.
Changed the last line of code to go to 'Y0' instead of 'Y+40000'
Changed if 'First' ToolChangeAtHome? Then instead of outputing home position,
output a rapid and an 'M26' which allows for the programmer to set where the
tool change will take place.
Changed to a longhand post, following Fanuc 5M M015.79 logic -
replacing OpenMP & CloseMP with EACHPart and NEXTPart loops.
Kim Michelman}

{10/24/94
Updated: Cin 5V 1250 Acr 8-D M154.81
For: Gibbs & Associates/Winegar
Versions: ncCad 4.33/ncCAM 4.33/ncPost 4.33.03/Compost 4.21.23
Versions: Catalyst v2.14.06C
Changes made per Pete Jackson.
Updated to Version 4.2 per LongHand M001.81.3a Format.
Replaces ToolPath2 method.
This processor does not support Incremental Output.
This processor does not support Coolant control.
This processor does not support WorkFixtureOffsets.
This processor does not support CutterRadiusCompensation.
Rapid outputs G80, Feed output G79.
This supports MultipleParts.
Using Var(1), Var(2) and Var(3) for logical control of MultiplePart Operations.
Using Var(4), Var(5), Var(6) and Var(7) for correct Positioning of AutoCycles that Repeat in
X and/or Y, and when AbsoluteMoves = FALSE.
Corrected FORMAT5 from '########;0' to '#######0'.
Corrected FORMAT6 for Dwell# from '####^###;' to '####^##0'.
Added Tag# to FORMAT5.
Added Recall# to FORMAT5.
Added RestoreScale Sub per 4-Axis Post Processor.
Added logic of MPLoop sub to handle IF NewTool? and LastOp? situations.
Commented out DoEndOpPS at MPLoop for OneToolAllParts, it does not work correctly.
Moved DoCycleComment call to before StrtPos move in related subs.
Added BadMPWFOReport sub.
Reports when MultipleParts AND WorkFixtureOffsets = TRUE AND EquallySpacedOffset values exist.
Added FORMAT7, 'Ä…#bbbb.bbbb#', for PartShiftX#, PartShiftY# and PartShiftZ# commands.
Moved SeqLabC and EOL outside of IF ELSE condition at ExitMove sub.
Moved SeqLabC AbsOrInc and EOL outside of IF ELSE condition at AutoCycCutSub2 sub.
Deleted ReSetPass2 at end of ZonlyRepAutoCycle sub.
Already executed at end of call to AutoCycCutSub2 sub.
DWB}

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

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

{10/24/94
Updated: Cin 5V 1250 Acr 8-D M154.81
For: COMCO International
Deleted 'B0' in MasterSub
Deleted all Z move from the Post
Deleted ToolChangeAtHome? in NewTool?
Charles Winston}

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

#1 = '#.00'
#2 = '###.###;0.'
#3 = '*###.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '#'
#7 = 'Ä…#bbbb.bbbb#'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Tag#,5)
FORMAT(Recall#,5)
FORMAT(Program#,5) {.72}
FORMAT(Operation#,5) {.72}
FORMAT(Tool#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(RapidF#,6)
FORMAT(PartShiftX#,7)
FORMAT(PartShiftY#,7)
FORMAT(PartShiftZ#,7)

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

RestoreScale:
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
RETURN

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

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

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

BadMPWFOReport:
SetStatusOff
' ' EOL
'Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„' EOL
'Ä„ NOTE: Even though you have elected to Ä„' EOL
'Ä„ process this file using Multiple Ä„' EOL
'Ä„ Parts with Work Fixtures, there exist Ä„' EOL
'Ä„ non-zero values in the invisible, Ä„' EOL
'Ä„ Equally SpacedÉ fields, as follows: Ä„' EOL
'Ä„ Ä„' EOL
'*****************************************' EOL
IF NotEqual? PartShiftX# Num#('0')
' X axis shift = ' PartShiftX# EOL
END
IF NotEqual? PartShiftY# Num#('0')
' Y axis shift = ' PartShiftY# EOL
END
IF NotEqual? PartShiftZ# Num#('0')
' Z axis shift = ' PartShiftZ# EOL
END
'*****************************************' EOL
'Ä„ Ä„' EOL
'Ä„ Please reset these values to zero as Ä„' EOL
'Ä„ they affect the coordinate values Ä„' EOL
'Ä„ output, starting with Part# 2. Ä„' EOL
'Ä„ Thank You. Ä„' EOL
'Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„' EOL
' ' EOL
SetStatusOn
RETURN

PSInit: {reset flags}
RotateF
RETURN

PSStuff: {revised.72}
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqLabC 'A' FourthDegree# EOL
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqLabC 'A' FourthDegree# EOL
FourthCCWF {reset flag}
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqLabC 'B' FifthDegree# EOL
FifthCWF {reset flag}
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqLabC 'B' FifthDegree# EOL
FifthCCWF {reset flag}
END
RETURN

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

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

EntryMove:
IF FeedEntry?
SeqLabC FeedC
IF NOT EmptyLine?
FeedEntC
END
EOL
ELSE
SeqLabC RapidC EOL
END
RETURN

GetConnect:
IF FeedConnect?
FeedC
ELSE
RapidC
END
RETURN

ExitMove:
RETURN

ExitMove2:
RETURN

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

FormatArc:
IF ArcCW?
CWArc
ELSE
CCWArc
END
MoveXYC
IF ArcIJFormat?
ArcIJ
ELSE
ArcRC
END
RETURN

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

ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
IF Peck?
SeqLabC MoveSXYC EOL
PeckManual
ELSE
SeqLabC MoveSXYC EOL {.80.01}
END
ELSE
IF RapidFeat?
IF AutoCycle?
SeqLabC RapidC MoveXYC EOL
ELSE
IF XMove? OR YMove?
SeqLabC RapidC MoveXYC EOL {.82}
END
END
ELSE
IF LineFeat?
IF AutoCycle? {.70}
IF LastFeat?
SeqLabC FeedC MoveXYC FeedRateC EOL
ELSE {***---}
StdLine {enables CRC on first call}
END
ELSE
StdLine
END
ELSE
IF ArcFeat?
IF FirstFeat? OR LAST RapidFeat?
SeqLabC Feed EOL
END
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC FormatArc ArcFeedC EOL
DecelMove2
END
SeqLabC FormatArc DecelFeed EOL
ELSE
SeqLabC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
END
IF AutoCycle?
SetAbs
Save# Num#('6') SUB# EPX# CurOriginPosX#
Save# Num#('7') SUB# EPY# CurOriginPosY#
SetInc
END
END
NEXTFeat
RETURN

WFOStuff:
{ Note: This processor does not support WorkFixtureOffsets. }
RETURN

AutoCycCutSub1: {part 1}
CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
RETURN

AutoCycCutSub2: {part 2}
SeqLabC 'G81' EOL { Tool Retract }
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN

Milling:
EntryMove
ToolPath
RETURN

XYZRep:
EachRep
DoCycleComment
IF NOT FirstCycle?
SeqLabC StrtPosC EOL
END
ToolPath
NextRep
RETURN

NoRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
SeqLabC RapidC MoveSXYC EOL
END
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
RETURN

XYZRepAutoCycle:
CycleWarning
EachRep
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
SeqLabC GetConnect MoveSXYC EOL
END
SetAbs
Save# Num#('4') SPX#
Save# Num#('5') SPY#
SetInc
AutoCycCutSub1
Milling
AutoCycCutSub2
SetAbs
TrackXNO# ADD# Recall# Num#('4') Recall# Num#('6')
TrackYNO# ADD# Recall# Num#('5') Recall# Num#('7')
NEXTFeat
NextRep
RETURN

ZonlyRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
SeqLabC GetConnect MoveSXYC EOL
END
AutoCycCutSub1
EachRep
IF FirstCycle?
EntryMove
ELSE
IF NOT FeedConnect?
SeqLabC 'G81' EOL { Tool Retract }
END
DoCycleComment
IF SPXMove? OR SPYMove?
SeqLabC GetConnect MoveSXYC EOL
END
IF NOT FeedConnect?
EntryMove
END
END
ToolPath
NextRep
AutoCycCutSub2
NEXTFeat
RETURN

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

GetStartOfSameTool:
DoPartCycleComment
DoOpComments
DoPostScript
Plane { No Output }
CheckPass
RETURN

MasterSub:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE
IF ToolChangeAtHome?
SetHome
END
'H?' Rapid 'X0Y0' ToolChng EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
Plane { No Output }
'H?'
IF Milling?
Rapid StrtPos
ELSE
GetCycle
IF Peck?
Rapid StrtPos
ELSE
Cycle StrtPos
END
END
OpToolID EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE

{Finish off last Operation}

DoEndOpPS
IF LAST ProgStop?
SeqLabC 'M00' EOL
END

{Start new Operation}

DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
Plane { No Output }
SeqLabC Rapid 'M26' EOL
'H?' Rapid 'X0Y0' ToolChng EOL
'H?'
IF Milling?
Rapid StrtPos
ELSE
GetCycle
IF Peck?
Rapid StrtPos
ELSE
Cycle StrtPos
END
END
OpToolID 'M26' EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqLabC 'M00' EOL

{Start new Operation}

GetStartOfSameTool
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos EOL
END
END
ELSE
IF NewToolOffset?

{Start new Operation}

GetStartOfSameTool
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos EOL
END
END
ELSE

{Start new Operation}

GetStartOfSameTool
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos EOL
END
END
END
END
END
END
END {common point for all operations}
IF Milling?
RapidF# { No Output }
IF AutoCycle?
IF Repeats?
IF ZshiftOnly?
'( Cannot do a Z Shift on this machine )' EOL
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
ELSE
NoRepAutoCycle
END
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
Milling
END
END
ELSE
IF Drilling?
TrackZNO# FIRST SPZ# {.81.2}
IF Repeats?
EachRep
DoCycleComment
ToolPath
NextRep
ELSE
ToolPath
END
TrackZNO# ClearancePlane1#
END
END
RETURN

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

{finish last operation}
IF MultipleParts? AND OneToolAllParts? AND WorkFixtureOffsets?
SeqLabC 'G' Recall# Num#('8') EOL
END
DoEndOpPS
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
'H?' Rapid 'M26' EOL
END
IF ProgStop?
SeqLabC 'M00' EOL
ELSE
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart?
SeqLabC ProgStop EOL
END
END
RETURN

MPLoop:
TagInit
IF AllToolsOnePart?
EachPart
TagInc
EachOp
MasterSub
NextOp
EndPartSub
NextPart
ELSE { OneToolAllParts }
Save# Num#('2') Recall# Num#('1')
IF LTEqual? Recall# Num#('1') Recall# Num#('3')
EachOp
IF Equal? Operation# Recall# Num#('2')
Save# Num#('2') ADD# Operation# Num#('1')
IF NewTool?
IF Equal? Recall# Num#('1') Recall# Num#('3')
Save# Num#('2') Operation#
ELSE
IF NotEqual? Recall# Num#('1') SUB# Recall# Num#('2') Num#('1')
Save# Num#('2') SUB# Operation# Num#('1')
END
END
END
END
NextOp
EachPart
TagInc
EachOp
IF GTEqual? Operation# Recall# Num#('1')
IF LTEqual? Operation# Recall# Num#('2')
IF Equal? Operation# Recall# Num#('1')
IF NOT FirstPart?

{Finish off last Operation}

{DoEndOpPS}

{Start new Operation}

GetStartOfSameTool
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos EOL
END
END
END
END
MasterSub
END
END
NextOp
NextPart
Save# Num#('1') ADD# Recall# Num#('2') Num#('1')
END
END
RETURN

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

{setup and initialiations}
InitProg
SetAbs
ReverseXZArcs
SetMaxRPM('10000')
SetMaxFeed('500')
Save# Num#('1') Num#('0') { This Tool FirstOp# }
Save# Num#('2') Num#('0') { This Tool LastOp# }
Save# Num#('3') Num#('0') { LastOp# }
Save# Num#('4') Num#('0') { XPos Status Register Updated Position for Repeated AutoCycles }
Save# Num#('5') Num#('0') { YPos Status Register Updated Position for Repeated AutoCycles }
Save# Num#('6') Num#('0') { LastFeat EPX# AbsPosValue for Repeated AutoCycles }
Save# Num#('7') Num#('0') { LastFeat EPY# AbsPosValue for Repeated AutoCycles }
IF PSComment? AND UseComments?
'PostScript:' EOL
' Literals: put between single or double quotes.' EOL
' Separate commands and literals with at least one space.' EOL
' A CR ( RETURN key ) will start a new line.' EOL
' Commands: may be capital and/or lower case letters. Separate commands with a space.' EOL
' EndOP -' EOL
' all literals and commands before an ENDOP command' EOL
' will appear at the beginning of the operation. All ' EOL
' literals and commands after an ENDOP command will appear' EOL
' at the end of the operation. ' EOL
' 4thAxisCW(12.5), 4ACW(12.5) -' EOL
' generates a + A move of the value you specify' EOL
' 4thAxisCCW(22.5), 4ACCW(22.5) -' EOL
' generates a - A move of the value you specify' EOL
' 5thAxisCW(30), 5ACW(30) -' EOL
' generates a + B move of the value you specify' EOL
' 5thAxisCCW(22.5), 5ACCW(22.5) -' EOL
' generates a - B move of the value you specify' EOL
END
EOR EOL
IF UseComments?
IF ProgramNameComment?
'( ' 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
RestoreScale
IF MultipleParts?
Save# Num#('1') Num#('1')
IF WorkFixtureOffsets?
IF NotEqual? PartShiftX# Num#('0')
BadMPWFOReport
ELSE
IF NotEqual? PartShiftY# Num#('0')
BadMPWFOReport
ELSE
IF NotEqual? PartShiftZ# Num#('0')
BadMPWFOReport
END
END
END
END
EachOp
IF LastOp?
Save# Num#('3') Operation#
END
NextOp
MPLoop
IF OneToolAllParts?
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
EndPartSub
END
ELSE
EachOp
MasterSub
NextOp
EndPartSub
END
'H?' Rapid 'X0Y0W0' EOP EOL
Post
EOR EOL
Close
ReTag
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:
Cin Acr 850MC [RI] M664 87
Cin Acr 850SX [WI] M700 87
Cin Acr 850 [FMI] M814 87
Cin Acr 850MC [SJ] M494 87
Cin Acr 850SX [LBS] MU11 87
Cin T10 Acr 950MC[JD] M535 87
Cin Acr 338 D M160 87
Cin Acr 225WA M911 87 2
Cin Acr A2100 M703 87 1
Cin Acr 900V2 [KM] MT25 89
Cin Acr 850SX Sabre PM689 17 3
Cin Acr CNC TC [12] L273 85 1
Cin Acr 850 SX [WF] L592 85
Cin Acr 950HMC [T40] CW32 15
Cin Acr 850MC M196 89
Cin Acr 850 SX L315 85

więcej podobnych podstron