[Home]G12-13

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Showing revision 8
G12 G13 spec as used by Haas

G12 Circular Pocket Milling CW / G13 Circular Pocket Milling CCW (Group 00)
These two G codes are used to mill circular shapes. 
They are different only in which direction of rotation is used. 
Both G codes use the default XY circular plane (G17) and imply the use 
of G42 (cutter compensation) for G12 and G41 for G13. 
These two G-codes are non-modal.

 *D Tool radius or diameter selection
 I Radius of first circle (or finish if no K)
   I value must be greater than Tool Radius, but less than K value.
 K Radius of finished circle (if specified)
 L Loop count for repeating deeper cuts
 Q Radius increment, or stepover (must be used with K)
 F feedrate in inches (mm) per minute
 Z Depth of cut or increment

NOTE: If no cutter compensation is desired, a D00 must be specified. 
If no D is specified in the G12/G13 block, 
the last commanded D value will be used, 
even if it was previously canceled with a G40.

The tool must be positioned at the center of the circle using X and Y. 
To remove all the material within the circle, 
use I and Q values less than the tool diameter and 
a K value equal to the circle radius. 
To cut a circle radius only, use an I value set to the radius and no K or Q value.

 Example
 T1M06
 G54 G00 G90 X0 Y0 (Move to center of G54)
 G43 Z0.1 H01
 S2000 M03
 G12 I1.5 F10. Z-1.2 D01 (Finish pocket clockwise)
 G0 Z0.1
 G55 X0 Y0 (Move to center of G55)
 G12 I0.3 K1.5 Q0.3 F10. Z-1.2 D01 (Rough and finish clockwise)
 G0 Z0.1
 G56 X0 Y0 (Move to center of G56)
 G13 I1.5 F10. Z-1.2 D01 (Finish pocket counterclockwise)
 G0 Z0.1
 G57 X0 Y0 (Move to center of G57)
 G13 I0.3 K1.5 Q0.3 F10. Z-1.2 D01 (Rough and finish counterclockwise)
 G0 Z0.1
 G28
 M30

--------------------------------------

Circular Pocket as done by Anilam

 G77 Xn Yn Hn Zn Dn An Bn In Sn Kn Pn
 X = X center
 Y = Y center
 H = Start Height
 Z = Z depth
 D = Diameter
 A = Stepover
 B = Depth of Cut
 I = Rough Feed
 S = Finish Stock
 K = Finish Feed

Programming a Circular Pocket Cycle
Circular Pocket cycles simplify the programming required to mill out a circular pocket. 
When executed, the CNC rapids to the center, rapids to the StartHgt, 
then ramps into the work while circling outward. 
Once the tool reaches the pocket Diameter, the tool circles back toward the center 
until the pass is complete.

The Circular Pocket Cycle automatically compensates the tool’s diameter.
The correct tool diameter must be activated before or within the CircPock block.

If DepthCut is keyed in, the CNC executes the number of passes required to 
get from the StartHgt to the ZDepth, cutting the DepthCut on each pass.

NOTE: The program editor will allow the operator to write a block even if 
the positions keyed in are illogical. The control will stop a program and 
generate a message at an illogical block for safety. 
Test programs with Draw to find any illogical blocks.

When FinStock is used, the CNC leaves the specified stock 
on the profile and depth for a finish pass. 
The profile is cut to the Diameter and ZDepth dimensions on the finish pass. 
If a negative FinStock value is keyed in, CNC will leave the finish stock 
and not add a finish pass.

3. Fill in the CIRCULAR POCKET entry fields, labeled as follows:

XCenter
X coordinate of the center. If no coordinate is entered, 
pocket is centered at present position (optional).

YCenter
Y coordinate of the center. If no coordinate is entered, 
pocket is centered at present position (optional).

NOTE: It is recommended the desired absolute center coordinates be entered when possible.

StartHgt
The absolute Z position the CNC rapids to before feeding into work (value required).
NOTE: StartHgt is 0.100 inch (2.0 mm) above the surface to be cut.

ZDepth
The absolute depth of the finished hole (value required).
NOTE: ZDepth must be lower than StartHgt.

Direction
This setting allows the operator to choose between 
a clockwise (Cw) or counter clockwise (Ccw) direction. 
The setting is toggled by using the (+/-) key (selection required).

Stepover
Width of cut. If no value is entered, 
CNC defaults to 70% of the active tool radius. 
Maximum stepover permitted is 70% of the active tool diameter (optional).

NOTE: The program editor will allow the operator to write a block 
containing a Stepover value greater than 70% of the active tool radius. 
Testing a program in the Draw Graphics Mode will reveal this type of error. 

DepthCut
Depth the machine takes in a single pass. 
Defaults to a single ZDepth cut minus the finish stock if no position is entered (optional).

FinStock
Amount of stock left by the machine before the finish pass. 
Zero is assumed if no value is keyed in. If a negative value is keyed in, 
the CNC will leave the stock, but not make a finish pass (optional). 

RoughFeed
Rough pass feedrate (optional). 

FinFeed
Finish pass feedrate (optional). 

Tool#
Active tool (optional).

--------------------------------------
This Script Equals to G13 in the most and needed parts! D the Toolofst is not includet so it is zero line but,
you can G41 D(tool) to the Final Circel!
upload:circular_spiral_pocket_subroutine.ngc
upload:drill.py
(Circular Spiral Pocket)
#1=3.000	(tooldiameter)
#2=30.000 	(Diameter)
#4=15.000	(centerX)
#5=15.000	(centerY)
#6=-5.000 	(Final Depth)
#7=2.000	(safeZ)
#8=1.35 	(stepover R)
#9=-2.000	(stepover Z)
#10=100.00 	(feedrateZ)
#11=200.00 	(feedrateXY)
(calculate How many times into while)
#20=FIX[[[#2-#1]/#8]/2]
(Preamble)
G17 	(XY Plane)
G21	(Metric) 
G90	(Absolute) 
G61	(Exact Path)

(spiral)
G0 X#4 Y#5
G0 Z#7
G1 Z0 F#10 (Move to Zero Z to start increment Z Cycle)
O95 while [#6 lt 0]
   O97 If [#6 lt #9] 
	G1 G91 Z#9 
   O97 else
        G1 G91 Z#6
   O97 endif
#6=[#6-#9]
#30=#8
#31=1.0
#21=1
G1 G90 X[#4+#30] F#11
O10 while [#21 lt #20]
G3 X[#4-[#21*#8]] I-[[#31*#8]]
#31=[#31+0.5]
#21=[#21+1]
G3 X[#4+[#21*#8]] I[[#31*#8]]
#31=[#31+0.5]
O10 endwhile
G3 X[#4-[#2/2.0]+[#1/2.0]] Y#5 I-[[[#4+[#21*#8]]-[#4-[#2/2.0]+[#1/2.0]]]/2.0]
G3 I[[#2/2.0]-[#1/2.0]]
G1 G90 X#4 Y#5
O95 endwhile
G0 G90 Z#7
M5 
M30




LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions | View current revision
Edited August 9, 2010 10:54 am by Jthornton (diff)
Search:
Published under a Creative Commons License