{09/29/89 Modified from Dynapath System 20M M074.40 for Pacific Packaging - DWB
Created 3 new subroutines to handle special Cutter Radius Compensation
formatting. They are called StartCCR1, StartCCR2 and EndCCR. The control
requires a 'G45' if the first or last move is linear and an 'A' address to
specify the distance from start point to next point. If the first or last move
is an arc, then the control requires a 'G47' and an 'A' address to specify the
radius of the arc.
Added 'G04 F#.#0;0' format for all dwell occurances.
The customer requested an output for handling tool changes. The output calls up
their own subprogram which is stored as program#4. So to handle the case where
they select multiple parts, or repeats, I called 'NewProg' 4 times, (to
increment the program#), during the first operation to ensure that the next
program# will be higher than their tool change subroutine.
Since the control doesn't use work fixture offsets, I removed the boolean for
such.
This prog has all the added routines that were found in Fanuc 6M M001.60}
{1/11/90
Updated: Deckel FP2NC Dialog 4 M248.61 to .69 format.
Jim Radcliffe}
{1/11/90
Copied & modified: Deckel FP2NC Dialog 4 M248.69
For: Specialty Silicone
Changed CRC ofset label to a D.
Add space between codes.
Changed sub format to Local Subs instead of Macro Sub.
Enabled SepSubs.
Modified Start Up & End blocks per I/O manual 4.86-/511/874 E, page 39.
NOTE: the $ sign in the start block indicates inch input.
Deleted the line 'N0L0N2' from beginning of prog.
Deleted the calls to macro sub number 4.
Jim Radcliffe}
{2/28/90
Copied & modified: Deckel Dialog 4 (SS) M276.69
For: Specialty Silicone
1 trailing decimal place for feeds.
Clear Plane values in MachSpec.
Different Home & ZCP1 stuff, no 'G52'
Rapids are not modal.
Added MoveCCR & FeedCCR subs
4 decimal places for axis moves
Modifications to drilling.
Jim Radcliffe}
{4/9/90
Copied & modified: Deckel Dialog 4 (SS) M276.69.6
Changed to CP1LessCP2# command in drilling
Jim Radcliffe}
{4/25/90, Updated: Deckel Dialog 4 (SS) M276.69.7 to .71.2 foramt, JR}
{NOTE: the A for CRC AutoCycles still needs to addressed correctly to be fully .70}
{4/26/90
Copied & modified: Deckel Dialog 4 (SS) M276.71.2
For: Pacific Packaginq
Machine: Deckel Dialog 3
Arcs need all axis & G codes, all G0 must also be defined otherwise G1 is implied.
Deleted G17's
Modified subs for drilling, 1 line subs only.
All Z moves nust have a ToolOffset
Trailing Zeros with + or - sign
Two digit G M T & D codes.
Change Subroutines to Program Loops.
NOTE: this should be a good example for machines that do looping only and not subs.
Reformated between tool stuff.
Jim Radcliffe}
{7/24/90, Replaced all occurances of SetSRXYZero with SetSRXYtoSP, DWB}
{4/03/91
Modified: Deckel Dialog 3 M247.72
For: Gibbs & Associates
Updated to Version 4.0 per Fanuc 6M M001.80 Format.
DWB}
{
Format: Deckel Dialog 3 Mxxx.79.1
12/6/95
Cleaned about header to output two places for program number
Changed G45 to G46
Changed G64 to G60
Changed M61 to M62
Added M66 to first tool change
Added to end of output:
SeqLabC RapidC ZCP1 CoolOff EOL
SeqLabC PreTool ' M67' EOL
Added M06 for tool change
TH}
{
Format: Deckel Dialog 3 NERA M902.79.2m
4/1/96
Changed formats to output 3 decimal places
Changed $'s at start of program to &'s
Changed PreTool at end of program to OpToolID
TH}
{
Format: Deckel Dialog 3 NERA M902.79.3m
5/23/96
Removed one decimal place from feed rate format. Now has no decimals
Changed thread cycle to G85 from G84
Removed G90 from start of program
Changed Preset to G55
Added G53 call before all Preset calls
Changed sub calls for drill cycles to use a register instead of Tag#
TH}
#1 = '0.00'
#2 = '###0'
#3 = 'Ä…#^##0'
#4 = '#0^'
#5 = '###^##0'
#6 = '*###^##0'
#7 = 'Ä…###^##0'
#8 = '0000'
#9 = '00'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(SpeedRPM#,2)
FORMAT(ArcR#,3)
FORMAT(Dwell#,4)
FORMAT(ToolDiameter#,5)
FORMAT(CP1LessCP2#,7)
FORMAT(Tag#,8)
FORMAT(Recall#,8)
FORMAT(Program#,9)
RestoreScale:
IF NOT Metric? {CAM file is in English, tools and tool path}
SetScale('25.4') { change to Metric, this is a Metric post}
END
RETURN
DoSubComment:
IF UseComments? AND SubComment?
'( SUB NUMBER: ' Tag# ' )' 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
PSInit:
NewWFOF
RotateF
MasterOpF
CallMasterOpF
RETURN
PSStuff:
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqLabC 'A' FourthDegree# EOL
FourthCWF
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqLabC 'A' FourthDegree# EOL
FourthCCWF
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqLabC 'B' FifthDegree# EOL
FifthCWF
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqLabC 'B' FifthDegree# EOL
FifthCCWF
END
RETURN
DoPostScript:
PSInit
EachPS
SeqLabC PostScript EOL
PSStuff
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL
PSStuff
NextPS
RETURN
EntryMove:
SeqLabC
IF FeedEntry?
Feed ZIn ToolOfst FeedEnt
ELSE
Rapid ZIn ToolOfst
END
IF CutterRadiusCompensation?
' M70' EOL
SeqLabC FeedRate ' M70'
END
EOL
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:
SubWarning
'>' Tag# EOL
SeqLab Connect StrtPos EOL
RETURN
FinishSub1: {part 1}
SeqLabC
IF NOT FeedConnect?
IF AutoCycle?
ZCP3C
ELSE
IF FIFO?
FeedC ZCP3C FeedEntC
ELSE
RapidC ZCP3C
END
END
END
ToolOfst EOL
RETURN
FinishSubG92: {part 2}
SeqLabC ' G53' EOL
SeqLab Preset ShiftRC EOL
'<' Tag# EOL
SeqLabC RepLab RepsLess1 ' NÅ‚' Tag# ' N²' Tag# EOL
SeqLabC ' G53' EOL
SeqLabC Preset UnshftRC EOL
RETURN
OpenMP: {using a loop function}
TagUp TagInc
'>' Tag# EOL
SeqLab {drop an unconditional to ensure proper tagging}
RETURN
CloseMP:
SeqLabC ' G53' EOL
SeqLab Preset ShiftPC EOL
'<' Tag# EOL
SeqLabC RepLab PartsLess1 ' NÅ‚' Tag# ' N²' Tag# EOL
SeqLabC ' G53' EOL
SeqLabC Preset UnshftPC EOL
TagDown
RETURN
FormatArc:
IF ArcCW?
CWArc
ELSE
CCWArc
END
IF XYPlane?
MoveX MoveY MoveZC
ELSE
IF XZPlane?
MoveX MoveYC MoveZ
ELSE
MoveXC MoveY MoveZ
END
END
ArcIJ
IF ZMove?
ToolOfst
END
RETURN
StartCCR1:
IF CutterRadiusCompensation?
IF FirstFeat?
IF LineFeat?
' G46 A+500'
ELSE
IF ArcFeat?
' G47 A' ArcR#
END
END
END
END
RETURN
StartCCR2:
IF CutterRadiusCompensation?
IF FirstFeat?
' G60 M62'
END
END
RETURN
EndCCR:
IF CutterRadiusCompensation?
EACHFeat
IF LastFeat?
IF LineFeat?
' G46 A+500'
ELSE
IF ArcFeat?
' G47 A' ArcR#
END
END
END
NEXTFeat
END
RETURN
MoveCCR:
IF FirstFeat? AND CutterRadiusCompensation?
IF XYPlane?
MoveX MoveY MoveZC
ELSE
IF XZPlane?
MoveX MoveYC MoveZ
ELSE
MoveXC MoveY MoveZ
END
END
ELSE
MoveXYZC
END
IF ZMove?
ToolOfst
END
RETURN
FeedCCR:
IF FirstFeat? AND CutterRadiusCompensation?
Rapid
ELSE
FeedC
END
RETURN
DrillSubID:
Recall# NUM#('1')
RETURN
DrillSubInc:
Save# NUM#('1') ADD# Recall# NUM#('1') NUM#('1')
RETURN
ToolPath:
EACHFeat
IF PointFeat?
IF NOT FirstFeat?
IF Drilling?
SeqLabC ' U' DrillSubID Rapid MoveSXYC EOL
ELSE
IF AutoCycle?
SeqLabC Rapid MoveSXYC EOL
SeqLabC ' L1' ' NÅ‚' Tag# ' N²' Tag# EOL
END
END
END
ELSE
IF RapidFeat?
SeqLabC Rapid MoveXYZC
IF ZMove?
ToolOfst
END
EOL
ELSE
IF LineFeat?
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC CRCOnC CRCOffsetC StartCCR1 FeedCCR FeedRateC MoveCCR StartCCR2 EOL
DecelMove2
END
SeqLabC CRCOnC CRCOffsetC StartCCR1 FeedCCR DecelFeed MoveCCR StartCCR2 EOL
ELSE
SeqLabC CRCOnC CRCOffsetC StartCCR1 FeedCCR FeedRateC MoveCCR StartCCR2 EOL
END
ELSE
IF ArcFeat?
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
END
END
END
END
NEXTFeat
RETURN
AutoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
'>' Tag# EOL
SetSRXYtoSP
SeqLab IncValue EOL
SeqLabC StrtPosC EOL
RETURN
AutoCycCutSub2: {part 2}
ToolPath
IF Repeats?
IF FeedConnect? AND ZshiftOnly?
SeqLabC CRCOffC EndCCR EOL {.69 removed RapidC}
SeqLab AbsOrInc EOL
ELSE
SeqLabC CRCOffC EndCCR EOL
SeqLabC AbsOrInc EOL
SeqLab Rapid ZCP2 ToolOfst EOL
END
ELSE
SeqLabC CRCOffC EndCCR EOL
SeqLabC AbsOrInc EOL
SeqLab Rapid ZCP2 ToolOfst EOL
END
'<' Tag# EOL
SetSRSubXY {restore tool position}
SetSRSubMove
RETURN
AutoCycPat:
SetPass2 {position pattern}
ToolPath {call after TagInc}
RETURN
Milling:
IF AutoCycle?
TagUp TagInc
AutoCycCutSub1
EntryMove
AutoCycCutSub2
AutoCycPat
TagDown
ELSE
EntryMove
ToolPath
SeqLabC CRCOffC EndCCR EOL
END
RETURN
G92Sub:
TagUp TagInc
StdSub
Milling
FinishSub1
FinishSubG92
TagDown
RETURN
ZonlyRepAutoCycle:
TagUp TagInc
'>' Tag# EOL
TagUp TagInc
SetPass1 {for correct Z's}
EachCycle
IF FirstCycle?
IF FeedConnect?
SeqLab Feed ZInPlusInc FeedEnt ToolOfst EOL
ELSE
IF FeedEntry?
SeqLab Feed ZInPlusInc FeedEnt ToolOfst EOL
ELSE
SeqLab Rapid ZInPlusInc ToolOfst EOL
END
END
AutoCycCutSub1 {build element sub}
AutoCycCutSub2
ELSE
IF FeedConnect?
SeqLabC Feed ZInPlusInc FeedEnt ToolOfst EOL
ELSE
IF FeedEntry?
SeqLabC Rapid ZCP2PlusInc ToolOfst EOL
SeqLabC Feed ZInPlusInc FeedEnt ToolOfst EOL
ELSE
SeqLabC Rapid ZInPlusInc ToolOfst EOL
END
END
IF NOT FeedConnect?
SeqLab {drop unconditional for proper tagging}
END
SeqLabC ' L1' ' NÅ‚' Tag# ' N²' Tag# EOL {call element sub}
END
NextCycle
TagDown
IF FeedConnect? {there is no Z up in the sub, .69}
SeqLab Rapid ZCP2 ToolOfst EOL
END
'<' Tag# EOL
AutoCycPat {write pattern moves and main calls}
TagDown
RETURN
ZonlyRep:
TagUp TagInc
EachCycle
IF FirstCycle?
IF FeedConnect?
SeqLabC FeedC ZInPlusInc FeedEnt ToolOfst EOL
ELSE
IF FeedEntry?
SeqLabC Feed ZInPlusInc FeedEnt ToolOfst EOL
ELSE
SeqLabC Rapid ZInPlusInc ToolOfst EOL
END
END
'>' Tag# EOL
SeqLab {dropped unconditional for proper tagging}
SkipZ
ToolPath
UnSkipZ
IF NOT FeedConnect?
SeqLabC CRCOffC EndCCR EOL
SeqLab Rapid ZCP3 ToolOfst EOL
ELSE
SeqLab CRCOffC EndCCR EOL
END
'<' Tag# EOL
ELSE
SeqLabC Connect StrtPos EOL
IF FeedConnect?
SeqLabC FeedC ZInPlusInc FeedEnt ToolOfst EOL
ELSE
IF FeedEntry?
SeqLabC Rapid ZCP2PlusIncC ToolOfst EOL
SeqLabC Feed ZInPlusInc FeedEnt ToolOfst EOL
ELSE
SeqLabC Rapid ZInPlusInc ToolOfst EOL
END
END
SeqLabC ' L1' ' NÅ‚' Tag# ' N²' Tag# EOL
END
NextCycle
TagDown
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
GetSpindle:
' S'
IF CWSpindle?
'+'
ELSE
'-'
END
SpeedRPM#
RETURN
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
TagInit
ReverseXZArcs
UseSeparateSubCalls
SetMaxSeparateSubCalls ('50') {?}
SetFlood
SetMaxRPM('6300')
SetMaxFeed('500') {?}
Save# NUM#('1') NUM#('1') {Initialize DrillSubID Register}
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
EachOp
IF FirstOperation?
'&P' Program# EOL
EOR EOL
'(&P' Program# '/0000' ')' EOL
IF ToolChangeAtHome?
SetHome
END
IF UseComments?
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$ ' )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
IF MultipleParts? AND AllToolsOnePart?
OpenMP
END
DoOpComments
Plane {no output}
DoPostScript
SeqLabC OpToolID ' M66' EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
SeqLabC Rapid StrtPos GetSpindle CoolOn EOL
SeqLabC Rapid ZCP1 ToolOfst EOL
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
SeqLabC Rapid StrtPos EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
{ SeqLabC Rapid OfstOff EOL}
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
IF ToolChangeAtHome?
SeqLabC Rapid Home EOL
END
IF LAST ProgStop?
SeqLabC SpinOff ' M0' EOL
ELSE
IF OptionalStops?
SeqLabC SpinOff ProgStop EOL
END
END
DoOpComments
Plane {no output}
DoPostScript
SeqLabC Rapid ZCP1 CoolOff EOL
SeqLabC OpToolID ToolChng EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
OpenMP
END
CheckPass
SeqLabC Rapid StrtPos GetSpindle CoolOn EOL
SeqLabC Rapid ZCP1 ToolOfst EOL
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
OpenMP
SeqLabC Rapid StrtPos EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqLabC SpinOff ' M0' EOL
END
IF CoolOff? AND LAST NOT CoolOff?
SeqLabC CoolOff EOL
END
DoOpComments
DoPostScript
IF NewToolOffset?
SeqLabC Rapid OfstOff EOL
SeqLabC Rapid ZCP1 ToolOfst EOL
END
CheckPass
SeqLabC Plane Rapid StrtPos GetSpindle CoolOn EOL
IF NOT CoolOff? AND LAST CoolOff?
SeqLabC CoolOn EOL
END
END
END
END
IF Milling?
SeqLabC Rapid ZCP2 ToolOfst EOL
IF Repeats?
IF ZshiftOnly?
IF AutoCycle? {incremental Autocycle sub can have Z moves}
ZonlyRepAutoCycle
ELSE {Z shift only, NOT Auto Cycle}
IF UseSeparateSubCalls? AND CyclesLessThanMaxSubCalls?
FindAnyZMoves {for normal abs subroutine}
IF NoZMoves?
ZonlyRep
ELSE
G92Sub {pattern shift, not element}
END
ELSE {no sep subs desired}
G92Sub
END
END {end Auto Cycle IF}
ELSE {not Z only}
G92Sub
END {end Z only IF}
ELSE {no repeat OPs}
Milling
END
SeqLabC Rapid ZCP3 ToolOfst EOL
ELSE
IF Drilling?
IF Repeats?
TagUp TagInc
'>' Tag# EOL
SeqLab Rapid StrtPos EOL
END
IF RetractToCP1?
{we are already at CP1}
ELSE
SeqLabC Rapid ZCP2 ToolOfst EOL
END
GetCycle
OpenSub {put the cycle in a subroutine block}
SetInc {****ZDepth needs to be incremental from ZCP2}
'U' DrillSubID Cycle FeedEnt GetSpindle ZDepth Peck Retract
IF Dwell?
' G04 F' Dwell#
END
IF RetractToCP1?
' Z' CP1LessCP2# {inc value to CP1 from CP2}
END
EOL
SetAbsOrInc
CloseSub
SeqLabC ' U' DrillSubID Rapid StrtPos EOL
ToolPath
DrillSubInc
IF Repeats?
SeqLabC ' G53' EOL
SeqLab Preset ShiftRC EOL
'<' Tag# EOL
SeqLabC RepLab RepsLess1 ' NÅ‚' Tag# ' N²' Tag# EOL
SeqLabC ' G53' EOL
SeqLabC Preset UnshftRC EOL
TagDown
END
SeqLabC Rapid ZCP3 ToolOfst EOL
END
END
NEXTOp
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane?
CloseMP
END
SeqLabC Rapid OfstOff EOL
IF MultipleParts? AND OneToolAllParts? AND FullUp?
CloseMP
END
DoEndOpPS
IF FIRST ToolChangeAtHome?
SeqLabC Rapid FirstHome EOL
END
IF ProgStop?
SeqLabC 'M00' EOL
END
IF MultipleParts? AND AllToolsOnePart?
CloseMP
END
SeqLabC RapidC ZCP1 CoolOff EOL
SeqLabC OpToolID ' M67' EOL
SeqLabC EOP EOL
Post
Close
ReTag
ReOpen
IF UseComments?
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
END
'?' EOL
'0000' EOL
Close
Wyszukiwarka
Podobne podstrony:
Deckel Dialog 3 M247 79Deckel Dialog 4 [HM] MV58 89Deckel Dialog 4 [SS] M276 89Deckel Dialog 4 [FS] MY82 89 7mDeckel Dialog 2 Ver M778 80 6Deckel Dialog 4 M248 89Deckel Dialog 2 Hor M794 80 6Fanuc 3M Kit [PHM] MZ11 79Fanuc 3M [LTM] M521 79 2Fanuc 3M [LTM] M521 79 242 30 Marzec 2000 Dialog na warunkachp (79)Dialogi z tradycją ebook demoAcr A2100 [VG] MT97 16 3mwięcej podobnych podstron