The Basics of CNC Machining Programming (For Lathe) : Computerized Numerical Controller (CNC)
The Basics of CNC Machining Programming (For Lathe) : Computerized Numerical Controller (CNC)
The Basics of CNC Machining Programming (For Lathe) : Computerized Numerical Controller (CNC)
This course is intended for the persons who operate the lathe machine tools
with CNC (computer numerical control) equipment.
This course provides you with the basic knowledge required when working with
the CNC lathes.
Click the Forward button in the upper-right of the screen to proceed the course.
BNP-C8027-688*
Introduction Objectives of this course
This course describes the basic knowledge of CNC Lathe machining program and how to use the common instructions to the
CNC control.
The goal of this course is to help you to be able to prepare the basic machining program with referring the manuals of your
CNC or machine tool.
Introduction Contents of this course
The contents of this course are as shown below.
The terms and commands you should know before learning CNC programming
Final test
In case you attempt to verify your program with machine tool, be educated about the operations and safety of your
machine tool and be thoroughly familiar with your machine tool prior to using.
Note that the CNC instruction format may vary from one MTB to the next because they have to meet them to their own
specific features of the machines.
Thus, the CNC functions and command formatting shown in this course may NOT be applicable to the ones used on your
machine tool.
In this case, please give the first priority on the manual issued by your machine tool builder.
Chapter 1 The basic knowledge for programming
This chapter discusses the terms and commands you should know before learning CNC programming.
Spindle
Chuck
Work Cutting tool (single point tool)
piece
Tool post
Feed screw
X axis
+ direction of motion
Cutting tool (single point tool)
X axis
Z axis Z axis
- direction of motion + direction of motion
X axis
- direction of motion
Z axis
Chuck Workpiece
1.3 Format of machining program
Machining program is a measure to tell the CNC how and in which order it makes the machine tool move.
The primary unit of CNC command that constitutes the machining program is made in the combination of an alphabetical
letter and the numerical value.
This primary unit (alphabetical letter + numerical value) is called a “word”.
The alphabetical letter at the head of a word is called an “address”.
Word
G28
X-1.234
Alphabet Numerical value
(Address)
1.3 Format of machining program
In the formatting of machining program, one or more “words” (commands) constitute one line.
The sign of new line at the end of a line is shown as “;” on CNC display screen.
One line of machining program is called a “block”.
Write “%” at the end of the machining program.
Word
N2 G28 W0 ;
N3 G50 S2000 ;
N4 T0101 ; Block
N5 G96 S180 M03 ;
N6 G00 X10. Z5. M08 ;
N7 G99 G01 Z-5. F0.3 ;
:
% End of program
1.4 Address
Let’s discuss the various “address” that composes each word prior to looking into the primary unit of machining program
“word”.
Address has the specific name and meaning as shown below.
Address Applications
G28
N Block line identification
Preparatory-purpose
G
command
X,Z Point designation to which
U,W the axis moves
X-1.234
F Feedrate/speed designation
S of the axis
T Tool Designation
M Miscellaneous function
Next, let’s discuss how to use the “word”, the combination of address letter and numerical value.
1.5 Sequence Number
“N” is the address to be used to visually identify a certain machining content (block) by the programmer/operator.
“N” is called as “Sequence number” when accompanied by the numerical value.
This sequence number can be used to identify the location of the executing block of the program.
The display screen of the CNC control shows the status of the CNC operation.
When you run a program, the sequence number of currently running block will appear on the display.
Note that the sequence number on the screen is retained even after it is executed, so the latest sequence number the control ran will
appear even while the control is running other blocks with no sequence numbers (N).
N1 G28 U0 ;
N2 G28 W0 ;
N3 G50 S2000;
N4 T0101 ;
N5 G96 S180 M03 ;
N6 G00 X10. Z3. ;
:
Example of G code
G code Group Description
G00 01 Positioning (Rapid motion command)
G01 01 Linear interpolation (Cutting feed command)
G02 01 Circular interpolation (Clockwise)
G03 01 Circular interpolation (Counterclockwise)
: : :
G04 00 Dwell
: : :
G17 02 Plane selection, X-Y
G18 02 Plane selection, Z-X
: : :
G98 05 Feed per minute
G99 05 Feed per revolution (Synchronous feed)
: : :
1.6.1 Preparatory function (G code): Modal and non-modal (unmodal)
G codes can be roughly classified into two. Let’s see this using switch analogy.
Modal command
The G codes other than group 00, such like group 01 or 02, are to be used to restate the mode within the same group. These G codes are
called Modal command.
You do not have to restate the modal command except when you need to change the modal.
G02
Group01: Specify the preparatory function
G01 G03 G code Group Description
G00 01 Positioning (Rapid motion command)
G00 ・・・ G01 01 Linear interpolation (Cutting feed command)
G02 01 Circular interpolation (Clockwise)
G03 01 Circular interpolation (Counterclockwise)
: : :
Non-modal (unmodal) command
G code in Group 00 is only valid within one block. This kind of G code is called Non-modal (unmodal) command.
Non-modal (unmodal) command must be repeatedly written for every block even when commanding the same instructions.
G04 G code Group Description
G00 01 Positioning (Rapid motion command)
G01 01 Linear interpolation (Cutting feed command)
Commanded ON
G02 01 Circular interpolation (Clockwise)
G03 01 Circular interpolation (Counterclockwise)
: : :
Not OFF G04 00 Dwell
commanded
* G04 (Dwell) is a non-modal (unmodal) G code that provides the dwell period for the axis move.
See 2.8 for the detail of dwell command.
1.7 Spindle function (S code)
“S” is the letter address to be used to tell the control the spindle rotation speed.
The word “S” accompanied by a numerical value is called spindle function, or S function.
The numerical value after the letter address is to specify the angular velocity of the spindle (rev/min) (number of revolutions
of spindle per minute).
When the speed of spindle is 500 revolutions per minute (500min-1), write as shown below.
S500 ;
The spindle cannot start rotation only by writing the S command.
To make the spindle start the rotation, add M03(clockwise rotation) or M04(counterclockwise rotation). (See 1.9 for detail of the command
using address letter M.)
To instruct the spindle speed and the start of clockwise rotation within one block, write as shown below.
S500 M03;
To stop the spindle rotation, command M05.
M05;
1.8 Tool Function (T code)
“T” is the address letter to be used to select the tool.
The word “T” accompanied by a numerical value is called the tool function or T code.
The four digit-numerical value after the address T runs the following two functions.
• Select tool
• Tool length compensation
6
T0202; 5 7
3
Tool number you want to use 1
… The turret moves to make the tool available to use.
2
1.9 Miscellaneous function (M code)
“M” is the address used to instruct the CNC control to perform miscellaneous functions of the machine tool such like the ON and OFF of
spindle (CW/CCW), turning on/off the coolant.
The word “M” accompanied by a numerical value is called the miscellaneous function or M code.
Example of M code
M code Function Description
M00 Program stop Halts the execution of the program.
M02 End of program Tells the control the end of execution of the machining program.
Spindle on
M04 Turns on the spindle rotation in counterclockwise.
(counterclockwise)
M05 Spindle stop Turns off the spindle rotation.
M30 End of program Tells the control the end of execution of the machining program.
* The machine behaviors and function assigned to each M code may vary from one machine tool to the next.
You must check in the machine tool builder's manual to determine a machine's behaviors and function prior to using M code.
1.10 Comment
Though this is not categorized to “word” discussed to this point, you can use “comment” function when you want to add the
description to describe the meaning or notes in your machining program.
The comment can be used to inform the other people of what the program is intended to do.
So it can be a help when you review your program later, or even when you read the program prepared by the other
programmer.
The description enclosed in the parentheses “(“ and “)” is regarded as the comment. You can use alphabet, numerical value,
and symbols to write the comment.
You can use whole of one line to write a comment. You can also add comment after writing a commands.
N1 G28 U0 ;
N2 G28 W0 ;
(COMMENT-1) ;
N3 G50 S2000 ;
N4 G40 G80 G54 G18 ;
N5 T0101 (COMMENT-2) ;
N6 G96 S180 M03 ;
:
Chapter 2 Positioning and interpolation
In this chapter, we will discuss the basic instructions needed to move axes.
In general, we choose the best mode depending on how the dimensions on a drawing are specified.
• Absolute mode: When the destination is being specified with its coordinates.
• Incremental mode: When the destination is being specified with the amount of motion relative to the current position.
Following shows how to determine which mode to choose when you move the tool from point A to point B.
Absolute mode Incremental mode
230 110
Move the tool to Move in positive
coordinates 230. direction 110 from
A B A B point A.
0 230 0 230
When using absolute mode, write the address letter(s) (X, Z) corresponding to the axis to move to specify the coordinates of the
destination.
The machining program shown below is the example when moving the tool tip from the current position of point A to point B, whose
coordinates is (X, Z)=(10.0, 20.0).
In absolute mode, the command to be used is identical in both cases either when moving the tool from point A to point B or when
moving from point A’ to point B.
X10. Z20. ;
X
40.
30. Point A X
Point A’
20.
10. Point B Z
Z
0 5. 10. 15. 20. 25. 30.
2.1.2 How to command position: Incremental mode
In incremental mode, we use address U and W as the axis address. Address U corresponds to X axis direction, and the address W to Z axis.
The machining program shown below is the example when moving the tool tip from the current position point A (20.0 , 5.0) to point B
(10.0 , 25.0).
You must use the address letters (U and W) respectively corresponding to the X-axis and Z-axis, and also the amount of motion
(Coordinates of point B - coordinates of point A)=(10.0-20.0, 25.0-5.0)=(-10.0 , 20.0). When the direction of motion is negative, add minus
(-) symbol to the amount of motion.
In incremental mode, the destination is specified by the amount of motion relative to the position at commanding, thus the command (U-
10. W20) moves the tool to point B when it is told at point A, but moves the tool to point B’ when it is told at point A’.
U-10. W20. ;
X(U)
30.
Point A Point A’
20.
-10.
Point B Point B’
10.
20. 20.
Z(W)
0 5. 10. 15. 20. 25. 30. 35. 40. 45. 50.
2.2 How to command position: Specify in diameter
In general, for the lathe machines the cylindrical workpiece, so the position along X axis is specified as the diameter-basis concept.
Following shows how to specify the position in X axis when you move the tool from point A to point B.
• When in absolute mode (X), two times of r1
• When in incremental mode (U), two times of r2
Diameter Z
X
Point A
r2
Point B Absolute mode: X2r1
r1 2r1
Spindle Z Incremental mode: U2r2
r1
2.3 How to command position: Use of decimal point in numerical value
CNC machine tool distinguishes in which unit the command are told, depending on the use of decimal point in the numerical
value after the address (such like X, Z, U, W and F) being used to specify the amount of motion, coordinates, angle, period of
time, or speed.
• With decimal point: in mm
• Without decimal point: in μm
The drawings are commonly written in mm, so add decimal point when preparing your machining program.
One of the most common failure in the machining program is to leave out the decimal point.
If the CNC control is told "X10" despite the programmer wanted to write X10.000, the CNC control behaves as it is told
"X0.010".
2.4 Positioning command: G00 (Rapid)
The tool moves to the specified position by X and Z (respectively U and W) within the command, and the type of motion is in
accordance with the G code.
When you want to rapidly move the tool without interfering with the workpiece, such as in the case the tool moves to the starting
point of machining on the workpiece, use G00 (Positioning) command. G00 is a command to move the tool to the specified position
at rapid rate and is also called rapid positioning command.
* The rapid rate is determined in the machine tool builder’s manual. You must check in the machine tool builder's manual for detail.
Together with G00, it is necessary to designate the destination point using X and Z or U and W.
When to run rapid positioning from point A to point B, tell the machine as shown below.
40.
Point
30. A
20. -20.
10. Point
15. B
Z
0 5. 10. 15. 20. 25. 30.
2.5 Linear interpolation: G01 (Cutting feed)
To perform cutting by the linear axis motion on the workpiece, G01 (Linear interpolation) command will be used.
Together with G01, it is necessary to designate the destination point using X and Z or U and W. Then the tool moves along a
straight line toward the destination point specified.
In G01 command, it is also necessary to specify the feedrate (F) to be applied during the axis move, in addition to the
instruction to move the axes.
* Details of feedrate will be discussed in 2.6.
When to run cutting operation from point A to point B along a straight line, tell the machine as shown below.
40.
Point A
30.
20. -20.
10. Point
15. B
Z
0 5. 10. 15. 20. 25. 30.
2.6 Feed rate (F command)
During G01 (Linear interpolation) presentation, we discussed that the G01 is used when the axis moves while performing the cutting
operation, and also mentioned that the feedrate applied in the cutting operation must be instructed.
To specify the feedrate, use the address letter F and the distance per revolution (mm/rev) (also called feed per revolution).
To specify the feedrate of G01 at 0.3mm per revolution in spindle, write as shown below.
:
For the target we discuss in this course is the lathe, the unit of the feedrate is presented in the distance per spindle revolution
(mm/rev). But in some cases, there are the machining operations that allows to use the unit in the distance per minute (mm/min)
(feed per minute).
To change the unit of the F command, use appropriate G code. Reference the machine tool builder’s manual or CNC manufacturer’s
manual for detail.
2.7 Circular interpolation : G02, G03
For the cutting operation in a straight line motion, we adopted G01 (Linear interpolation).
Now let’s discuss the command that is used for the cutting operation along a circular motion.
To perform cutting by the circular axis motion on the workpiece, G02 or G03 (Circular interpolation) command will be used.
G02 can run machining motion in the form of a clockwise (CW) arc path, on the other hand G03 in the form of a counterclockwise
(CCW) arc path.
As with G01, both G02 and G03 require the destination point (X and Z, or U and W) and feedrate (F).
Additionally, circular motion requires the radius of the arc being specified by programmer, using address letter R.
To run CW circular cutting operation from point A to point B at the radius of 15.0[mm], tell the machine as shown below.
40.
G02 Clockwise
30. Point B
R 15.
20.
10. Point A
G03 Counterclockwise
Z
0 5. 10. 15. 20. 25. 30.
2.8 Dwell G04
This G code is used to provides a waiting for the axis move with giving a dwell period.
For example, it is necessary to temporary pause the axis motion during performing cutoff operation, to prevent the insufficient cutting at the
bottom of the cutoff, or to remove the remaining material.
The command to be used in such case of machining is called Dwell command (G04).
Let’s discuss the case that runs the cutoff operation using G01 command.
When the consecutive G01 commands (linear interpolation) exist, the CNC control decelerates as the axis reaches close to the position
specified in the first block and prepares for the acceleration for the next block as shown in figure (A) to smoothen the axis motion at the
point between the two blocks.
As the angle made by the two blocks gradually decreases as shown in (A), (B) and (C), the axis starts the motion of the second block without
reaching the specified position in the first block. Thus the machine behavior shown in (C) induces an insufficient cutting.
In addition, if the tool does not make at least one revolution around the axis with keeping its position at the bottom of the flute, the
inconsistent surface may caused.
But when the Dwell command (G04) exist between the two blocks, you can avoid this kind of insufficient cutting.
When specifying the 1.5 sec pause in dwell command, tell the machine as shown below.
:
G01 X10. F100. ;
G01 G01
G04 X1.5 ;
G01 X50. ;
:
Dwell command (G04) allows to specify the period to pause using the number of revolution of the spindle.
Because the cutting operation on lathe is commonly performed in feed per revolution, the dwell period is generally specified
in the number of revolution.
Chapter 3 Coordinate system
In this chapter, we will discuss the coordinate system on CNC machine tool.
The machine coordinate system is used to instate the positions specific to the machine tool.
The “Machine position” counter shown on the monitor screen of CNC unit displays the coordinates in the machine coordinate
system.
The position at which the “machine position” counter displays zero is called machine coordinate origin.
The workpiece coordinate system is commonly used when writing the machining program.
The position (X, Z)=(0, 0) in the machining program is called workpiece coordinate origin.
The “Workpiece coordinate position” counter shown on the monitor screen of CNC unit displays the coordinates in the
workpiece coordinate system.
The workpiece coordinate system offset can be specified with the CNC unit's setting screen of the coordinate system offset.
Z Z axis
To move the tool to reference position, we use G28 (Reference position return).
By the axis letter address in absolute mode (X, Z) included in G28 command, you can specify the intermediate position
(intermediate point) to which the axis will first move prior to moving to the reference position. This intermediate point is used
to avoid unintended interference between the tool and the workpiece.
For example, the command shown below tells the machine to first move the tool from point A to (X, Z)=(150.0, -200.0) then to
move the reference position.
Reference
Workpiece coordinate system position
X
Intermediate 150.
position
Point
A
Z
-200.
Workpiece
coordinate origin
3.3 Reference position and reference position return: G28
In case you would not like to specify the intermediate point, use zero in incremental positioning (U0, W0) in G28 to directly move
the tool to the reference position. In this case, it is generally preferred to move the axis one by one to avoid unintended
interference between the tool and the workpiece.
Following show the example when moving the X axis and Z axis independently to reference position.
G28 U0 ;
G28 W0 ;
Move to reference
position in X axis only Reference position
G28 U0
Simultaneously return to reference position in X and Z axes
G28 U0 W0
Interference
Z axis
3.4 Summary of this course
To summarize the whole contents of this course, here is the example machining path and its corresponding machining program.
N12 X
N1
1 40
N9 .
30 N5
N8 .
N7 20
N6 .
10
R12.5 Z
.
-30. -25. -20. -15. -10. -5. 5. 10.
Program Message
(REVIEW-PROGRAM) ; This is the comment or notes in program. (1.10)
N1 G28 U0 ; Moves the X axis to reference position. (3.3)
N2 G28 W0 ; Moves the Z axis to reference position.
N3 G50 S2000 ; Defines the maximum spindle rotation speed at 2000[rev/min].
N4 G40 G80 G54 G18 Initializes the current modal.
N5 T0101 ; Selects the tool at reference position. (1.8)
N6 G96 S180 M03 ; Turns on constant surface speed control prior to starting cutting operation, then turn on the spindle.(1.9)
N7 G00 X10. Z5. ; This is NOT the cutting operation, but the positioning command at rapid rate. (2.4)
N8 G99 G01 Z-5. F0.3 ; Cutting operation along the straight line at the rate in feed per revolution. Feedrate required. (2.5)
N9 G03 X20. Z-15. R12.5 ; Runs circular cutting operation. Specifying the radius is required. (2.7)
N10 G01 Z-20. ; Cutting operation along the straight line. F command can be omitted.
N11 G01 X40. ; G01 is the modal command, and not necessary to write again except when you need to change the modal.
N12 S0 M05 ; Turns the spindle off after the completion of cutting operation. (1.9)
N13 G28 U0 ; Moves to reference position.
N14 G28 W0 ; First moves the Z axis to reference position in X(U) axis like above, then in Z(W) axis. This reduces the risk of
interference with the workpiece.
N15 M02 ; End of program (1.9)
% End of program (1.3)
Test Final Test
Now that you have completed all of the lessons of The Basics of CNC Machining Programming (for Lathe) course, you
are ready to take the final test. If you are unclear on any of the topics covered, please take this opportunity to review
those topics.
There are a total of 10 questions,(10 topics) in this Final Test.
You can take the final test as many times as you like.
Score results
The number of correct answers, the number of questions, the percentage of correct answers, and the pass/fail
result will appear on the score page.
We hope you enjoyed the lessons and the information you acquired in
this course will be useful in the future.