TwinCAT CNC: Overview

Radius programming (R, G163)

The radius programming is expected, if no circle center point (with I, J and/or K) is given. The value following the character R is interpreted as radius. It is used in NC-blocks with circular programming automatically. Thereby the radius statement is modal and, in case of multiple circular traverse movements with the same radius, specifying of the radius needs not to be repeated.


The maximum permissible circle radius is 109 mm.

However the end point of the circular arc may not exceed the maximum traverse range +- 2,14*105 mm of the axes.


With positive radius value a shortest possible circle and with negative radius value the largest possible circle is determined (see figure below).


In case of indexed radius programming, (pre requisite for this is that the R-word is not used for the parameter programming; chapter 9 - Parameters and parameter calculation), as index, only 1 is possible.

If the indexed radius programming is used on the assignment side, then the index should not be programmed as a mathematical expression.


Programming example

1.) N10 P2 = 1 3.) N10 R1 = 5 P2 = 1

permissible: N20 RP2 = 5 not permissible: N20 P3 = RP2

2.) N10 R1 = 5

permissible: N20 P2 = R1


Programming example

All these examples, produce semi-circles with radius 50.

1. N10 G90 G01 X0 Y0 F500

N20 G02 X100 R50

N30 G03 X200 R50

2. N10 G90 G01 X0 Y0 F500

N20 G02 R=50 (In this block still no motion)

N30 X100 (Motion block)

3. N10 G90 G01 X0 Y0 F500

N20 R1=50

N30 G02 X100

N40 G03 X200

4. N10 G90 G01 X0 Y0 F500

N20 G02 X100 R1=50

N30 G03 X200

The following programming results in an error message, since R1 is interpreted as radius with value 1.

N10 G90 G01 X0 Y0 F500

N20 R1=50

N30 G02 X100 R1

Alternative to circle definition with R = "radius" or R1 = "radius" a circle radius specification can also be done using the following G-code:

G163= <radius> (modal)

G163 Circle radius specification

<radius> Circle radius value

The circle definition using the radius is valid in case of selected circular interpolation until new definition or until deselection through an I- and/or J- and/or K-specification.


Programming example

(N10: Movement to origin)

(N20: Semi circle cw with end point X100 under preset)

(of circle radius by G163 (radius defintion is modal))

(N30: Semi circle ccw with end point X200 and a modal radius,)

(which has been defined in N20)


N10 G90 G01 X0 Y0 F1000

N20 G02 G163=50 X100

N30 G03 X200

N40 M30



If the starting and end point of the circle, programmed with "R", "R1" or "G163", are identical then an error message is output. Thus, to traversed a full circle, it must be programmed with I/J/K.