Circular interpolation (G02/G03)
G02 Helical interpolation clockwise (CW) (modal) G03 Helical interpolation counter-clockwise (CCW) (modal) |
When G02 or G03 is selected, the programmed path is travelled to the target point in circular motion at the feedrate specified in the F word. Circular motion can be travelled in the three main planes of the spatial coordinate system (X-Y, Z-X, Y-Z). The main plane is selected using the functions G17, G18, G19 (see Section: Plane selection).
All programmed tracking axes move at linear velocity in such a way that the start and end of their motion take place simultaneously with the main axes.

The circle is defined by taking the starting point of the circle "Ka" (determined in the preceding block), the target point of the circle "Ke" and the centre point of the circle "Km". The centre point of the circle is specified by the interpolation parameters I, J, K relative to the starting point of the circle when G162 is active or absolute when G161 is active.
G162: | (Basic settings) |
I | relative position of Km in the X direction |
J | relative position of Km in the Y direction |
K | relative position of Km in the Z direction |
G161: |
|
I | absolute position of Km in the X direction |
J | absolute position of Km in the Y direction |
K | absolute position of Km in the Z direction |
If the circle centre point is incorrectly defined, an error message is output if no centre point compensation is switched on (G165). When G165 is active, a centre point is defined so that a circle can be travelled. It also means that if the interpolation parameters are not programmed, circle centre point compensation originates at I, J, K = 0. In addition, the circle centre point coordinates are "non-modal”.
Notice

The maximum permissible circle radius is 109 mm. The target point of the arc may not exceed the maximum motion path of the axes of +- 2.14*105 mm.
If the interpolation parameters I,J,K are programmed without circleendpoint when G02/G03 are active, a full circle is travelled. Alternatively to I, J, K, the circle radius may also be defined with R (see Radius programming (R, G163)). However, it is not possible to program a full circle with R.
Syntax example for G17 plane:
G02 | G03 [X<expr> Y<expr>] I<expr> J<expr> | R<expr> |
G02 | G03 | Circular interpolation CW / CCW |
X<expr> Y<expr> | Target point in XY plane in [mm, inch] |
I<expr> J<expr> | Position of circle centre point of interpolation in XY plane (I in X, J in Y) in [mm, inch], according to G161/G162 |
R<expr> | Radius of an interpolated partial circle (alternative to I, J) in connection with specification of a target point in [mm, inch]. |
Programing Example

Circular interpolation
N10 G01 X10 Y10 F1000
N20 G02 X30 Y30 I10 J10 ;Semicircle, circle end point X30 Y30
;Alternative N20:
N20 G02 X30 Y30 R[10*SQRT[2]] ;Semicircle, circle end point X30 Y30
N30 G02 I10 J10 ;Full circle
Syntax according to selected interpolation plane:
Plane | Interpolation type | Target point in plane | Centre point/radius |
G17 | G02/G03 | X..Y.. | I..J../R |
G18 | G02/G03 | Z..X.. | K..I../R |
G19 | G02/G03 | Y..Z.. | J..K../R |


Alternatively, circles can also be programmed by specifying the radius. This is possible using G163="radius value" or using the address letter R="radius value". It is also possible to define using R1="radius value". (see Section Specifying centre point for circle definition (G161/G162) - Controlling centre point offset (G164/G165)).
Programing Example

Circular interpolation
;Absolute dimensional input:
N10, G90 F1000 ;Absolute dimension, feedrate
N20 G17 ;Select X-Y plane
N30 G03 G161 X60 Y50 I60 J30 U90 ;Circle: Ka -> Ke and straight line: P1 -> P2
;Incremental dimensional input:
N10 G91 F1000 ;Incremental dimension, feedrate
N20 G17 ;Select X-Y plane
N30 G03 G162 X20 Y20 I20 U50 ;Circle: Ka -> Ke and straight line: P1 -> P2