A helix block that carries an absolute Z endpoint and a block-repeat count descends exactly once. Every repetition after the first re-commands the identical absolute target, so the control interpolates a flat 360° arc at that depth. The cutter orbits, the load meter reads a normal side-milling load, and the pocket floor never moves. That is the failure mode behind a 190 mm x 75.5 mm pocket that comes out 2.5 mm deep on an Okuma VTM with an OSP-P300A control.
Pocket Geometry, Offsets, and the One-Pass Claim
Fix the radii before touching the program. The finished pocket is 190 mm diameter, so the programmed contour radius is 95 mm. With a 80 mm cutter and D1 holding a radius of 40.000, G41 shifts the tool centre to a circle of radius 55 mm. The tool then sweeps an annulus from radius 15 mm to radius 95 mm on every revolution.
The pre-roughed bore is 100 mm diameter, so material stands from radius 50 mm to radius 95 mm. Radial engagement is therefore 45 mm on an 80 mm cutter — 56% of the diameter. Because the tool centre sits at radius 55 mm and the material boundary is at radius 50 mm, the tool axis is inside the uncut band. Arc of engagement exceeds 180°. Geometrically one pass reaches size; mechanically it is slotting with a shoulder mill, and radial deflection plus chip evacuation set the limit, not spindle power.
The term "pitch" here means axial descent per full 360° revolution of the tool centre. At 1.5 mm pitch on a 345.6 mm centre-path circumference (2π × 55), the ramp angle is atan(1.5 / 345.6) = 0.25°. Any ramp-capable insert geometry handles that; the end cutting edges still remove 1.5 mm axially across a fully buried cross-section.
Check 1: open the tool offset page and read D1. Expect 40.000 (radius convention) and a resulting tool-centre circle of 55.000 mm radius. If the control is set to diameter offsets, expect 80.000 and confirm the convention in the offset header, not by assumption.
Why the Absolute-Mode Repeat Never Descends
The original helix block is:
N150 G03 X95 Y0 I-95 J0 Z-1.5 F200 L51
I and J are always incremental vectors from the arc start point to the arc centre, so the circle geometry stays valid in G90 and the block does not alarm. X95 Y0 as an absolute endpoint equal to the start point is read as a full circle. Z-1.5, however, is an absolute floor. Execution 1 helixes from Z1 to Z-1.5.
| Symptom | Mechanism | Correction |
|---|---|---|
| Cutter orbits many times, pocket stays shallow |
G90 modal on a repeated helix block; absolute Z re-commanded |
G91 on the helix block only |
| Final Z reads -77.0 instead of -75.5 |
L interpreted as repeats after the first execution (52 revolutions) |
Reduce the count by one, or use a user-task loop |
| Feed collapses or overruns wildly |
G95 (feed per revolution) still modal from turning |
Command G94 before the helix |
| Arc or plane alarm on the G03 |
G18/G19 modal from radial machining |
Command G17 before the arc |
| Score mark on the wall at retract |
G40 cancelled on a Z-only move with the tool still against the wall |
Cancel comp on an XY move away from the wall |
| Comp not applied / start-up alarm | Start-up move shorter than the tool radius, or wrong D number |
Lead in 95 mm from centre with the correct D
|
Check 2: single-block the original code and watch the Z position counter across two repeats. Expect Z to hold at -1.500 — that reading alone confirms the absolute-mode fault.
The Incremental Helix Block
Switch the repeated block to incremental so each execution adds its own descent, then restore absolute before any positioning move:
N100 G15 H1 (WORK OFFSET 1)
N110 G90 G94 G17 G40 G00 X0 Y0 Z50 (ABS / MM-MIN / XY PLANE)
N120 S1000 M03 M08
N130 G00 Z1
N140 G41 D1 X95 Y0 F300 (COMP START-UP, 95 MM LEAD-IN)
N150 G91 G03 X0 Y0 I-95 J0 Z-1.5 F200 L51
N160 G03 X0 Y0 I-95 J0 F300 (SPRING PASS, STILL G91)
N170 G90 G01 G40 X0 F1000 (CANCEL COMP OFF THE WALL)
N180 G00 Z50 M09
N190 G00 X0 Y0 Z500
N200 M05 M30
In G91, X0 Y0 means "return to the start point" — still a full circle — while Z-1.5 becomes a relative descent. N160 inherits G91 and cuts one flat finishing lap at the floor, which cleans the helical witness line left on the wall by the ramp. N170 re-establishes G90 before the retract.
Check 3: during N150, display the modal group page. Expect G91, G94, G17, G41 active simultaneously. Any one of them wrong invalidates the block.
Pitch, Repeat Count, and Floor Arithmetic
Start height Z1 sits 1 mm above the face. Required descent is 1 + 75.5 = 76.5 mm. At 1.5 mm pitch that is 51 revolutions, and 51 × 1.5 = 76.5 → final Z = -75.5. The arithmetic is exact, which is why the count works only if L51
Do not settle this by argument. Shift the work offset Z up by 200 mm, run the helix in air, and read the axis counter. Expect the final Z to be 124.5 (that is -75.5 + 200). A reading of 123.0 means the repeat count includes an extra execution; drop to L50 and add one explicit helix block, or move to the loop form below.
Cycle time is the other reason to revisit the pitch. Fifty-one revolutions of a 345.6 mm centre path is 17,625 mm of arc. Because the ramp angle at 1.5 mm pitch is only 0.25°, there is room to coarsen it:2.55 mm pitch × 30 revolutions = 76.5 mm
Check 4: after the dry run, confirm pitch × count equals start height plus depth, to the third decimal. Expect 76.500 for a Z1 start and a -75.5 floor.
Cutter Compensation Entry and Exit
The start-up move at N140 travels 95 mm from the pocket centre to the contour. A compensation start-up move must be longer than the tool radius (40 mm here) and must lie in the compensation plane; 95 mm satisfies both, and it happens at Z1 in free air.
Cancelling comp is where the original program leaves a defect. G40 commanded on a block that moves only in Z gives the control no in-plane vector to unwind the offset, and the tool is still pressed against the finished wall when the Z retract begins — the ramp-up drag mark appears at the retract point. Cancel on an XY move that pulls the tool off the wall first: G90 G01 G40 X0 F1000, then rapid Z clear.
That cancel move crosses the pocket floor at depth. It is safe only if the 100 mm pre-rough went to full depth. Verify that before the first cut; if the pre-rough is shallower, retract in Z inside the roughed bore instead, or cancel comp on a short radial move of 10–15 mm and clear Z from there.
Check 5: after N170, read the compensation status on the modal display. Expect G40, and expect the X axis to show 0.000 with no residual offset in the distance-to-go register.
Feed Mode, Plane, and Spindle Addressing
On a turning-based multitasking machine, milling programs inherit turning modals. Two of them are destructive here. G95 makes F200 mean 200 mm per revolution; force G94 in the safe-start line. G18 or G19 left active from radial work puts the arc in the wrong plane and either alarms or drives the tool through the part; force G17.
Confirm which address drives the milling spindle. Parametric helical subroutines written for these machines command the milling spindle with SB= and start it with M13, alongside G138 for the milling mode and M110/M109 at the head. If S1000 M03 in the program addresses the turning spindle instead, the milling head never turns and the first contact is a rub, not a cut.
Cutting data at S1000 with a 80 mm cutter gives vc = π × 0.080 × 1000 = 251 m/min. Feed per tooth depends on where the control applies F. The cutting edge at radius 95 travels 95/55 = 1.727 times farther per revolution than the tool centre at radius 55. If F is held on the tool-centre path, edge speed is 345 mm/min and chip load runs light; if the control applies feed at the programmed contour, the tool centre creeps at 116 mm/min. Read the arc feedrate compensation setting in the OSP programming manual and set the feed for the value you actually want at the edge.
Check 6: with feed override at 5%, single-block N140 and the first revolution of N150. Expect a stable spindle load and continuous chip formation; a load that spikes and drops each quarter revolution indicates deflection at the >180° wrap.
Splitting the Radial Engagement
The 45 mm radial engagement is the weak point of the single-pass plan. Cut it in two by running the same helix twice with different radius offsets. Set D1 = 50.000 for the first descent: tool centre path radius becomes 95 - 50 = 45 mm, the tool axis sits outside the material boundary at radius 50, engagement drops to 35 mm and the wrap falls below 180°. Then repeat with D1 = 40.000, or a second offset D2, removing the last 10 mm of stock on the wall.
The second pass is also the finishing pass, so the wall inherits a single continuous helix rather than the deflection signature of a fully buried cutter.
Check 7: after the first descent, measure the bore. Expect 170.0 mm with D1 = 50.000. A larger reading means the offset convention is diameter, not radius.
Parametric Loop Alternative
Block repeat cannot handle a remainder pitch and cannot be inspected mid-cut. A user-task loop can, and it is the form used in the established helical subroutines for these controls — a current-position variable, decrement, comparison, and a labelled jump:
BDM = 190.0 (POCKET DIAMETER)
ZZS = 1.5 (PITCH PER REV)
ZAP = 1.0 (START Z, ABOVE FACE)
ZEP = -75.5 (POCKET FLOOR)
FSB = 200 (FEED)
ZAPO = ZAP
G17 G94 G90
G00 X0 Y0 Z=ZAP
G41 D1 X=BDM/2 Y0 F300
NLOP ZAPO = ZAPO - ZZS
IF [ZAPO LE ZEP] NEXT
G03 X=BDM/2 Y0 I=-BDM/2 J0 Z=ZAPO F=FSB
GOTO NLOP
NEXT
G03 X=BDM/2 Y0 I=-BDM/2 J0 Z=ZEP F=FSB
G03 X=BDM/2 Y0 I=-BDM/2 J0
G01 G40 X0 F1000
G00 Z50
RTS
Everything stays absolute, so there is no G90/G91 modal hazard. The comparison clamps the last revolution to exactly ZEP, so any pitch value lands on the floor without arithmetic gymnastics. Changing pocket diameter, pitch or depth is a variable edit, not a re-count of repeats. Called as a subprogram, the same routine serves every pocket on the part.
Check 8: run the loop with ZZS = 2.55 in air. Expect exactly 30 arcs and a final Z of -75.500, with no partial-pitch arc appended.
End-to-End Verification
-
Offsets:
D1= 40.000 radius. Expect a tool-centre circle of radius 55.000 mm on the graphic check. -
Modals at the helix block:
G17,G94,G91(or absolute in the loop form),G41. Expect all four on the modal page. - Air run with Z offset +200: expect final Z counter 124.500. Any other value means the repeat count or pitch is wrong — correct it before the tool sees material.
-
Depth at the end of the helix, before the spring pass: expect the Z counter at -75.500 and the machine still in
G41. - Spring pass: one full 360° arc at constant Z. Expect a continuous chip and a wall with no helical step at the start point.
-
Comp cancel: after the
G40X move, expect zero in the distance-to-go register and no offset flagged on the modal page. - Part check: bore 190.0 mm at three depths, floor at 75.5 mm from the face, and no witness mark at the X+ retract position.
FAQ
Can I use an L block repeat with G90 absolute on an Okuma OSP control?
Not for a helix. In G90 the repeated block re-commands the same absolute Z, so only the first execution descends and the rest cut flat circles at that depth. Put G91 on the helix block and restore G90 before the next positioning move.
Does the L count include the first execution of the block?
Verify it rather than assume it. Shift the work offset 200 mm up, run the helix in air, and read the Z counter: with L51 at 1.5 mm pitch from Z1, expect 124.500. A reading of 123.000 means the count adds repeats after the first execution and you must drop to L50.
Can an 80 mm cutter helix a 190 mm pocket in one radial pass?
Geometrically yes — from a 100 mm pre-rough the radial engagement is 45 mm, less than the 80 mm diameter. But the tool centre at radius 55 mm sits inside the material band starting at radius 50 mm, so the arc of engagement exceeds 180°. Split it: run the helix once with D1 = 50.000, then again at 40.000.
Does cutter compensation have to be cancelled on an XY move?
Yes. G40 on a Z-only block gives the control no in-plane vector to unwind the offset and leaves the cutter loaded against the finished wall during retract. Cancel with G90 G01 G40 X0 at feed, then rapid clear in Z.