Short Segments - synthetos/TinyG GitHub Wiki

Short segments and dense CAM output

A high programmed feed does not guarantee that a file of tiny moves will run quickly. There are two separate limits: how fast the controller can parse lines and how fast the machine can traverse each planned move.

Minimum execution time

An acceleration, cruise or deceleration section whose calculated duration is shorter than the minimum segment time is executed as one minimum-time segment. The minimum is 2.5 ms. The section keeps its planned displacement and endpoint, with its velocity reduced to fit that duration.

This preserves the commanded distance through very short sections and prevents cumulative endpoint drift from losing their displacement. A dense file can take longer than its programmed feed suggests while still reaching its planned endpoint. Machine step resolution still determines the physical positioning granularity.

The final acceleration, cruise or deceleration section ends at the planner's commanded block target, including when the block has only one minimum-time section. Rounded intermediate section lengths do not become a new endpoint for the next block.

Line throughput

Per-line parsing and command handling bound throughput to roughly 25 Gcode lines per second in measured short-segment workloads. This is a workload-dependent observation, not a guaranteed rate or a universal ceiling for every sender and reporting configuration. Raising the serial baud rate or the programmed F alone does not remove the processing cost of each line.

Estimate the line rate a toolpath needs as feed in mm/min / (60 × average move length in mm). At 600 mm/min, moves averaging 0.01 mm need 1,000 lines/s. If the controller processes 25 such lines/s, the resulting average feed is only 15 mm/min. Keep the planner supplied using the selected flow-control method, and use CAM arc fitting or a suitable output tolerance to reduce unnecessary G1 points.

Motion and tuning

Very short moves may spend all their time accelerating and decelerating, with no cruise at the requested feed. Low jerk settings make these ramps longer. Exact-stop mode and an empty look-ahead queue can turn a dense path into repeated stop-to-stop moves. Continuous path mode (G64) and enough queued moves allow look-ahead to carry speed through compatible junctions; they do not remove the machine's acceleration limits.

Setting Effect on dense output How to tune
Axis jerk maximum (xjm, yjm, zjm) Controls how quickly acceleration can change; a very low value limits short-move speed even when vm, fr and F are high. Raise the participating axes' jerk gradually within the machine's mechanical limits. Check motion and cut quality after each change. See jerk-controlled motion.
Axis junction deviation (xjd, yjd, zjd) Controls junction-speed limits together with junction acceleration (ja). A smaller value requires slower cornering. Choose a positive value consistent with the job's cornering tolerance. Increasing it can allow faster junctions, but does not help an empty queue or override exact-stop mode.
Chordal tolerance (ct) Controls how finely G2/G3 arcs are subdivided into straight chords. Increase it only as far as the allowed arc error permits. It must stay positive. It does not merge or simplify G1 segments already emitted by CAM; change the CAM output tolerance or enable arc fitting for those.

Change persisted settings while idle and follow the matching-reply and persistence pacing rules. Tune jerk and path tolerances for the machine and job rather than using a single set of values for every dense file.