Oscillating axes (OSC)
![]() | The availability of this function depends on the configuration and on the version scope. |
An oscillating axis motion is required in certain machining technologies, e.g. grinding, and this is executed mainly independently of a path motion.
This motion referred to below as an "oscillating motion" is executed by the tool with periodic reversal across the workpiece.
An oscillating axis in grinding is presented below as an example. The workpiece is machined by superimposing the oscillating X motion on positioning motions in the Y and Z axes.

The essential characteristics of the oscillating motion result from the oscillating motion between two absolute positions as well as the feed rate
The oscillating motion is started, stopped and parameterised via the NC program.
Any axis can be defined as an oscillating axis within the scope of the configured axes. The oscillating motion is asynchronous to the path motion.
The oscillating motion is deactivated either:
- directly by an NC command
- or implicitly by programming a path motion for the oscillating axis
- or implicitly by requesting axis positions to synchronise decoding and interpolation
- or implicitly at the end of the NC program
The type of velocity profile can be defined in the dynamic phase by specifying the slope type in the channel parameters P-CHAN-00071 (linear/non-linear slope) for the oscillating motion.
With a modulo axis, the oscillating positions must be specified in the modulo range. If this is not the case, error ID 22277 is output.
The programming syntax is based on the axis-specific programming of independent axes. After the axis identifier, the parameters of the oscillating motion are defined via keywords and, if applicable, an associated value:
Syntax for programming an oscillation motion: |
<axis:name> [ OSC ON | [OFF | OFF FEED=.. | OFF INSTANT] | [ ZERO_POS=.. EXCUR=..] [1ST_DELT=.. 2ND_DELT=..] [NBR_OSC=..] [INCL_OFFSETS] [SHORT] { \ } ] |
<axis_name> | Name of the oscillating axis |
OSC | Identifier for "Oscillating” function. Must always be programmed as the first keyword. |
ON | Oscillation on. The motion is stopped at block end when a path motion is active and the oscillating motion is then commanded. |
OFF | Oscillation off. Current oscillation cycle is finished. The oscillating axis can then move again in the coordinated motion. If the oscillating motion is stopped implicitly if it is not previously deselected when a new axis motion is programmed. |
OFF FEED=.. | Fast oscillation stop. The current oscillation cycle is aborted and the axis moves at the specified feed rate to target position (2ND POS). The oscillating axis can then move again in the coordinated motion. |
OFF INSTANT | Immediate oscillation stop. Axis stops immediately and can be moved again within the coordinated motion immediately. |
FEED=.. | Feed rate of the oscillating motion in [mm/min, m/min, inch/min] |
FREQ=.. | Frequency of the oscillating motion in [Hz] |
TIME=.. | Period of the oscillating motion in [s] |
1ST_POS=.. | First reversal position in [mm, inch] |
2ND_POS=.. | Second reversal position in [mm, inch] |
ZERO_POS=.. | Zero point or zero crossing of the oscillating motion in [mm, inch] |
EXCUR=.. | Excursion in [mm, inch] |
1ST_DELT=.. | Wait time at first reversal position in [s] |
2ND_DELT=.. | Wait time at second reversal position in [s] |
NBR_OSC=.. | Number of oscillations |
INCL_OFFSETS [as of V3.1.3081.05] | Include the current active axis-specific offsets (e.g. G55, G92 etc.) in the programmed reversal positions 1ST_POS/2ND_POS and zero crossing ZERO_POS |
SHORT [as of V3.1.3113.0] | With a modulo axis, the oscillating distance is traversed on the shortest path. |
\ | Separator ("backslash") for clear programming of the command over multiple lines. |
The characteristic of the oscillating motion is determined by the locations of the reversal positions and the axis feedrate. The reversal positions can be either specified directly or alternatively they are determined automatically via the zero position and the excursion.
Oscillating positions are always absolute positions.
After an oscillating motion is deselected, the tool always stops at oscillating position 2.
Alternatively, the oscillating velocity can be determined by feedrate, frequency or period.
If no restriction occurs due to the dynamic axis characteristics, the frequency and the period are maintained exactly when the linear slope is used and maintained approximately when the non-linear slope is used.

Programming Example
10 oscillations