Turning Operations: Sub-Position

Lathe cutters, as opposed to Milling Cutters, are directional and are designed to work on the side in which the insert points to. Considering the machine kinematics and the direction of the insert, it may be required to rotate the tool around its axis in order to reach a valid turning direction. This rotation of the tool around itself is called Sub-Position.

For GPP2 to support the sub-position, the sub-position axis should be defined when defining the machine. The sub-position axis is defined in the post as a sixth axis of the machine and referred to as such in the machine simulator.

To define the axis in the post, the variable M5_SUBPOS_VALID must be set as TRUE_.

By default, the rotation is counter-clockwise. To set the direction to be clockwise, the variable M5_SUBPOS_NEGATIVE should be set as TRUE_.

To simulate the movement of the sub-position axis with the machine simulator, the sub-position axis must be set as an extra axis of the machine, as usual.

Example for defining the sub-position axis within the machine definition section:

M5_SUBPOS_VALID = TRUE_;

M5_SUBPOS_NEGATIVE = FALSE_;

MACH_SIM_LETTER1 = "S"; // Sub-position axis name

MACH_SIM_ORDER = "XYZAB1"; // Axes be output to simulator

The sub-position angle is fixed for each procedure, and saved in the variable L_SUBPOS_ANG. This value is set by GPP2 in the BEGINNING OF PROC block. Therefore, it is recommended to move the sub-position angles inside the connection scenario, the same as for the rotation of the other rotary axes.

For example, the connection scenario may look like this:

CONNECTION_SCENARIO "tool-change"

MACHINE_CONTROL ("SubPos" 0 0 "")

MOVE_   (CON_FAST   "AB" CON_P2 FALSE_)

MOVE_    (CON_FAST   "XY" CON_P2 FALSE_)

MOVE_DOWN  (CON_FAST   "Z"   CON_P2 FALSE_);

The machine control for the sub-position:

MACHINE CONTROL: SubPos:

IF (L_SUBPOS_ANG == 0) // Subpos zero

IF (PrevSubpos != 0) // reset now

MACH_SIM_AXIS1 = 0;

OUTPUT $ " M19" " (Sub Position reset)";

END_IF;

ELSE // Subpos != 0;

MACH_SIM_AXIS1 = L_SUBPOS_ANG;

OUTPUT $ " M19 S" L_SUBPOS_ANG " (Sub Position orientation)";

END_IF;

// Save for next proc

PrevSubpos = L_SUBPOS_ANG;

Some functionality may be dependent on the product package. Contact your Reseller if you require a license.