You are on page 1of 8

CNC Programming

2  CNC ProgrammingCNC (Computer Numerical Control) is the general term used for a
system which controls the functions of a machine tool using coded instructions processed
by a computer.

3  CNC Manufacturing Process

4  CNC Manufacturing Process

5  Example CNC Manufacturing Process


A part program is written, using G and M codes. This describes the sequence of operations
that the machine must perform in order to manufacture the component.The part program
is loaded into the machines computer, called the controller. At this stage, the program can
still be edited or simulated using the machine controller keypad/input device.The machine
controller processes the part program and sends signals to the machine components
directing the machine through the required sequence of operations necessary to
manufacture the component.

6  Composition of a Part Program


A Part Program is a list of coded instructions which describes how the design component, or
part, will be manufactured. These coded instructions are called data – a series of letters and
numbers.The part program can be further broken down into separate lines of data, each
line describing a particular set of machining operations. These lines, which run in sequence,
are called blocks.

7  Composition of a Part Program


A block of data contains words, sometimes called codes. Each word refers to a specific
cutting/movement command or machine function. The programming language recognized
by the CNC, the machine controller, is an I.S.O. code, which includes the G and M code
groups. Each program word is composed from a letter called the address, along with a
number.E.g.NØ2Ø G91 G28 XØ YØ ZØ ;NØ3Ø M6 T1 ;NØ4Ø G43 H1 ;NØ5Ø M3 S3ØØØ

8  Composition of a Part Program


NØ8Ø GØ1 Z-Ø.5 F4ØBLOCK EXAMPLE - NØ8Ø GØ1 Z-Ø.5 F4Ø ;WORD EXAMPLE -
GØ1ADDRESS EXAMPLE - G

9  Main Program Structure


The Main Program is the controlling program, i.e., the program first read, or accessed, when
the entire part program sequence is run. This controlling program can then call a number of
smaller programs into operation. These smaller programs, called Sub Programs, are
generally used to perform repeat tasks, before returning control back to the main program.

10  Addresses Address Refers to N refers to the block number. G


refers to the G code (Preparatory function).Xrefers to the absolute/incremental distance
travelled by the slide tool in the X axis direction.Yrefers to the absolute/incremental distance
travelled by the slide tool in the Y axis direction.Zrefers to the absolute/incremental distance
travelled by the slide tool in the Z axis direction.Frefers to the feed rate.Mrefers to the M
code (Miscellaneous function).Srefers to the spindle speed.Trefers to the tooling
management.Each

11  AddressesEach block, or program line, contain addresses which appear in this order :N ,
G , X , Y , Z , F , M , S , T ;This order should be maintained throughout every block in the
program, although individual blocks may not necessarily contain all these addresses.

12  Main Program Structure

13  Sub Program Structure

14  Sub Program CommandsA sub program must be saved to memory using a four digit
number.To call a sub program the M98 code is used followed by PØØØØ (the number of the
sub program required).For example,M98 P2ØØØThis command is read call program
number 2ØØØ.A sub program call command (M98 PØØØØ) can be specified along with a
move command in the same block.GØ1 X42.5 M98 P1ØØØ;

15  Sub Program CommandsAt the end of a sub program, the M99 code is entered. This
returns control to the main program. The M99 code will return control to the next block
after the M98 sub program call block in the main program.If the code M99 PØØØØ is
entered, control will pass to the main program at a block with the N number equal to that of
the P number stated after the M99 code.For example,M99 PØ16ØThis command is read
return to the main program at block number NØ16Ø.

16  Sub Program Repeat Command


A call command can be set to call a sub program repeatedly. This call can specify upto 999
repetitions of a sub program.M98 PØØØ ØØØØFor example,M98 P1ØØØØ1This command
is read call the sub program number ØØØ1 ten times.Call CommandSub Program
NumberNumber of times the subprogram is to be repeated

17  Program Block Numbering


It is recommended that all blocks are numbered using a four digit number which rises
between each block in steps of 1Ø. This allows the program to be edited at a later date, i.e,
new blocks can be inserted or deleted as required.For example :N ØØ1Ø ....N ØØ2Ø ....N
ØØ3Ø ....N ØØ4Ø ....etc....

