Dynamics & Control · Lab
Control Design Lab
Put a controller in front of a plant and see exactly what it costs and what it buys. Every number here comes from the same time, frequency, stability and root-locus engines used elsewhere — nothing is tuned automatically, and nothing is declared optimal.
Plant G(s) = N(s) / D(s)
Controller C(s)
The slider is logarithmic from 10⁻³ to 10³; the field accepts any value.
The slider is logarithmic from 10⁻³ to 10³; the field accepts any value.
The slider is logarithmic from 10⁻³ to 10³; the field accepts any value.
Term Kd·s/(1 + s/N). Filter time constant τ = 1/N = 0.05 s; limiting high-frequency derivative gain Kd·N = 2.
Design requirements
Requirements are treated as constraints, not as a promise. Each enabled requirement is checked against the numbers the engines produced for the controller you chose. Several requirements can be mutually unsatisfiable; nothing here searches for a design.
Closed-loop verdict
| Closed-loop poles | -5.896 + 17.18j, -5.896 − 17.18j, -11.69, -0.5185 |
|---|---|
| Right-half-plane poles | 0 |
| Dominant pole(s) | -0.5185, -5.896 + 17.18j |
| Steady-state step error | 0 |
| Phase margin | 46.1 ° |
| Gain margin | No phase crossover |
The verdict is the direct classification of the roots of 1 + C(s)G(s)H(s) = 0 for this exact configuration — not an inference from the root-locus crossing scan.
Controller
C(s) = Kp + Ki/s + Kd·s/(1 + s/N)
| Controller numerator | 0.15s² + 1.05s + 1 |
|---|---|
| Controller denominator | 0.05s² + s |
| Form | Biproper — direct feedthrough |
| Controller poles | 0, -20 |
| Controller zeros | -1.137, -5.863 |
| Derivative filter τ = 1/N | 0.05 s |
| High-frequency derivative gain Kd·N | 2 |
Loop channels
(15s² + 105s + 100) / (0.05s⁴ + 1.2s³ + 9s² + 100s)
(15s² + 105s + 100) / (0.05s⁴ + 1.2s³ + 24s² + 205s + 100)
(0.05s⁴ + 1.2s³ + 9s² + 100s) / (0.05s⁴ + 1.2s³ + 24s² + 205s + 100)
(15s² + 105s + 100) / (0.05s⁴ + 1.2s³ + 24s² + 205s + 100)
(0.15s⁴ + 1.65s³ + 20.2s² + 109s + 100) / (0.05s⁴ + 1.2s³ + 24s² + 205s + 100)
(5s² + 100s) / (0.05s⁴ + 1.2s³ + 24s² + 205s + 100)
(− 15s² − 105s − 100) / (0.05s⁴ + 1.2s³ + 24s² + 205s + 100)
All seven channels share the closed-loop characteristic polynomial Dc·Dg·Dh + Nc·Ng·Nh, so S + T = 1 holds identically. Y/R and T coincide only when H(s) = 1. The disturbance d is additive at the PLANT INPUT, before G(s); the noise n is added to the measurement inside the feedback path. U/R is linear control effort — no actuator limit is modelled.
Uncontrolled versus controlled
| Quantity | Baseline C = 1 | Controlled | Change |
|---|---|---|---|
| Percent overshoot[%] | 62.59 | — | not comparable |
| Settling time (2%)[s] | 1.86 | — | not comparable |
| Rise time (10%–90%)[s] | 0.08336 | — | not comparable |
| Steady-state step error[–] | 0.5 | 0 | -0.5 |
| Phase margin[°] | 32.86 | 46.1 | +13.24 |
| Gain margin[dB] | — | — | not comparable |
| Closed-loop bandwidth[rad/s] | 21.66 | 0.69 | -20.97 |
| Peak control effort |u|[–] | — | — | not comparable |
The baseline is the SAME plant and the SAME feedback path with C(s) = 1, measured over the SAME simulated horizon. A change is not automatically an improvement.
What this controller traded
- · The steady-state step error is driven to zero (it was 0.5000).
- · Closed-loop bandwidth falls from 21.66 to 0.6900 rad/s — a slower loop.
- · Phase margin improves from 32.86° to 46.10°.
Suggested starting point (optional)
Ziegler–Nichols, ultimate-cycle (continuous-cycling) rule
This plant has no sustained-oscillation condition under proportional control: the closed-loop poles never cross the imaginary axis at a non-zero frequency for K > 0 in the range examined. The Ziegler–Nichols ultimate-cycle rule has no Ku or Tu here and is not applied.
- · Ziegler–Nichols ultimate-cycle rule, applied to the parallel form C(s) = Kp + Ki/s + Kd·s.
- · Ku and Tu are read from the imaginary-axis crossing of the proportional-only unity-feedback loop, not estimated from a test.
- · The rule is empirical and was derived for self-regulating process plants; it is not an optimum and offers no margin guarantee.
- · The classical PID row is tuned for roughly quarter-amplitude decay and typically gives a large overshoot.
- · Any proposal must be verified with the actual time, frequency and stability results before it is trusted.
Applying a row only writes the parameters. It does not verify anything: the resulting loop is then evaluated by the same time, frequency and stability engines as any hand design, and it is not claimed to be optimal.
Closed-loop poles and zeros
| Root | Re(s) | Im(s) | Multiplicity |
|---|---|---|---|
| Pole × | -5.8958 | 17.182 | 1 |
| Pole × | -5.8958 | -17.182 | 1 |
| Pole × | -11.69 | 0 | 1 |
| Pole × | -0.51848 | 0 | 1 |
Continue with this system
The current model travels with the link; nothing is re-entered and nothing opens on its own.
The plant travels; the controller you tuned here does not, because none of these workspaces has a controller to receive it.
Notes and limitations
Diagnostics
- ✕ Error The requested horizon needs more integration steps than the safety limit allows; use a shorter horizon or a larger maxStepSec.
- · Info The loop phase never reaches -180° (modulo 360°) inside the evaluated range: no finite gain margin is defined here.
- · Info Simple poles on the imaginary axis give a bounded, non-decaying mode: the system is marginally stable, not asymptotically stable.
Continuous-time, linear, time-invariant, single-input single-output. No time delay, actuator saturation, anti-windup, discretization, plant uncertainty model or automatic optimization is included. The controller you see is the controller that was evaluated.
What this Lab models
A continuous-time SISO feedback loop built from a plant G(s), a classical controller C(s) — P, PI, PD, PID with optional filtered derivative, or lead, lag and lead-lag compensation — and an optional non-unity measurement path H(s), evaluated across time response, frequency response, root locus, sensitivity S and complementary sensitivity T, and explicit design requirements.