4th/5th Axis, Tilted Work Planes & TCP
“5-axis” is really two different capabilities that get conflated constantly. The first is 3+2 machining: tilt the rotary axes to a fixed angle, lock them, and machine a flat plane — a coordinate problem, solved by the tilted-work-plane (TWP) functions. The second is simultaneous 5-axis: all five axes moving at once while the tool stays on a sculptured surface — a motion problem, solved by tool-center-point control (TCP). Most shops that own a “5-axis” machine live almost entirely in 3+2, and that is a feature, not a failure. The deep dives live in this wiki's per-control articles (Siemens transformations, the Heidenhain series, the Fanuc-family references); this page is the map — the concepts, and the vocabulary each control uses for them.
Keep the two capabilities separate in your head, because they are bought, programmed, and debugged separately:
| 3+2 (tilted work plane) | Simultaneous 5-axis (TCP) | |
|---|---|---|
| Rotaries during the cut | Locked at a fixed angle | Moving continuously |
| Problem being solved | Coordinates — where is the tilted face's frame? | Motion — keep the tip on path as the axis tilts |
| Program looks like | Ordinary 2.5D in a rotated frame | Dense point streams with orientation per block |
| Typical parts | Multi-face prismatic work, angled holes and pads | Impellers, ports, swarf walls, sculptured surfaces |
| Share of real-world 5-axis | The overwhelming majority | The exception that earns its keep |
Machine Kinematics: Head, Table, Mixed
Before any code, know where your machine's two rotary axes physically live, because everything downstream — the post, the TWP math, the TCP math, even which parts fit — depends on it. There are three layouts:
| Layout | Rotaries on | What moves | Typical machines |
|---|---|---|---|
| Head–head (swivel head) | The spindle side | The tool tilts; the part sits still | Large gantry and travelling-column machines, aerospace profilers |
| Table–table (trunnion) | The table side | The part tilts and rotates under a fixed spindle | Trunnion VMCs (A/C or B/C), the common small-shop 5-axis |
| Head–table (mixed) | One each | Head swivels one axis, table rotates the other | Horizontal 5-axis, mill-turns, many big-part machines |
The three 5-axis kinematic layouts. Where the rotary axes physically live decides whether the tool tilts, the part tilts, or both.
Why programming cares: every rotary axis has a center of rotation, and tilting swings everything attached to that axis around it. On a head machine the tool tip orbits the head's pivot point, so the control (or the post) must know the pivot length — gauge line to pivot — plus the tool length to keep the tip where the program says. On a trunnion the part orbits the rotary centerlines, so the control must know exactly where those centerlines sit in machine coordinates, and where your part zero sits relative to them. A mixed machine needs both descriptions at once. This is why the same posted 5-axis program is flat-out wrong on a machine with different kinematics: the Cartesian path may be identical, but the compensating linear moves baked in for one pivot geometry are garbage for another.
The layouts also trade off differently on the shop floor, which is why all three survive. Table–table machines keep the spindle rigid and simple — the tool axis never changes, so tool length behaves exactly as it does on a 3-axis machine — but the part and fixture must fit inside the trunnion's swing and add their mass to every rotary move. Head–head machines handle parts of any size (the part never moves) at the cost of a heavier, less rigid spindle assembly whose pivot length gets added to every tool's effective stick-out. Mixed machines split the difference and are the default for horizontals. None of this changes the programming concepts below — TWP and TCP are deliberately kinematics-agnostic from the programmer's seat — but it decides which compensation the control is silently doing for you, and how much error a mis-measured center produces at the cutting edge.
It is also why rotary-center and pivot-length calibration is the foundation everything sits on. TWP, TCP, and rotary probing all consume the same kinematic description — machine data on Siemens, kinematics tables on Heidenhain, parameters/MRZP settings on Fanuc-family controls. If the stored rotation centers are off by 0.05 mm, every tilted operation is off by an amount that varies with angle, which is the most confusing kind of error a machine can produce. Calibrate it (with a probing routine such as Siemens CYCLE996 or Heidenhain KinematicsOpt), and re-verify after any crash.
3+2: Tilted Work Plane
The 3+2 idea: position the rotary axes so the face you want to cut is presented to the spindle, then tell the control to rotate the coordinate system onto that face. From then on you program plain 2.5D — G17, canned cycles, cutter comp — in the tilted plane, as if it were the top of the part. The control does the trigonometry between your tilted-frame coordinates and the real machine axes. This is the natural next step after the flat-plane work-offset model in Coordinate Systems & Work Offsets: a work offset shifts the frame to the part; TWP additionally rotates it onto a face.
What TWP buys you is enormous and easy to undersell:
- Program off the print. The tilted face's dimensions go straight into the program as drawn — no CAM pre-rotation of every coordinate, no trig at the desk, and a hand edit at the machine stays a hand edit.
- One datum. The whole part runs from a single probed work offset instead of a separate, separately-wrong offset per face. Multi-face position tolerances stop depending on N independent touch-offs.
- Probe in the tilted plane. With the plane active, standard probing cycles measure the angled face in its own frame — pick up a feature and correct exactly where you are cutting.
- Everything 2.5D still works. Canned cycles, cutter comp, pecking, rigid tapping — all of it runs in the tilted frame unchanged.
Every serious control has this function; only the name changes:
| Control | TWP function | Notes |
|---|---|---|
| Fanuc | G68.2 + G53.1 | G68.2 defines the plane (Euler angles by default; other conventions via variants), G53.1 turns the rotaries to align the tool axis. Cancel with G69. |
| Haas (NGC) | G268/G269 + DWO G254 | G268 is the Tilted Work Plane; G254 Dynamic Work Offset keeps the work offset valid as the rotaries reposition (cancel G255). |
| Siemens | CYCLE800 | The swivel cycle: computes the frame chain, optionally turns the axes and re-approaches. See SINUMERIK Transformations & 5-Axis. |
| Heidenhain | PLANE SPATIAL (PLANE family) | Also PROJECTED, EULER, VECTOR, POINTS, RELATIV, AXIAL; reset with PLANE RESET. Legacy programs use Cycle 19 WORKING PLANE. |
| Mazak / Mitsubishi | Tilted-plane function in EIA/ISO | Both implement a Fanuc-style tilted-working-plane command in ISO mode; Mazatrol handles the same job conversationally through the unit's plane definition. |
A Fanuc-style 3+2 fragment — define the plane, align the tool axis, then machine as if flat:
G68.2 X0 Y0 Z0 I45. J30. K0. ; tilted plane: origin + Euler angles I/J/K
G53.1 ; rotate A/C (or B/C) so tool axis = plane normal
G43 H1 Z50. ; tool length in the tilted frame
G81 Z-15. R3. F200. ; plain canned cycle, programmed on the tilted face
G80
G69 ; cancel the tilted plane
Notice what G53.1 is doing: on a table–table machine the “tilted plane” ends up physically horizontal after the rotaries move — the part was tilted to meet the spindle — while on a head machine the plane stays put and the head tilts to meet it. G68.2 describes the plane; G53.1 (or turning the axes yourself before/after, per your control's rules) resolves it into whichever motion your kinematics require. On an A/C trunnion there are generally two rotary solutions for any plane (tilt +30/C one way, or −30/C the other); controls expose a preference for which solution G53.1 picks — know yours, because the wrong one can put the trunnion between the spindle and the work.
The Haas spelling adds one idea worth understanding on its own: Dynamic Work Offsets. G254 tells the control to keep the active work offset valid as the rotaries move — the control re-computes where part zero went when the trunnion carried it somewhere else. That is the mechanism that lets you probe the part once, flat, and then machine at any 3+2 orientation without a separate offset per angle:
G54 ; one datum, probed flat
G0 B-30. C60. ; position the trunnion for this face
G254 ; DWO on: G54 follows the part to the new attitude
G43 H1 Z2. ; approach in the (now valid) offset
...machine the face...
G255 ; DWO off before repositioning
G268 X0 Y0 Z0 I45. J30. K0. ; or: full Tilted Work Plane, Euler angles (G68.2-style)
...
G269 ; cancel TWP
The Heidenhain spelling of the same intent:
PLANE SPATIAL SPA+45 SPB+30 SPC+0 MOVE DIST50 F2000 ; define + physically swivel
...machine in the tilted plane...
PLANE RESET STAY ; back to the untilted frame
SPATIAL (three spatial angles) is the workhorse, but the PLANE family lets you define the same plane however the print describes it — PROJECTED from projection angles, EULER, VECTOR from a normal vector, POINTS from three probed/known points, RELATIV as an incremental tilt, or AXIAL as raw rotary-axis angles. The MOVE/TURN/STAY word decides whether the control physically swivels the machine as part of the definition. Older Heidenhain programs (and plenty of running iTNC 530 work) do all of this with Cycle 19 WORKING PLANE; it still runs, but PLANE is the current, less ambiguous form — treat Cycle 19 as legacy you can read, not something to write new.
And on Siemens, CYCLE800 wraps the identical frame math with retraction and re-approach handling — one cycle call in place of the define/align pair. Whatever the spelling, the contract is the same: you say where the plane is; the control owns the rotation math and (with G53.1 / MOVE / the cycle's swivel) the physical positioning move.
Simultaneous 5-Axis: TCP
Simultaneous 5-axis breaks the 3+2 assumption: the tool axis changes while cutting. Now the pivot problem from the kinematics section is live in every block — each change in tilt swings the tool tip off the path unless something compensates. There are exactly two candidates for that job.
Without TCP, the post-processor does it: it takes the CAM system's tip position + tool-axis vector, applies your machine's pivot length, tool length, and rotary centers, and emits pre-compensated machine coordinates. It works — people ran 5-axis this way for decades — but the program is welded to one machine and one tool length. Touch off a tool 2 mm longer and every point is wrong: you repost, or you scrap.
With TCP (tool center point control, a.k.a. RTCP), the control does it in real time: the program carries the tip position in the workpiece frame plus the orientation, and the control continuously adds the pivot/tool-length compensation. The program becomes independent of the actual tool length and largely independent of the kinematics. Conceptually:
; --- WITHOUT TCP: post baked the compensation in. Machine coordinates. ---
X142.318 Y-87.442 Z233.907 B14.982 C31.005 ; only valid for THIS tool length
; --- WITH TCP: program says where the TIP is. Workpiece coordinates. ---
G43.4 H1 ; TCP on (Fanuc type 1)
X50.0 Y25.0 Z10.0 B15.0 C31.0 ; tip at (50,25,10), tool tilted 15 deg
; swap in a longer tool: same program
Per-control vocabulary:
| Control | TCP function | Notes |
|---|---|---|
| Fanuc | G43.4 / G43.5 | Tool center point control type 1 (rotary angles) / type 2 (tool-axis vector I/J/K). Cancel with G49. |
| Heidenhain | M128 / FUNCTION TCPM | M128 is the classic form; FUNCTION TCPM adds explicit choices for feed reference and orientation interpolation. Cancel M129 / FUNCTION RESET TCPM. |
| Siemens | TRAORI | The 5-axis orientation transformation; orientation by vector, angle, or LEAD/TILT. Full treatment in SINUMERIK Transformations. |
| Haas (NGC) | TCPC, G234 | Tool Center Point Control; pairs with DWO for the 3+2 case. Cancel G49. |
| Mazak (Smooth) | Tool-tip-point control | Fanuc-style tip-point control in EIA mode on Smooth/Matrix-generation controls; same tip-in-workpiece-frame contract. |
The same activation, in the other two major dialects:
; Heidenhain
FUNCTION TCPM F TCP AXIS POS PATHCTRL AXIS ; F = tip feed, angles as axis positions
L X+50 Y+25 Z+10 B+15 C+31 F2000
FUNCTION RESET TCPM ; (M128 ... M129 is the classic form)
; Siemens
TRAORI ; 5-axis transformation on
ORIWKS ; orientation referenced to the workpiece
G1 X50 Y25 Z10 A3=0.259 B3=0 C3=0.966 F2000 ; tip + tool-axis direction vector
TRAFOOF
Practical rules that hold across controls:
- TCP is a licensed option almost everywhere. A machine with two rotaries does not necessarily have G43.4/M128/TRAORI enabled. Check before quoting the job.
- The post must be written for TCP. A TCP program carries tip coordinates in the workpiece frame; a non-TCP post emits pre-compensated machine coordinates. Feeding one style to the other mode is a crash, not an inaccuracy.
- Tool length must be honest. TCP compensates using the measured tool length — that is the whole point — so a stale offset now produces error in three axes at every orientation, not just Z depth.
- Activate and cancel in a safe posture. Turn TCP on before the rotaries start moving in the cut and cancel it (G49 / M129 / TRAFOOF) before returning to plain 3-axis logic; switching mid-gesture leaves the control and the program disagreeing about what X/Y/Z mean.
One boundary worth stating: TCP does not make programs fully machine-portable by itself — rotary limits, singularity placement, and head-vs-table behavior still differ — but it removes tool length from the equation and moves the kinematic math from the post into the control, where the calibration actually lives. TWP and TCP also compose: a 3+2 operation under an active tilted plane is the everyday case, and controls treat “swivel the plane” and “track the tip” as two faces of the same kinematic description — Siemens makes this explicit by letting CYCLE800 switch TRAORI on to hold the tip during the swivel.
Feed in 5-Axis: What F Means
With TCP active, F means what you expect: the feed rate of the tool tip along the programmed path, in mm/min or in/min. The control manages however fast the joints must move to deliver it. This is one of TCP's quiet gifts.
Without TCP, a block that mixes linear and rotary words has no honest mm/min interpretation — the control blends millimeters and degrees into one joint-space “distance,” and the actual surface speed at the cutter depends on how far the cut is from the rotary centerline. The classic workaround on plain 4th-axis work is inverse-time feed, G93: instead of a rate, F specifies 1 divided by the time in minutes the block should take, and the post computes it per block from the real tip distance:
G93 ; inverse-time mode: F = 1 / minutes for this block
G1 X25.0 A45.0 F6.667 ; block must finish in 1/6.667 = 0.15 min (9 sec)
G1 X50.0 A90.0 F5.0 ; next block: 0.2 min — F is recalculated EVERY block
G94 F250. ; back to mm/min for straight linear work
The rule of thumb: TCP makes G93 unnecessary — if your control has tip-point control, turn it on and program real feed rates. Inverse time survives mainly on 4th-axis indexer/wrap work and on machines without the TCP option, and every F in a G93 program is meaningless the moment a block's geometry changes, which is why only posts, not humans, should write it. Two habits keep G93 programs survivable: always return to G94/G95 explicitly (a lingering G93 makes the next program's F words nonsense), and never hand-edit a coordinate in a G93 block without recomputing its F — the two are a matched pair.
Singularities and Large Rotary Moves
Every two-rotary kinematic has a pole: an orientation where one rotary axis stops mattering. On the common A/C or B/C table machine it is tool-vertical — with the tilt axis at 0°, any C angle gives the same tool axis. Near the pole the math inverts badly: a tiny change in the programmed tool vector can demand an enormous C move. The symptom on the floor is unmistakable — the surface is nearly flat, the tool axis drifts through vertical, and the C axis suddenly whips 180° in one block while the linear axes crawl to keep the tip on path (TCP keeps the tip on location, but the feed collapses and the dwell burns a witness mark into the finish).
The numbers make it concrete. On an A/C machine the C angle needed to realize a tool vector is essentially atan2 of the vector's X/Y components — and as the vector approaches vertical those components approach zero, where their ratio (and therefore C) becomes wildly sensitive:
; two adjacent CAM points, tool axis passing within 0.1 deg of vertical:
N100 X50.000 Y20.000 Z8.000 A0.10 C15.0
N110 X50.050 Y20.010 Z8.001 A0.10 C195.0 ; C flips ~180 deg for a 50-micron step
; the tip moves 0.05 mm; the table turns half a revolution.
Mitigations, by mechanism rather than by button name:
- Tilt the path in CAM. The standard fix: lead/tilt the tool axis a few degrees so the vector never passes through the pole. A 2–3° fixed tilt on a near-flat swarf or finishing pass costs nothing and removes the problem at the source.
- Use the control's singularity handling. Controls offer pole-behavior options — hold the ambiguous rotary position through the pole, limit orientation change near it, or smooth orientation (e.g. Siemens pole-limit machine data, Heidenhain TCPM orientation-interpolation choices). These soften the event; they don't eliminate it.
- Choose kinematics/setup so the pole is out of the cut. Fixture the part, or pick the machine, so the heavy tool-axis activity happens away from the pole orientation. On mixed-kinematic machines the pole sits at a different orientation than on a trunnion — sometimes that alone decides which machine gets the job.
Related but distinct: rotary winding. A C axis that has accumulated +720° may take the long way around on the next move, or trigger an unwind at cycle end. Know whether your machine's rotary is a linear-behaving axis or a modulo (shortest-path) axis, because a 3+2 repositioning move through the part is the same crash either way.
Probing and Work Setup on a Rotary
Rotary work setup has one extra job that 3-axis setup doesn't: establishing where the rotation centers are relative to the part. The part zero you probe is only valid at other rotary angles if the control's stored rotary centerlines are right — the work offset and the kinematic model are used together the moment anything tilts. On plain 4th-axis work this shows up as the familiar “set X and Z to the rotary centerline” ritual: the work offset points at the axis of rotation, not at a corner of the stock, so that wrapped features land at the right radius at every angle. On a full 5-axis machine the same idea lives inside the control's kinematic description instead of your offset — but it is the same vector, and it is just as capable of being wrong.
The practical consequences:
- Calibrate the rotary centers with a probe, on a schedule. Kinematic-measurement cycles (Siemens
CYCLE996, Heidenhain KinematicsOpt Cycles 450/451/452, Renishaw AxiSet on Fanuc-family machines) swing a calibrated sphere through rotary positions and correct the stored centerlines. Thermal growth and hard stops move these numbers. - Probe in the tilted plane once TWP is active. With the plane tilted, run the same edge/bore/web probing cycles you'd use flat; results land in the active (tilted) frame, so you can pick up a feature on the angled face and cut to it directly. This is the workflow that makes one-datum multi-face machining honest.
- Recognize the drift signature. Walls that come out slightly out of square, or features that mis-position only on tilted operations while flat work measures perfectly, are the classic fingerprint of rotary-zero calibration drift — not a work-offset error. Re-run the kinematic calibration before chasing the G54.
Per-control probing details live in the dedicated articles: Fanuc/Renishaw inspection, Haas/Renishaw inspection, SINUMERIK measuring cycles, and the Heidenhain probing-cycle references (e.g. TNC 640).
A Sane Adoption Path
The capability ladder is worth climbing one rung at a time, because cost and risk step up faster than most shops expect:
| Stage | What you're doing | What it demands |
|---|---|---|
| 1. 4th-axis indexing | Rotate, lock, machine a face; repeat. Wrap work with G93 if truly needed. | A work offset per face (or one offset + rotary-aware programming); no new control options. |
| 2. 3+2 with TWP | One datum, tilted planes, canned cycles on angled faces, probing in the plane. | The TWP option on the control, calibrated rotary centers, a post that emits the TWP codes instead of pre-rotated coordinates. |
| 3. Simultaneous 5-axis with TCP | Continuous tool-axis motion in the cut. | The TCP option, tight kinematic calibration, CAM with real tool-axis control and collision checking, a verified 5-axis post, and toolpath verification/simulation you actually trust. |
Each rung also raises the stakes on verification. A 4th-axis indexing program can be proved out like 3-axis work — single-block, distance-to-go, a wary thumb on feed hold. A 3+2 program adds the question “is the frame where I think it is?”, which a probe answers cheaply. A simultaneous program cannot be meaningfully proved out at the machine at all: by the time your eye registers that the head is going to meet the trunnion, it already has. Machine-accurate simulation (the real machine model, the real holders, the real post output — not the CAM system's idealized preview) stops being a luxury at stage 3.
Reserve simultaneous 5-axis for geometry that demands it: impellers and blisks, ported manifolds and undercut cavities, tall swarf-cut walls, deep cores where tilting shortens the tool. Everything else — the vast majority of real parts — machines better as 3+2: stiffer (axes clamped), simpler to prove out, easier to probe, and far cheaper when it goes wrong. The best 5-axis programmers are conservative about the fifth axis.
The Vocabulary Map at a Glance
The whole page in one table — the same two capabilities, in each control's words:
| Control | Tilted work plane (3+2) | TCP (simultaneous) | Cancel |
|---|---|---|---|
| Fanuc | G68.2 + G53.1 | G43.4 / G43.5 | G69 / G49 |
| Haas (NGC) | G268 (TWP); G254 DWO | G234 TCPC | G269 / G255 / G49 |
| Siemens SINUMERIK | CYCLE800 | TRAORI | CYCLE800 to zero / TRAFOOF |
| Heidenhain | PLANE SPATIAL (Cycle 19 legacy) | M128 / FUNCTION TCPM | PLANE RESET / M129 |
| Mazak / Mitsubishi | Tilted-plane function (EIA/ISO, Fanuc-style) | Tool-tip-point control (Fanuc-style) | Per the Fanuc pattern |
If you remember nothing else: TWP rotates the coordinate system; TCP tracks the tool tip. The first makes 3+2 programmable off the print; the second makes simultaneous motion independent of tool length. Both stand on the same calibrated kinematic model — which is why the calibration, not the codes, is where 5-axis accuracy is actually won.
See Also
- SINUMERIK Transformations & 5-Axis — the deep dive on TRAORI, TRANSMIT, TRACYL, and CYCLE800
- Coordinate Systems & Work Offsets — the flat-plane foundation this article builds on
- CNC Post-Processors — where the kinematic math lives when the control doesn't do it
- High-Speed Machining — look-ahead, smoothing, and tolerance controls that 5-axis paths lean on
References
- FANUC, Series 30i/31i/32i-MODEL B Operator's Manual — tilted working plane indexing (G68.2/G53.1) and tool center point control (G43.4/G43.5).
- Haas Automation, Mill Operator's Manual (Next Generation Control) — G268/G269 Tilted Work Plane, G254/G255 Dynamic Work Offset, G234 TCPC.
- Siemens, SINUMERIK 840D sl Transformations Function Manual and Milling Operating Manual (CYCLE800), 06/2019.
- HEIDENHAIN, TNC 640 Klartext Programming User's Manual — PLANE functions, M128 / FUNCTION TCPM, KinematicsOpt.
- Mazak, EIA/ISO Programming Manual (Smooth series) — tilted-plane and tool-tip-point control functions.
- Mitsubishi Electric, M800/M80 Series Programming Manual — inclined-surface machining and tool center point control.
Have a question or want to contribute?
Contact us with corrections, additions, or topics you'd like covered.
Get in Touch