User's Manual

PMAC User Manual
184 Writing Programs for PMAC
Cutter Radius Compensation
PMAC provides the capability for performing cutter (tool) radius compensation on the moves it performs.
This compensation can be performed among the X, Y, and Z axes, which should be physically
perpendicular to each other. The compensation offsets the described path of motion perpendicular to the
path automatically by a programmed amount, compensating for the size of the tool. This permits
programming the path along the edge of the tool, letting PMAC calculate the tool-center path, based on a
radius magnitude that can be specified independently of the program.
Cutter radius compensation is valid only in LINEAR and CIRCLE move modes. The moves must be
specified by F (feedrate), not TM (move time). PMAC must be in move segmentation mode (I13 > 0) to
do this compensation (I13 > 0 is required for CIRCLE mode anyway.)
Note:
In CIRCLE mode, a move specification without any center specification results in
a linear move. This move is executed correctly without cutter radius compensation
active, but if the compensation is active, it will not be applied properly in this case.
A linear move must be executed in LINEAR mode for proper cutter-radius
compensation.
Defining the Plane of Compensation
Several parameters must be specified for the compensation. First, the plane in which the compensation is
to be performed must be set using the buffered motion-program NORMAL command. Any plane in XYZ-
space may be specified. This is done by specifying a vector normal to that plane, with I, J, and K-
components parallel to the X, Y, and Z-axes, respectively.
For example, NORMAL K-1, by describing a vector parallel to the Z-axis in the negative direction,
specifies the XY-plane with the normal right/left sense of the compensation (NORMAL K1 would also use
the XY-plane, but invert the right/left sense). This same command also specifies the plane for circular
interpolation. NORMAL K-1 is the default. The compensation plane should not be changed while
compensation is active.
Other common settings are NORMAL J-1, which specifies the ZX-plane for compensation, and NORMAL
I-1, which specifies the YZ-plane. These three settings of the normal vector correspond to RS-274 “G-
codes” G17, G18, and G19, respectively. If you are implementing G-codes in PMAC program 1000, you
could incorporate in PROG 1000:
N17000 NORMAL K-1 RETURN
N18000 NORMAL J-1 RETURN
N19000 NORMAL I-1 RETURN
Defining the Magnitude of Compensation
The magnitude of the compensation – the cutter radius – must be set using the buffered motion program
command CCR{data} (Cutter Compensation Radius). This command can take either a constant
argument (e.g. CCR0.125) or an expression in parentheses (e.g. CCR(P10+0.0625)). The units of
the argument are the user units of the X, Y, and Z-axes. In RS-274 style programs, these commands are
often incorporated into tool data D-codes using PMAC motion program 1003.
Negative and zero values for cutter radius are possible. Note that the behavior in changing between a
positive and negative magnitude is different from changing the direction of compensation. See the
Changes in Compensation section in this manual. Also, the behavior in changing between a non-zero
magnitude and a zero magnitude is different from turning the compensation on and off. See the
appropriate sections.