In this blog post, an experienced mechanical engineer shares insider tips and techniques for mastering Fanuc CNC lathe commands. Discover how to optimize your CNC programming skills, boost productivity, and take your machining projects to the next level.
G00▲: Quick Point Positioning
G00 X__Z__
G01: Linear Interpolation
G01 X__Z__F__
G01: Bevel or Fillet Command
G01 X(U) Z(W) C
G01 X(U) Z(W) R
The values of X (U) and Z (W) represent the coordinates of the hypothetical intersection point between adjacent lines AD and DE within the workpiece coordinate system, where X and Z are the absolute coordinate values, and U and W are the incremental coordinate values. The C value signifies the distance relative to the chamfer starting point. The R value denotes the radius of the fillet arc.
G02: Clockwise Arc Interpolation
G02X__Z__R__F__
G02X__Z__ I__K__ F__
R represents the radius of the arc. When the central angle of the arc ranges from 0° to 180°, R assumes a positive value; for a central angle between 180° and 360°, R takes on a negative value. I and K denote the incremental coordinates of the arc’s center relative to the X and Z axes from the starting point of the arc, that is, the center’s coordinates subtract the starting point coordinates (I is represented by the radius value). When I and K are zero, they can be omitted.
G03: Counter-clockwise Arc Interpolation
G03 X__Z__R__F__
G03X__Z__ I__K__ F__
Identical to G02.
G04: Pause
G04 X1.5; or G04 P1500; P without a decimal point.
G07.1 (G107): Cylindrical Interpolation
G07.1IPr (Effective); G07.1IP0 (Cancellation);
G10▲: Programmable Data Input
G10 P __X__ Z__R__ Q__
G11: Cancellation of Programmable Data Input
G12.1 (G112): Polar Coordinate Instruction
G13.1▲: Cancellation of Polar Coordinates
G17: Selection of XY Plane
G18▲: Selection of XZ Plane
G19: Selection of YZ Plane
G20: Inch Input
G21: Millimeter Input
G22: Enable Stored Stroke Detection
G23: Disable Stored Stroke Detection
G27: Reference Point Return Check
G27 X(U) Z(W)
The tool is checked for its return to the designated X, Z coordinates as specified in the program, using the G00 command. If the return is accurate, the indicator light illuminates. However, discrepancies result in system alarms on the machine tool.
G28: Automatic Return to Reference Point
G28 X(U) Z(W); X and Z are the points passed during the return process.
G29: Return to the reference point
G29 X(U) Z(W)
From the reference point, passing through the midpoint to the specified X and Z positions, the midpoint is the point designated by G28, hence, this command can only appear after G28.
G30: Return to the set point
G30 P2/P3/P4 X Z
P2, P3, P4 represent the 2nd, 3rd, and 4th reference points respectively, while X and Z are the intermediate points.
Meaning: The tool passes through the intermediate points to reach the positions of the 2nd, 3rd, and 4th reference points.
G31: Jump function
G32: Equal pitch threading
G32X(U)_Z(W)_F_Q_
G32 Z(W) F; (Cylindrical thread)
G32 X(U) F; (End face thread)
G32 X(U) Z(W) F; (Conical thread)
Note:
1. When programming, the cut-in and cut-out segments should be incorporated into the thread turning program.
2. For machining conical threads, when the angle α is less or equal to 45 degrees, the thread lead is specified in the Z-axis direction; when the angle α is greater than 45 degrees and less or equal to 90 degrees, the thread lead is specified in the X-axis direction.
3. Q represents the starting angle of the thread, without a decimal point, and the unit is 0.001°.
G34: Variable Pitch Thread
G34 X(U) Z(W) F K ; (Conical thread)
K represents the increment (positive value) or decrement (negative value) of the pitch per revolution, the rest is the same as G32.
G36: Automatic Tool Compensation X
G36 X
G37: Automatic Tool Compensation Z
G37 Z
G40: Tip Radius Compensation Cancellation
G41: Left offset for tool tip radius
G41(G42)G01(G00) X Z F
G40 G01(G00) X Z F
For the front tool holder, the external circle is G42 with position number 3, and the boring hole is G41 with position number 2. The following figure shows the position number for the front tool holder, with positions 2 and 3, and 1 and 4 reversed on the rear tool holder, while the rest remains the same.
G42: Right offset for tool tip radius
G50: Coordinate system setting or maximum speed limit
G50 X Z or G50 S
G50.3: Workpiece coordinate system preset
G50.2: Polygon turning cancellation
G51: Polygon turning
G52: Local coordinate system
G52 X20 Z20: The X\Z values represent the position of the local coordinate system origin within the original workpiece coordinate system.
If G52 X0 Z0: this cancels the local coordinate system, restoring the original coordinate system origin.
G53: Selection of machine tool coordinate system
Deselect the workpiece coordinate system and choose the machine tool coordinate system.
(G90) G53 X_ Y_ Z_: it’s valid in the absolute command (G90), but invalid in the incremental command (G91).
Note:
(1) The tool diameter offset, tool length offset, and tool position offset must be canceled prior to assigning its G53 command. Otherwise, the machine tool will move according to the assigned offset values.
(2) Before executing the G53 command, manually or using the G28 command, return the machine tool to the origin. This is because the machine tool coordinate system must be set before issuing the G53 command.
G54▲: Selection of workpiece coordinate system 1
G54; Power on by default.
G55-59: Selection of workpiece coordinate systems 2-6
G65: Non-modal call of macro program
Class A uses the FANUC 0TD system, while Class B uses the FANUC 0I system.
Local variables are #1-#33, shared variables are #100-#149, #500-#549, and system variables are #1000 and above.
Macro programs end with M99, and can be invoked with M98 or “G65 P(program number)L(count)”.
The format for Class A programs is: G65 H(a)P(b)Q(c)R(d), where a is the H code, b is the result variable, and c, d are two operation variables.
Class B macro program operation command.
Assignment | #i=#j | Floor function | #i=FUP[#j] |
Addition | #i=#j+#k | Natural logarithm | #i=LN[#j] |
Subtraction | #i=#j-#k | Exponential function | #i=EXP[#j] |
Multiplication | #i=#j*#k | Or | #iOR#j |
Division | #i=#j/#k | Exclusive or | #iXOR#j |
Sine | #i=SIN[#j] | And | #iAND#j |
Inverse Sine | #i=ASIN[#j] | BCD to BIN conversion | #i=BIN[#j] |
Cosine | #i=CON[#j] | BIN to BCD conversion | #i=BCD[#j] |
Inverse Cosine | #i=ACON[#j] | Equals | EQ |
Tangent | #i=TAN[#j] | Not equal to | NE |
Inverse Tangent | #i=ATAN[#j]/[#k] | Greater than | GT |
Square Root | #i=SQRT[#j] | Greater than or equal to | GE |
Absolute Value | #i=ABS[#j] | Less than | LT |
Rounding | #i=ROUND[#j] | Less than or equal to | LE |
Ceiling | #i=FIX[#j] |
Control command: GOTO n – Unconditional jump
IF [condition expression] GOTO n – Conditional jump statement
WHILE [condition expression] DO m (m=1, 2, 3…) – Loop command
…
END m;
G66: Macro Program Modal Invocation
G67: Macro Program Modal Invocation Cancellation
G70: Internal and External Cylindrical Fine Turning Compound Fixed Cycle
Programming Format: G70 P(ns) Q(nf)
Where:
Notes:
(1) The G70 command cannot be used independently; it must be combined with G71, G72, G73 commands to complete the precision machining fixed cycle, i.e., after rough turning the workpiece with G71, G72, G73 commands, G70 is used to specify the precision turning fixed cycle, removing the allowance left by rough machining.
(2) In this case, the F, S, T commands in the G71, G72, G73 program segments are invalid; only the F, S, T in the ns~nf program segments are effective. When the F, S, T commands are not specified in the ns~nf program segments, the F, S, T of the rough turning cycle are effective.
G71: Internal and External Cylindrical Fine Turning Compound Fixed Cycle
Programming Format: G71U (△d) R(e);
G71 P(ns) Q(nf) U (△u) W(△w) F S T ;
Where:
(1) When the above instruction is used for inner contour machining of the workpiece, △u should be a negative value.
(2) When using G71 for roughing, only the F, S, T functions included in the G71 program segment are effective. The F, S, T functions included in the ns~nf program segment are ineffective for the roughing cycle, even if they are specified. Tool compensation can be performed, and the tool tip radius compensation can be programmed before G70, usually incorporated in the motion approaching the starting point. For example: G42G00X55Z2; G70P10Q20; G40G00X100Z50;
(3) This instruction is applicable where there’s a monotonic increase or decrease in the Z coordinate, and the X coordinate also changes monotonically. The Ns program segment must advance along the X axis, and Z values should not appear.
G72: End-face Rough Turning Composite Fixed Cycle
Programming format: G72W (△d) R(e);
G72 P(ns) Q(nf) U (△u) W(△w) F S T ;
2. d: Z-direction back-cutting amount, without a sign; other parameters are the same as G71. The Ns program segment must feed in the Z direction and cannot contain an X value. When the above command is used for internal contour machining of the workpiece, △u should be a negative value.
Example: As shown in the figure, its program list is:
G73: Contour Duplication Cycle
Programming Format: G73 U(△i) W(△k) R (d);
G73 P(ns) Q(nf) U (△u) W(△w) F S T ;
d: Represents the number of cycles in rough turning (layer count);
△i: During rough turning, the total allowance to be removed in the X-axis direction (tool withdrawal amount) and direction, radius value. That is: the raw size minus the smallest workpiece size divided by 2. The hole is a negative value.
△k: During rough turning, the total allowance to be removed in the Z-axis direction (tool withdrawal amount) and direction; △k is generally zero. The rest is the same as the G71 command.
G74: End-face Grooving Cycle / Drilling Cycle
G75: Radial Grooving Cycle
Programming Format: G75R (e);
G75 X (U) Z(W) P(Δi) Q(Δk) R (d)F;
Note:
1. The final depth and the final Z-direction offset are calculated by the system itself.
2. Δi, Δk are the minimum programming units, for instance, P1500 means a cut depth of 1.5 mm.
G76: Thread Cutting Compound Cycle
G76 P(m)(r) (α) Q(△d min) R(d)
G76 X(U) Z(W) R(i) P(k) Q(△d) F(L)
G90: Cylindrical/Conical Surface Single Fixed Cycle
G90 X(U) Z(W) R F;
R indicates half of the difference between the X-coordinate at the start point and the X-coordinate at the end point of the conical surface cutting. It can be negative, where negative indicates a regular cone and positive indicates an inverted cone. Without R, it is cylindrical cutting. Cutting Speed: G00 – G01 – G01 – G00.
G92: Thread Cutting Cycle
G92 X(U) Z(W) F R;
R = (X start point – X end point) / 2. R is non-modal and must be included in every sentence.
G94: End Face Cutting Cycle
Command format: G94 X(U) Z(W) F;
Tapered end face cutting command format: G94 X(U) Z(W) K F
Where, X, Z represent the absolute coordinate value of the cutting segment endpoint;
U, W represent the coordinate increment value of the cutting segment endpoint relative to the cycle start point; F represents feed rate. K represents the difference in Z-coordinate values between the start and end points of the cutting segment (usually a negative value), i.e., K=Z start point – Z end point.
G96: Constant linear speed execution
M3S300; Initial speed
G50S1000; Maximum speed limit 1000
G96S100; Spindle speed 100m/min
…
G97▲: Cancellation of constant linear speed, speed termination.
G97 S300; Cancellation of constant linear speed, speed is 300r/min
G98: Feed per minute
Unit: mm/min Example: G98 G01 X20 F200
G99▲: Feed per revolution
Unit: mm/rev Example: G99 G01 X20 F0.2;
M00: All actions stop.
M01: Program selection stop
Must press: Select stop key for it to be effective, equivalent to M00;
M02: Program termination
Cursor does not return.
M03/M04: Spindle forward (clockwise) / reverse (counter-clockwise)
M03 S300;
M05: Spindle stop
M08/09: Coolant on/off
M30: Program termination
Cursor returns to program start.
M98: Subroutine invocation
Programming format: M98 PxxxxL ;
or M98 Pxxxxxxxx ;
M99: Return to main program
In this, the four digits following the P address after calling represent the subroutine number, the call following the L address represents the call times. When the call times is 1, it can be omitted, and the repeated call times allowed is up to 999. When the eight digits follow the P address, the first four represent the call times, and the last four represent the subroutine number. When the call times is 1, it can be omitted.
If M99 P100; represents returning to the main program N100 program segment, if the subroutine performs M99 L2, it means the subroutine is forced to execute twice, regardless of how many times the main program requests.
T××××: Tool command
In T0101, the first two digits represent the tool number, while the last two digits denote the tool compensation number.