18  Block Configuration

19  G Codes (Preparatory Functions)


Preparatory functions, called G codes, are used to determine the geometry of tool
movements and operating state of the machine controller; functions such as linear cutting
movements, drilling operations and specifying the units of measurement.A G code is
defined using the G address letter and a two digit number as follows:G ØØTwo Digit
NumberAddress
20  Tool Movement A) Tool Movement along a Straight Line:
Program command format:GØ1 Y _ _ _ _ ; (P1 - P2)X _ _ _ _ Y _ _ _ _ ; (P2 - P3)X _ _ _ _ ; (P3 - P4)

21  Tool Movement B) Tool Movement along an Arc: Program command format:


GØ3 X _ _ _ _ Y _ _ _ _ R _ _ _ _ ; (P1 - P2)The function of moving the tool along straight lines
and arcs is called the Interpolation. Symbols of the programmed commands GØ1, GØ2 and
GØ3 are called the Preparatory functions and specify the type of interpolation conducted in
the control unit.

22  Feed FunctionThe movement of the tool at a specified speed for cutting is called the
Feed rate.The feed rate is defined using the F address letter followed by a numerical
value.Using the G2Ø code, the feed rate is defined in Inches per minute.Using the G21 code,
the feed rate is defined in Millimeters per minute.

23  M Codes (Miscellaneous Functions)


Miscellaneous functions, called M codes, are used by the CNC to command on/off signals to
the machine functions. i.e, MØ3 - spindle forward (CW), MØ5 – spindle stop, etc.....An M code
is defined using the M address letter and a two digit number as follows:M ØØAddressTwo
Digit Number

24  Spindle Speed Function (Cutting Speed)


The rotational speed of the tool, with respect to the work piece being cut, is called the
spindle (or cutting) speed.The spindle speed is defined using the S address letter, followed
by a numerical value, signifying the spindle RPM (revolutions per minute).

25  Tool FunctionTool profiles can be changed during a program using the tool function
command. Each tool profile is assigned a number, which in the case of an ATC (Automatic
Tool Changer) will also coincide with one of the free bays on its carousel magazine.The tool
number is defined using the address letter T, followed by a number assigned to the tool
profile. To command a tool change, the MØ6 code would precede the number of the "new"
tool required.For example,MØ6 TØ1This command is read perform a tool change to tool
number Ø1.

26  Coordinates System Absolute Coordinates:


The addresses X, Y and Z within a program, when G90 (Absolute co-ordinates) is active,
relate to a coordinate position from the work piece datum (the zero position).

27  Coordinates System(Cont’d)
Example :

28  Coordinates System(Cont’d)
Incremental Coordinates:The addresses X, Y and Z within a program, when G91 (Incremental
co-ordinates) is active, relate to the individual axis movements required to reach the new
position, from the last position reached by the tool.
29  Coordinates System(Cont’d)
Example :

30  Exercise

31  Answer

32  G Codes Preparatory Functions

33  IntroductionPreparatory functions, called G codes, are used to determine the geometry


of tool movements and operating state of the machine controller; functions such as linear
cutting movements, drilling operations and specifying the units of measurement.A G code is
defined using the G address letter and a two digit number as follows:G ØØTwo Digit
NumberAddress

34  Modal and Non-Modal G Codes


Modal (Retained) G Codes:A modal G code will remain active until another G code from the
same group is programmed into a block, or it is cancelled.For Example:GØ1 and GØØ are
modal G codes from group 1:GØ1 X _ _ _ _ ;Y _ _ _ _ ;X _ _ _ _ ;GØØZ _ _ _ _ ;GØ1 is effective in
this range.GØØ replaces the GØ1 command.

35  Modal and Non-Modal G Codes (Cont’d)


Non-modal (one-shot) G codes:A non-modal G code must be programmed into block when
it is required, i.e, it is only effective in the block in which it is specified.Example:G09 , Exact
Stop Check

36  GØØ Rapid Positioning / Traverse


