![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| Haas Mills Discuss Haas machinery here! |
| This forum is sponsored by: |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| |||
| |||
I have a new vf2 and I am getting ready to do my first job where I will use more than one vise. I plan to have 3 vises setup. There will be 8 or 9 toolchanges. I plan to program g54, g55, and g56 for each vises. This is to machine three identical parts at one time. Is the SIMPLEST way to write my program using M97's? Or should I use M98's (I have never used M98) Thanks for any advice. Joe Simmers |
|
#2
| ||||
| ||||
| I dont use sub programs what i do it just copy and paste get the first part programed then copy and paste the rest and change G54 to your G55 G56 and set get your locations to me it is simpler but that is just me, get your first vise on and indicated in then set your other two up and take a peice of good flat stock and clamp the first then the second then the third that will get you real close to being in line
__________________ individual who perceives a solution and is willing to take command. Very often, that individual is crazy. |
|
#4
| ||||
| ||||
Just my opinions : (1) Best programming practice is to use the G54 - G59 work offsets ... Why? ... adds independancy to each location so each is easily adjusted without effecting the others ... hit the vise, bump the vise, easy to re-adjust one without changing the others and no programming change, just an offset change. (2) Best to use sub-programming instead of copy and paste ... Why? ... Let's face it, there's always some adjustments that need to be made once the chips start flying ... and should be, that's how the most optimized programs get created. If you use sub programs, you'll be using one program so if you need to make a program adjustment, you'll only have to do it in one place. Also, first part is correct, all parts will be correct. If you copy and paste, you'll need to make multiple changes in multiple locations or keep going back and forth from the PC to the machine for editing if you need big changes. Also, if you need to change the machining order due to cutting conditions, just change one place or change the sub program calls. Now the drawbacks of sub programming : (1) If you complete one part then move to the next vise and complete the second etc., easy program as below but longer run times as tool changes are not optimized. The best way is to machine all vises with the tool while it is in the spindle ... harder to do with sub programs ( see below ). It's your call, easier programming or most optimized ... depends on what's more important to you. (2) Headache when saving the programs for future use ... you need to save all the sub programs as well ... in your case 7 or 8. Some programming examples : ( Machine parts complete at each vise ) O0001 G54 ( establish vise #1 work offset ) M98 P1111 ( call your machining program O1111 ) G55 ( establish vise #2 work offset ) M98 P1111 ( call your machining program O1111 ) G56 ( establish vise #3 work offset ) M98 P1111 ( call your machining program O1111 ) M30 ( Optimized to cut all parts while the tool is in the spindle ) O0001 N0001 G00 G91 G28 Z0 T01 M06 G90 S3000 M03 G54 ( establish vise #1 work offset ) M98 P1111 ( program to machine part for tool #1 ) G55 ( establish vise #2 work offset ) M98 P1111 ( call your machining program for tool #1 ) G56 ( establish vise #3 work offset ) M98 P1111 ( call your machining program for tool #1 ) G00 G91 G28 Z0 M09 M01 N0002 G00 G91 G28 Z0 T02 M06 G90 S3000 M03 G56 ( establish vise #3 work offset - working your way back now ) M98 P1112 ( program to machine part for tool #2 ) G55 ( establish vise #2 work offset ) M98 P1112 ( call your machining program for tool #2 ) G54 ( establish vise #1 work offset ) M98 P1112 ( call your machining program for tool #2 ) G00 G91 G28 Z0 M09 M01 etc. etc. M30 Just some thoughts ... hope it adds some fuel for thought. Real World Machine Shop Software at www.KentechInc.com |
|
#5
| |||
| |||
| Well Chip, your correct on the ease of programming thing, but if he's making three at a time, then it's probably safe to assume that it's a lot of pieces he's making and there for efficincy is paramount. Also if you take a program that is proven to make one piece, and make it efficiantly, and cut and paste it, the "multiple changes" should be minimal at worst.
__________________ A.J.L. |
| Sponsored Links |
|
#6
| ||||
| ||||
One more thought / plan ... make one part complete on one vise, prove it all out and optimize the toolpath ... then break it up and cut and paste or sub it out to make multiple parts / locations. Real World Machine Shop Software ... www.KentechInc.com |
|
#7
| |||
| |||
| Do it with subroutines for each tool. This puts everything in a single program so it is easy to find lines in the program if you need to edit. The main program selects the first work zero then goes to the subroutine for the first tool, selects the second work zero then goes to the the first tool subroutine again then third work zero, subroutine again. All the tool change commands are in the subroutines so when the program goes back to the first work zero and calls the second subroutine this initiates a tool change to tool two and the machine cycles through the three work zeroes like before. This continues for however many tools there are and then the program changes back to tool one, parks the vises convenient for unloading and reloading and stops. With this system there are some real advantages. When you are writing the program you treat each tool subroutine as a separate program. Write it in the Clipboard and run it from the Clipboard. Then when that tool sub routine is correct paste it into the correct place at the end of the main program and change the M30 needed to run it to an M99 because now it is a subroutine. When you want to edit CUT a tool subroutine back to the clipboard, edit and run it there to prove the changes then paste it back into the program. NOTE I always make a copy of the program as backup before doing this just in case I screwup and lose something. When a program has many tools doing a lot of work it is sometimes tedious to go through all the tools when setting up and proving the program. With this method it is possible to put a Block Delete in front of all the work zero subroutine calls except for G54. This way you prove and finish the program on only one part; quicker and less waste if you make a mistake. I have written hundreds of programs using this method with some of them using up to 32 work zeroes and 10 or 11 tools. A really nice thing is that if you move the program to a larger or smaller machine all that is needed are a few more or less work zero/subroutine calls. Another thing is that if the format is kept consistent anyone familiar with it can edit a program as easily as the person who wrote it. I can post an example next week if you like. Last edited by Geof; 03-24-2007 at 09:58 AM. Reason: typo |
|
#10
| |||
| |||
| 070325-1052 EST USA joesimmers: Following is a sample program that provides a solution to some of the above comments. This requires MACRO capability, uses G52 in combination with a fixed G54, provides a means to do one or more parts with the same subroutines for each part, and minimizes tool changes. Note: using a subroutine for your position information greatly reduces errors for multiple parts. Either all parts are OK or none are. We have our own tool change subroutine that simpifies the code in the main program. Note: HAAS has a mode that functionally ignores a tool change if that tool is already loaded. Thus, multiple tool changes on the same tool do not affect cycle time. Part programming is in absolute in contrast to incremental. This is possible because of the use of G52. The theory of this program is thet G54 defines a base coordinate. This might be the left vise rear jaw left and front edges. G52 is used to create the base coordinate for each part relative to G54. G54 is never changed only G52 is. Two #-variables (#151 and #152) are preset to define the starting and ending parts. There is a table of G52 values at N1500 that defines the position of each part. #150 contains the ordinal number of the current part being processed minus 1. #150 is initially set to the value in #152 - 1 at the beginning of each loop in the program. In the main program a tool is picked. One or more subroutines are executed. #150 is incremented to the next part position and the subroutines are repeated until #150 equals the last part defined by #151. The next tool is selected and the same kind of process is repeated. Each part is 2.1 inches from the previous part in the X-axis. This could be expanded to work in both the X and Y directions. Works without change between my 1993 and 2000 machines. % O3004 (SAMPLE.CNS 070325-1029) (Beta prog 981226-1009 ) (******** You must set value for number of parts ****) #151= 1 ( replace 1 with 1 thru 11 for number of last part. ) ( #150 is used for loop counter ) #152= 1 ( This #152 value minus 1 is loaded into #150 throughout the ) ( program to determine the starting part position) ( for loop counter initialization ) IF [ [ #151 GT 11 ] OR [ #151 LT 1 ] ] GOTO1000 IF [ [ #152 GT 11 ] OR [ #152 LT 1 ] ] GOTO1000 #153= 1.7500 + [ #151 * 2.1 ] (#153 is used for length in P20) (***************************************************) G52 X0. Y0. G53 G00 Z0. (**** TOOL Change to Mill Finishing **** -->1 IDM15F HAAS TL # 6 ) ( rough face to set top of surface ) (in the called sub N20 is the only place #153 is used) G65 P6901 E54 R2.05 S3000 T6 D06 ( call tool chg sub ) G00 X-1.5 Y1.500 Z0.1 G01 F40. M97 P20 Z0. G90 G00 Z0.1 (Do tool 12 work) #150= #152 - 1 ( initialize loop counter ) N250 (************* LOOP POINT --A-- ************* note this loop only uses tool #12) ( In this loop the tool diameter definition remains constant. ) M97 P1500 ( sets G52 for this pass, #150 incremented in N1500 ) (**** TOOL Change to Mill Finishing **** -->2 IDM14F HAAS TL # 12 ) G65 P6901 E54 R0.25 S5000 T12 D12 ( call tool ch sub ) G00 X1.825 Y1.1375 Z0.1 F60. G01 M97 P13 Z-0.125 G90 G00 Z0.1 G00 X1.825 Y1.1375 Z0.1 F60. G01 M97 P13 Z-0.25 G90 G00 Z0.1 (**** TOOL Change to Mill Finishing **** ->3 IDM15F HAAS TL # 12 ) G65 P6901 E54 R0.25 S5000 T12 D12 ( call tool chg sub ) G00 X1.825 Y-1.4375 Z0.1 F60. G01 M97 P12 Z-0.125 G90 G00 Z0.1 G00 X1.825 Y-1.4375 Z0.1 F60. G01 M97 P12 Z-0.25 G90 G00 Z0.1 IF [ #150 LT #151 ] GOTO250 (************************* END of LOOP --A-- **********************) G52 X0. Y0. (Do tool 11 work) #150= #152 - 1 ( initialize loop counter ) N251 (************* LOOP POINT --B-- ************** note this loop only uses tool #11) ( In this loop the tool diameter definition changes. ) M97 P1500 ( sets G52 for this pass, 150 incremented in N1500 ) (**** TOOL Change to Mll Roughing **** --->9 IDM20R HAAS TL # 11 ) ( rough the outside ) G65 P6901 E54 R0.19 S5000 T11 D11 ( call tool chg sub ) G00 X0.1943 Y1.8648 Z0.1 F40. G01 M97 P21 Z-0.25 G90 G00 Z0.1 G00 X0.1943 Y1.8648 Z0.1 F40. G01 M97 P21 Z-0.37 G90 G00 Z0.1 (**** TOOL Change to Mill Finishing **** -->10 IDM20F HAAS TL # 11 ) ( finish the outside ) G65 P6901 E54 R0.187 S5000 T11 D11 ( call tool chg sub ) G00 X0.1943 Y1.8648 Z0.1 F40. G01 M97 P21 Z-0.37 G90 G00 Z0.1 IF [ #150 LT #151 ] GOTO251 (************************* END of LOOP --B-- **********************) G52 X0. Y0. M09 M05 G90 G00 G53 Z0 G53 X-16. Y0 M30 (subroutines) N20 (this is only place #153 is used) G01 G40 X-1.5 Y0.9475 G01 X#153 Y0.9475 G01 X#153 Y-1.0525 G01 G40 X-1.5 Y-1.0525 M99 N12 G01 G40 X1.825 Y-1.1375 G01 X1.075 Y-1.1375 G01 X1.075 Y-1.4375 G01 X1.7833 Y-1.4375 G01 X1.7833 Y-1.3043 G01 X1.1101 Y-1.3043 G01 G40 X1.1101 Y-1.2504 M99 N11 G01 G40 X2.05 Y1.0375 G01 X1.81 Y1.0375 G01 X1.81 Y-1.0375 G01 X1.57 Y-1.0375 G01 X1.57 Y1.0375 G01 X1.33 Y1.0375 G01 X1.33 Y-1.0375 G01 X1.09 Y-1.0375 G01 X1.09 Y1.0375 G01 X0.85 Y1.0375 G01 X0.85 Y-1.0375 G01 G40 X0.9824 Y-1.0375 M99 N1500 ( #150 IS INITIALIZED BEFORE CALL TO SUBROUTINE ) IF [ #150 EQ 0 ] GOTO200 IF [ #150 EQ 1 ] GOTO201 IF [ #150 EQ 2 ] GOTO202 IF [ #150 EQ 3 ] GOTO203 IF [ #150 EQ 4 ] GOTO204 IF [ #150 EQ 5 ] GOTO205 IF [ #150 EQ 6 ] GOTO206 IF [ #150 EQ 7 ] GOTO207 IF [ #150 EQ 8 ] GOTO208 IF [ #150 EQ 9 ] GOTO209 IF [ #150 EQ 10 ] GOTO210 IF [ #150 EQ 11 ] GOTO211 #3000= 15 (N1500 - #150 OUT OF RANGE) N200 G52 X0. GOTO300 N201 G52 X-2.1 GOTO300 N202 G52 X-4.2 GOTO300 N203 G52 X-6.3 GOTO300 N204 G52 X-8.4 GOTO300 N205 G52 X-10.5 GOTO300 N206 G52 X-12.6 GOTO300 N207 G52 X-14.7 GOTO300 N208 G52 X-16.8 GOTO300 N209 G52 X-18.9 GOTO300 N210 G52 X-21. GOTO300 N211 G52 X-23. GOTO300 N300 #150= #150 + 1 M99 % |
| Sponsored Links |
|
#12
| |||
| |||
|
If I have a program using 10 tools on 32 different locations you are saying it is simple to copy each tool routine 32 times for each location? More simple than having one tool routine in a sub and calling it 32 times after selecting the different locations? |
![]() |
| 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 |
| Kurt Vise & Haas Minimill Fit | Motivator-1 | Haas Mills | 8 | 12-31-2006 08:13 PM |
| programming multiple double vises | bink | G-Code Programing | 12 | 10-26-2006 09:07 PM |
| Haas Mini Mill Programming Question | CuttingTools | Haas Mills | 41 | 05-24-2006 08:44 AM |
| What Vise for IH mill ? | Roy Norris | Industrial Hobbies (Support forum) | 8 | 07-23-2005 09:43 PM |
| Haas vs. Mazatrol 640 Programming | fuzz5150 | Haas Mills | 1 | 04-10-2005 11:11 PM |