{Change Comments ***********************************************************}
{9/10/91
Copied & modified: Fanuc 10T MS [-] L001.82
For: Superior Screw Products
Machine: Brown & Sharpe Ultramatic CNC
Control: Allen Bradley 8200
Created per conversations with Frank Miller @ Superior Screw Products, Manual and Sample Program.
Control is a 2-size machine ( 1 5/8" spindle capacity ).
Machine has an 8-station Turret ( W axis ), and 4 Cross Slides ( A, B, C & D axes ).
Tool#s 1 to 8 = W, 9 = A, 10 = B, 11 = C and 12 = D.
There are 17 different charts for GearRange control, so values in sample program were used.
M41 = 1105 RPM, M42 = 218 RPM, M43 = 415 RPM and M44 = 82 RPM.
FeedRates are output as Inches per Minute.
Added MUL# FeedIPR# SpeedRPM# Formula.
Bar Stop operation must meet the following condition:
FirstOperation, Non-CannedCycle Drilling with Tools 1-8 ( W axis ).
Last Operation will bypass ToolPath and automatically output Part Deflector In and Out
along with axis move at end of Prog.
CannedCycle Codes supported for Turret are G81 - G84, for Cross Slides are G81 - G82.
G81 will be output for Cross Slides if OptCyc1 is used, G82 if not.
G82 for Cross Slide is FIDRO with Dwell Formula = 3 * 60 / RPM
Non-CannedCycle, Single Feature Operations with OptCyc1 will suppress output of EPX#/EPZ#.
Only 'W' axis supports Multiple Feature Contouring.
Turret needs to be retracted to Home at start to assure clearance.
Variable Num#('5') stores Current Turret Tool# in use.
This allows user to insert a Cross Slide Operation during Turret Contouring.
Flag('7') = TRUE for BarFeed Program.
Flag('8') = TRUE if Variable Num#('5') equals NewTool#.
Flag('9') = TRUE for Turret Multiple Feature Contouring.
DWB}
{4/22/92
Modified: AB 8200 B&S L236.82
For: Superior Screw Products
Modifications per conversations with Geoffrey Gens @ Superior Screw Products and Sample Program.
Added support for the following condition statements when StraightConnect = TRUE:
*IT - Immediate transfer of the current block to start simultaneously with the previous block.
*S - Transfer of the current block when the previous axis, moving towards the part, reaches the
specified value.
*H - Transfer of the current block when the previous axis, moving towards home, reaches the
specified value.
*R - Transfer of the current block when the previous axis reaches the home position.
The 4 condition statements provide a means of controlling the simultaneously overlapping
movements of up to 3 slides. The overlap slide combinations are WAB, WAC or WBD Axes. The data
in the condition statement must begin with an asterisk (*) and should be the last data in the
program block.
Variable Num#('1') stores Current Tool# for Condition Statement Mode.
Flag('1') = TRUE for Current Operation in Condition Statement Mode.
Flag('4') = TRUE for Current Operation Non-Canned Cycle in Condition Statement Mode.
Variable Num#('2') stores Previous Tool# for Condition Statement Mode.
Flag('2') = TRUE for Previous Operation in Condition Statement Mode.
Flag('5') = TRUE for Previous Operation Non-Canned Cycle in Condition Statement Mode.
Variable Num#('3') stores 3rd Axis Tool# for Condition Statement Mode.
Flag('3') = TRUE for 3rd Axis Operation in Condition Statement Mode.
Flag('6') = TRUE for 3rd Axis Operation Non-Canned Cycle in Condition Statement Mode.
DWB}
{Prog Numeric Format Definitions *******************************************}
#1 = '#.00'
#2 = '###.####;.0'
#3 = '########;0'
#4 = '###.##;.0'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(SPX#,2)
FORMAT(SPZ#,2)
FORMAT(EPX#,2)
FORMAT(EPZ#,2)
FORMAT(XOpCD#,2)
FORMAT(ZOpCP#,2)
FORMAT(ZDepth#,2)
FORMAT(Program#,3) {.72}
FORMAT(Operation#,3) {.72}
FORMAT(Tool#,3) {.72}
FORMAT(MUL#,4)
FORMAT(Dwell#,4) {.72}
{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
GetAxis:
IF Equal? Recall# Num#('4') Num#('9')
'A'
ELSE
IF Equal? Recall# Num#('4') Num#('10')
'B'
ELSE
IF Equal? Recall# Num#('4') Num#('11')
'C'
ELSE
IF Equal? Recall# Num#('4') Num#('12')
'D'
ELSE
'W'
END
END
END
END
Save# Num#('4') Tool#
RETURN
DoOpComments:
Save# Num#('4') Tool#
IF UseComments?
SetScale('1')
IF OperationIDComment?
'( OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
'( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
'( ' GetAxis '-Axis '
IF LTEqual? Tool# Num#('8')
'TOOL ' Tool#
END
': ' ToolSize$ ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'( ' ToolComment$ ' )' EOL
END
RestoreScale
END
RETURN
PSInit: {reset flags from last Op, .70}
OptCyc1F
RETURN
PSStuff:
RETURN
DoPostScript:
PSInit
EachPS
SeqC PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN
GetFeedRate:
'F' MUL# FeedIPR# SpeedRPM#
RETURN
CheckIT:
IF Flag?('1')
'*IT'
END
RETURN
CheckS:
Save# Num#('4') Recall# Num#('1')
'*S' GetAxis
IF ApproachOD?
XOpCD#
ELSE
ZOpCP#
END
RETURN
CheckH:
Save# Num#('4') Recall# Num#('1')
'*H' GetAxis
IF ApproachOD?
XOpCD#
ELSE
ZOpCP#
END
RETURN
CheckR:
Save# Num#('4') Recall# Num#('1')
'*R' GetAxis
RETURN
Branch:
IF LTEqual? Tool# Num#('8') { Turret }
IF ApproachOD?
CheckS
ELSE { ApproachFace }
CheckIT
END
ELSE { Cross Slides }
IF ApproachFace?
CheckS
ELSE { ApproachOD }
CheckIT
END
END
RETURN
Check3Axes:
SetFlagF('3')
IF LTEqual? Recall# Num#('1') Num#('8') { W }
IF Equal? Recall# Num#('2') Num#('9') { A }
IF Equal? Recall# Num#('3') Num#('10') { B }
SetFlag('3')
ELSE
IF Equal? Recall# Num#('3') Num#('11') { C }
SetFlag('3')
END
END
ELSE
IF Equal? Recall# Num#('2') Num#('10') { B }
IF Equal? Recall# Num#('3') Num#('12') { D }
SetFlag('3')
END
ELSE
IF Equal? Recall# Num#('2') Num#('11') { C }
IF Equal? Recall# Num#('3') Num#('9') { A }
SetFlag('3')
END
ELSE
IF Equal? Recall# Num#('2') Num#('12') { D }
IF Equal? Recall# Num#('3') Num#('10') { B }
SetFlag('3')
END
END
END
END
END
ELSE
IF LTEqual? Recall# Num#('2') Num#('8') { W }
IF Equal? Recall# Num#('1') Num#('9') { A }
IF Equal? Recall# Num#('3') Num#('10') { B }
SetFlag('3')
ELSE
IF Equal? Recall# Num#('3') Num#('11') { C }
SetFlag('3')
END
END
ELSE
IF Equal? Recall# Num#('1') Num#('10') { B }
IF Equal? Recall# Num#('3') Num#('12') { D }
SetFlag('3')
END
ELSE
IF Equal? Recall# Num#('1') Num#('11') { C }
IF Equal? Recall# Num#('3') Num#('9') { A }
SetFlag('3')
END
ELSE
IF Equal? Recall# Num#('1') Num#('12') { D }
IF Equal? Recall# Num#('3') Num#('10') { B }
SetFlag('3')
END
END
END
END
END
ELSE
IF LTEqual? Recall# Num#('3') Num#('8') { W }
IF Equal? Recall# Num#('2') Num#('9') { A }
IF Equal? Recall# Num#('1') Num#('10') { B }
SetFlag('3')
ELSE
IF Equal? Recall# Num#('1') Num#('11') { C }
SetFlag('3')
END
END
ELSE
IF Equal? Recall# Num#('2') Num#('10') { B }
IF Equal? Recall# Num#('1') Num#('12') { D }
SetFlag('3')
END
ELSE
IF Equal? Recall# Num#('2') Num#('11') { C }
IF Equal? Recall# Num#('1') Num#('9') { A }
SetFlag('3')
END
ELSE
IF Equal? Recall# Num#('2') Num#('12') { D }
IF Equal? Recall# Num#('1') Num#('10') { B }
SetFlag('3')
END
END
END
END
END
END
END
END
RETURN
CheckConditions:
IF Flag?('3')
Branch
ELSE
IF Flag?('2')
Branch
ELSE
IF Flag?('1')
CheckIT
END
END
END
RETURN
SetConditions:
IF Flag?('2')
IF NotEqual? Recall# Num#('2') LAST Tool#
IF LTEqual? LAST Tool# Num#('8')
IF LTEqual? Recall# Num#('2') Num#('8')
ELSE
Check3Axes
IF Flag?('3')
Save# Num#('3') Recall# Num#('2')
IF Flag?('5')
SetFlag('6')
ELSE
SetFlagF('6')
END
END
END
ELSE
Check3Axes
IF Flag?('3')
Save# Num#('3') Recall# Num#('2')
IF Flag?('5')
SetFlag('6')
ELSE
SetFlagF('6')
END
END
END
END
Save# Num#('2') Recall# Num#('1')
IF Flag?('4')
SetFlag('5')
ELSE
SetFlagF('5')
END
Save# Num#('1') LAST Tool#
IF LAST PreferCan?
SetFlagF('4')
ELSE
SetFlag('4')
END
ELSE
IF Flag?('1')
SetFlag('2')
Save# Num#('2') Recall# Num#('1')
IF Flag?('4')
SetFlag('5')
ELSE
SetFlagF('5')
END
END
END
SetFlag('1')
Save# Num#('1') LAST Tool#
IF LAST PreferCan?
SetFlagF('4')
ELSE
SetFlag('4')
END
RETURN
RetractFirstAxis:
IF Flag?('4')
Save# Num#('4') Recall# Num#('1')
SeqC GetAxis 'M29*IT' EOL { Retract slide to Home Position }
END
RETURN
RetractSecondAxis:
IF Flag?('5')
Save# Num#('4') Recall# Num#('2')
SeqC GetAxis 'M29*IT' EOL { Retract slide to Home Position }
END
RETURN
RetractThirdAxis:
IF Flag?('6')
Save# Num#('4') Recall# Num#('3')
SeqC GetAxis 'M29*IT' EOL { Retract slide to Home Position }
END
RETURN
InitConditions:
Save# Num#('1') Num#('0')
Save# Num#('2') Num#('0')
Save# Num#('3') Num#('0')
SetFlagF('1')
SetFlagF('2')
SetFlagF('3')
SetFlagF('4')
SetFlagF('5')
SetFlagF('6')
RETURN
{Start of executable Prog **************************************************}
{setup and initializations}
InitProg
XsAreRadii
PosSideLathe
ReverseXZArcs
NoIJKSigns
SetMaxRPM('5000')
SetMaxFeed('500')
SetFlagF('7') { BarFeeder }
SetFlagF('8') { Turret NewTool is SameTool }
SetFlagF('9') { Turret MultiFeature Contour }
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: must be all capital letters when typed in.' 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
' OPTCYC1 -' EOL
' This command is supported three ways. The first usage is for the Cross Slides. If the' EOL
' Operation uses Tools 9, 10, 11 or 12, and the Preferred Canned check box is selected' EOL
' in the General Info 1 dialog, OptCyc1 will cause a G81 to be output, instead of a G82.' EOL
' Also, the Q Dwell parameter normally output for the G82 cycle will be suppressed.' EOL
' The second usage is for Die-Head Operations on the Turret. The OptCyc1 command will' EOL
' output M49/M48 FeedRate OverRide Inactive/Active codes for FI-D-RO Canned Cycles.' EOL
' The third usage is for non-canned, single feature operations for both the turret and' EOL
' the cross slides. The OptCyc1 command will suppress the output of the endpoint.' EOL
END
EachOp {Start of post processing *********************}
GetLCycle
IF FirstOperation?
InitConditions
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
END
RestoreScale
OpenSub
StockOff {.71.2}
SetHome
DoOpComments
DoPostScript
Plane
SeqC 'G53G70' AbsValue 'G94M48' EOL
{ G53 = Position Offsets Out }
{ G70 = Inch Input }
{ G94 = Direct Feed Per Minute }
{ M48 = FeedRate OverRide Active }
IF LTEqual? Tool# Num#('8') { Turret }
Save# Num#('5') Tool#
Seq OpToolID GearRange CheckIT EOL
IF Drilling? AND NOT CannedCycle? { Bar Stop }
SetFlag('7')
SeqC Rapid GetAxis EPZ# EOL
SetLineStrtChr('/')
SeqC 'M10' EOL { Feed Stock & Close Collet }
SetLineStrtChr('')
END
END
ELSE
IF NewTool?
{Finish off last Operation}
StockOff {.62}
DoEndOpPS
IF LAST StraightConnect?
SetConditions
ELSE
IF NotEqual? Recall# Num#('5') Tool#
IF Flag?('1')
SetConditions
IF Flag?('9') { Turret MultiFeature Contour }
SetFlagF('9')
SeqC 'AM29*IT' EOL { Retract slide to Home Position }
IF GTEqual? Recall# Num#('1') Num#('10')
RetractFirstAxis
END
IF GTEqual? Recall# Num#('2') Num#('10')
RetractSecondAxis
END
IF GTEqual? Recall# Num#('3') Num#('10')
RetractThirdAxis
END
ELSE
RetractFirstAxis
RetractSecondAxis
RetractThirdAxis
END
InitConditions
END
IF LAST ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END
END
END
{Start new Operation}
DoOpComments
DoPostScript
IF LTEqual? Tool# Num#('8') { Turret }
IF Equal? Recall# Num#('5') Tool#
SetFlag('8')
ELSE
Save# Num#('5') Tool#
Seq OpToolID
IF NewGear?
GearRange
END
CheckIT EOL
END
END
ELSE
IF SameTool? {.62}
{Finish off last Operation}
StockOff {.62}
DoEndOpPS
IF NOT StraightConnect?
IF LAST ProgStop?
SeqC 'M00' EOL
END
END
{Start new Operation}
DoOpComments
DoPostScript
IF LTEqual? Tool# Num#('8') { Turret }
IF NewGear?
SeqC GearRange CheckIT EOL
END
END
END
END
END {common point for all operations}
IF GreaterThan? Tool# Num#('12')
' ( NOTE: Tool selected must be in the range of 1 - 12 )' EOL
ELSE
IF Drilling? { Turret Only }
IF CannedCycle?
StockOff
SeqC LCycle 'W' ZDepth# 'R' SPZ# GetFeedRate
IF Tap?
'E' MUL# FeedIPR# SpeedRPM# 'M49' CheckConditions EOL { FeedRate OverRide Inactive }
SeqC 'M48' { FeedRate OverRide Active }
ELSE
Dwell Peck
IF FIDRO? AND OptCyc1? { Die-Head Operation }
'M49' CheckConditions EOL { FeedRate OverRide Inactive }
SeqC 'M48' { FeedRate OverRide Active }
END
END
CheckConditions EOL
ELSE
IF NOT FirstOperation?
SeqC Rapid 'W' SPZ# CheckConditions EOL
IF NOT OptCyc1?
IF RIRO?
SeqC Rapid 'W' EPZ# CheckConditions EOL
ELSE
SeqC Feed 'W' EPZ# GetFeedRate CheckConditions EOL
END
END
END
END
ELSE { Turret or Cross Slides }
IF LTEqual? Tool# Num#('8') { Turret }
EachFeat
IF FirstFeat? AND LastFeat?
SeqC Rapid 'W' SPZ# CheckConditions EOL
IF NOT OptCyc1?
SeqC Feed 'W' EPZ# GetFeedRate CheckIT EOL
END
ELSE
IF FirstFeat?
IF Flag?('8')
SetFlagF('8') { Turret NewTool is SameTool }
ELSE
IF Equal? SPX# Num#('0')
TrackXNO# Num#('0')
ELSE
SeqC 'WM29' CheckConditions EOL { Retract Turret to Home Position }
SeqC Rapid 'A' SPX# CheckIT EOL
END
SeqC Rapid 'W' SPZ# CheckIT EOL
END
END
IF XMove? OR Zmove?
SeqC
IF RapidFeat?
Rapid
ELSE
IF LineFeat?
Feed
ELSE
IF ArcFeat?
IF ArcCW?
CWArc
ELSE
CCWArc
END
END
END
END
IF XMove?
SetFlag('9')
'A' EPX#
END
IF ZMove?
'W' EPZ#
END
IF NOT RapidFeat?
GetFeedRate
END
IF ArcFeat?
ArcIJ
END
CheckIT EOL
END { XMove OR ZMove }
END { FirstFeat AND LastFeat }
NextFeat
ELSE { Cross Slides }
IF NOT ApproachID?
IF PreferCan? AND NOT OptCyc1?
END
IF FirstOperation? OR NewTool?
Seq
END
IF PreferCan?
StockOff
IF OptCyc1?
'G81'
ELSE
'G82'
END
SeqC GetAxis EPX# 'R' SPX# GetFeedRate
IF NOT OptCyc1? { Dwell based on GearRange }
IF LTEqual? SpeedRPM# Num#('150')
'Q.3' { M44 }
ELSE
IF LTEqual? SpeedRPM# Num#('316')
'Q.3' { M42 }
ELSE
IF LTEqual? SpeedRPM# Num#('761')
'Q.3' { M43 }
ELSE
'Q.5' { M41 }
END
END
END
END
CheckConditions EOL
ELSE
IF LastOp? AND Flag?('7')
{ PartOff Cycle }
ELSE
SeqC Rapid GetAxis SPX# CheckConditions EOL
IF NOT OptCyc1?
SeqC Feed GetAxis EPX# GetFeedRate CheckIT EOL
END
END
END
END { NOT ApproachID }
END { Turret or Cross Slides }
END { Drilling - Turret Only }
END { Out of Range Tools }
NextOp {loops back to EachOP until last Operation}
{End of program ************************************************************}
{finish last operation}
StockOff
DoEndOpPS
IF Flag?('1')
IF Flag?('9') { Turret MultiFeature Contour }
SetFlagF('9')
SeqC 'AM29*IT' EOL { Retract slide to Home Position }
IF GTEqual? Recall# Num#('1') Num#('10')
RetractFirstAxis
END
IF GTEqual? Recall# Num#('2') Num#('10')
RetractSecondAxis
END
IF GTEqual? Recall# Num#('3') Num#('10')
RetractThirdAxis
END
ELSE
RetractFirstAxis
RetractSecondAxis
RetractThirdAxis
END
END
SeqC UnTool CheckIT EOL
IF Flag?('7') { PartOff Cycle }
SeqC 'M12*S' GetAxis EPX# EOL { Part Deflector Out }
SeqC 'M13' EOL { Part Deflector In }
END
IF ProgStop?
SeqC 'M00' EOL
ELSE
SeqC ProgStop EOL
END
SeqC EOP EOL
Post
Close
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:
AB 8200 Pneumo L230 82 2W & S 2SC AB [CE] L186 82 1W & S 2SC AB 7360 L096 82 1AB 8200 [ASKO] M725 89AB 8200 Pneumo [USS] L834 85Stromlaufplan Passat 82 Gefährdeten Alarmsystem (Passat Protect) ab 06 2001AB 7370 CHNC4 L161 82Stromlaufplan Passat 82 Motor 1,8l 92kW ARG,APT Motronic ab 01 1999AB 8400 Rev F [Gin] M417 82 1AB Sheldon [BRL ] L142 82 2Bandit IV AB [DM] MV32 89 1Fanuc 2000C Mazak L168 82Fanuc 10T MS [2 G54] L066 82Stromlaufplan Passat 6 Motor 1,9l 66kW AHU, 1,9l 81kW AFN mit Schaltgetriebe ab 10 1996Stromlaufplan Passat 52 Automatisches 4 Gang Getriebe (AG4) ab 10 2000więcej podobnych podstron