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 | -19.89, -1.862, -0.1249 + 0.7243j, -0.1249 − 0.7243j |
|---|---|
| Right-half-plane poles | 0 |
| Dominant pole(s) | -0.1249 + 0.7243j, -0.1249 − 0.7243j |
| Steady-state step error | 0 |
| Phase margin | 18.03 ° |
| 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
(0.15s² + 1.05s + 1) / (0.05s⁴ + 1.1s³ + 2s²)
(0.15s² + 1.05s + 1) / (0.05s⁴ + 1.1s³ + 2.15s² + 1.05s + 1)
(0.05s⁴ + 1.1s³ + 2s²) / (0.05s⁴ + 1.1s³ + 2.15s² + 1.05s + 1)
(0.15s² + 1.05s + 1) / (0.05s⁴ + 1.1s³ + 2.15s² + 1.05s + 1)
(0.15s⁴ + 1.35s³ + 3.1s² + 2s) / (0.05s⁴ + 1.1s³ + 2.15s² + 1.05s + 1)
(0.05s² + s) / (0.05s⁴ + 1.1s³ + 2.15s² + 1.05s + 1)
(− 0.15s² − 1.05s − 1) / (0.05s⁴ + 1.1s³ + 2.15s² + 1.05s + 1)
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[%] | 0 | 65.94 | +65.94 |
| Settling time (2%)[s] | 5.857 | 31 | +25.14 |
| Rise time (10%–90%)[s] | 3.361 | 1.392 | -1.97 |
| Steady-state step error[–] | 0 | 0 | 0 |
| Phase margin[°] | 76.35 | 18.03 | -58.32 |
| Gain margin[dB] | — | — | not comparable |
| Closed-loop bandwidth[rad/s] | 0.6436 | 1.201 | +0.5576 |
| 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
- · Closed-loop bandwidth rises from 0.6436 to 1.201 rad/s — a faster loop.
- · Phase margin drops from 76.35° to 18.03° — less damping in reserve.
- · Overshoot increases from 0.000% to 65.94%.
- · Settling time lengthens from 5.857 s to 31.00 s.
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 × | -19.888 | 0 | 1 |
| Pole × | -1.8616 | 0 | 1 |
| Pole × | -0.12493 | 0.72427 | 1 |
| Pole × | -0.12493 | -0.72427 | 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
- · Info The loop phase never reaches -180° (modulo 360°) inside the evaluated range: no finite gain margin is defined here.
- ⚠ Note Repeated poles on the imaginary axis produce a response growing like t: this is unstable, not marginally 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.