Try Block Skip.
I need to fix several hundred parts that were made wrong by another company gone bankrupt. Essentially I need to relocate 4 holes in 6061 T6 aluminum plate that will be drilled and tapped and have threaded inserts installed. That part is easy.
On all of the parts, there are also 3 holes that were originally drilled and tapped for 1/4 x 20 TPI and some, but rarely all of them have already be retapped and had inserts installed.
I need to find an easy way to have 7 locations for each of the center/chamfer drill, drill, and tap cycles. And then either selectively run, or selectively ignore the other 3 holes. I don't want to write separate programs. I know spit about macro programing, other than the stock Fadal warmup program O9999
Thanks,
Stu
Try Block Skip.
Block skip is the way I currently do it, but it creates 3 times the effort and allows to much room for error.
I have 7 holes with 3 ops each to complete the part.
4 holes will always be drilled and tapped and the remaining 3 may or may not be required, and any (or none) of the 3 parts may need to be done.
Using block skip I have to add or remove a block skip character for each of the 3 lines at every process.
I'd rather modify 3 spearate lines for example at the start of the program that duplicate for each operation...
I don't think you can turn off block skip in a macro...
Any ideas?
Why are you removing the Block Skip character. All you would need to do is flip the Block Skip switch. Can you post a copy of your program and a pic of the part. Is the insert a Heli-Coil or some thing else?
Here's a sample program:
TA,1
%
N1O1* PART REWORK PROGRAM
N2* X0 LEFT Y0 FRONT Z0 TOP
N3* T1 .375 90 DEGREE SPOTTER
N4* T2 .201 DRILL
N5* T3 1/4-20 CUT TAP ( RIGID )
N6M6T1
N7M3S6500
N8X1.Y1.G8E1
N9H1Z.1M7
N10G82X1.Y1.Z-.135R.1F20.P250.
N11X2.
N12X3.
N13X4.
/N14X5.
/N15X6.
/N16X7.
N17G80
N18G0Z3.
N19M5M9
N20G49Z0
N21M1
N22M6T2
N23M3S6500
N24H2Z.1M7
N25G83X1.Y1.Z-.75R.1Q.075F20.P.01
N26X2.
N27X3.
N28X4.
/N29X5.
/N30X6.
/N31X7.
N32G80
N33G0Z3.
N34M5M9
N35G49Z0
N36M1
N37M6T3
N38M5S500.2G80
N39G84.2
N40H3Z.1M7
N41G84.1X1.Y1.Z-.5R.1Q.05F500.2
N42X2.
N43X3.
N44X4.
/N45X5.
/N46X6.
/N47X7.
N48G80
N49G0Z3.
N50M5M9
N51X0Y0E0
N52G49Z0
N53M1
N54M6T1
N55M2
%
If you have Block Skip on it will do only the first 4 holes. if you shut it off it will run all seven holes. You do not need to delete the Block Skip characters. If you have the older control with out the switch just type MU while the program is active and toggle the block skip on or off.
That's what I currently do except now what do you do when you can't just ignore all 3 holes or not. It could be that you need to skip none of them, or any combination of the 3 of them. In which case block skip doesn't help, unless you go through and edit those lines with the block skip to remove the block skip character so that particular hole, but not the others doens't get skipped.
Just ot make life tougher, I'm fixing 2 parts at the same time, so it may be 6 sets of holes to skip or not.
Hence the macro question. There must be a way to write a macro that says at the start to drill or skip 6 specific loatations. This will then turn on the process for each oepration or not. I was thinking of a way to toggle the block skip character, but I don't know if that's acceptable. It might be to set a variable for the holes to be drilled and a goto statement to drill certain holes and go top the end of the section if they are to be skipped.
Thanks for the insights,
Stu
..Just a quick idea...
How about doing a chart that hangs on the machine with each hole assigned a number.
Write a macro that prompts the user to input which number or numbers needs to have the operations performed at the beginning of the program.
The Macro then does a If Then GoTo and only does the numbered holes that were selected. Sounds like you've got to inspect and make the call on each part anyway..
Exactly! Only minor detail is I don't know how to write the macro.
I have 2 parts fixtured, each of which is guaranteed to get 4 cneter drilled, drilled, and tapped holes. then I can make a chart with 6 other holes and enter the numbers (variables for their location????) and then the program adds these into each unit to process the operation at those locations as well as the other locations.
I just don't know how. An example of the code would be wonderful.
I can program a microcontroller and all of my CNC machines, I've just never dealt in Macros for a Fadal legacy control, and I don't have any examples to plagerize....
Thanks for the inputs,
Stu
I don’t know your machine or control so some of the syntax might not be correct. First off get rid of all of your sequenced N addresses. This is for the purpose of using GOTO statements. You don’t want all the N if you are jumping to an address, too much room for a mistake.
This is probably the easiest and quickest way to set it up. If I think of a more creative way I will let you know but for now this should work.
Ok again I don’t know your control but if you have macro programming you should have variables #1-?. I would set up as many variables as you would need for each hole that you may or may not want to skip. Example below uses 6 holes. #1 is for the first hole and #6 is for the 6th. If you want to drill the hole make it =1 if you do not want to drill that hole make it =0. The example below will skip the 4th hole.
TA,1
#1=1
#2=1
#3=1
#4=1
#5=1
#6=1
H1Z.1M7
(spot drill)
G82X1.Y1.Z-.135R.1F20.P250.
IF[#1EQ0]GOTO5
X2.
N5IF[#2EQ0]GOTO10
X3.
N10IF[#3EQ0]GOTO15
X4.
N15IF[#4EQ0]GOTO20
X5.
N20IF[#5EQ0]GOTO30
X6.
N30IF[#6EQ0]GOTO40
X7.
N40G80
G0Z3.
M5M9
G49Z0
M1
M6T2
M3S6500
H2Z.1M7
(drill)
G83X1.Y1.Z-.75R.1Q.075F20.P.01
IF[#1EQ0]GOTO50
X2.
N50IF[#2EQ0]GOTO55
X3.
N55IF[#3EQ0]GOTO60
X4.
N60IF[#4EQ0]GOTO65
X5.
N65IF[#5EQ0]GOTO70
X6.
N70IF[#6EQ0]GOTO75
X7.
N75G80
G80
G0Z3.
Sorry I did not read your last post in great detail. I am posting this anyway because I typed it up. If you want just 6 locations and they can always be the same then you might be better off with a macro call or even a macro modal call with the coordinates block skipped or used via parameters. When I get some more time maybe today I will write something up using that format.
Stevo
I wrote this in Format 1
It's a macro to machine an O-Ring groove where the control prompts you for data on the dimensions of the oring and other parameters...copy and paste this into your machine and run it to see what happens...
I'm pretty sure this is the copy that works....but you get the idea..
Fadal has in its manuals a section on writing macros. Once you get hooked on how powerful they can be you'll find out how fun it is to write 'em!
%
N5O500(ORNGMAC
N10G80G90G49G40G17M5M9
N15R+0R1+0R2+0R3+0R4+0R5+0R6+0R7+0R8+0R9+0
N20T3M6(.125DIA EMILL CONVENTIONAL CUTTING
N25M3S2000
N30G0G90X0Y0E10
N35H3D3Z1.M8
N40G0X0Y0Z1.
N45#CLEAR
N50#PRINT "ENTER CUTTER DIAMETER CD V1"
N55#INPUT V1
N60#PRINT "ENTER RADIUS VALUE OF MEAN GROOVE GR =GD/2 V3"
N65#INPUT V3
N70#PRINT "ENTER INNER GROOVE RADIUS IR V5"
N75#INPUT V5
N80#PRINT "ENTER OUTER GROOVE RADIUS OR V7"
N85#INPUT V7
N90#PRINT "ENTER ROUGHING DEPTH DR V8"
N95#INPUT V8
N100#PRINT "ENTER OFFSET ANGLE OA V11 (RECOMMEND 6.)"
N105#INPUT V11
N110#V18=COS(V11)*V5+3*V1 'X OF G42 INI INNER RAD
N115#V19=SIN(V11)*V5 'Y VALUE G42 INI FOR INNER RAD
N120#V20=COS(V11)*V7-3*V1 'X OF G42 INI OUTER RAD
N125#V21=SIN(V11)*V7 'Y VALUE OF G42 INI FOR OUTER RAD
N140#V24=V5 'X POINT 2
N145#V25=0 'Y POINT 2
N170#V30=(V7) 'X POINT 5
N175#V31=0 'Y POINT 5
N190#V44=V5 'I POINT 2
N195#V45=0 'J POINT 2
N200#V50=V7 'I POINT 5
N205#V51=0 'J POINT 5
N211#V60=COS(V11)*V3-.5*V1 'X ON MEAN DIA POINT 1 & 3
N215#V61=SIN(V11)*V3 'Y ON MEAN DIA POINT 1 & 3
N216#V62=COS(V11)*V3+.5*V1 'X ON MEAN DIA FOR OUTER POINT 4 & 6
N217#V63=SIN(V11)*V3 'Y ON MEAN DIA FOR OUTER POINT 4 & 6
N225#R1=0
N230#R1=V3 'X
N235#R2=V44 'I
N240#R3=0 'Y
N245#R4=V45 'J
N250#R5=V8 'Z ROUGH DEPTH
N255#R7=V12*2 'D
N265#R9=0 'R9 IS ALWAYS A VALUE OF ZERO
N270G0X+R1Y+R9(START ROUGH MEAN GROOVE
N275G1Z-R5F6.
N280G3X+R1Y+R9I-R1J+R9F6.5
N285G0Z0.1
N290#R1=V18 'X G42 INI
N295#R3=V19 'Y G42 INI
N300G0X+R1Y-R3F10.(MOVE TO G42 INI POINT FOR INNER RAD
N320#R1=V60 'X OF MEAN DIA POINT 1
N325#R3=V61 'Y OF MEAN DIA POINT 1
N330G1G42X+R1Y-R3F10.(MOVE TO POINT 1
N345#R1=V24 'X OF POINT 2
N350#R3=V25
N355#R2=V44 'I OF POINT 2
N360#R4=V45
N365G1Z-R5F3.
N370G1X+R1Y+R9F6.2(MOVE TO POINT 2
N375G3X+R1Y+R9I-R1J+R9(CUT INNER RADIUS
N390#R1=V60
N395#R3=V61
N400G1X+R1Y+R3F6.(MOVE TO POINT 3
N405G0Z0.1
N420#R1=V18
N425#R3=V19
N430G1G40X+R1Y+R3F25.
N445#R1=V20
N450#R3=V21
N455G1X+R1Y+R3(MOVE TO G42 INI POINT FOR OUTER RAD
N471#R1=V62 'X OF MEAN DIA POINT 4
N476#R3=V63 'Y OF MEAN DIA POINT 4
N480G1G42X+R1Y+R3F6.(MOVE TO POINT 4
N500#R1=V30
N505#R3=V31
N520#R2=V50
N525#R4=V51
N526G1Z-R5F3.
N530G1X+R1Y+R9F6.(MOVE TO POINT 5
N535G2X+R1Y+R9I-R1J+R9(CUT OUTER RADIUS
N550#R1=V62
N555#R3=V63
N560G1X+R1Y-R3F6.(MOVE TO POINT 6
N565G0Z1.
N580#R1=V18
N585#R3=V19
N590G1G40X+R1Y+R3F10.
N595M9
N600H0Z0M5G0
N605G0G40G90X0Y0E0
N610M2
%
T'Other ORing Macro....
Same program, later version which I think works better....not sure without loading it up and playing...and I don't have time at the moment.
In the Fadal User Manual Chapt. 18 (in my 2001 version) is a whole section on Macros with some samples, syntax, and all the good stuff you need. Fadal also put out a short 24page booklet on macro programming which is pretty good....see if Neal will email you a copy!
What I think would be easiest would be to develop a program/subroutine for each individual hole that is associated with the number on the map. (so you're not doing a bunch of mathmatical stuff shifting coords, etc..)
Inputing the map number then calls up that corresponding program/subroutine specifically. You might find it easiest to have the operator just punch in the number and let it run that hole, then punch in the next number and let it run...and so on.
%
N5O501(ORNGMAC2
N10G80G90G49G40G17M5M9
N15R+0R1+0R2+0R3+0R4+0R5+0R6+0R7+0R8+0R9+0
N20T3M6(.125DIA EMILL
N25M3S2000
N30G0G90X0Y0E10
N35H3D3Z1.M8
N40G0X0Y0Z1.
N45#CLEAR
N50#PRINT "ENTER CUTTER DIAMETER CD V1"
N55#INPUT V1
N60#PRINT "ENTER RADIUS VALUE OF MEAN GROOVE GR =GD/2 V3"
N65#INPUT V3
N70#PRINT "ENTER INNER GROOVE RADIUS IR V5"
N75#INPUT V5
N80#PRINT "ENTER OUTER GROOVE RADIUS OR V7"
N85#INPUT V7
N90#PRINT "ENTER ROUGHING DEPTH DR V8"
N95#INPUT V8
N100#PRINT "ENTER OFFSET ANGLE OA V11 (RECOMMEND 6.)"
N105#INPUT V11
N110#V18=COS(V11)*V5+3*V1 'X OF G42 INI INNER RAD
N115#V19=SIN(V11)*V5 'Y VALUE G42 INI FOR INNER RAD
N120#V20=COS(V11)*V7-3*V1 'X OF G42 INI OUTER RAD
N125#V21=SIN(V11)*V7 'Y VALUE OF G42 INI FOR OUTER RAD
N130#V22=COS(V11)*V5 'X POINT 1
N135#V23=SIN(V11)*V5 'Y POINT 1
N140#V24=V5 'X POINT 2
N145#V25=0 'Y POINT 2
N150#V26=COS(V11)*V5 'X POINT 3
N155#V27=SIN(V11)*V5 'Y POINT 3
N160#V28=COS(V11)*V7 'X POINT 4
N165#V29=SIN(V11)*V7 'Y POINT 4
N170#V30=(V7) 'X POINT 5
N175#V31=0 'Y POINT 5
N180#V32=COS(V11)*V7 'X POINT 6
N185#V33=SIN(V11)*V7 'Y POINT 6
N190#V44=V5 'I POINT 2
N195#V45=0 'J POINT 2
N200#V50=V7 'I POINT 5
N205#V51=0 'J POINT 5
N211#V60=COS(V11)*V3-.5*V1 'X ON MEAN DIA
N215#V61=SIN(V11)*V3 'Y ON MEAN DIA
N216#V62=COS(V11)*V3+.5*V1 'X ON MEAN DIA FOR OUTER
N217#V63=SIN(V11)*V3 'Y ON MEAN DIA FOR OUTER
N220#R0=0
N225#R1=0
N230#R1=V3 'X
N235#R2=V44 'I
N240#R3=0 'Y
N245#R4=V45 'J
N250#R5=V8 'Z ROUGH DEPTH
N255#R7=V12*2 'D
N260#R8=V28 'H
N265#R9=0 'R9 IS ALWAYS A VALUE OF ZERO
N270G0X+R1Y+R9(START ROUGH MEAN GROOVE
N275G1Z-R5F6.
N280G3X+R1Y+R9I-R1J+R9F6.5
N285G0Z0.1
N290#R1=V18 'X G42 INI
N295#R3=V19 'Y G42 INI
N300G0X+R1Y-R3F10.(MOVE TO G42 INI POINT FOR INNER RAD
N320#R1=V60 'X OF MEAN DIA POINT 1
N325#R3=V61 'Y OF MEAN DIA POINT 1
N330G1G42X+R1Y-R3F10.(MOVE TO POINT 1
N345#R1=V24 'X OF POINT 2
N350#R3=V25
N355#R2=V44 'I OF POINT 2
N360#R4=V45
N365G1Z-R5F3.
N370G1X+R1Y+R9F6.2(MOVE TO POINT 2
N375G3X+R1Y+R9I-R1J+R9(CUT INNER RADIUS
N390#R1=V26
N395#R3=V27
N400G1X+R1Y+R3F6.(MOVE TO POINT 3
N405G0Z0.1
N420#R1=V18
N425#R3=V19
N430G1G40X+R1Y+R3F25.
N445#R1=V20
N450#R3=V21
N455G1X+R1Y+R3(MOVE TO G42 INI POINT FOR OUTER RAD
N471#R1=V62 'X OF MEAN DIA POINT 4
N476#R3=V63 'Y OF MEAN DIA POINT 4
N480G1G42X+R1Y+R3F6.(MOVE TO POINT 4
N500#R1=V30
N505#R3=V31
N520#R2=V50
N525#R4=V51
N526G1Z-R5F3.
N530G1X+R1Y+R9F6.(MOVE TO POINT 5
N535G2X+R1Y+R9I-R1J+R9(CUT OUTER RADIUS
N550#R1=V32
N555#R3=V33
N560G1X+R1Y-R3F6.(MOVE TO POINT 6
N565G0Z1.
N580#R1=V18
N585#R3=V19
N590G1G40X+R1Y+R3F10.
N595M9
N600H0Z0M5G0
N605G0G40G90X0Y0E0
N610M2
%
Help! I don't even know how to post a new thread. Anyhow, I'm using a Fadal 88. It's actually a very good machine. Unfortunately, as far as I can tell, the software version running this old friend is NOT capable of using variables and or macro language. I've tried running in both Format 1 and 2 to no avail. As soon as the control accepts a line with a #sign in it, it bombs out.
1. Is there a way to get this control to read/accept macro language? (I'm not great with macros but with time I can make a FANUC control do most anything I want.)
2. If the control software has to be upgraded, how do I go about this. How much might it cost?
Thanks so much in advance for any advice anyone can give.
P.S. The only software the company I now work for supplies for CAM is Bob Cam. I'm used to MasterCam/SmartCam/Gibbs. So, if I can get macros to work, I'll be so far ahead of where I am now. Also, does anyone know if its possible to get an AFFORDABLE version of MasterCam for milling 4 axis? I mean under one thousand dollars. I don't even know if that's affordable to tell the truth. I'd have to pay for it myself.
Go to enter next command and enter MU, go to the last page,the software version will be listed there,or pull out the cpu and read it off the sticker.we will need to know what version it is.