{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}
{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 ZInC
IF NOT EmptyLine?
FeedEntC
END
EOL
ELSE
SeqLabC RapidC
IF NOT EmptyLine?
ZIn
ELSE
ZInC
END
EOL
END
RETURN
GetConnect:
IF FeedConnect?
FeedC
ELSE
RapidC
END
RETURN
ExitMove:
SeqLabC
IF FeedConnect?
IF NOT AutoCycle?
IF NOT NoZMoves?
FeedC ZInC FeedEntC
END
END
ELSE
IF FIFO? { .81 }
FeedC
ELSE
RapidC
END
PRIME ZCP2C
IF FIFO? { .81 }
FeedEntC
END
END
EOL
RETURN
ExitMove2:
IF FIFO?
FeedC ZCP3C FeedEntC
ELSE
RapidC ZCP3C
END
RETURN
CycleWarning:
{ NOTE: This Post Processor takes care of Z Clearance. }
RETURN
FormatArc:
IF ArcCW?
CWArc
ELSE
CCWArc
END
MoveXYZC
IF ArcIJFormat?
ArcIJ
ELSE
ArcRC
END
RETURN
StdLine: {enables CRC on first call, .70}
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC FeedC MoveXYZC FeedRateC EOL
DecelMove2
END
SeqLabC FeedC MoveXYZC DecelFeed EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqLabC FeedC MoveXYZC FeedRateC EOL
END
END
RETURN
ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
IF Peck?
SeqLabC MoveSXYC EOL
PeckManual
ELSE
SeqLabC MoveSXYZC EOL {.80.01}
END
ELSE
IF RapidFeat?
IF AutoCycle?
SeqLabC RapidC MoveXYZC EOL
ELSE
IF XMove? OR YMove? OR ZMove?
SeqLabC RapidC MoveXYZC EOL {.82}
END
END
ELSE
IF LineFeat?
IF AutoCycle? {.70}
IF LastFeat?
SeqLabC FeedC MoveXYZC FeedRateC EOL
ELSE
IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps}
SeqLabC FeedC MoveXYZC FeedRateC EOL
ELSE
StdLine {enables CRC on first call}
END
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:
CycleWarning
FindAnyZMoves
EachRep
DoCycleComment
IF FirstCycle?
EntryMove
ELSE
SeqLabC StrtPosC EOL
IF FeedConnect?
IF ZshiftOnly?
EntryMove
END
ELSE
EntryMove
END
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 'X0Y0B0' ToolChng EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
Plane { No Output }
'H?'
IF Milling?
Rapid StrtPos 'B0' ZCP1
ELSE
GetCycle
IF Peck?
Rapid StrtPos 'B0' ZCP1
ELSE
Cycle StrtPos ZDepth ZCP1 'B0' FeedEnt
END
END
OpToolID SpinOn TABLE(1,SPEED,1) EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE
{Finish off last Operation}
DoEndOpPS
IF ToolChangeAtHome?
'H?' Rapid 'M26' EOL
'H?' 'W0' ToolChng EOL
END
IF LAST ProgStop?
SeqLabC 'M00' EOL
END
{Start new Operation}
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
Plane { No Output }
'H?'
IF Milling?
Rapid StrtPos 'B0' ZCP1
ELSE
GetCycle
IF Peck?
Rapid StrtPos 'B0' ZCP1
ELSE
Cycle StrtPos ZDepth ZCP1 'B0' FeedEnt
END
END
OpToolID SpinOn TABLE(1,SPEED,1) EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqLabC 'M00' EOL
{Start new Operation}
GetStartOfSameTool
SeqLabC Rapid LAST ZCP3 EOL
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos ZDepth ZCP1 FeedEnt EOL
END
END
ELSE
IF NewToolOffset?
{Start new Operation}
GetStartOfSameTool
SeqLabC Rapid LAST ZCP3 EOL
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos ZDepth ZCP1 FeedEnt EOL
END
END
ELSE
{Start new Operation}
GetStartOfSameTool
SeqLabC Rapid LAST ZCP3 EOL
IF Milling?
SeqLabC Rapid StrtPos EOL
ELSE
GetCycle
IF Peck?
SeqLabC Rapid StrtPos EOL
ELSE
SeqLabC Cycle StrtPos ZDepth ZCP1 FeedEnt 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 ZDepth ZCP1 FeedEnt 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 initializations}
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 'X0Y0B180000W0' 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 T10 Acr 950MC[JD] M535 87Cin Acr 338 D M160 87Cin Acr 225WA M911 87 2Cin Acr A2100 M703 87 1Cin 10VC Acr 900MC M245 80 2mFanuc 11M Acr 3000V M382 87Cin MA Acr 900TC [WSR] L812 85Cin MA Acr 900TC L211 85Cin 10HC Acr 900 PMW DV69 15 1Cin 10VC Big Blue O&F M641 87Cin 18C Acr 900TC L130 85Cin T10 900MC [RR] M656 87Cin 10VC Acr 900MC AM M840 80 6Cin 5VC Acr 900V2 M238 80 2Cin T30 950MC [RR] M526 87Cincinnati 720 Acr 5 M144 81Cin AT Acr 900TC L202 85Cin T10 Acr 950MC M324 87mwięcej podobnych podstron