{Change Comments ***********************************************************}
{Cincinnati-225W M027.53}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{5/19/92
Modified: Cin 5V 1250 Acr 8-D M154.57
For: Gibbs & Associates
Updated to Version 4.0 per Fanuc 5M M015.79 Format.
Kim Michelman}
{11/17/94
Updated: Cin 5V 1250 Acr 8-D M154.81
For: Gibbs & Associates/McIver
Versions: ncCad 4.33/ncCAM 4.33/ncPost 4.33.04/Compost 4.21.23
Changes made per Pete Jackson
This Processor does not support the following:
WorkFixtureOffsets
ZMoves
Planes
Spindle
Coolant
CutterRadiusCompensation
CRCOfst is output on StrtPos block at FirstOperation, NewTool and SameTool.
Updated to Version 4.2 per LongHand M001.81.3e Format.
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'.
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.
Added BadMPWFOReport sub.
Reports when MultipleParts AND WorkFixtureOffsets = TRUE AND EquallySpacedOffset values exist.
Added FORMAT8, 'Ä…#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.
Changed First occurance of GetConnect to ' G78' at ZonlyRepAutoCycle sub.
FeedConnect only applies to Each Repeat, not Each Feature.
DWB}
{2/9/96, Updated .81 number to .84, no changes necessary, MPK}
{3/22/96, Tested ZOnlyRepAutCycle, Incremented number to .87, MPK}
{4/15/98
Initial: Cin 5V 1250 Acr 8-D M154.87
Created: Cin 5H-2500 Acr 8-D Mxxx.89
ForUser: Plainville Machine Works
Control: Acramatic 8-D
Machine: Cincinnati 5H-2500
Develop: ComPost2 1.1b3, Virtual Gibbs 4.24
Comment: New processor per before and after edits outputs from Cory Stevens.
Updated to .89 format per Fanuc 6M NoSubs M877.89.4
Output error message instead of program code when attempting to Process:
MultipleParts and WorkFixtureOffsets
MultipleParts AND OneToolAllParts and more than 50 tool changes.
Block Delete comment lines.
Formatted per sample program.
Jim Radcliffe}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '###.###;0.'
#3 = '*###.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '####^##0'
#7 = '#;'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ToolDiameter#,4)
FORMAT(TrackZNo#,4)
FORMAT(Program#,5)
FORMAT(Operation#,5)
FORMAT(Tag#,5)
FORMAT(Tool#,5)
FORMAT(NewWFO#,5)
FORMAT(Parts#,5)
FORMAT(Dwell#,6)
FORMAT(RapidF#,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
DoSubComment:
IF UseComments? AND SubComment?
SetLineStrtChr('/')
'( CYCLE START )' EOL
SetLineStrtChr('')
END
RETURN
DoOpComments:
IF UseComments?
SetScale('1')
SetLineStrtChr('/')
IF MultipleParts? AND SubComment?
'( PART ' Tag# ' )' EOL
END
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
SetLineStrtChr('')
RestoreScale
END
RETURN
AbsValueC:
IF NOT AbsValue?
AbsValue
END
RETURN
IncValueC:
IF AbsValue?
IncValue
END
RETURN
AbsOrIncC:
IF AbsoluteMoves?
AbsValueC
ELSE
IncValueC
END
RETURN
PSInit: {reset flags}
NewWFOF
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
PSStuff
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL
PSStuff
NextPS
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXYZC
IF ArcIJFormat?
ArcIJ
ELSE
ArcRC
END
RETURN
StdRapid:
IF XMove? OR YMove? OR ZMove?
SeqLabC RapidC MoveXYZC EOL
END
RETURN
StdLine: {NOTE: This Processor does not support CutterRadiusCompensation}
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
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:
SeqLabC Feed EOL { outputs G79 to excecute rapid & feed cam }
RETURN
ExitMove:
SeqLabC ' G81' EOL { outputs G81 to retract to rapid cam }
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?
ExitMove
END
NextRep
IF FeedConnect?
ExitMove
END
ELSE
EntryMove
ToolPath2
ExitMove
END
SeqLabC AbsOrInc EOL
SetSRSubXY {restore tool position}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN
ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
SeqLabC
IF FIFO? AND NOT FirstFeat?
Rapid
END
MoveSXYC EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
CutAutoCycle
ELSE
SeqLabC MoveSXYZC EOL {.80.01}
END
ELSE
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
END
NEXTFeat
RETURN
WFOStuff:
{ NOTE: This Processor does not support WorkFixtureOffsets. }
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
StartOp:
WFOStuff
Plane { No Output }
CheckPass
'O?' Rapid
IF Milling? AND CutterRadiusCompensation?
CRCOfst
ELSE
' V00'
END
StrtPos ToolOfst
IF Milling?
FeedRate
END
EOL
RETURN
DoOp:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
SeqLabC Rapid ' M26' EOL
DoOpComments
ELSE
DoOpComments
DoPostScript
END
StartOp
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
{only need to set up for tool change on 1st part}
ELSE
SeqLabC Rapid ' M26' EOL
DoEndOpPS
SeqLabC
IF ToolChangeAtHome?
Rapid Home
END
ToolChng EOL
IF LAST ProgStop?
SeqLabC ' M00' EOL
END
END
{Start new Operation}
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
SeqLabC Rapid ' M26' EOL
DoOpComments
ELSE
DoOpComments
DoPostScript
END
StartOp
ELSE
IF SameTool?
{Finish off last Operation}
SeqLabC Rapid ' M26' EOL
DoEndOpPS
IF LAST ProgStop?
SeqLabC ' M00' EOL
END
{Start new Operation}
DoOpComments
DoPostScript
StartOp
END
END
END
{ Common Point for All Operations }
ResetCRCNum {call here to reset for each new operation only, call in tool path to reset for each repeat in an operation}
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 ExitMove EOL
END
NEXTRep
IF FeedConnect?
SeqLabC ExitMove EOL
END
END
ELSE
SeqLabC ExitMove EOL
END
ELSE
IF Drilling?
SeqLabC GetCycle Cycle EOL
IF Repeats?
EachRep
DoSubComment
ToolPath
NextRep
ELSE
ToolPath
END
END
END
RETURN
FinishLastOp:
SeqLabC Rapid ' M26' EOL
DoEndOpPS
SeqLabC
IF FIRST ToolChangeAtHome?
SeqLabC Rapid FirstHome
END
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? {no tool change after doing last part}
ToolChng EOL
IF ProgStop?
SeqLabC 'M0' EOL
END
ELSE
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
Process:
{setup and initializations}
InitProg
SkipZ
TagInit
SetFlagF('1') {done flag}
Save# Num#('1') Num#('0') {tools 1st op}
Save# Num#('2') Num#('0') {tools last op}
Save# Num#('3') Num#('0') {ncCAMs last op}
ReverseXZArcs
InitWFONum
SetFlood
SetMaxRPM('10000') {?}
SetMaxFeed('500') {?}
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
' 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
' 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?
EOR EOL
IF ToolChangeAtHome?
SetHome
END
IF UseComments?
SetLineStrtChr('/')
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 ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
SetLineStrtChr('')
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
CloseSub
Post2
EOR EOL
Close
ReTag
IF UseComments?
ReOpen
SetScale('1')
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
RETURN
{Start of executable Prog **************************************************}
SetFlagF('1')
Save# Num#('1') Num#('0') { number of tool changes }
IF MultipleParts? AND WorkFixtureOffsets?
SetFlag('1')
ASCII('13') EOL
ASCII('13') EOL
'This processor does not support' EOL
'work fixture offsets!' EOL
ASCII('13') EOL
ASCII('13') EOL
END
EachOp
IF FirstOperation?
Save# Num#('1') Num#('1')
ELSE
IF NewTool?
Save# Num#('1') ADD# Recall# Num#('1') Num#('1')
END
END
NextOp
IF MultipleParts? AND OneToolAllParts?
IF GreaterThan? Recall# Num#('1') Num#('50')
SetFlag('1')
ASCII('13') EOL
ASCII('13') EOL
'This processor does not support' EOL
'more than 50 tool changes when' EOL
'Posting with Number of Parts' EOL
'greater than 1 and using the' EOL
'One Tool All Parts setting!' EOL
ASCII('13') EOL
ASCII('13') EOL
END
END
IF Flag?('1')
ASCII('13') EOL
ASCII('13') EOL
'Correct the above items' EOL
'and re-process.' EOL
ASCII('13') EOL
ASCII('13') EOL
ELSE
Process
END
Wyszukiwarka
Podobne podstrony:
Cin Acr 900V2 [KM] MT25 89Cin Acr A8D 7VT1000 MY96 89Cin 10HC Acr 900 PMW DV69 15 1Cin Acr 850SX [WI] M598 89Cin Acr 900 [CKC] M818 89Cin Acr 850MC (AMP) M692 89Cin Acr 900 [MS] MZ14 89Cin Acr 850MC MC M311 89Acr A2100 [VCA] MX31 89Fanuc 11M Acr 3000V RI M547 89Cin 5V 1250 Acr 8 D M154 87Cin Acr 850MC M196 89Cin Acr [GH] MW97 89 2Cin Acr [GH] MW97 89 2Cin Acr 900 HMC [TC] MU35 89Cin Acr 850SX Sabre PM689 17 3Cin Acr CNC TC [12] L273 85 1Cin Acr 850 SX [WF] L592 85więcej podobnych podstron