Few corrections

This commit is contained in:
tdehaeze committed 2020-12-03 12:13:53 +01:00
1 parent d1bf2faf73
commit e0d51fa0ff
5 files changed
+476 -506

No files matched your search

+22 -40
View File
@@ -60,7 +60,7 @@ The general structure of this document is as follows:
- A very important step in $\mathcal{H}_\infty$ control is to express the control specifications (performances, robustness, etc.) as an $\mathcal{H}_\infty$ optimization problem. Such procedure is described in Section [[sec:modern_interpretation_specification]]
- One of the most useful use of the $\mathcal{H}_\infty$ control is the shaping of closed-loop transfer functions.
Such technique is presented in Section [[sec:closed-loop-shaping]]
- Finally, complete examples of the use of $\mathcal{H}_\infty$ Control for practical problems are provided in Section [[sec:h_infinity_mixed_sensitivity]].
- Finally, complete examples of the use of $\mathcal{H}_\infty$ Control for practical problems are provided in Section [[sec:h_infinity_mixed_sensitivity]]
* Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
@@ -1637,29 +1637,9 @@ And we now understand why setting an upper bound on the magnitude of $S$ is gene
To learn more about module/disk margin, you can check out [[https://www.youtube.com/watch?v=XazdN6eZF80][this]] video.
#+end_seealso
** TODO Summary of
** Summary of typical specification and associated wanted shaping
<<sec:other_requirements>>
# Interpretation of the $\mathcal{H}_\infty$ norm of systems:
# - frequency by frequency attenuation / amplification
# Let's note $G_t(s)$ the closed-loop transfer function from $w$ to $z$.
# Consider an input sinusoidal signal $w(t) = \sin\left( \omega_0 t \right)$, then the output signal $z(t)$ will be equal to:
# \[ z(t) = A \sin\left( \omega_0 t + \phi \right) \]
# with:
# - $A = |G_t(j\omega_0)|$ is the magnitude of $G_t(s)$ at $\omega_0$
# - $\phi = \angle G_t(j\omega_0)$ is the phase of $G_t(s)$ at $\omega_0$
Noise Attenuation: typical wanted shape for $T$
$S$ can be used to set a lower bound on the bandwidth
$T$ can be used to set a higher bound on the bandwidth
$T$ is used to make the system more robust to high frequency model uncertainties
#+name: tab:specification_modern
#+caption: Typical Specifications and corresponding wanted norms of open and closed loop tansfer functions
| | Open-Loop Shaping | Closed-Loop Shaping |
@@ -2088,8 +2068,8 @@ When multiple closed-loop transfer function are shaped at the same time, it is r
|--------------------------------------+--------------+-----------------------------------------------------------|
| Fast Reference Tracking | $S$ | Set lower bound on the bandwidth |
| Small Steady State Errors | $S$ | Small low frequency gain |
| Follow Step ref. inputs | $S$ | +20dB/dec slope at low frequency |
| Follow Ramp ref. inputs | $S$ | +40db/dec slope at low frequency |
| Follow Step ref. inputs | $S$ | Slope of +20dB/dec at low frequency |
| Follow Ramp ref. inputs | $S$ | Slope of +40dB/dec at low frequency |
| Follow Sinusoidal ref. inputs | $S$ | Small magnitude centered on the sin. frequency |
|--------------------------------------+--------------+-----------------------------------------------------------|
| Output Disturbance Rejection | $S$ | Small gain in the disturbance bandwidth |
@@ -2595,16 +2575,16 @@ These regions are summarized in Figure [[fig:h-infinity-4-blocs-constrains]].
Let's now apply the $\mathcal{H}_\infty$ Shaping control procedure on a practical example.
In Section [[sec:ex_control_problem]] the control problem is presented.
The design procedure used for the $\matcal{H}_\infty$ Mixed Sensitivity synthesis is described in Section [[sec:ex_control_procedure]].
The design procedure used to apply the $\mathcal{H}_\infty$ Mixed Sensitivity synthesis is described in Section [[sec:ex_control_procedure]].
The important step of interpreting the specifications is performed in Section [[sec:ex_specification_interpretation]].
The important step of interpreting the specifications as wanted shape of closed-loop transfer functions is performed in Section [[sec:ex_specification_interpretation]].
Then, the shaping of closed-loop transfer functions is performed in Sections [[sec:ex_shaping_S]], [[sec:ex_shaping_GS]] and [[sec:ex_shaping_T]].
Finally, the shaping of closed-loop transfer functions is performed in Sections [[sec:ex_shaping_S]], [[sec:ex_shaping_GS]] and [[sec:ex_shaping_T]].
** Control Problem
<<sec:ex_control_problem>>
Let's take out usual /test system/ shown in Figure [[fig:ex_test_system]].
Let's consider our usual /test system/ shown in Figure [[fig:ex_test_system]].
#+begin_src latex :file ex_test_system.png
\begin{tikzpicture}
@@ -2652,7 +2632,7 @@ Let's take out usual /test system/ shown in Figure [[fig:ex_test_system]].
The control specifications are:
- The displacement $y$ should follow reference inputs $r$ with negligible static error after 0.1s
- Reject disturbances $d$ in less than 0.1s
- Limit the effect of measurement noise $n$ on both the control input $u$ and on the output displacement $y$
- Limit the effect of measurement noise $n$ on the output displacement $y$
- Obtain a Robust System with good stability margins
#+end_important
@@ -2666,9 +2646,10 @@ The considered inputs are:
Here is the general design procedure that will be followed:
1. Compute the model of the plant
2. Translate the specifications into the wanted shape of closed-loop transfer functions
3. Write the system as a general control configuration
4. Shape sequentially the chosen closed-loop transfer functions
2. Write the control system as a general control problem
3. Translate the specifications into the wanted shape of closed-loop transfer functions
4. Chose the suitable weighted general plant to shape the wanted quantities
5. Shape sequentially the chosen closed-loop transfer functions
Let's first convert the system of Figure [[fig:ex_test_system]] into the classical feedback architecture of Figure [[fig:classical_feedback_test_system]].
@@ -2785,7 +2766,7 @@ We also define the generalized plant corresponding to the system and that will b
\draw[->] (addw.east) -- (addn.west);
\draw[->] (addn.east) -- (addr.west);
\draw[->] (uin) |- (u) node[above left](z2){$u$};
\draw[->] (addr.east) -- (addw-|z1) |- node[near start, right]{$v$} (K.east);
\draw[->] (addr.east) -- (addw-|z1) |- node[near start, right]{$\epsilon$} (K.east);
\draw[->] (K.west) -| node[near end, left]{$u$} (G-|d) -- (G.west);
\draw[->] (Gd.east) -| (addw.north);
@@ -2834,7 +2815,7 @@ Time domain simulations will be performed by first computing the closed-loop sys
#+begin_exercice
1. Translate the control specifications into wanted shape of closed-loop transfer functions
2. Conclude and the closed-loop transfer functions to be shaped
3. Chose a general configuration architecture that allows to shape the wanted closed-loop transfer function
3. Chose a general configuration architecture that allows to shape these transfer function
4. Using Matlab, define the generalized plant
#+HTML: <details><summary>Hint</summary>
@@ -2958,12 +2939,13 @@ We obtain the *weighted generalized plant* in Figure [[fig:ex_general_weighted_p
#+RESULTS:
[[file:figs/ex_general_weighted_plant.png]]
Finlay, performing the $\mathcal{H}_infty$ Shaping of $S$, $GS$ and $T$ can be done using the =hinfsyn= command:
Finlay, performing the $\mathcal{H}_\infty$ Shaping of $S$, $GS$ and $T$ is as simple as ruining the =hinfsyn= command:
#+begin_src matlab +n :eval no :tangle no
K = hinfsyn(Pw, 1, 1);
#+end_src
Now the closed-loop transfer functions are shaped sequentially:
Now let's shape the three closed-loop transfer functions sequentially:
- $S$ is shaped in Section [[sec:ex_shaping_S]]
- $GS$ is shaped in Section [[sec:ex_shaping_GS]]
- $T$ is shaped in Section [[sec:ex_shaping_T]]
@@ -2993,7 +2975,7 @@ To not constrain $GS$ and $T$ for the shaping of $S$, $W_2$ and $W_3$ are first
The $\mathcal{H}_\infty$ synthesis is performed and the obtained closed-loop transfer functions $S$, $GS$, and $T$ and compared with the upper bounds set by the weighting functions in Figure [[fig:ex_results_1]].
#+begin_src matlab :results output replace
#+begin_src matlab +n :results output replace
Pw = blkdiag(W1, W2, W3, 1)*P;
K1 = hinfsyn(Pw, 1, 1, 'Display', 'on');
#+end_src
@@ -3104,7 +3086,7 @@ Remember that in order to follow ramp inputs, the sensitivity function should ha
To do so, let's modify $W_1$ to impose a slope of +40dB/dec at low frequency.
This can simple be done by using a second order weight:
#+begin_src matlab
#+begin_src matlab +n
W1 = generateWeight('G0', 1e3, ...
'G1', 1/2, ...
'Gc', sqrt(2), 'wc', 2*pi*15, ...
@@ -3219,7 +3201,7 @@ This poor rejection of disturbances is actually due to the fact that the obtain
To overcome this issue, we can simply increase the magnitude of $W_2$ to limit the peak magnitude of $GS$
Let's take $W_2$ as a simple constant gain:
#+begin_src matlab
#+begin_src matlab +n
W2 = tf(4e5);
#+end_src
@@ -3335,7 +3317,7 @@ To do so, $T$ is shaped such that its high frequency gain is reduced.
This is done by increasing the high frequency gain of the weighting function $W_3$ until the $\mathcal{H}_\infty$ synthesis gives $\gamma \approx 1$.
The final weighting function $W_3$ is defined as follows:
#+begin_src matlab
#+begin_src matlab +n
W3 = generateWeight('G0', 1e-1, ...
'G1', 1e4, ...
'Gc', 1, 'wc', 2*pi*70, ...