The GØØ code executes a non cutting movement, at a rapid feed rate, to a specific co-
ordinate position in the working area (operating under absolute coordinate movement) or
when a certain distance from a previously stated position (under incremental coordinate
movement) is programmed.A GØØ command is written in the following format:GØØ X _ _ _ _
Y_ _ _ _ Z _ _ _ _ ;Rapid Positioning / Traverse CodeX, Y and Z Coordinate Values

37  GØ1 Liner Interpolation


The GØ1 code executes a cutting movement following a straight line, at a set feed rate.GØ1
X _ _ _ _ Y_ _ _ _ Z _ _ _ _ ;Liner Interpolation CodeX, Y and Z Coordinate Values

38  GØ2 , GØ3 Circular Interpolation


The GØ2 code executes a cutting movement following a clockwise circular path, at a set feed
rate.The GØ3 code executes a cutting movement following a counterclockwise circular path,
at a set feed rate.The definitions of clockwise (GØ2) and counterclockwise (GØ3) are fixed
according to the system of co-ordinates in the diagram below.

39  GØ2 , GØ3 Circular Interpolation (Cont’d)


When programming arcs using absolute values (G9Ø), the X and Y values describe the end
point of the arc, in relation to the datum position of the work piece. The arc end point is
sometimes referred to as the target position.When programming arcs using incremental
values (G91), the X and Y values relate to the distance moved along the X and Y axes, from
the start point of the arc to the end point of the arc. The sign of the X and Y axis moves (+/-)
will depend on the movement of the machine slides in relation to their start position.

40  GØ2 , GØ3 Circular Interpolation (Cont’d)


I and JTo program an arc when only the arc centre is given (the radius is unknown) use the
address letters I and J.I relates to the address X and is the incremental value and direction
(+/-) from the start point of the arc in the X axis to the arc centre .J relates to the address Y
and is the incremental value and direction (+/-) from the start point of the arc in the Y axis to
the arc centre .

41  GØ2 , GØ3 Circular Interpolation (Cont’d)


The format to program a circular interpolation in Cartesian co-ordinates is written as follows
:There are four ways to program a clockwise circular path using the GØ2 code:G9Ø GØ2 X _
_ _ _ Y _ _ _ _ R _ _ _ F _ _ _ ;G9Ø GØ2 X _ _ _ _ Y _ _ _ _ I _ _ _ J _ _ _ F _ _ _ ;G91 GØ2 X _ _ _ _ Y _ _
_ _ R _ _ _ _ F _ _ _ _ ;G91 GØ2 X _ _ _ _ Y _ _ _ _ I _ _ _ J _ _ _ F _ _ _ ;

42  GØ2 , GØ3 Circular Interpolation (Cont’d)


Example:

43  GØ2 , GØ3 Circular Interpolation (Cont’d)


Absolute Mode:GØ1 X1ØØ Y4Ø F125 ;GØ3 X8Ø Y6Ø I-2Ø ;GØ1 X6Ø ;GØ2 X4Ø Y4Ø I-2Ø
;or,GØ3 X8Ø Y6Ø R2Ø ;GØ2 X4Ø Y4Ø R2Ø ;

44  GØ2 , GØ3 Circular Interpolation (Cont’d)


Incremental Mode:GØ3 X-2Ø Y2Ø I-2Ø ;GØ1 X-2Ø ;GØ2 X-2Ø Y-2Ø I-2Ø ;or,GØ3 X-2Ø Y2Ø
R2Ø ;GØ2 X-2Ø Y-2Ø R2Ø ;

45  GØ2 , GØ3 Circular Interpolation (Cont’d)


When using the address R _ _ _ _ , two types of arcs can be considered. One arc is less than
18Ø degrees, whilst the other arc is greater than 18Ø degrees. When an arc exceeding 18Ø
degrees is commanded, the radius value (R _ _ _ _) must be specified as a negative signed (-)
value.

46  GØ2 , GØ3 Circular Interpolation (Cont’d)


Example:The above tool path for an arc less than 18Ø degrees (circle A) can be programmed
as follows (In absolute mode, G9Ø):GØ2 X8Ø Y4Ø R5Ø F125 ;The above tool path for an arc
greater than 18Ødegrees (circle B) can be programmed as follows (In absolute mode,
G9Ø):GØ2 X8Ø Y4Ø R-5Ø F125 ;

47  Exercise

