Where surface finish is decided
Not in the servo loop. In the trajectory planner — how far ahead it looks, whether it limits jerk, and how it blends corners. A perfectly tuned control loop following a badly planned path still produces chatter and dwell marks.
If a machine sounds like it is constantly starting and stopping on a 3D surface program, the mechanics and drives are probably fine. The planner cannot see far enough ahead to know it is safe to keep moving.
The problem in one example
Consider a program running at 5,000 mm/min, with a machine that decelerates at 1 m/s². Stopping from that feed takes roughly 3.5mm of travel.
Now feed it a tessellated surface with 0.05mm segments. To stop safely, the planner must begin decelerating about 70 segments before the point where slowing is required. A planner buffering 20 blocks cannot know what is coming — so it plays safe and slows at every block.
This is the whole reason deep look-ahead exists. It is not a performance nicety; without it the machine physically cannot maintain feed through finely tessellated geometry, no matter how good the drives are. The symptom is a machine running at a fraction of commanded feed and leaving marks at every segment.
What the planner computes
- Segment geometry — length and direction of each move, and the angle at each junction.
- Maximum junction velocity — how fast the machine can pass through each corner without exceeding acceleration limits on any axis.
- Backward pass — starting from the end, propagate velocity limits backward so deceleration begins early enough.
- Forward pass — propagate forward, respecting acceleration limits when speeding up.
- Profile generation — build the accelerate/cruise/decelerate profile for each segment, jerk-limited.
The backward pass is the essential part. It is what lets the machine know, thousands of segments early, that it must be slower by the time it arrives.
Junction velocity: the core calculation
At a corner between two segments, direction changes. Since the machine cannot change velocity instantaneously, the speed through the corner is limited by how much velocity change each axis can absorb within its acceleration limit.
- A shallow corner — small direction change — permits near-full speed.
- A sharp corner requires substantial slowing.
- A reversal requires a full stop.
The calculation is per axis, because a corner that is gentle in X may be abrupt in Y. The binding constraint is whichever axis is asked to change velocity fastest.
Corner blending: the trade you control
Stopping exactly at every programmed point is precise and slow. Blending rounds the corner slightly, staying within a tolerance you specify, and lets the machine carry speed through.
| Blend tolerance | Effect | Use for |
|---|---|---|
| Zero / exact stop | Precise corners, slow, dwell marks | Sharp features that must be sharp |
| Tight (a few microns) | Slight rounding, much faster | Finishing passes |
| Loose (tens of microns) | Visible rounding, fastest | Roughing |
Every blend tolerance is a deliberate trade of geometric accuracy for speed and finish. The mistake is leaving it at a default and then blaming the machine.
Jerk limiting and why it matters
A trapezoidal velocity profile changes acceleration instantly at each transition. That step in acceleration is an impulse into the machine structure, which rings at its natural frequency — visible as chatter marks even though the toolpath was correct.
An S-curve profile ramps acceleration smoothly, limiting jerk. It takes marginally longer per move and produces noticeably better surfaces, less audible noise, and less mechanical wear.
A diagnostic worth knowing: if a machine leaves marks at segment boundaries on curved surfaces, it is usually jerk or blending, not the servo tuning. Tightening the control loop will not fix a trajectory that commands abrupt acceleration changes — and may make the ringing worse.
Feedrate optimisation beyond kinematics
Sophisticated planners also modulate feed for reasons beyond axis limits:
- Curvature — slowing through tight arcs to limit centripetal acceleration.
- Rotary demand on multi-axis — the tool tip may move slowly while a rotary axis moves fast; the rotary limit governs.
- Chord tolerance — ensuring the linear approximation of a curve stays within the permitted deviation at the commanded speed.
If you are building or evaluating a planner
- Buffer deep enough to cover deceleration distance at maximum feed — this is a hard requirement, not a tuning preference.
- Implement jerk-limited profiles; trapezoidal is not adequate for surface work.
- Expose blend tolerance to the program, so roughing and finishing can differ.
- Compute junction limits per axis, not from a single tool-tip speed.
- Keep planning off the real-time thread, feeding the interpolator through a buffer.
- Instrument it — report achieved versus commanded feed so users can see where speed is being lost and why.
Machine running well below commanded feed, or leaving marks on curved surfaces? Tell us the machine and control. See our CNC controller service, real-time motion control, and controller architecture.