MOTION CONTROL / NUMERICAL STUDY
Servo-axis cycle planner
A motion and motor-duty calculation for a horizontal inspection shuttle. The tool picks the shortest accepted cycle from a declared grid, then exports the trajectory, motor loading, and the cases that ruled out faster settings.
Executed numerical reference study. These are calculated trajectories and synthetic commissioning cases, not measurements from a physical axis. No commercial motor or drive has been selected.
Reference machine and decision
The stage makes a 320 mm outward move, waits 0.25 s, returns, and waits 0.35 s. The screw lead is 20 mm/revolution and nominal moving mass is 22 kg. The corner table evaluates the payload, friction, efficiency and inertia variations declared in the input file. Inputs are editable in inputs.json.
The selected limits are 0.50 m/s velocity, 2.40 m/s² acceleration and 48 m/s³ jerk. This is the fastest accepted member of the 48-setting grid, not a claim of a global optimum. 240 candidate/corner combinations were computed.
| Corner | Cycle (s) | Peak torque (N m) | RMS torque (N m) | Speed (rpm) | Bus regen (J/cycle) |
|---|---|---|---|---|---|
| nominal | 2.3967 | 0.37220 | 0.17262 | 1500.0 | 2.73254 |
| heavy_payload | 2.3967 | 0.44010 | 0.20199 | 1500.0 | 4.07880 |
| high_drag | 2.3967 | 0.43261 | 0.20852 | 1500.0 | 1.57478 |
| lower_efficiency | 2.3967 | 0.40235 | 0.18564 | 1500.0 | 2.58327 |
| combined_corner | 2.3967 | 0.55827 | 0.26000 | 1500.0 | 3.07082 |

Calculus of the motion profile
Within a phase the jerk is constant. Repeated integration gives the state at local phase time u. The end state becomes the next phase's initial state, so position, velocity and acceleration remain continuous. Jerk is allowed to jump at phase boundaries.
a(u) = a₀ + j u v(u) = v₀ + a₀ u + j u²/2 x(u) = x₀ + v₀ u + a₀ u²/2 + j u³/6 Phase jerks: +J, 0, -J, 0, -J, 0, +J Phase durations: tⱼ, tₐ, tⱼ, tᵥ, tⱼ, tₐ, tⱼ v_peak = J tⱼ(tⱼ + tₐ) D_without_cruise = v_peak(2tⱼ + tₐ)
First determine whether the requested velocity can be reached. Its ramp time is the lesser of A/J and √(V/J), and the constant-acceleration interval follows from V = Jtⱼ(tⱼ+tₐ). Any remaining distance gives tᵥ. Short moves omit the cruise. If acceleration is also below its limit, tⱼ = (D/(2J))^(1/3). Otherwise tⱼ = A/J and the quadratic solution below gives tₐ.
tₐ = [ -3tⱼ + √(tⱼ² + 4D/A) ] / 2 T_move = 4tⱼ + 2tₐ + tᵥ
The sign of the requested displacement multiplies every phase jerk. A zero-distance request returns a stationary profile. This solver deliberately covers rest-to-rest moves with symmetric limits; it does not approximate arbitrary moving boundary states.
Motor torque and energy
The effective screw radius is r = lead/(2π), so angular speed is v/r and angular acceleration is a/r. The moving load requires F = ma + F_c sign(v) + b_v v. The efficiency factor changes with the direction of power flow. During motoring, the screw needs more shaft power than the load receives. During back-driving, only a fraction of the load power reaches the shaft.
ω = v/r α = a/r F = m a + F_c sign(v) + b_v v τ_trans = F r / η_forward when F v ≥ 0 τ_trans = F r η_backdrive when F v < 0 τ = τ_trans + J_rot α + b_rot ω τ_RMS = √[ (1/T_cycle) ∫ τ(t)² dt ] I_RMS = τ_RMS / Kt I_peak = max|τ| / Kt P_shaft = τ ω P_copper = 3 R_phase (τ/Kt)² P_terminal = P_shaft + P_copper P_bus = P_terminal/η_drive when P_terminal ≥ 0 P_bus = P_terminal η_regen when P_terminal < 0
Within each phase, force and torque are low-order polynomials. The code splits intervals at real force roots, differentiates each torque polynomial to locate its extrema, and integrates its square exactly. Power is split again at its real roots before integrating imported and regenerated energy. This avoids multiplying regenerative torque by the motoring loss factor and avoids confusing net energy with the positive energy pulses that the drive must handle.
For a complete rest-to-rest move, the change in translational and rotating kinetic energy is zero. The signed shaft-energy integral must therefore equal guide friction, screw losses, and rotary drag. The regression and acceptance records check that balance independently of the bus estimate.
One evaluated phase
The selected first ramp lasts 0.05000 s with jerk 48.0 m/s³. Starting from rest, integration gives acceleration 2.40000 m/s², velocity 0.06000 m/s and displacement 1.00000 mm at its end. These values become the next phase's initial conditions. All phase coefficients are in selected-phase-table.csv.


Declared acceptance envelope
| Limit | Value |
|---|---|
| peak_torque_Nm | 0.62 |
| continuous_torque_Nm | 0.3 |
| peak_current_Arms | 1.24 |
| continuous_current_Arms | 0.6 |
| maximum_speed_rpm | 1800.0 |
| regen_energy_per_cycle_J | 8.0 |
| average_regen_W | 4.0 |
All limits are reference design inputs. Peak and continuous current limits are consistent with the declared torque constant. The study checks the full cycle, including dwell, rather than averaging only acceleration segments. Idle electronics, iron loss, screw critical speed, thrust-bearing life, winding temperature, controller saturation, bus capacitance and a speed-dependent motor torque curve are outside this reduced model.
Verification and synthetic commissioning
verify.py runs the regression suite and records source hashes. Tests cover the three short-move regimes, the full seven-phase case, signed travel, phase continuity, derivative consistency, limiting inputs, lossless and lossy energy balances, independent adaptive quadrature, exact peak torque, and dwell effects. The separate commissioning study evaluates declared payload/friction corners, deliberate overload, encoder quantization, and a reduced second-order tracking model at nominal and degraded bandwidth.
Use and limits
This package is suitable for preliminary cycle and motor-duty comparison and for inspecting how motion limits change calculated loads. It is not machine-control firmware. The exported trajectory has no homing, limit-switch logic, collision avoidance, or emergency-stop behavior. Vertical loads and nonzero starting or ending velocity are not represented. Regenerative energy is an estimate at the modeled drive input; it is not a validated resistor or DC-link design.
The commissioning ODE and encoder checks are completed theoretical substitutes using stated inputs. They do not establish measured positioning accuracy, actual settling, or hardware qualification.
References
- Beckhoff: Axis start and seven-phase jerk-limited dynamics. Used to check the profile structure and limit conventions.
- THK: Studying the driving motor. Used to check the need to evaluate speed, peak torque and effective torque for screw-axis sizing.
- Kollmorgen: Regeneration. Used to distinguish regenerative pulse energy from continuous dissipation demand.
All equations and the implementation are written for this reference study. No manufacturer data is represented as an actual component selection.