A worked design note. This is an aside for the design board. It presents the gain condition as a sufficient bound (Option A); this note records how the procedure-derived gains were obtained, in case the design is revisited.
In the super-twisting analysis the perturbation entering the sliding-variable dynamics is \(\delta_i(\mathbf{x},t)\), the residual left after the equivalent control cancels the nominal drift. The theorem does not bound \(\delta\) itself; it bounds its rate of change,
$$ |\dot{\delta}_i(\mathbf{x},t)| \;\le\; L_i . $$So \(L\) is the Lipschitz constant of the perturbation — a ceiling on how fast the mismatch can move. The integral gain \(\beta\) must be large enough for the STA integrator to track a disturbance changing at rate up to \(L\). This is why the gain condition depends on \(L\) and not on the size of \(\delta\).
In the parameter-mistune scenario the controller believes \(R_f\) is 50% too large. The resistance enters the drift vector \(a(\mathbf{x})\) through the term \(\tfrac{1}{L_fC_f}(-R_f\,i)\). With a wrong belief \(R_{f,\mathrm{bel}}=1.5\,R_f\), the equivalent control fails to cancel a residual
$$ \delta \;\approx\; \frac{1}{L_fC_f}\,\big(R_{f,\mathrm{bel}}-R_f\big)\,i \;=\; \frac{\Delta R_f}{L_fC_f}\,i,\qquad \Delta R_f = 0.5\,R_f . $$The mismatch is therefore proportional to the axis current \(i(t)\). Everything else in \(a(\mathbf{x})\) is cancelled correctly, so this resistance term is the dominant residual.
Take the realized current \(i(t)\) from an actual simulation run and build the residual time series using the coefficient above:
dRf = 0.5 * Rf
delta_d = (1/(Lf*Cf)) * dRf * id(t)
delta_q = (1/(Lf*Cf)) * dRf * iq(t)
\(L\) bounds \(\dot\delta\), so take the numerical time derivative of the residual:
ddelta_d = gradient(delta_d, t)
ddelta_q = gradient(delta_q, t)
\(L\) is the maximum absolute rate over the regime of interest:
L = max( |ddelta_d| , |ddelta_q| ) over the chosen window
| Regime | What it captures | \(L\) (1/s scale) |
|---|---|---|
| Steady-state (post-transient) | Fixed operating point; \(\delta\) nearly constant | 6.5 × 105 |
| Transient (at the step) | Worst-case rate at the disturbance instant | 5.8 × 107 |
Your own STA section argues that at a fixed operating point the inverter mismatch is a bounded constant — that is the steady-state row, the \(L\to 0\) favorable case where any positive gains formally suffice. The transient row is the conservative worst case.
The design procedure, with the typical constants from the paper \((c_\sigma=1.5,\ c_\beta=2.4,\ c_\alpha=4.5)\):
$$ \sigma = c_\sigma L,\qquad \beta = c_\beta\,c_\sigma^{2}L^{2},\qquad \alpha = c_\alpha\sqrt{\beta}. $$| Gain | Procedure | Working | Ratio |
|---|---|---|---|
| \(\beta\) | 2.3 × 1012 | 1.5 × 1010 | ≈ 150× |
| \(\alpha\) | 6.8 × 106 | 5.5 × 105 | ≈ 12× |
| Gain | Procedure | Working | Ratio |
|---|---|---|---|
| \(\beta\) | 1.8 × 1016 | 1.5 × 1010 | ≈ 106× |
| \(\alpha\) | 6.1 × 108 | 5.5 × 105 | ≈ 103× |
To make the gains literally come from the procedure, you would:
1. Commit to one \(L\). The defensible choice is the steady-state operating-point value, consistent with the bounded-constant argument already in the paper.
2. Accept the larger gains the procedure returns from that \(L\).
3. Re-run the full simulation with those gains and verify behavior — larger STA gains raise control effort and can increase steady ripple, so the chattering and peak-control results would need re-checking.
4. Report the chosen \(c_\sigma, c_\beta, c_\alpha\) and the resulting \((\alpha,\beta)\) as the designed pair.
Worked design note. Numbers reproduced from the Python port of the inverter simulation. Aside only — not part of the manuscript.