Dividing distance by time gives the average velocity of the move. A motor never runs at that number. It ramps up, cruises, ramps down, and the cruise velocity has to be higher than the average to make up for the two ramps. Sizing a servo or a drive off the average understates peak speed by 50% and gives no acceleration figure at all, which is the number that decides torque.
Three approaches cover the ground: the full kinematic equation set, the one-third ramp estimate, and symbolic generation of the profile segment by segment. They answer different questions.
Three Approaches to the Same Move
| Approach | Inputs required | Output | Best used for | Limitation |
|---|---|---|---|---|
Kinematic equation set (x, v, a, t solved by substitution, typically in a protected spreadsheet) |
Any two or three of position, velocity, acceleration, time | The remaining quantities, exactly | Single constant-acceleration segments; checking a ramp you already have numbers for | Treats one segment at a time; will not size a whole three-segment move on its own |
One-third ramp estimate: v = 1.5 * ds / dt, a = 4.5 * ds / dt^2
|
Move distance and move time only | Cruise velocity and average acceleration for the whole move | Phone-call sizing, first-pass motor and drive selection | Assumes linear ramps and a symmetric 1/3-1/3-1/3 time split |
| Symbolic profile generation (segment-by-segment 3rd-order solution in a computer algebra system such as wxMaxima) | Jerk, acceleration, velocity and distance limits | Full seven-segment S-curve with position, velocity, acceleration and jerk expressions | Controller development, verifying a vendor's profile generator, jerk-limited studies | Slow to set up; overkill for selection work |
For sizing, use the one-third estimate first and reserve the other two for verification. It gets you inside 10-15% of the real numbers in seconds, and the correction to real S-curve peaks is a single multiplier.
Where 1.5 and 4.5 Come From
Assume a trapezoidal profile in which acceleration, cruise, and deceleration each take one third of the total move time dt. The area under the velocity curve is the distance:
ds = 2 * (1/2 * v * dt/3) + v * dt/3
= v*dt/3 (both ramps) + v*dt/3 (cruise)
= 2/3 * v * dt
=> v = 1.5 * ds / dt
Acceleration is the cruise velocity reached in one third of the time:
a = v / (dt/3) = 3v/dt = 4.5 * ds / dt^2
Two consequences worth carrying in your head: each ramp covers ds/4, so the two ramps together account for half the travel and the cruise the other half. And the value a here is the average acceleration of the move. It is the number a linear-ramp PLC-style profile will actually command; it is not what a motion controller running an S-curve will peak at.
S-Curve Peak Correction Factors
Motion controllers normally round the corners of the trapezoid to limit jerk. Rounding preserves the area under the velocity curve, so cruise velocity is unchanged, but the acceleration has to peak higher than the average to cover the same velocity change in the same ramp time. Multiply the average acceleration from 4.5 * ds / dt^2 by the factor for the profile order your controller uses:
| Profile type | Peak / average acceleration | Peak acceleration from the estimate |
|---|---|---|
| Linear ramp (trapezoid) | 1.0 | 4.5 * ds / dt^2 |
| Cosine S-curve | 1.57 (pi/2) | 7.07 * ds / dt^2 |
| 5th order S-curve | 1.5 | 6.75 * ds / dt^2 |
| 7th order S-curve | 1.875 | 8.44 * ds / dt^2 |
| 3rd order S-curve | 2.0 | 9.0 * ds / dt^2 |
Third order is the lowest order that produces an S-curve at all — it makes jerk piecewise constant and acceleration piecewise linear — and it is also the harshest on peak acceleration, doubling the average. The 7th-order factor sits above the 5th-order one because the shaping is distributed differently across the ramp, not because higher order always means smoother peaks. Read your controller's profile parameter (order, jerk limit, or S-curve percentage) before picking a factor; if the controller only exposes a jerk time or an S-curve percentage, the effective factor lies between 1.0 and the table value for the fully shaped case.
Sizing Procedure
- Before anything else, fix the units. Pick one length unit and one time unit and hold them through every equation —
dsin mm anddtin s givesvin mm/s andain mm/s². Mixing mm with minutes or revolutions with degrees is the single most common source of a factor-of-60 or factor-of-360 error in this calculation. - Compute cruise velocity:
v = 1.5 * ds / dt. Do not move on until this is below the mechanism's speed limit and below the motor's rated speed after the gear ratio and lead are applied. - Compute average acceleration:
a = 4.5 * ds / dt^2. - Apply the S-curve factor from the table to get peak acceleration. Use 2.0 if you do not yet know the profile order — it is the worst case in the table and sizes conservatively.
- Convert to the motor shaft: divide linear velocity by the lead and multiply by the gear ratio for rotary speed; do the same for acceleration to get angular acceleration.
- Compute peak torque as
T = J_total * alpha_peak + T_friction + T_load, withJ_totalincluding motor rotor, coupling, screw or belt, and the reflected load. Compare against the drive's peak torque rating, not continuous. - Compute RMS torque across the duty cycle and compare against continuous rating. A move that passes peak and fails RMS needs a longer dwell, not a bigger acceleration.
Verification Against the Controller
The estimate is a sizing tool; the controller decides the real profile. Confirm it before committing hardware:
- Enter the calculated velocity and acceleration into the move command and issue the move against the real mechanism, or against the controller's simulation if the machine is not built.
- Trace commanded position, commanded velocity, and commanded acceleration. Measure the actual move time from motion start to in-position.
- If the measured move time exceeds
dt, the ramps are consuming more than one third of the time each — the controller is clamping acceleration, or the profile is triangular. Raise the acceleration limit or lengthen the allowed time. - Read the peak acceleration off the trace and divide it by
4.5 * ds / dt^2. That ratio is your controller's real S-curve factor for the configured jerk setting; record it and reuse it for every subsequent move on that machine. - Check peak current or peak torque on the drive during the accel ramp against the value computed in step 6 above. Agreement within about 10% confirms both the inertia model and the profile factor.
Failure Modes That Recur
-
Triangular moves. If the distance is short or the acceleration limit is high, the profile never reaches cruise. The 1/3-1/3-1/3 split no longer holds and
v = 1.5 * ds / dtunderstates the peak; for a pure triangular move the peak is2 * ds / dt. Check whether cruise exists before trusting the 1.5. - Asymmetric ramps. Machines that decelerate faster than they accelerate, or that ramp into a registration window, break the symmetry assumption. Fall back to segment-by-segment kinematics for those.
-
Average acceleration used for torque. Sizing a servo on
4.5 * ds / dt^2when the controller runs a 3rd-order S-curve leaves you 100% short on peak torque. Apply the factor. - Inertia omissions. Reflected load inertia through a gearbox scales with the square of the ratio; couplings and screws are often a larger share of total inertia than the payload on short-stroke axes.
- Editing a locked calculator. Kinematic spreadsheets are commonly sheet-protected without a password specifically so the substitution formulas survive data entry. Unprotect the sheet to extend it, then re-protect and re-verify one known case — a move with hand-checkable numbers — before circulating the file.
- Unit drift between tools. The controller may work in user units defined by a scaling parameter while your spreadsheet works in engineering units. Confirm the scaling parameter first; a mismatch shows up as a move that is right in shape and wrong by a constant factor.
Close the loop by re-running step 4 of the verification after any change to the jerk or S-curve setting — the factor moves with it.
FAQ
Can I use v = 1.5 * ds / dt for any move, or only trapezoidal ones?
Only for moves that actually reach cruise velocity with roughly symmetric ramps taking about a third of the time each. For a triangular move with no cruise segment the peak is 2 * ds / dt, and for asymmetric accel/decel you have to solve the segments individually.
Does an S-curve change the cruise velocity I calculated?
No. Rounding the velocity corners preserves the area under the velocity curve, so cruise velocity stays at 1.5 * ds / dt for the same distance and time. Only acceleration changes, peaking at 1.5x to 2.0x the average depending on profile order.
Can I size the drive from the average acceleration figure?
Only if the controller runs linear ramps. With S-curves, multiply by the profile factor — 2.0 for 3rd order, 1.875 for 7th order, 1.57 for cosine, 1.5 for 5th order — before computing peak torque, then verify against the drive's peak current trace during the accel ramp.