50  GØ4 DwellThe G04 command is a Dwell command that halts all axis movement for a
specified time, while the spindle continuous revolving at the specified rpm.A Dwell is used
largely in drilling operations, which allows for the clearance of chipsThis command requires
a specified duration, denoted by the letter P, and followed by the time in
secondsExampleN30 G04 P2(Dwell for 2 seconds)

51  Machine Tool PlanesA typical CNC machining center has three axes. Any two axes form
a plane. A machine plane may be defined by looking at the machine from standard
operating position.For a vertical machining center, there are three standard views.The top
view (XY Plane) is selected by G17.The front view (XZ plane) is selected by G18.The right side
vide (YZ plane) is selected by G19.

52  Machine Tool Planes (Cont’d)


For machining applications using the circular interpolation mode, with G02 or G03
commands, cutter radius offset with G41 or G42 commands and fixed cycles mode with G81
to G89 commands The plane selection is very critical.For all rapid motions (programmed
with G00) and all linear motions (programmed with G01), the plane selection command is
not needed.Any plane selection change is programmed as desired, prior to actual tool path
change. Plane can be changed as often as necessary in a program, but only one plane can
be active at any time.Selection of one plane cancels any other plane, so the G17/G18/G19
commands cancel each other.

53  G17 XY PlaneG17 commands sets the system to default to the XY plane as the main
machining plane for specifying circular interpolation moves and/or cutter
compensation.Here the Z-axis is secondary and works perpendicular to the XY planeN_ G17

54  G18 XZ PlaneG18 command sets the system to the XZ plane as the main machining
plane for specifying circular interpolation moves and/or cutter compensation.This command
changes the default machining plane to the XZ plane, where the Y axis is secondary, and
works perpendicular to the XZ plane.In this plane, it is possible to cut convex and concave
arcs using G02 and G03 circular interpolation commands.N_ G18

55  G19 YZ PlaneG19 command sets the system to the YZ plane as the main machining
plane for specifying circular interpolation moves and/or cutter compensation.This command
changes the default machining plane to the YZ plane, where the X axis is secondary, and
works perpendicular to the YZ plane.In this plane, it is possible to cut convex and concave
arcs using G02 and G03 circular interpolation commands.N_ G19

56  G 2Ø, G 21 Imperial / Metric Data Input


The machine controller can be programmed in either Imperial (inch) unit input (G2Ø) or
Metric (millimetre) unit input (G21). The standard format for a CNC part program is to write
the G2Ø or G21 code in the first block of the program.G CodeTypeUnitsLowest input
ValueG2ØImperialInchØ.ØØØ1 inchG21MetricMillimetreØ.ØØ1 mm

57  G28 Reference Point Return


The reference point is a fixed position on the machine, to which the tool can be moved.This
point is also used as the Home position, the point used by the machine to set the limits of
movement for the X, Y and Z slides.A G28 code instructs the tool to automatically move to
this reference point.A G28 command is written in the following format :G9Ø G28 X _ _ _ _ Y _
_ _ _ Z _ _ _ _ ;G91 G28 X _ _ _ _ Y _ _ _ _ Z _ _ _ _ ;where X, Y and Z can be used to indicate an
intermediate point, through which the tool will pass, before continuing to the reference
point.

58  G28 Reference Point Return (Cont’d)


The above tool path can be programmed as follows (Inabsolute mode, G9Ø):G9Ø G28 X6Ø
Z6Ø ;incremental mode, G91):G91 G28 XØ Z4Ø ;

59  G28 Reference Point Return (Cont’d)


In the diagram below, the tool is in a position (P1) where no collision is possible. The
intermediate point, in this case, is not required, so the block can be written as follows (In
incremental mode, G91):G91 G28 XØ YØ ZØ ;The intermediate point co-ordinates are still
stated, but all their values are set to zero, indicating no axis movement. Therefore, the tool
will move from point P1 to the reference point, P3, along a non-vector type path.

60  M-Codes

61  M - CodesM-codes are miscellaneous functions that include actions necessary for


machining but not those that are actual tool movements. That is, they are auxiliary
functionsOnly one M code may be programmed per block of a program. All M codes are
effective or cause an action to occur at the end of the block.

