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.95, -0.01965, -1.518 + 4.817j, -1.518 − 4.817j |
|---|---|
| Right-half-plane poles | 0 |
| Dominant pole(s) | -0.01965, -1.518 + 4.817j |
| Steady-state step error | 0 |
| Phase margin | 91.01 ° |
| 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.1s⁴ + 2.3s³ + 8.5s² + 50s)
(0.15s² + 1.05s + 1) / (0.1s⁴ + 2.3s³ + 8.65s² + 51.05s + 1)
(0.1s⁴ + 2.3s³ + 8.5s² + 50s) / (0.1s⁴ + 2.3s³ + 8.65s² + 51.05s + 1)
(0.15s² + 1.05s + 1) / (0.1s⁴ + 2.3s³ + 8.65s² + 51.05s + 1)
(0.3s⁴ + 3s³ + 15.8s² + 58.5s + 50) / (0.1s⁴ + 2.3s³ + 8.65s² + 51.05s + 1)
(0.05s² + s) / (0.1s⁴ + 2.3s³ + 8.65s² + 51.05s + 1)
(− 0.15s² − 1.05s − 1) / (0.1s⁴ + 2.3s³ + 8.65s² + 51.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[%] | 16.66 | — | not comparable |
| Settling time (2%)[s] | 2.707 | — | not comparable |
| Rise time (10%–90%)[s] | 0.6187 | — | not comparable |
| Steady-state step error[–] | 0.9804 | 0 | -0.9804 |
| Phase margin[°] | — | 91.01 | not comparable |
| Gain margin[dB] | — | — | not comparable |
| Closed-loop bandwidth[rad/s] | 7.351 | 0.01966 | -7.331 |
| 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.9804).
- · Closed-loop bandwidth falls from 7.351 to 0.01966 rad/s — a slower loop.
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.945 | 0 | 1 |
| Pole × | -0.019654 | 0 | 1 |
| Pole × | -1.5176 | 4.8174 | 1 |
| Pole × | -1.5176 | -4.8174 | 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.