![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| G-Code Programing Discuss G-code programing and problems here! |
| This forum is sponsored by: |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| |||
| |||
| I would like to create a circle mill variable program in Okuma user task 2 with a tornado function. Here are the variables I think I will need and a sample to start with. 1.0 hole od start at center of hole x0 y0 Everything is turned on and off and spindle is running using cutter comp. g0 x0 y0 z.1 vtofd[100]=### g41 g01 x.5 y0 d100 feed g03 x-.5 r.5 z-.05 g03 x.5 r.5 z-.1 g03 x-.5 r.5 z-.15 g03 x.5 r.5 z-.2 g03 x-.5 r.5 z-.25 g03 x.5 r.5 z-.30 g03 x-.5 r.5 z-.35 g03 x.5 r.5 z-.40 g03 x-.5 r.5 z-.45 g03 x.5 r.5 z-.50 g03 x-.5 r.5 z-.55 g03 x.5 r.5 z-.60 g03 x-.5 r.5 z-.65 g03 x.5 r.5 z-.70 g03 x-.5 r.5 z-.75 g03 x.5 r.5 z-.80 g03 x-.5 r.5 g03 x.5 r.5 g40 g01 x0 y0 g00 z.1 I would like an adjustable pitch (.05) Here are some of the variables I think I need. dia1=1 pitch=.05 feed=20 dpth=.8 Any tips or steps to point me in the right direction would be greatly appreciated. Thank you Rocky |
|
#3
| |||
| |||
Below is a portion of a variable program for a Okuma lathe. I would think the format would be the same for a mill. You will notice there "V"type variables such as V10 for the outside dia and V11 for the inside diameter. You also can use word type variables such as TRN1=010101 All the math functions are pretty much the same as Fanuc. You have to use the = sign to assign a variable value to a X or Z axis move. Ex. X=BLKI-.1 F.006 M8 You can use GT,LT,NE,EQ the same as Fanuc. Ex. IF [SFOD EQ 16] FROD=.0012 (16 MICRO) You can jump to a line but the first character of the jump to code has to be an N. Ex. IF [V30 EQ 0] NN239 If you are interested I can post more. N1131 (OKUMA PLAIN) TRN1=010101 (TURN OD 1ST) TRN2=020102 (TURN OD 2ND) TRN0=0100 (TURN OD ZERO) TRNR=3 (3 FOR FWD 4 FOR REV ROTATION) BOR1=030703 (BORE 1) BOR2=040704 (BORE 2) BOR0=0700 (BORE ID ZERO) BORR=3 (3 FOR FWD 4 FOR REV ROTATION) PRT1=0505 (PART OFF TOOL) PRT0=0500 (PART OFF ZERO) PRTR=3 (3 FOR FWD 4 FOR REV ROTATION) GRO1=1207 (OD GRV TOOL) GRO0=1200 (OD GRV ZERO) GROR=3 (3 FOR FWD 4 FOR REV ROTATION) GRI1=0313 (ID GRV TOOL) GRI0=0300 (ID GRV ZERO) GRIR=3 (3 FOR FWD 4 FOR REV ROTATION) BCH1=0909 (BACK ID CHMF) BCH0=0900 (BACK ID ZERO) BCHR=3 (3 FOR FWD 4 FOR REV ROTATION) STKS=0500 (STOCK STOP) WASH=0800 (WASH STATION) V10=7.820 (OUTSIDE DIA) SFOD=64 (SURFACE FINISH 16 OR 32 OR 64 OR 125) V20=2 (1 OR 2 CUTS) V21=.030 (RIGHT OD CHM ALONG Z AXIS) ROCA=45 (RIGHT OD CHM ANGLE) V22=.030 (LEFT OD CHM) BLKO=7.900 (BLANK OUTSIDE DIA) DCOD=.120 (DEPTH OF CUT PER SIDE) V11=7.080 (INSIDE DIA) SFID=64 (SURFACE FINISH 16 OR 32 OR 64 OR 125) V23=2 (1 OR 2 CUTS) V24=.030 (RIGHT ID CHM ALONG Z AXIS) RICA=45 (RIGHT ID CHM ANGLE) V25=.030 (BACK ID CHM 0 FOR NONE) BLKI=6.937 (BLANK INSIDE DIA) DCID=.150 (ID DEPTH OF CUT PER SIDE) BRPL=0 (BORE FOR PLUG 0=NO 1=YES) PLBR=5.502 (PLUG BORE SIZE) V12=6.250 (LENGTH) V1=01 (MULTIPLE PART COUNT) TAOD=.0001 (MULTIPLE PART TAPER ADJ) TAID=.0001 (MULTIPLE PART TAPER ADJ) V32=0 (OD GRV 0 OR 1 OR 2) V14=.3120 (1ST OD GRV WIDTH) V15=.062 (1ST GRV DEPTH) V13=2.7500 (LEFT END TO 1ST C/L) GV14=.3150(2ND OD GRV WIDTH) GV15=.1880 (2ND OD GRV DEPTH) GV13=.2360(LEFT END TO 2ND C/L) V26=.124(OD GRV TOOL WIDTH) V31=0 (ID GRV 0 OR 1 OR 2) V18=.505 (FIRST ID GRV WIDTH) V19=.070 (FIRST ID GRV DEPTH) V16=3.125 (LEFT END TO 1ST C/L) V6=.250 (2ND ID GRV WIDTH) V8=.032 (2ND ID GRV DEPTH) V17=.6250 (LEFT END TO 2ND C/L) V27=.124 (ID GRV TOOL WIDTH) (END OF INPUTS) DCOD=[DCOD*2] DCID=[DCID*2] V28=[[V21+.1]*TAN[ROCA]]*2 V29=[[V24+.1]*TAN[RICA]]*2 V14=V14-V26 V14=V14/2 GV14=GV14-V26 GV14=GV14/2 V18=V18-V27 V18=V18/2 V15=V15*2 GV15=GV15*2 V19=V19*2 V8=V8*2 V6=V6-V27 V6=V6/2 V2=V1-1 V3=V12+.250 FROD=.003 FRID=.003 SFOD=32 (SET OD FEED RATE) IF [SFOD EQ 16] FROD=.0012 (16 MICRO) IF [SFOD EQ 32] FROD=.0020 (32 MICRO) IF [SFOD EQ 64] FROD=.0040 (64 MICRO) IF [SFOD EQ 125] FROD=.005 (125 MICRO) SFID=32 (SET ID FEED RATE) IF [SFID EQ 16] FRID=.0013 (16 MICRO) IF [SFID EQ 32] FRID=.0020 (32 MICRO) IF [SFID EQ 64] FRID=.0040 (64 MICRO) IF [SFID EQ 125] FRID=.005 (125 MICRO) V5=.020 (OD FIN CUT) IF [V23 EQ 2] NN234 V5=0 NN234 V7=.020 (ID FIN CUT) IF [V20 EQ 2] NN235 V7=0 NN235 V4=2750/[3.1416*V10/12] IF [V4 LT 2000] NN236 V4=2000 NN236 V31=V31*5 G50 S2000 V9=V31+V23 IF [V30 EQ 0] NN239 G0 Z=V12+8-V3*V30 G50 Z=V12+8 V1=V1-V30 GOTO NN239 NN111 M0 NN239 G0 X20 Z20 (FIRST OD CUT) G97 S1500 M=TRNR M42 T=TRN1 G95 F.03 X=BLKO+1 Z=V12+1 G41 G1 X=BLKO+.2 Z=V12+.03 X=BLKI-.1 F.006 M8 Z=V12+.16 F.05 X=BLKO+.2 Z=V12 X=BLKI-.1 Z=V12+.0000 F.005 G40 Z=V12+.2 F.03 STKO = BLKO NBLO STKO= STKO-DCOD IF [STKO LT V10] NPTO G42 G01 X=STKO Z=V12+.1 Z-.23 F.004 X=STKO+.4 F.03 M8 G0 Z=V12+.2 GOTO NBLO NPTO G42 G01 X=V10-V28 Z=V12+.2 Z=V12+.1 M8 X=V10+V5 Z=V12-V21 F.004 X=V10+V5 Z-.23 T=TRN2 X=V10+.4 F.03 G40 G0 X20 Z20 M9 T=TRN0 IF [V32 EQ 0] NN32 M1 G0 X20 Z20 |
|
#4
| |||
| |||
@Rocky..... I've just converted this from my Fanuc style macro. Save as a sub (.SSB) called OG13 In your main prog call the sub with this block..... CALL OG13 PX=0 PY=0 PI=0 PD=0 PZ=0 PR=0 PQ=0 PF=0 I'm using a MA600HB horizontal and OSP-200M control with user task 2. Be careful as I've not fully proved it out. Run in graphics mode first. Have fun. OG13(G13 HELIX MACRO) (CALL OG13 PX=0 PY=0 PI=0 PD=0 PZ=0 PR=0 PQ=0 PF=0) (X = X POS #24) (Y = Y POS #25) (I = HOLE RADIUS #4 ) (D = TOOL OFFSET #7 ) (Z = Z DEPTH #26) (R = R PLANE #18) (Q = PITCH #17) (F = FEED #9 ) PA8 = VGCOD[12](READS IF IN G90/91) VC101 = VAPAZ VC102 = VC101 - VMOFZ VC103 = VACOD VC104 = VC102 - VZOFZ[VC103] PA27 = PZ + PQ (Z - 1 PITCH) PA7 = VTOFD[PD] PA5 = PI - PA7 (RADIUS) G90 G0 X=PX Y=PY (RAPID TO X0 Y0) G90 Z=PR (RAPID TO R PLANE) PA6 = PA5 / 2 G91 G3 X=PA5 Y0 I=PA6 J0 F=PF (ROLL ON) PA28 = PR NLOOP IF [PA28 LE PA27] NEND1 (HELIX LOOP) G3 I=-[PA5] Z=-[PQ] PA28 = PA28 - PQ GOTO NLOOP NEND1 PA29 = [PZ - PA28] (AMOUNT LEFT IN Z AFTER DO LOOP) IF [PA29 EQ 0] NFLAT (IF AT Z DEPTH GOTO FLAT BOTTOM) G3 I=-[PA5] Z=PA29 (HELIX TO Z DEPTH) NFLAT G3 I=-[PA5] (FLAT BOTTOM) G90 G3 X=PX Y=PY I=-[PA6] J0 (ROLL OFF TO X0 Y0) G0 G90 Z=VC104 (RAPID TO INITIAL) G=PA8(BACK TO G90/91) RTS |
|
#5
| |||
| |||
| Thanks everybody for your help. I'll try some ideas and let everyone know what works. I have been doing standard g-code programming for about 8 years. Most of the programming is using just subprograms on a Fanuc control and conversational and gcode on a Mazak. I just started a new job and i'm learning the Okuma control. I like it but it's time for me to get off my rear and learn about the user task. Any tips and suggestions on where to start would help me out alot. Again Thanks. Rocky |
| Sponsored Links |
|
#6
| |||
| |||
| Base on the sample you posted I'm not so sure if a simple macro is just what you need, anyway here's something that will work base on what you give me. (VC1=DIA , VC2= pitch, VC3= Z Depth......need to set these 3 values in commom variable page) VC101=VC1/2 VC102=ABS[VC2] VC103=ABS[VC3] G15Hxx ( your fixture offset here) X0Y0Z0 G56Hxx X0Y0Z0 (your tool length offset) SxxxxM3 NLOOP G1 X=VC101F20. ( add cutter comp if you like) G17G3 X=VC101 Y0 Z=-VC102 I=-VC101 J0 VC102=VC102+VC2 IF [VC102 LE VC103] NLOOP G17G3 X=VC101 Y0 I=-VC101 J0 G1X0 G0Z1. G53Z0 M2 |
|
#7
| |||
| |||
| Thanks for another response. I was extremly busy today and couldn't find time to try some of the stuff. Hopefully Monday I will and should have time. While i'm getting responses i'll keep asking. Again, thanks. I would like to basically make a variable program that will step down in given incraments. Should be very simple but that's what I would like to start learning from. Basically lets make a rectangle pocket in several passes. I would also like to have a radius on all four corners. I have a pocket milling program in the control but it is limited to only starting in the middle and work its way out. Works great when all the material needs to be taken out. But I just came across a job where I had to put a square pocket inside a bore. When using the pocket milling program it was cutting alot of free air. I removed that and gcoded it out using a subprogram and depths. It works but seems silly. Any ideas let me know. rect size side1 = 1.0 side2 = 2.0 depth = 1.0 steps per pass .15 start position should be adjustable Have an option of leaving material on the bottom for cleanup. Sides can be controlled through cutter comp. Let's see what happens! Thanks, Rocky |
|
#8
| |||
| |||
Rocky... We got our first Okuma 5 months ago. We use the OSP-200M control, what is yours? I've not used it yet but have you seen RMILI. This mills around (what I call a frame) a rectangular profile. It steps radially rather than axially though. I wrote internal/external frame macro's with corner rads/chamf for our Fanuc's which step down like you want, but I've not had time to convert them into Okuma style macro's. This is from the manual, refering to RMILI...... 7. Round Milling Functions (RMILO, RMILI) [Function] The round milling function uses the specified coordinate values as a reference point and cyclically machines the rectangle specified by the X- and Y-axis lengths (I and J), which has stock Q to be removed at the level finish allowance (K) above the finish surface level (Z). There are two types of round milling functions as indicated below: • RMILO in which the external side of the defined rectangle is machined • RMILI in which the internal side of the defined rectangle is machined [Programming format] ME33018R0401100170001 RMILO - External Cutting • The first positioning point (A) is the point where the cutter periphery is 5 mm (0.20 in.) away in the longitudinal direction, and in the crosswise direction, the cutter is infed by the specified cutting width from the edge of the blank workpiece. X : X coordinate value (x) of reference point If omitted, the X coordinate value of the current point is regarded as that of the reference point. Y : Y coordinate value (y) of reference point If omitted, the Y coordinate value of the current point is regarded as that of the reference point. Z : Position of finish surface (z) In the G90 mode: Height from the programming zero to the finish surface level In the G91 mode: Distance from the point R level to the finish surface level I : Length of the rectangle to be cut along the X-axis (dx) Length referenced to the reference point (x) J : Length of the rectangle to be cut along the Y-axis (dy) Length referenced to the reference point (y) K : Finish allowance (fl) If omitted, "fl = 0" is regarded. P : Cutting width expressed in percent (%) Ratio, in percentage terms, of the cutting width to the cutter diameter. Although the ratio is expressed as a percentage, the percent symbol (%) must not be specified. If omitted, "P70" (70%) is assumed to apply. As will be explained later, the command value is slightly different from the actual cutting width. Q : Stock to be removed (dp) If omitted, the cutter reaches the surface "finish surface position + finish allowance (K)" in a single cut. RMILO RMILI X ± x Y ± y Z ± z I ± dx J ± dy kfl P% Qdp R ± rz Dnn F__ FA__ Number of cuts: The number of cuts repeated to reach the level indicated above is calculated as indicated below. n = Fup Cutter radius compensation amount 2 100 p Q - K ∗ : Fup indicates the processing to round up decimal fractions. R : Rapid retraction level (rz) D : Cutter radius compensation number (nn) F : Feedrate Feedrate used for machining the external or internal circumference of the defined rectangle FA : Feedrate Feedrate used when infeeding the Z-axis from the point R level to the finish surface (+ finish allowance K). If omitted, "FA = 4 x F" is assumed to apply. |
|
#9
| ||||
| ||||
| I have an Okuma MA600HB Machining Centre and developed a Helical milling macro many years ago. This subroutine allows us to easily and very quickly program a hole of virtually any diameter with any appropriate tool. As long as the tool will allow helical ramping it will be able to be used in this routine. I have set up a G Code macro link on the machine to link the library subroutine OHELI to G103... refer your manuals if you do not know how to do this... or ask me and I will post instructions for you. anyway... the library file contains the following code in a file called HELLIMILL.LIB (on the machine) OHELI (MILL HELICAL SUBROUTINE) IF [PD EQ EMPTY ] NALM2 IF [PE EQ EMPTY ] NALM3 IF [PF EQ EMPTY ] NALM4 IF [PP EQ EMPTY ] NALM5 IF [PW EQ EMPTY ] NALM7 IF [PZ EQ EMPTY ] NALM8 IF [PR EQ EMPTY ] NALM9 N2 TODR=PD/2 (RADIUS OF MAJOR DIAMETER) N4 RATE=VSCOD*PE*PF (CALCULATE LINEAR FEEDRATE) N8 DPTH=PW-PZ (ACTUAL DEPTH OF HOLE) N10 QTYP=DPTH/PP (QUANTITY OF PASSES REQUIRED TO MILL THREAD) N12 QTYP=ROUND[QTYP+0.5] (ROUNDUP THE NUMBER OF PASSES) N14 PTCH=[DPTH/QTYP]*-1 (CALC ACTUAL PITCH REQ) N16 PASS=0 (COUNTER FOR NUMBER OF PASSES MILLED) N18 G0 Z=PR (RAPID TO "R" PLANE) N20 G1 Z=PW F6000. (FEED TO "W" WORKING SURFACE) N22 G91 G41 DA X=TODR Z0 F=RATE (MOVE FROM CENTRE OF HOLE TO DIAMETER, TURNING ON CUTTER RAD COMP) NJP1 G3 X0 Y0 I-[TODR] J0 Z=PTCH F=RATE (FULL PITCH) N24 PASS=PASS+1 (INCREMENT COUNTER) N26 IF [PASS LT QTYP] NJP1 (JUMP BACK TO NEXT PASS CONDITION) N28 G3 X0 Y0 I-[TODR] J0 (FULL CIRCLE CLEANUP) N30 G1 G40 X-[TODR] Z0 F=RATE*5 (BACK TO CENTRE) N32 G0 G90 Z=PR (CLEAR HOLE) N34 GOTO NEND NALM2 VNCOM[1]=1 MSG(MISSING DATA "D") M00 NMSG VNCOM[1]=0 GOTO NEND NALM3 VNCOM[1]=1 MSG(MISSING DATA "E") M00 NMSG VNCOM[1]=0 GOTO NEND NALM4 VNCOM[1]=1 MSG(MISSING DATA "F") M00 NMSG VNCOM[1]=0 GOTO NEND NALM5 VNCOM[1]=1 MSG(MISSING DATA "P") M00 NMSG VNCOM[1]=0 GOTO NEND NALM7 VNCOM[1]=1 MSG(MISSING DATA "W") M00 NMSG VNCOM[1]=0 GOTO NEND NALM8 VNCOM[1]=1 MSG(MISSING DATA "Z") M00 NMSG VNCOM[1]=0 GOTO NEND NALM9 VNCOM[1]=1 MSG(MISSING DATA "R") M00 NMSG VNCOM[1]=0 NEND G90 RTS % To use the program, follow the example below Helical Milling Programming MA600 Definitions: G103 G Code for the Helical program VIA G-Code Macro setting. G100 Cancel Subprogram same as using G80 for std drilling cycles D Hole Diameter E Number of Flutes on the cutter F Feed rate per Flute P Z amount per rev. Pitch, in MM R Reference Z Height W Top surface of hole (Z). Z Depth of hole. Sample program: Mill a hole 62mm diameter 70mm deep using a 4 flute 40mm diam tip tool. N1 M3 S1432 N2 M8 N3 G0 Xstartpos Ystartpos N4 G56 HA Z700 N5 Z20. (reference height) N6 G103 D62 E4 F0.15 P4. R20. W0. Z-70. N7 Xpos Ypos N8 Xnext Ynext or N9 ARC or BHC or LAA... N10 G100 N11 G0 Z20. N12 M5 N13 M209 N14 Z700 N15 M6 N16 M1 ... As you might be able to see, the use of the helical milling routine is as simple as drilling a hole! The main tricks to remember when using the G103 command is to not just position at the first point and call the routine, as in like a drilling cycle, and then list the points for the next hole... but to list the first point and all other points on the line after the G103 line and make sure you cancel the cycle with a G100! I have included comments for most lines to explain what they do... the bulk of the library file is actually taken up with alarm statements to help the user at the machine if any part of the G103 command is missing. As the macro uses incremental mode for machining the hole, you can position the tool anywhere on the job and call this routine very easily. I have found this macro to be VERY handy and a very fast way of programming helical milled holes. Let me know if you find it useful. Regards Brian. |
|
#10
| |||
| |||
Excellent macro Brian. Gonna try it as soon as I can. It's a bit more in depth, regarding next hole positions, than my macro. I'm new to Okuma and thought when setting local varibles you had to use "P" and "=".....eg PX=0.... Mine.....CALL OG13 PX=0 PY=0 PI=0 PD=0 PZ=0 PR=0 PQ=0 PF=0 Brian's....G103 D62 E4 F0.15 P4. R20. W0. Z-70. Also can you explain this line... N4 G56 HA Z700 How does the "A" relate to a tool length offset? Must read more of the manual. |
| Sponsored Links |
|
#11
| ||||
| ||||
Therefore, to overcome this problem we must use "Active" tool coding. i.e. HA refers to the tool length offset for the tool in the spindle (or the "Active" tool). You have three offset positions you can refer to with each tool, HA/HB/HC and radius offsets via DA/DB/DC. See attached PDF file showing a picture of what I am talking about. With regards to the use of "P" in macro programming on the Okuma Mills, you need to use "P" in front of a single letter variable that is passed in via a G code macro, as in my example, but only in the subroutine. That is why you see my subroutine start of with a series of checks to see if all required parameters have been set in the G103 line. So using the example I have given... G103 D62 E4 F0.15 P4 R20 W0 Z-70 the subroutine picks up the parameters to the G103 command as follows: D is passed into variable PD E into PE F into PF P into PP R into PR W into PW Z into PZ in the subroutine you use the "Px" variable rather than the single letter code name as stated on the G103 line. Hope this helps Regards Brian. |
![]() |
| 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 |
| Tornado 200 lathe | Noddy71 | Colchester Tornado lathes | 5 | 07-17-2008 09:50 PM |
| Need Help!- Matrix Mazatrol Tornado Mill Unit | LarryA | Mazak, Mitsubishi, Mazatrol | 3 | 03-23-2008 01:01 PM |
| Incremental circle milling sub program | Diggs | G-Code Programing | 25 | 01-07-2008 06:03 PM |
| mill, on Final pass making a circle bit tries to reverse into stock. help! | phillip | Mach Mill | 8 | 08-06-2007 11:12 PM |
| Circle Calc Program | Al_The_Man | G-Code Programing | 5 | 06-14-2007 06:50 PM |