![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| Fadal Discuss Fadal machinery here! |
| This forum is sponsored by: |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| |||
| |||
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 |
|
#3
| |||
| |||
| 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? |
|
#4
| |||
| |||
| 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. |
|
#5
| |||
| |||
| 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 |
| Sponsored Links |
|
#6
| ||||
| ||||
| ..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.. |
|
#7
| |||
| |||
| 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 |
|
#8
| |||
| |||
| 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 |
|
#9
| ||||
| ||||
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 % |
|
#10
| ||||
| ||||
| 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 % |
| Sponsored Links |
|
#11
| |||
| |||
| 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. |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Problem- macro code inside of a subroutine | brockmo | Fadal | 7 | 03-12-2009 10:32 PM |
| macro programing | ikneb | Fanuc | 10 | 10-02-2008 07:52 PM |
| Need Help!- macro programing | 9axis | G-Code Programing | 2 | 03-19-2008 05:52 AM |
| Example of a Subroutine? | donl517 | Fadal | 14 | 06-27-2007 10:05 AM |
| Need help with subroutine | 2_jammer | General CAM Discussion | 1 | 01-17-2005 10:46 PM |