62  M00 Program StopThe M00 code is used to stop a program. It also stops the spindle and
turns off the coolant and stops interpretation look ahead processing. The program pointer
will advance to the next block and stop.A cycle start will continue program operation from
the next block.N_ M00

63  M04 Spindle On Counterclockwise


M03 Spindle On ClockwiseN_ M03The M03 code will start the spindle moving is a clockwise
direction at whatever speed was previously set.M04 Spindle On CounterclockwiseN_
M04The M04 code will start the spindle moving is a counterclockwise direction at whatever
speed was previously set.

64  M05 Spindle StopN_ M05The M05 command turns the spindle off. Although other M-
cods turn off all functions (for example, M00 and M01), this command is dedicated to
shutting the spindle off directly.The M05 command appears at the end of a
program.Example%:1010N5 G90 G20N10 M06 T12……………………………………………….N65 M05
(Spindle stop)

65  M06 Tool ChangeN_ M06 T_The M06 code is used to initiate a tool change. The
previously selected tool (T_) is put into the spindle. If the spindle was running, it will be
stopped.The Z-axis will automatically move up to the machine zero position and the
selected tool will be put into the spindle. The Z-axis is left at machine zero.The T_ must be in
the same block or in a previous block. The coolant pump will be turned off during a tool
change.Example%:1010N5 G90 G20N10 M06 T12 (Tool change to tool #12)
……………………………………………….N65 M05
66  M07/M08 Coolant On M09 Coolant Off N_ M07
ORN_ M08The M07 and M08 commands switch on the coolant flow.M09 Coolant OffN_
M09The M09 command shuts off the coolant flow. The coolant should be shut off prior to
tool changes or when you are rapiding the tool over long distances.

67  M30 Program End , Reset to Start


N_ M30The M30 code is used to stop a program. It also stops the spindle and turns off the
coolant. The program pointer will be reset to the first block of the program and
stop.Example%:1012N5 G90 G20………………………….N65 X0 Y0N85 M05N90 M30 (program
end; reset to start)

68  M99 Return from Subprogram


M98 Call SubprogramN_ M98 P_The M98 function is used to call a subroutine or
subprogram. Execution is halted in the main program and started on the program
referenced by The letter P_ address value.For example,N15 M98 P would call
program:1003M99 Return from SubprogramN_ M99The M99 function is used to end or
terminate the subprogram and return to the main calling program.Execution is continued at
the line immediately following the subprogram call. It is used only at the end of the
subprogram.

69  Block Slip/ N_If turned on, upon execution of a CNC program and encountering a block
skip “/”, the program will ignore and CNC code on that block.Example%:1012N5 G90
G20/N10 M06 T03/N20 G00 X0 Y0……………………………………..N85 M05N90 M30

70  Comments N_ (Comment statement)


Comments help the CNC machine operator to set up and run a job.Comments are defined
by the use of round brackets. Anything between them is ignored by the
controller.Remember that comments are just aids to help in reading and understanding a
program. Their text is totally ignored even it contains valid CNC code.ExampleN 10 G00 Z0.5
(Rapid to Z0.5)

71  Example

72  % (program start flag): (program number)N5 G90 G20 G40 (Absolute, Inches, and
compensation canceled)N10 M06 T04 (Tool change to toll #4)N15 M03 S (Spindle on
clockwise at 2000 rpm)N20 G00 X2 Y M08 (Rapid to X2, Y-0.375), coolant 2 on)N25 Z (Rapid
down to Z-0.25)N30 G01 Y0 F15 (Feed move to point #1 at 15 ipm)N35 X0.5 Y0.5 (Feed move
to point #2)N40 Y3.0 (Feed move to point #3)N45 G02 X2 I0.75 J0 (Circular feed move to
point #4)N50 G01 X3.5 (Feed move to point #5)N55 G01 Y0.5 (Feed move to point #6)N60
G02 X3 Y0 I-0.5 J0 (Circular feed move to point #7)N65 G01 X2 (Feed move to point #1)N70
G00 Z1 (Rapid to Z1)N75 X0 M09 (Rapid to X0, coolant off)N80 M05 (Spindle off)N85 M30
(End of program)

You might also like