{added separate sub call code and warning for not separate, 7/5/88 WFG}
{separate sub calls turned off in this post- 'UseSeparateSubCalls' commented out}
{ncPost3ż24 or better}
{added IF ToolChangeAtHome?, & SetHome 9/26/88 WFG}
{2/2/89
Copied Fanuc 6M M001.56 to make new processor for Angelus Can.
Gidding & Lewis 15 VF Numericenter Series 800
Jim Radcliffe}
{3/16/89
Modified; G & L 15VF 800 M178.55, for Angelus Can.
Delete CoolOff. Use decimal points. Add PostScript codes.
Jim Radcliffe}
{ NOTE: Needs command to output tapping feedrate.
Calc; Current ncPost RPM x ncCam threads per inch x .9
Currently using 'DirectTapFeed#' which does not work.
Suggest adding new command 'CalcTapFeed#' JR }
{***Reply: DirectTapFeed# works with TABLE in ncPost 3.10Åš10. It forces 100% feed in IPM.
This machine requires tapping in IPR. IPR for tapping is 1/ # threads. No RPM involved.
New command FeedTapIPR#('.9') where .9 is 90% of full feed. Should use the new TAP% in ncCAM
but this value is not in data structure. WFG 5/13/89}
{added PostScript command comments 5/9/89, WFG, use ncPost 3.10Åš9 or better}
{removed run time comments, 5/9/89, WFG}
{5/11/89
Modified; G & L 15VF 800 M178.57, for Angelus Can.
Delete Tool Length Offset Cancel code from format.
Add Rapid to OfstOff line.
Change Home at end of prog to FirstHome and delete boolean. Jim Radcliffe}
{Changed DirectTapFeed# to FeedTapIPR#('.9') WFG 5/13/89}
{Modified; G & L 15VF 800 M178.59; for Angelus Can.
Changed FeedTapIPR#('.9') to FeedTapIPR#('1') per customer request.
Added missing SeqC 2 places. JR 5/17/89}
{6/9/89
Copied & modified; G & L 15VF 800 M178.60, for Angelus Can.
Gidding & Lewis 15 VFC Numericenter Series 80.
Change number format to trailing zero's.
Change 'E' To 'F' for Tapping & Change to IPM insted of IPR.
Use G85 cycle to move on Z. Will not move with G01.
Jim Radcliffe}
{7/7/89
Copied & modified; G & L 15VFC 80 M209.55, for Armco.
Machine is a "Giddings & Lewis Model 420 DiMiL"
with "Giddings & Lewis NumeriPath PCC80" control.
Added a fromat call for ZDepth# used in drilling.
PostScript commented out.
Changed TABLE command for speeds to typical speed command.
Various other format changes to reflect the needed output.
Jim Radcliffe}
{12/13/89
Modified: G & L Numeripath 80 M217.55
For: Armco
Change to IJ arcs and unconditional X,Y,I & J.
Changed FormatArc prog subroutine for unconditional ouput for arcs.
Updated, uncommented out PostScript, no SepSubs as no subroutines.
Changed format from forcing all decimal places to forcing trailing places only.
**NOTE: the above format is not working, ncPOST 3.19Åš14**
Jim Radcliffe}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{3/16/94
Copied & modified: G & L Numeripath 80 M217.79
For: BGA
Updated to NoSubs format per Fanuc 6M NoSubs M001.81.2
uses variables Num#('1') thru Num#('3') and Flag('1').
Added missing Z Default Format in MachSpec, Z is used for Drilling.
Changed feedrate to use E and IPR,
using variable Num#('4') to store current IPM feed rate.
Removed space before drill cycle codes.
Added manual drilling routine for pecking, PeckManual is still not working!
uses variable Num#('5') to keep track of Z depth position, max num full pecks = 100
Jim Radcliffe}
{2/9/96, Updated .81 number to .84, no changes necessary, MPK}
{3/22/96, Tested ZOnlyRepAutCycle, Incremented number to .87, MPK}
{9/5/96, Updated G & L NP 80 [BGA] M643.87 to .89 format per Fanuc 6M NoSubs NoDr M001.89.1, JR}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '###.0000'
#3 = '####.####;0.'
#4 = '#######0'
#5 = '#;'
#6 = '##.######;0'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ClearancePlane1#,2)
FORMAT(ClearancePlane2#,2)
FORMAT(CRCNormalVectorX#,2)
FORMAT(CRCNormalVectorY#,2)
FORMAT(TrackZ#,2)
FORMAT(ToolDiameter#,3)
FORMAT(Program#,4)
FORMAT(Operation#,4)
FORMAT(Tool#,4)
FORMAT(Parts#,4)
FORMAT(Tag#,4)
FORMAT(RapidF#,5)
FORMAT(DIV#,6)
{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?
'( CYCLE START )' EOL
END
RETURN
DoOpComments:
IF UseComments?
SetScale('1')
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
RestoreScale
END
RETURN
PSInit: {reset flags}
RETURN
PSStuff: {revised.72}
RETURN
DoPostScript:
PSInit
EachPS
SeqC PostScript EOL
PSStuff
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL
PSStuff
NextPS
RETURN
GetDecelFeedC:
IF NotEqual? Recall# Num#('4') DecelFeed#
IF NOT EmptyLine?
Save# Num#('4') DecelFeed#
'E' DIV# DecelFeed# SpeedRPM#
END
END
RETURN
GetArcFeedC:
IF NotEqual? Recall# Num#('4') ArcFeed#
IF NOT EmptyLine?
Save# Num#('4') ArcFeed#
'E' DIV# ArcFeed# SpeedRPM#
END
END
RETURN
GetFeedRateC:
IF NotEqual? Recall# Num#('4') FeedContour#
IF NOT EmptyLine?
Save# Num#('4') FeedContour#
'E' DIV# FeedContour# SpeedRPM#
END
END
RETURN
GetFeedEntC:
IF NotEqual? Recall# Num#('4') FeedEntry#
IF NOT EmptyLine?
Save# Num#('4') FeedEntry#
'E' DIV# FeedEntry# SpeedRPM#
END
END
RETURN
ExitType:
IF FIFO?
FeedC
ELSE
RapidC
END
RETURN
ExitFeed:
IF FIFO?
GetFeedEntC
END
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
IF XYPlane?
MoveX MoveY MoveZC { force endpoints in proper plane }
ELSE
IF XZPlane?
MoveX MoveYC MoveZ
ELSE
MoveXC MoveY MoveZ { YZ plane }
END
END
IF ArcIJFormat?
ArcIJ
ELSE
ArcR
END
RETURN
StdRapid:
IF XMove? OR YMove? OR ZMove?
SeqC RapidC MoveXYZC EOL
END
RETURN
StdLine: {enables CRC on first call, .70}
IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps}
SeqC FeedC MoveXYZC GetFeedRateC EOL
ELSE
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC CRCOnC
IF EmptyLine?
FeedC MoveXYZC GetFeedRateC EOL
ELSE
FeedC MoveXYZC GetFeedRateC 'I' CRCNormalVectorX# 'J' CRCNormalVectorY# CRCOfst EOL
END
DecelMove2
END
SeqC CRCOnC
IF EmptyLine?
FeedC MoveXYZC GetDecelFeedC EOL
ELSE
FeedC MoveXYZC GetDecelFeedC 'I' CRCNormalVectorX# 'J' CRCNormalVectorY# CRCOfst EOL
END
ELSE
IF XMove? OR YMove? OR ZMove?
SeqC CRCOnC
IF EmptyLine?
FeedC MoveXYZC GetFeedRateC EOL
ELSE
FeedC MoveXYZC GetFeedRateC 'I' CRCNormalVectorX# 'J' CRCNormalVectorY# CRCOfst EOL
END
END
END
END
RETURN
StdArc:
EACHQuadrant
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc GetArcFeedC EOL
DecelMove2
END
SeqC FormatArc GetDecelFeedC EOL
ELSE
SeqC FormatArc GetArcFeedC 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:
IF FeedEntry?
SeqC FeedC ZInC GetFeedEntC EOL
ELSE
SeqC RapidC ZInC EOL
END
RETURN
CutAutoCycle:
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
SeqC IncValue EOL
IF Repeats? AND ZshiftOnly?
EachRep
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
IF FeedConnect?
SeqC CRCOffC FeedC StrtPosC EOL
ELSE
SeqC CRCOffC RapidC StrtPosC EOL
END
END
END
EntryMove
ToolPath2
IF NOT FeedConnect?
SeqC CRCOffC ExitType PRIME ZCP2 ExitFeed EOL
END
NextRep
ELSE
EntryMove
ToolPath2
END
SeqC AbsOrInc CRCOffC ExitType ZCP2 ExitFeed EOL
SetSRSubXY {restore tool position}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN
DoPeck:
IF NOT Flag?('2')
SetScale('1')
IF GreaterThan? SUB# Recall# Num#('5') Peck# SPZ#
Save# Num#('5') SUB# Recall# Num#('5') Peck#
RestoreScale
SeqC Feed 'Z' TrackZ# MUL# Recall# Num#('5') NumSc#('1') GetFeedEntC EOL
IF PeckFullRetract?
SeqC Rapid 'Z' TrackZ# ClearancePlane2# EOL
END
SeqC RapidC 'Z' TrackZ# ADD# Recall# Num#('5') Retract# EOL
ELSE
RestoreScale
SeqC Feed 'Z' TrackZ# SPZ# GetFeedEntC EOL
IF RetractToCP1?
SeqC Rapid 'Z' TrackZ# ClearancePlane1# EOL
ELSE
SeqC Rapid 'Z' TrackZ# ClearancePlane2# EOL
END
SetFlag('2')
END
END
RETURN
ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
IF NOT FirstFeat?
SeqC
IF FIFO?
Rapid
END
MoveSXYC EOL
END
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
CutAutoCycle
ELSE
IF Peck?
SeqC RapidC MoveSXYC EOL
SeqC 'Z' TrackZ# ClearancePlane2# EOL {**need to make this conditional**}
SetFlagF('2') { done flag }
SetScale('1')
Save# Num#('5') ClearancePlane2#
RestoreScale
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
ELSE
SeqC MoveSXYZC EOL {.80.01}
END
END
ELSE
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
END
NEXTFeat
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
DoOp:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
IF FullUp?
SeqC Rapid OfstOff EOL
END
DoOpComments
ELSE
DoOpComments
DoPostScript
Seq Rapid OpToolID ToolChng EOL
END
CheckPass
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? AND NOT FirstPart?
SeqC Rapid StrtPos EOL
ELSE
SeqC Rapid AbsOrInc StrtPos Speed SpinOn EOL
SeqC OfstOn CoolOn EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
{only need to set up for tool change on 1st part}
ELSE
DoEndOpPS
IF LAST ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END
END
{Start new Operation}
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
IF FullUp?
SeqC Rapid OfstOff EOL
END
DoOpComments
ELSE
Seq Rapid
IF ToolChangeAtHome?
Home
END
OpToolID ToolChng EOL
DoOpComments
DoPostScript
END
CheckPass
IF MultipleParts? AND OneToolAllParts? AND ExitClearancePlane? AND NOT FirstPart?
SeqC Rapid StrtPos EOL
ELSE
SeqC Rapid AbsOrInc StrtPos Speed SpinOn EOL
SeqC OfstOn CoolOn EOL
END
ELSE
IF SameTool?
{Finish off last Operation}
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
IF LAST ProgStop? OR NewToolOffset?
SeqC Rapid OfstOff EOL
END
DoEndOpPS
IF LAST ProgStop?
SeqC 'M00' EOL
END
{Start new Operation}
DoOpComments
DoPostScript
CheckPass
SeqC RapidC PlaneC StrtPos
IF LAST ProgStop?
Speed SpinOn
ELSE
SpeedC
END
EOL
SeqC
IF LAST ProgStop? OR NewToolOffset?
OfstOn
END
IF LAST ProgStop?
CoolOn
ELSE
IF NOT CoolOff? AND LAST CoolOff?
CoolOn
END
END
EOL
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}
Save# Num#('4') RapidF# {forces the output of a conditional feedrate for each operation}
IF Milling?
SeqC ZCP2C EOL
IF Repeats?
IF ZshiftOnly? AND AutoCycle?
{done in CutAutoCycle called from ToolPath}
ELSE
EACHRep
DoSubComment
IF NOT FirstCycle?
SeqC Connect StrtPos EOL
IF NOT FeedConnect?
SeqC 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
SeqC CRCOffC
IF NOT FeedConnect?
ExitType PRIME ZCP3C
END
ExitFeed EOL
NEXTRep
END
END
IF AutoCycle?
SeqC ZCP3C EOL
ELSE
SeqC ExitType CRCOffC ZCP3C ExitFeed EOL
END
ELSE
IF Drilling?
IF Repeats?
EACHRep
DoSubComment
END
SeqC DrillCP EOL
GetCycle
IF Peck?
ToolPath
ELSE
SeqC Cycle StrtPos
ZDepth RLevel
IF RetractToCP1?
'K' ClearancePlane1#
ELSE
'K' ClearancePlane2#
END
GetFeedEntC EOL
TrackZNO# ZDepth# {.81}
ToolPath
END
IF RetractToCP1? {.81}
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
SeqC Rapid ZCP3 EOL
IF Repeats?
NEXTRep
END
SeqC RapidC ZCP3C EOL
END
END
RETURN
FinishLastOp:
DoEndOpPS
IF FIRST ToolChangeAtHome?
SeqC RapidC FirstHome EOL
END
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? {no tool change after doing last part}
IF ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END
ELSE
SeqC 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
EachPart
TagInc
DoToolsOps
NextPart
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
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
TagInit
SetFlagF('1') {done flag}
SetFlagF('1') {Multiple Parts done flag}
SetFlagF('2') {Peck Drilling 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}
Save# Num#('4') Num#('0') {Feed Rate Value}
Save# Num#('5') Num#('0') {peck drill Z position}
ReverseXZArcs
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
END
EachOp {Start of post processing *********************}
IF FirstOperation?
EOR EOL
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$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( FIRST TOOL IN SPINDLE )' EOL
END
END
IF ToolChangeAtHome?
SetHome
END
OpenSub
RestoreScale
SeqC Plane CRCOff EOL
END
NextOp
IF MultipleParts?
IF AllToolsOnePart?
EachPart
TagInc
EachOp
DoOp
NextOp
FinishLastOp
NextPart
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
EOR EOL
CloseSub
Post2
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
Close
Wyszukiwarka
Podobne podstrony:
G & L NP 800MB [RE] MZ30 89 3żuraw 80Bandit IV AB [DM] MV32 89 1Fadal Format 2 [MM] MW60 89Fadal Format 2 [PEP] M116 89 1Fanuc MF M4 MS NS SSI M421 89 2Dynapath 20M M074 80 1Fanuc 10M MVJR [DM] M740 89Yasnac MX1 MS [BI] M076 89 2Cin Acr 900V2 [KM] MT25 89więcej podobnych podstron