Custom CSS for subfigures
Deploy / deploy (push) Successful in 5s

This commit is contained in:
2026-09-27 22:44:45 +02:00
parent 0ac269c786
commit acb04cdfba
5 changed files with 666 additions and 451 deletions
+1 -1
View File
@@ -102,7 +102,7 @@ contentCopyright = ''
# Link custom CSS and JS assets # Link custom CSS and JS assets
# (relative to /static/css and /static/js respectively) # (relative to /static/css and /static/js respectively)
customCSS = [] customCSS = ["custom.css"]
customJS = [] customJS = []
uglyURLs = false uglyURLs = false
File diff suppressed because it is too large Load Diff
+155 -123
View File
@@ -3627,7 +3627,7 @@ However, the inclusion of parametric uncertainty may be more significant for MIM
Unstructured perturbations are often used to get a simple uncertainty model. Unstructured perturbations are often used to get a simple uncertainty model.
We here define unstructured uncertainty as the use of a "full" complex perturbation matrix \\(\Delta\\), usually with dimensions compatible with those of the plant, where at each frequency any \\(\Delta(j\w)\\) satisfying \\(\maxsv(\Delta(j\w)) < 1\\) is allowed. We here define unstructured uncertainty as the use of a "full" complex perturbation matrix \\(\Delta\\), usually with dimensions compatible with those of the plant, where at each frequency any \\(\Delta(j\w)\\) satisfying \\(\maxsv(\Delta(j\w)) < 1\\) is allowed.
Three common forms of **feedforward unstructured uncertainty** are shown [Table 4](#table--fig:feedforward-uncertainty): additive uncertainty, multiplicative input uncertainty and multiplicative output uncertainty. Three common forms of **feedforward unstructured uncertainty** are shown [Figure 29](#table--fig:feedforward-uncertainty): additive uncertainty, multiplicative input uncertainty and multiplicative output uncertainty.
<div class="important"> <div class="important">
@@ -3641,17 +3641,26 @@ Three common forms of **feedforward unstructured uncertainty** are shown [Table
</div> </div>
<a id="table--fig:feedforward-uncertainty"></a>
<div class="table-caption"> <figure class="subfigures" id="table--fig:feedforward-uncertainty">
<span class="table-number"><a href="#table--fig:feedforward-uncertainty">Table 4</a>:</span> <div class="subfigure-row">
Common feedforward unstructured uncertainty <div class="subfigure" id="org-target--fig-additive-uncertainty">
<img src="/ox-hugo/skogestad07_additive_uncertainty.png" alt="Additive uncertainty" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(a)</span> Additive uncertainty</div>
</div> </div>
<div class="subfigure" id="org-target--fig-input-uncertainty">
<img src="/ox-hugo/skogestad07_input_uncertainty.png" alt="Multiplicative input uncertainty" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(b)</span> Multiplicative input uncertainty</div>
</div>
<div class="subfigure" id="org-target--fig-output-uncertainty">
<img src="/ox-hugo/skogestad07_output_uncertainty.png" alt="Multiplicative output uncertainty" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(c)</span> Multiplicative output uncertainty</div>
</div>
</div>
<figcaption><span class="figure-number">Figure 29: </span>Common feedforward unstructured uncertainty</figcaption>
</figure>
| ![](/ox-hugo/skogestad07_additive_uncertainty.png) | ![](/ox-hugo/skogestad07_input_uncertainty.png) | ![](/ox-hugo/skogestad07_output_uncertainty.png) | In [Figure 30](#table--fig:feedback-uncertainty), three **feedback or inverse unstructured uncertainty** forms are shown: inverse additive uncertainty, inverse multiplicative input uncertainty and inverse multiplicative output uncertainty.
|-------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
| <span class="org-target" id="org-target--fig-additive-uncertainty"></span> Additive uncertainty | <span class="org-target" id="org-target--fig-input-uncertainty"></span> Multiplicative input uncertainty | <span class="org-target" id="org-target--fig-output-uncertainty"></span> Multiplicative output uncertainty |
In [Table 5](#table--fig:feedback-uncertainty), three **feedback or inverse unstructured uncertainty** forms are shown: inverse additive uncertainty, inverse multiplicative input uncertainty and inverse multiplicative output uncertainty.
<div class="important"> <div class="important">
@@ -3665,15 +3674,24 @@ In [Table 5](#table--fig:feedback-uncertainty), three **feedback or inverse unst
</div> </div>
<a id="table--fig:feedback-uncertainty"></a>
<div class="table-caption">
<span class="table-number"><a href="#table--fig:feedback-uncertainty">Table 5</a>:</span>
Common feedback unstructured uncertainty
</div>
| ![](/ox-hugo/skogestad07_inv_additive_uncertainty.png) | ![](/ox-hugo/skogestad07_inv_input_uncertainty.png) | ![](/ox-hugo/skogestad07_inv_output_uncertainty.png) | <figure class="subfigures" id="table--fig:feedback-uncertainty">
|-------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| <div class="subfigure-row">
| <span class="org-target" id="org-target--fig-inv-additive-uncertainty"></span> Inverse additive uncertainty | <span class="org-target" id="org-target--fig-inv-input-uncertainty"></span> Inverse multiplicative input uncertainty | <span class="org-target" id="org-target--fig-inv-output-uncertainty"></span> Inverse multiplicative output uncertainty | <div class="subfigure" id="org-target--fig-inv-additive-uncertainty">
<img src="/ox-hugo/skogestad07_inv_additive_uncertainty.png" alt="Inverse additive uncertainty" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(a)</span> Inverse additive uncertainty</div>
</div>
<div class="subfigure" id="org-target--fig-inv-input-uncertainty">
<img src="/ox-hugo/skogestad07_inv_input_uncertainty.png" alt="Inverse multiplicative input uncertainty" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(b)</span> Inverse multiplicative input uncertainty</div>
</div>
<div class="subfigure" id="org-target--fig-inv-output-uncertainty">
<img src="/ox-hugo/skogestad07_inv_output_uncertainty.png" alt="Inverse multiplicative output uncertainty" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(c)</span> Inverse multiplicative output uncertainty</div>
</div>
</div>
<figcaption><span class="figure-number">Figure 30: </span>Common feedback unstructured uncertainty</figcaption>
</figure>
##### Lumping uncertainty into a single perturbation {#lumping-uncertainty-into-a-single-perturbation} ##### Lumping uncertainty into a single perturbation {#lumping-uncertainty-into-a-single-perturbation}
@@ -3768,12 +3786,12 @@ where \\(r\_0\\) is the relative uncertainty at steady-state, \\(1/\tau\\) is th
### Obtaining \\(P\\), \\(N\\) and \\(M\\) {#obtaining-p-n-and-m} ### Obtaining \\(P\\), \\(N\\) and \\(M\\) {#obtaining-p-n-and-m}
Let's consider the feedback system with multiplicative input uncertainty \\(\Delta\_I\\) shown [Figure 29](#figure--fig:input-uncertainty-set-feedback-weight). Let's consider the feedback system with multiplicative input uncertainty \\(\Delta\_I\\) shown [Figure 31](#figure--fig:input-uncertainty-set-feedback-weight).
\\(W\_I\\) is a normalization weight for the uncertainty and \\(W\_P\\) is a performance weight. \\(W\_I\\) is a normalization weight for the uncertainty and \\(W\_P\\) is a performance weight.
<a id="figure--fig:input-uncertainty-set-feedback-weight"></a> <a id="figure--fig:input-uncertainty-set-feedback-weight"></a>
{{< figure src="/ox-hugo/skogestad07_input_uncertainty_set_feedback_weight.png" caption="<span class='figure-number'>Figure 29: </span>System with multiplicative input uncertainty and performance measured at the output" >}} {{< figure src="/ox-hugo/skogestad07_input_uncertainty_set_feedback_weight.png" caption="<span class='figure-number'>Figure 31: </span>System with multiplicative input uncertainty and performance measured at the output" >}}
We want to derive the generalized plant \\(P\\) which has inputs \\([u\_\Delta,\ w,\ u]^T\\) and outputs \\([y\_\Delta,\ z,\ v]^T\\). We want to derive the generalized plant \\(P\\) which has inputs \\([u\_\Delta,\ w,\ u]^T\\) and outputs \\([y\_\Delta,\ z,\ v]^T\\).
@@ -3906,7 +3924,7 @@ Then the \\(M\Delta\text{-system}\\) is stable for all perturbations \\(\Delta\\
#### Application of the Unstructured RS-condition {#application-of-the-unstructured-rs-condition} #### Application of the Unstructured RS-condition {#application-of-the-unstructured-rs-condition}
We will now present necessary and sufficient conditions for robust stability for each of the six single unstructured perturbations in [Table 4](#table--fig:feedforward-uncertainty) and [Table 5](#table--fig:feedback-uncertainty) with We will now present necessary and sufficient conditions for robust stability for each of the six single unstructured perturbations in [Figure 29](#table--fig:feedforward-uncertainty) and [Figure 30](#table--fig:feedback-uncertainty) with
\begin{equation\*} \begin{equation\*}
E = W\_2 \Delta W\_1, \quad \hnorm{\Delta} \le 1 E = W\_2 \Delta W\_1, \quad \hnorm{\Delta} \le 1
@@ -3951,7 +3969,7 @@ In order to get tighter condition we must use a tighter uncertainty description
Robust stability bound in terms of the \\(\hinf\\) norm (\\(\text{RS}\Leftrightarrow\hnorm{M}<1\\)) are in general only tight when there is a single full perturbation block. Robust stability bound in terms of the \\(\hinf\\) norm (\\(\text{RS}\Leftrightarrow\hnorm{M}<1\\)) are in general only tight when there is a single full perturbation block.
An "exception" to this is when the uncertainty blocks enter or exit from the same location in the block diagram, because they can then be stacked on top of each other or side-by-side, in an overall \\(\Delta\\) which is then full matrix. An "exception" to this is when the uncertainty blocks enter or exit from the same location in the block diagram, because they can then be stacked on top of each other or side-by-side, in an overall \\(\Delta\\) which is then full matrix.
One important uncertainty description that falls into this category is the **coprime uncertainty description** shown in [Figure 30](#figure--fig:coprime-uncertainty), for which the set of plants is One important uncertainty description that falls into this category is the **coprime uncertainty description** shown in [Figure 32](#figure--fig:coprime-uncertainty), for which the set of plants is
\begin{equation\*} \begin{equation\*}
G\_p = (M\_l + \Delta\_M)^{-1}(Nl + \Delta\_N), \quad \hnorm{[\Delta\_N, \ \Delta\_N]} \le \epsilon G\_p = (M\_l + \Delta\_M)^{-1}(Nl + \Delta\_N), \quad \hnorm{[\Delta\_N, \ \Delta\_N]} \le \epsilon
@@ -3963,7 +3981,7 @@ This uncertainty description is surprisingly **general**, it allows both zeros a
<a id="figure--fig:coprime-uncertainty"></a> <a id="figure--fig:coprime-uncertainty"></a>
{{< figure src="/ox-hugo/skogestad07_coprime_uncertainty.png" caption="<span class='figure-number'>Figure 30: </span>Coprime Uncertainty" >}} {{< figure src="/ox-hugo/skogestad07_coprime_uncertainty.png" caption="<span class='figure-number'>Figure 32: </span>Coprime Uncertainty" >}}
Since we have no weights on the perturbations, it is reasonable to use a normalized coprime factorization of the nominal plant. Since we have no weights on the perturbations, it is reasonable to use a normalized coprime factorization of the nominal plant.
In any case, to test for RS we can rearrange the block diagram to match the \\(M\Delta\text{-structure}\\) with In any case, to test for RS we can rearrange the block diagram to match the \\(M\Delta\text{-structure}\\) with
@@ -4007,12 +4025,12 @@ To this effect, introduce the block-diagonal scaling matrix
where \\(d\_i\\) is a scalar and \\(I\_i\\) is an identity matrix of the same dimension as the \\(i\\)'th perturbation block \\(\Delta\_i\\). where \\(d\_i\\) is a scalar and \\(I\_i\\) is an identity matrix of the same dimension as the \\(i\\)'th perturbation block \\(\Delta\_i\\).
Now rescale the inputs and outputs of \\(M\\) and \\(\Delta\\) by inserting the matrices \\(D\\) and \\(D^{-1}\\) on both sides as shown in [Figure 31](#figure--fig:block-diagonal-scalings). Now rescale the inputs and outputs of \\(M\\) and \\(\Delta\\) by inserting the matrices \\(D\\) and \\(D^{-1}\\) on both sides as shown in [Figure 33](#figure--fig:block-diagonal-scalings).
This clearly has no effect on stability. This clearly has no effect on stability.
<a id="figure--fig:block-diagonal-scalings"></a> <a id="figure--fig:block-diagonal-scalings"></a>
{{< figure src="/ox-hugo/skogestad07_block_diagonal_scalings.png" caption="<span class='figure-number'>Figure 31: </span>Use of block-diagonal scalings, \\(\Delta D = D \Delta\\)" >}} {{< figure src="/ox-hugo/skogestad07_block_diagonal_scalings.png" caption="<span class='figure-number'>Figure 33: </span>Use of block-diagonal scalings, \\(\Delta D = D \Delta\\)" >}}
Note that with the chosen form for the scalings we have for each perturbation block \\(\Delta\_i = d\_i \Delta\_i d\_i^{-1}\\), that is we have \\(\Delta = D \Delta D^{-1}\\). Note that with the chosen form for the scalings we have for each perturbation block \\(\Delta\_i = d\_i \Delta\_i d\_i^{-1}\\), that is we have \\(\Delta = D \Delta D^{-1}\\).
@@ -4302,7 +4320,7 @@ Note that \\(\mu\\) underestimate how bad or good the actual worst case performa
### Application: RP with Input Uncertainty {#application-rp-with-input-uncertainty} ### Application: RP with Input Uncertainty {#application-rp-with-input-uncertainty}
We will now consider in some detail the case of multiplicative input uncertainty with performance defined in terms of weighted sensitivity ([Figure 29](#figure--fig:input-uncertainty-set-feedback-weight)). We will now consider in some detail the case of multiplicative input uncertainty with performance defined in terms of weighted sensitivity ([Figure 31](#figure--fig:input-uncertainty-set-feedback-weight)).
The performance requirement is then The performance requirement is then
@@ -4416,11 +4434,11 @@ with the decoupling controller we have:
\overline{\sigma}(N\_{22}) = \overline{\sigma}(w\_P S) = \left|\frac{s/2 + 0.05}{s + 0.7}\right| \overline{\sigma}(N\_{22}) = \overline{\sigma}(w\_P S) = \left|\frac{s/2 + 0.05}{s + 0.7}\right|
\end{equation\*} \end{equation\*}
and we see from [Figure 32](#figure--fig:mu-plots-distillation) that the NP-condition is satisfied. and we see from [Figure 34](#figure--fig:mu-plots-distillation) that the NP-condition is satisfied.
<a id="figure--fig:mu-plots-distillation"></a> <a id="figure--fig:mu-plots-distillation"></a>
{{< figure src="/ox-hugo/skogestad07_mu_plots_distillation.png" caption="<span class='figure-number'>Figure 32: </span>\\(\mu\text{-plots}\\) for distillation process with decoupling controller" >}} {{< figure src="/ox-hugo/skogestad07_mu_plots_distillation.png" caption="<span class='figure-number'>Figure 34: </span>\\(\mu\text{-plots}\\) for distillation process with decoupling controller" >}}
##### RS {#rs} ##### RS {#rs}
@@ -4431,7 +4449,7 @@ In this case \\(w\_I T\_I = w\_I T\\) is a scalar times the identity matrix:
\mu\_{\Delta\_I}(w\_I T\_I) = |w\_I t| = \left|0.2 \frac{5s + 1}{(0.5s + 1)(1.43s + 1)}\right| \mu\_{\Delta\_I}(w\_I T\_I) = |w\_I t| = \left|0.2 \frac{5s + 1}{(0.5s + 1)(1.43s + 1)}\right|
\end{equation\*} \end{equation\*}
and we see from [Figure 32](#figure--fig:mu-plots-distillation) that RS is satisfied. and we see from [Figure 34](#figure--fig:mu-plots-distillation) that RS is satisfied.
The peak value of \\(\mu\_{\Delta\_I}(M)\\) is \\(0.53\\) meaning that we may increase the uncertainty by a factor of \\(1/0.53 = 1.89\\) before the worst case uncertainty yields instability. The peak value of \\(\mu\_{\Delta\_I}(M)\\) is \\(0.53\\) meaning that we may increase the uncertainty by a factor of \\(1/0.53 = 1.89\\) before the worst case uncertainty yields instability.
@@ -4439,7 +4457,7 @@ The peak value of \\(\mu\_{\Delta\_I}(M)\\) is \\(0.53\\) meaning that we may in
##### RP {#rp} ##### RP {#rp}
Although the system has good robustness margins and excellent nominal performance, the robust performance is poor. Although the system has good robustness margins and excellent nominal performance, the robust performance is poor.
This is shown in [Figure 32](#figure--fig:mu-plots-distillation) where the \\(\mu\text{-curve}\\) for RP was computed numerically using \\(\mu\_{\hat{\Delta}}(N)\\), with \\(\hat{\Delta} = \text{diag}\\{\Delta\_I, \Delta\_P\\}\\) and \\(\Delta\_I = \text{diag}\\{\delta\_1, \delta\_2\\}\\). This is shown in [Figure 34](#figure--fig:mu-plots-distillation) where the \\(\mu\text{-curve}\\) for RP was computed numerically using \\(\mu\_{\hat{\Delta}}(N)\\), with \\(\hat{\Delta} = \text{diag}\\{\Delta\_I, \Delta\_P\\}\\) and \\(\Delta\_I = \text{diag}\\{\delta\_1, \delta\_2\\}\\).
The peak value is close to 6, meaning that even with 6 times less uncertainty, the weighted sensitivity will be about 6 times larger than what we require. The peak value is close to 6, meaning that even with 6 times less uncertainty, the weighted sensitivity will be about 6 times larger than what we require.
@@ -4576,11 +4594,11 @@ The latter is an attempt to "flatten out" \\(\mu\\).
#### Example: \\(\mu\text{-synthesis}\\) with DK-iteration {#example-mu-text-synthesis-with-dk-iteration} #### Example: \\(\mu\text{-synthesis}\\) with DK-iteration {#example-mu-text-synthesis-with-dk-iteration}
For simplicity, we will consider again the case of multiplicative uncertainty and performance defined in terms of weighted sensitivity. For simplicity, we will consider again the case of multiplicative uncertainty and performance defined in terms of weighted sensitivity.
The uncertainty weight \\(w\_I I\\) and performance weight \\(w\_P I\\) are shown graphically in [Figure 33](#figure--fig:weights-distillation). The uncertainty weight \\(w\_I I\\) and performance weight \\(w\_P I\\) are shown graphically in [Figure 35](#figure--fig:weights-distillation).
<a id="figure--fig:weights-distillation"></a> <a id="figure--fig:weights-distillation"></a>
{{< figure src="/ox-hugo/skogestad07_weights_distillation.png" caption="<span class='figure-number'>Figure 33: </span>Uncertainty and performance weights" >}} {{< figure src="/ox-hugo/skogestad07_weights_distillation.png" caption="<span class='figure-number'>Figure 35: </span>Uncertainty and performance weights" >}}
The objective is to minimize the peak value of \\(\mu\_{\tilde{\Delta}}(N)\\), \\(\tilde{\Delta} = \text{diag}\\{\Delta\_I, \Delta\_P\\}\\). The objective is to minimize the peak value of \\(\mu\_{\tilde{\Delta}}(N)\\), \\(\tilde{\Delta} = \text{diag}\\{\Delta\_I, \Delta\_P\\}\\).
\\(\Delta\_I\\) is a diagonal \\(2 \times 2\\) matrix representing the diagonal input uncertainty and \\(\Delta\_P\\) is a full \\(2 \times 2\\) matrix representing the performance specifications. \\(\Delta\_I\\) is a diagonal \\(2 \times 2\\) matrix representing the diagonal input uncertainty and \\(\Delta\_P\\) is a full \\(2 \times 2\\) matrix representing the performance specifications.
@@ -4592,8 +4610,8 @@ The scaling matrix \\(D\\) for \\(DND^{-1}\\) then has the structure \\(D = \tex
- Iteration No. 1. - Iteration No. 1.
Step 1: with the initial scalings, the \\(\mathcal{H}\_\infty\\) synthesis produced a 6 state controller (2 states from the plant model and 2 from each of the weights). Step 1: with the initial scalings, the \\(\mathcal{H}\_\infty\\) synthesis produced a 6 state controller (2 states from the plant model and 2 from each of the weights).
Step 2: the upper \\(\mu\text{-bound}\\) is shown in [Figure 34](#figure--fig:dk-iter-mu). Step 2: the upper \\(\mu\text{-bound}\\) is shown in [Figure 36](#figure--fig:dk-iter-mu).
Step 3: the frequency dependent \\(d\_1(\omega)\\) and \\(d\_2(\omega)\\) from step 2 are fitted using a 4th order transfer function shown in [Figure 35](#figure--fig:dk-iter-d-scale) Step 3: the frequency dependent \\(d\_1(\omega)\\) and \\(d\_2(\omega)\\) from step 2 are fitted using a 4th order transfer function shown in [Figure 37](#figure--fig:dk-iter-d-scale)
- Iteration No. 2. - Iteration No. 2.
Step 1: with the 8 state scalings \\(D^1(s)\\), the \\(\mathcal{H}\_\infty\\) synthesis gives a 22 state controller. Step 1: with the 8 state scalings \\(D^1(s)\\), the \\(\mathcal{H}\_\infty\\) synthesis gives a 22 state controller.
Step 2: This controller gives a peak value of \\(\mu\\) of \\(1.02\\). Step 2: This controller gives a peak value of \\(\mu\\) of \\(1.02\\).
@@ -4603,25 +4621,25 @@ The scaling matrix \\(D\\) for \\(DND^{-1}\\) then has the structure \\(D = \tex
<a id="figure--fig:dk-iter-mu"></a> <a id="figure--fig:dk-iter-mu"></a>
{{< figure src="/ox-hugo/skogestad07_dk_iter_mu.png" caption="<span class='figure-number'>Figure 34: </span>Change in \\(\mu\\) during DK-iteration" >}} {{< figure src="/ox-hugo/skogestad07_dk_iter_mu.png" caption="<span class='figure-number'>Figure 36: </span>Change in \\(\mu\\) during DK-iteration" >}}
<a id="figure--fig:dk-iter-d-scale"></a> <a id="figure--fig:dk-iter-d-scale"></a>
{{< figure src="/ox-hugo/skogestad07_dk_iter_d_scale.png" caption="<span class='figure-number'>Figure 35: </span>Change in D-scale \\(d\_1\\) during DK-iteration" >}} {{< figure src="/ox-hugo/skogestad07_dk_iter_d_scale.png" caption="<span class='figure-number'>Figure 37: </span>Change in D-scale \\(d\_1\\) during DK-iteration" >}}
The final \\(\mu\text{-curves}\\) for NP, RS and RP with the controller \\(K\_3\\) are shown in [Figure 36](#figure--fig:mu-plot-optimal-k3). The final \\(\mu\text{-curves}\\) for NP, RS and RP with the controller \\(K\_3\\) are shown in [Figure 38](#figure--fig:mu-plot-optimal-k3).
The objectives of RS and NP are easily satisfied. The objectives of RS and NP are easily satisfied.
The peak value of \\(\mu\\) is just slightly over 1, so the performance specification \\(\overline{\sigma}(w\_P S\_p) < 1\\) is almost satisfied for all possible plants. The peak value of \\(\mu\\) is just slightly over 1, so the performance specification \\(\overline{\sigma}(w\_P S\_p) < 1\\) is almost satisfied for all possible plants.
<a id="figure--fig:mu-plot-optimal-k3"></a> <a id="figure--fig:mu-plot-optimal-k3"></a>
{{< figure src="/ox-hugo/skogestad07_mu_plot_optimal_k3.png" caption="<span class='figure-number'>Figure 36: </span>\\(mu\text{-plots}\\) with \\(\mu\\) &quot;optimal&quot; controller \\(K\_3\\)" >}} {{< figure src="/ox-hugo/skogestad07_mu_plot_optimal_k3.png" caption="<span class='figure-number'>Figure 38: </span>\\(mu\text{-plots}\\) with \\(\mu\\) &quot;optimal&quot; controller \\(K\_3\\)" >}}
To confirm that, 6 perturbed plants are used to compute the perturbed sensitivity functions shown in [Figure 37](#figure--fig:perturb-s-k3). To confirm that, 6 perturbed plants are used to compute the perturbed sensitivity functions shown in [Figure 39](#figure--fig:perturb-s-k3).
<a id="figure--fig:perturb-s-k3"></a> <a id="figure--fig:perturb-s-k3"></a>
{{< figure src="/ox-hugo/skogestad07_perturb_s_k3.png" caption="<span class='figure-number'>Figure 37: </span>Perturbed sensitivity functions \\(\overline{\sigma}(S^\prime)\\) using \\(\mu\\) &quot;optimal&quot; controller \\(K\_3\\). Lower solid line: nominal plant. Upper solid line: worst-case plant" >}} {{< figure src="/ox-hugo/skogestad07_perturb_s_k3.png" caption="<span class='figure-number'>Figure 39: </span>Perturbed sensitivity functions \\(\overline{\sigma}(S^\prime)\\) using \\(\mu\\) &quot;optimal&quot; controller \\(K\_3\\). Lower solid line: nominal plant. Upper solid line: worst-case plant" >}}
### Further Remarks on \\(\mu\\) {#further-remarks-on-mu} ### Further Remarks on \\(\mu\\) {#further-remarks-on-mu}
@@ -4696,7 +4714,7 @@ By multivariable transfer function shaping, therefore, we mean the shaping of th
The classical loop-shaping ideas can be further generalized to MIMO systems by considering the singular values. The classical loop-shaping ideas can be further generalized to MIMO systems by considering the singular values.
Consider the one degree-of-freedom system as shown in [Figure 38](#figure--fig:classical-feedback-small). Consider the one degree-of-freedom system as shown in [Figure 40](#figure--fig:classical-feedback-small).
We have the following important relationships: We have the following important relationships:
\begin{align} \begin{align}
@@ -4706,7 +4724,7 @@ We have the following important relationships:
<a id="figure--fig:classical-feedback-small"></a> <a id="figure--fig:classical-feedback-small"></a>
{{< figure src="/ox-hugo/skogestad07_classical_feedback_small.png" caption="<span class='figure-number'>Figure 38: </span>One degree-of-freedom feedback configuration" >}} {{< figure src="/ox-hugo/skogestad07_classical_feedback_small.png" caption="<span class='figure-number'>Figure 40: </span>One degree-of-freedom feedback configuration" >}}
<div class="important"> <div class="important">
@@ -4750,11 +4768,11 @@ Thus, over specified frequency ranges, it is relatively easy to approximate the
</div> </div>
Typically, the open-loop requirements 1 and 3 are valid and important at low frequencies \\(0 \le \omega \le \omega\_l \le \omega\_B\\), while conditions 2, 4, 5 and 6 are conditions which are valid and important at high frequencies \\(\omega\_B \le \omega\_h \le \omega \le \infty\\), as illustrated in [Figure 39](#figure--fig:design-trade-off-mimo-gk). Typically, the open-loop requirements 1 and 3 are valid and important at low frequencies \\(0 \le \omega \le \omega\_l \le \omega\_B\\), while conditions 2, 4, 5 and 6 are conditions which are valid and important at high frequencies \\(\omega\_B \le \omega\_h \le \omega \le \infty\\), as illustrated in [Figure 41](#figure--fig:design-trade-off-mimo-gk).
<a id="figure--fig:design-trade-off-mimo-gk"></a> <a id="figure--fig:design-trade-off-mimo-gk"></a>
{{< figure src="/ox-hugo/skogestad07_design_trade_off_mimo_gk.png" caption="<span class='figure-number'>Figure 39: </span>Design trade-offs for the multivariable loop transfer function \\(GK\\)" >}} {{< figure src="/ox-hugo/skogestad07_design_trade_off_mimo_gk.png" caption="<span class='figure-number'>Figure 41: </span>Design trade-offs for the multivariable loop transfer function \\(GK\\)" >}}
The control engineer must design \\(K\\) such that \\(\minsv(GK)\\) lies above a performance boundary for all \\(\omega\\) up to \\(\omega\_l\\), and such that \\(\maxsv(GK)\\) lies below a robustness boundary for all \\(\omega\\) above \\(\omega\_h\\).<br /> The control engineer must design \\(K\\) such that \\(\minsv(GK)\\) lies above a performance boundary for all \\(\omega\\) up to \\(\omega\_l\\), and such that \\(\maxsv(GK)\\) lies below a robustness boundary for all \\(\omega\\) above \\(\omega\_h\\).<br />
@@ -4810,11 +4828,11 @@ The optimal state estimate is given by a **Kalman filter**.
The solution to the LQG problem is then found by replacing \\(x\\) by \\(\hat{x}\\) to give \\(u(t) = -K\_r \hat{x}\\). The solution to the LQG problem is then found by replacing \\(x\\) by \\(\hat{x}\\) to give \\(u(t) = -K\_r \hat{x}\\).
We therefore see that the LQG problem and its solution can be separated into two distinct parts as illustrated in [Figure 40](#figure--fig:lqg-separation): the optimal state feedback and the optimal state estimator (the Kalman filter). We therefore see that the LQG problem and its solution can be separated into two distinct parts as illustrated in [Figure 42](#figure--fig:lqg-separation): the optimal state feedback and the optimal state estimator (the Kalman filter).
<a id="figure--fig:lqg-separation"></a> <a id="figure--fig:lqg-separation"></a>
{{< figure src="/ox-hugo/skogestad07_lqg_separation.png" caption="<span class='figure-number'>Figure 40: </span>The separation theorem" >}} {{< figure src="/ox-hugo/skogestad07_lqg_separation.png" caption="<span class='figure-number'>Figure 42: </span>The separation theorem" >}}
<div class="important"> <div class="important">
@@ -4842,7 +4860,7 @@ and \\(X\\) is the unique positive-semi definite solution of the algebraic Ricca
<div class="important"> <div class="important">
The **Kalman filter** has the structure of an ordinary state-estimator, as shown on [Figure 41](#figure--fig:lqg-kalman-filter), with: The **Kalman filter** has the structure of an ordinary state-estimator, as shown on [Figure 43](#figure--fig:lqg-kalman-filter), with:
\begin{equation} \label{eq:kalman\_filter\_structure} \begin{equation} \label{eq:kalman\_filter\_structure}
\dot{\hat{x}} = A\hat{x} + Bu + K\_f(y-C\hat{x}) \dot{\hat{x}} = A\hat{x} + Bu + K\_f(y-C\hat{x})
@@ -4864,9 +4882,9 @@ Where \\(Y\\) is the unique positive-semi definite solution of the algebraic Ric
<a id="figure--fig:lqg-kalman-filter"></a> <a id="figure--fig:lqg-kalman-filter"></a>
{{< figure src="/ox-hugo/skogestad07_lqg_kalman_filter.png" caption="<span class='figure-number'>Figure 41: </span>The LQG controller and noisy plant" >}} {{< figure src="/ox-hugo/skogestad07_lqg_kalman_filter.png" caption="<span class='figure-number'>Figure 43: </span>The LQG controller and noisy plant" >}}
The structure of the LQG controller is illustrated in [Figure 41](#figure--fig:lqg-kalman-filter), its transfer function from \\(y\\) to \\(u\\) is given by The structure of the LQG controller is illustrated in [Figure 43](#figure--fig:lqg-kalman-filter), its transfer function from \\(y\\) to \\(u\\) is given by
\begin{align\*} \begin{align\*}
L\_{\text{LQG}}(s) &= \left[ \begin{array}{c|c} L\_{\text{LQG}}(s) &= \left[ \begin{array}{c|c}
@@ -4881,11 +4899,11 @@ The structure of the LQG controller is illustrated in [Figure 41](#figure--fig:l
It has the same degree (number of poles) as the plant.<br /> It has the same degree (number of poles) as the plant.<br />
For the LQG-controller, as shown on [Figure 41](#figure--fig:lqg-kalman-filter), it is not easy to see where to position the reference input \\(r\\) and how integral action may be included, if desired. Indeed, the standard LQG design procedure does not give a controller with integral action. One strategy is illustrated in [Figure 42](#figure--fig:lqg-integral). Here, the control error \\(r-y\\) is integrated and the regulator \\(K\_r\\) is designed for the plant augmented with these integral states. For the LQG-controller, as shown on [Figure 43](#figure--fig:lqg-kalman-filter), it is not easy to see where to position the reference input \\(r\\) and how integral action may be included, if desired. Indeed, the standard LQG design procedure does not give a controller with integral action. One strategy is illustrated in [Figure 44](#figure--fig:lqg-integral). Here, the control error \\(r-y\\) is integrated and the regulator \\(K\_r\\) is designed for the plant augmented with these integral states.
<a id="figure--fig:lqg-integral"></a> <a id="figure--fig:lqg-integral"></a>
{{< figure src="/ox-hugo/skogestad07_lqg_integral.png" caption="<span class='figure-number'>Figure 42: </span>LQG controller with integral action and reference input" >}} {{< figure src="/ox-hugo/skogestad07_lqg_integral.png" caption="<span class='figure-number'>Figure 44: </span>LQG controller with integral action and reference input" >}}
For an LQG-controller system with a combined Kalman filter and LQR control law, there are **no guaranteed stability margins**, and there exist LQG combinations with arbitrary small gain margins. For an LQG-controller system with a combined Kalman filter and LQR control law, there are **no guaranteed stability margins**, and there exist LQG combinations with arbitrary small gain margins.
However, there are procedures for improving robustness properties of LQG control such as **Loop Transfer Recovery** (LTR). However, there are procedures for improving robustness properties of LQG control such as **Loop Transfer Recovery** (LTR).
@@ -4905,11 +4923,11 @@ Their main limitation is that they can only be applied to minimum phase plants.
There are many ways in which feedback design problems can be cast as \\(\htwo\\) and \\(\hinf\\) optimization problems. There are many ways in which feedback design problems can be cast as \\(\htwo\\) and \\(\hinf\\) optimization problems.
It is very useful therefore to have a **standard problem formulation** into which any particular problem may be manipulated. It is very useful therefore to have a **standard problem formulation** into which any particular problem may be manipulated.
Such a general formulation is afforded by the general configuration shown in [Figure 43](#figure--fig:general-control). Such a general formulation is afforded by the general configuration shown in [Figure 45](#figure--fig:general-control).
<a id="figure--fig:general-control"></a> <a id="figure--fig:general-control"></a>
{{< figure src="/ox-hugo/skogestad07_general_control.png" caption="<span class='figure-number'>Figure 43: </span>General control configuration" >}} {{< figure src="/ox-hugo/skogestad07_general_control.png" caption="<span class='figure-number'>Figure 45: </span>General control configuration" >}}
The system is described by The system is described by
@@ -5085,7 +5103,7 @@ Then the LQG cost function is
#### \\(\hinf\\) Optimal Control {#hinf-optimal-control} #### \\(\hinf\\) Optimal Control {#hinf-optimal-control}
With reference to the general control configuration on [Figure 43](#figure--fig:general-control), the standard \\(\hinf\\) optimal control problem is to find all stabilizing controllers \\(K\\) which minimize With reference to the general control configuration on [Figure 45](#figure--fig:general-control), the standard \\(\hinf\\) optimal control problem is to find all stabilizing controllers \\(K\\) which minimize
\begin{equation\*} \begin{equation\*}
\hnorm{F\_l(P, K)} = \max\_{\omega} \maxsv\big(F\_l(P, K)(j\omega)\big) \hnorm{F\_l(P, K)} = \max\_{\omega} \maxsv\big(F\_l(P, K)(j\omega)\big)
@@ -5196,7 +5214,7 @@ In general, the scalar weighting functions \\(w\_1(s)\\) and \\(w\_2(s)\\) can b
This can be useful for **systems with channels of quite different bandwidths**. This can be useful for **systems with channels of quite different bandwidths**.
In that case, **diagonal weights are recommended** as anything more complicated is usually not worth the effort.<br /> In that case, **diagonal weights are recommended** as anything more complicated is usually not worth the effort.<br />
To see how this mixed sensitivity problem can be formulated in the general setting, we can imagine the disturbance \\(d\\) as a single exogenous input and define and error signal \\(z = [z\_1^T\ z\_2^T]^T\\), where \\(z\_1 = W\_1 y\\) and \\(z\_2 = -W\_2 u\\) as illustrated in [Figure 44](#figure--fig:mixed-sensitivity-dist-rejection). To see how this mixed sensitivity problem can be formulated in the general setting, we can imagine the disturbance \\(d\\) as a single exogenous input and define and error signal \\(z = [z\_1^T\ z\_2^T]^T\\), where \\(z\_1 = W\_1 y\\) and \\(z\_2 = -W\_2 u\\) as illustrated in [Figure 46](#figure--fig:mixed-sensitivity-dist-rejection).
We can then see that \\(z\_1 = W\_1 S w\\) and \\(z\_2 = W\_2 KS w\\) as required. We can then see that \\(z\_1 = W\_1 S w\\) and \\(z\_2 = W\_2 KS w\\) as required.
The elements of the generalized plant are The elements of the generalized plant are
@@ -5215,16 +5233,16 @@ The elements of the generalized plant are
<a id="figure--fig:mixed-sensitivity-dist-rejection"></a> <a id="figure--fig:mixed-sensitivity-dist-rejection"></a>
{{< figure src="/ox-hugo/skogestad07_mixed_sensitivity_dist_rejection.png" caption="<span class='figure-number'>Figure 44: </span>\\(S/KS\\) mixed-sensitivity optimization in standard form (regulation)" >}} {{< figure src="/ox-hugo/skogestad07_mixed_sensitivity_dist_rejection.png" caption="<span class='figure-number'>Figure 46: </span>\\(S/KS\\) mixed-sensitivity optimization in standard form (regulation)" >}}
Another interpretation can be put on the \\(S/KS\\) mixed-sensitivity optimization as shown in the standard control configuration of [Figure 45](#figure--fig:mixed-sensitivity-ref-tracking). Another interpretation can be put on the \\(S/KS\\) mixed-sensitivity optimization as shown in the standard control configuration of [Figure 47](#figure--fig:mixed-sensitivity-ref-tracking).
Here we consider a tracking problem. Here we consider a tracking problem.
The exogenous input is a reference command \\(r\\), and the error signals are \\(z\_1 = -W\_1 e = W\_1 (r-y)\\) and \\(z\_2 = W\_2 u\\). The exogenous input is a reference command \\(r\\), and the error signals are \\(z\_1 = -W\_1 e = W\_1 (r-y)\\) and \\(z\_2 = W\_2 u\\).
As the regulation problem of [Figure 44](#figure--fig:mixed-sensitivity-dist-rejection), we have that \\(z\_1 = W\_1 S w\\) and \\(z\_2 = W\_2 KS w\\). As the regulation problem of [Figure 46](#figure--fig:mixed-sensitivity-dist-rejection), we have that \\(z\_1 = W\_1 S w\\) and \\(z\_2 = W\_2 KS w\\).
<a id="figure--fig:mixed-sensitivity-ref-tracking"></a> <a id="figure--fig:mixed-sensitivity-ref-tracking"></a>
{{< figure src="/ox-hugo/skogestad07_mixed_sensitivity_ref_tracking.png" caption="<span class='figure-number'>Figure 45: </span>\\(S/KS\\) mixed-sensitivity optimization in standard form (tracking)" >}} {{< figure src="/ox-hugo/skogestad07_mixed_sensitivity_ref_tracking.png" caption="<span class='figure-number'>Figure 47: </span>\\(S/KS\\) mixed-sensitivity optimization in standard form (tracking)" >}}
Another useful mixed sensitivity optimization problem, is to find a stabilizing controller which minimizes Another useful mixed sensitivity optimization problem, is to find a stabilizing controller which minimizes
@@ -5235,7 +5253,7 @@ Another useful mixed sensitivity optimization problem, is to find a stabilizing
The ability to shape \\(T\\) is desirable for tracking problems and noise attenuation. The ability to shape \\(T\\) is desirable for tracking problems and noise attenuation.
It is also important for robust stability with respect to multiplicative perturbations at the plant output. It is also important for robust stability with respect to multiplicative perturbations at the plant output.
The \\(S/T\\) mixed-sensitivity minimization problem can be put into the standard control configuration as shown in [Figure 46](#figure--fig:mixed-sensitivity-s-t). The \\(S/T\\) mixed-sensitivity minimization problem can be put into the standard control configuration as shown in [Figure 48](#figure--fig:mixed-sensitivity-s-t).
The elements of the generalized plant are The elements of the generalized plant are
@@ -5254,7 +5272,7 @@ The elements of the generalized plant are
<a id="figure--fig:mixed-sensitivity-s-t"></a> <a id="figure--fig:mixed-sensitivity-s-t"></a>
{{< figure src="/ox-hugo/skogestad07_mixed_sensitivity_s_t.png" caption="<span class='figure-number'>Figure 46: </span>\\(S/T\\) mixed-sensitivity optimization in standard form" >}} {{< figure src="/ox-hugo/skogestad07_mixed_sensitivity_s_t.png" caption="<span class='figure-number'>Figure 48: </span>\\(S/T\\) mixed-sensitivity optimization in standard form" >}}
The shaping of closed-loop transfer functions as described above with the stacked cost functions becomes difficult with more than two functions whereas with two, the process is relatively easy. The shaping of closed-loop transfer functions as described above with the stacked cost functions becomes difficult with more than two functions whereas with two, the process is relatively easy.
The bandwidth requirements on each are usually complementary and simple, stable low-pass and high-pass filters are sufficient to carry out the required shaping and trade-offs.<br /> The bandwidth requirements on each are usually complementary and simple, stable low-pass and high-pass filters are sufficient to carry out the required shaping and trade-offs.<br />
@@ -5277,20 +5295,20 @@ The focus of attention has moved to the size of signals and away from the size a
</div> </div>
Weights are used to describe the expected or known frequency content of exogenous signals and the desired frequency content of error signals. Weights are used to describe the expected or known frequency content of exogenous signals and the desired frequency content of error signals.
Weights are also used if a perturbation is used to model uncertainty, as in [Figure 47](#figure--fig:input-uncertainty-hinf), where \\(G\\) represents the nominal model, \\(W\\) is a weighting function that captures the relative model fidelity over frequency, and \\(\Delta\\) represents unmodelled dynamics usually normalized such that \\(\hnorm{\Delta} < 1\\). Weights are also used if a perturbation is used to model uncertainty, as in [Figure 49](#figure--fig:input-uncertainty-hinf), where \\(G\\) represents the nominal model, \\(W\\) is a weighting function that captures the relative model fidelity over frequency, and \\(\Delta\\) represents unmodelled dynamics usually normalized such that \\(\hnorm{\Delta} < 1\\).
<a id="figure--fig:input-uncertainty-hinf"></a> <a id="figure--fig:input-uncertainty-hinf"></a>
{{< figure src="/ox-hugo/skogestad07_input_uncertainty_hinf.png" caption="<span class='figure-number'>Figure 47: </span>Multiplicative dynamic uncertainty model" >}} {{< figure src="/ox-hugo/skogestad07_input_uncertainty_hinf.png" caption="<span class='figure-number'>Figure 49: </span>Multiplicative dynamic uncertainty model" >}}
LQG control is a simple example of the signal based approach, in which the exogenous signals are assumed to be stochastic and the error signals are measured in terms of the 2-norm. LQG control is a simple example of the signal based approach, in which the exogenous signals are assumed to be stochastic and the error signals are measured in terms of the 2-norm.
As we have seen, the weights \\(Q\\) and \\(R\\) are constant, but LQG can be generalized to include frequency dependent weights on the signals leading to what is called Wiener-Hopf design or \\(\htwo\\) control.<br /> As we have seen, the weights \\(Q\\) and \\(R\\) are constant, but LQG can be generalized to include frequency dependent weights on the signals leading to what is called Wiener-Hopf design or \\(\htwo\\) control.<br />
When we consider a system's response to persistent sinusoidal signals of varying frequency, or when we consider the induced 2-norm between the exogenous input signals and the error signals, we are required to minimize the \\(\hinf\\) norm. When we consider a system's response to persistent sinusoidal signals of varying frequency, or when we consider the induced 2-norm between the exogenous input signals and the error signals, we are required to minimize the \\(\hinf\\) norm.
In the absence of model uncertainty, there does not appear to be an overwhelming case for using the \\(\hinf\\) norm rather than the more traditional \\(\htwo\\) norm. In the absence of model uncertainty, there does not appear to be an overwhelming case for using the \\(\hinf\\) norm rather than the more traditional \\(\htwo\\) norm.
However, when uncertainty is addressed, as it always should be, \\(\hinf\\) is clearly the more **natural approach** using component uncertainty models as in [Figure 47](#figure--fig:input-uncertainty-hinf).<br /> However, when uncertainty is addressed, as it always should be, \\(\hinf\\) is clearly the more **natural approach** using component uncertainty models as in [Figure 49](#figure--fig:input-uncertainty-hinf).<br />
A typical problem using the signal-based approach to \\(\hinf\\) control is illustrated in the interconnection diagram of [Figure 48](#figure--fig:hinf-signal-based). A typical problem using the signal-based approach to \\(\hinf\\) control is illustrated in the interconnection diagram of [Figure 50](#figure--fig:hinf-signal-based).
\\(G\\) and \\(G\_d\\) are nominal models of the plant and disturbance dynamics, and \\(K\\) is the controller to be designed. \\(G\\) and \\(G\_d\\) are nominal models of the plant and disturbance dynamics, and \\(K\\) is the controller to be designed.
The weights \\(W\_d\\), \\(W\_r\\), and \\(W\_n\\) may be constant or dynamic and describe the relative importance and/or the frequency content of the disturbance, set points and noise signals. The weights \\(W\_d\\), \\(W\_r\\), and \\(W\_n\\) may be constant or dynamic and describe the relative importance and/or the frequency content of the disturbance, set points and noise signals.
The weight \\(W\_\text{ref}\\) is a desired closed-loop transfer function between the weighted set point \\(r\_s\\) and the actual output \\(y\\). The weight \\(W\_\text{ref}\\) is a desired closed-loop transfer function between the weighted set point \\(r\_s\\) and the actual output \\(y\\).
@@ -5313,9 +5331,9 @@ The problem can be cast as a standard \\(\hinf\\) optimization in the general co
<a id="figure--fig:hinf-signal-based"></a> <a id="figure--fig:hinf-signal-based"></a>
{{< figure src="/ox-hugo/skogestad07_hinf_signal_based.png" caption="<span class='figure-number'>Figure 48: </span>A signal-based \\(\hinf\\) control problem" >}} {{< figure src="/ox-hugo/skogestad07_hinf_signal_based.png" caption="<span class='figure-number'>Figure 50: </span>A signal-based \\(\hinf\\) control problem" >}}
Suppose we now introduce a multiplicative dynamic uncertainty model at the input to the plant as shown in [Figure 49](#figure--fig:hinf-signal-based-uncertainty). Suppose we now introduce a multiplicative dynamic uncertainty model at the input to the plant as shown in [Figure 51](#figure--fig:hinf-signal-based-uncertainty).
The problem we now want to solve is: find a stabilizing controller \\(K\\) such that the \\(\hinf\\) norm of the transfer function between \\(w\\) and \\(z\\) is less that 1 for all \\(\Delta\\) where \\(\hnorm{\Delta} < 1\\). The problem we now want to solve is: find a stabilizing controller \\(K\\) such that the \\(\hinf\\) norm of the transfer function between \\(w\\) and \\(z\\) is less that 1 for all \\(\Delta\\) where \\(\hnorm{\Delta} < 1\\).
We have assumed in this statement that the **signal weights have normalized the 2-norm of the exogenous input signals to unity**. We have assumed in this statement that the **signal weights have normalized the 2-norm of the exogenous input signals to unity**.
This problem is a non-standard \\(\hinf\\) optimization. This problem is a non-standard \\(\hinf\\) optimization.
@@ -5327,7 +5345,7 @@ It is a robust performance problem for which the \\(\mu\text{-synthesis}\\) proc
<a id="figure--fig:hinf-signal-based-uncertainty"></a> <a id="figure--fig:hinf-signal-based-uncertainty"></a>
{{< figure src="/ox-hugo/skogestad07_hinf_signal_based_uncertainty.png" caption="<span class='figure-number'>Figure 49: </span>A signal-based \\(\hinf\\) control problem with input multiplicative uncertainty" >}} {{< figure src="/ox-hugo/skogestad07_hinf_signal_based_uncertainty.png" caption="<span class='figure-number'>Figure 51: </span>A signal-based \\(\hinf\\) control problem with input multiplicative uncertainty" >}}
However, whilst the structured singular value is a useful analysis tool for assessing designs, \\(\mu\text{-synthesis}\\) is sometimes difficult to use and often too complex for the practical problems. However, whilst the structured singular value is a useful analysis tool for assessing designs, \\(\mu\text{-synthesis}\\) is sometimes difficult to use and often too complex for the practical problems.
@@ -5378,7 +5396,7 @@ The objective of robust stabilization is to stabilize not only the nominal model
where \\(\epsilon > 0\\) is then the **stability margin**.<br /> where \\(\epsilon > 0\\) is then the **stability margin**.<br />
For the perturbed feedback system of [Figure 50](#figure--fig:coprime-uncertainty-bis), the stability property is robust if and only if the nominal feedback system is stable and For the perturbed feedback system of [Figure 52](#figure--fig:coprime-uncertainty-bis), the stability property is robust if and only if the nominal feedback system is stable and
\begin{equation\*} \begin{equation\*}
\gamma \triangleq \hnorm{\begin{bmatrix} \gamma \triangleq \hnorm{\begin{bmatrix}
@@ -5391,7 +5409,7 @@ Notice that \\(\gamma\\) is the \\(\hinf\\) norm from \\(\phi\\) to \\(\begin{bm
<a id="figure--fig:coprime-uncertainty-bis"></a> <a id="figure--fig:coprime-uncertainty-bis"></a>
{{< figure src="/ox-hugo/skogestad07_coprime_uncertainty_bis.png" caption="<span class='figure-number'>Figure 50: </span>\\(\hinf\\) robust stabilization problem" >}} {{< figure src="/ox-hugo/skogestad07_coprime_uncertainty_bis.png" caption="<span class='figure-number'>Figure 52: </span>\\(\hinf\\) robust stabilization problem" >}}
The lowest achievable value of \\(\gamma\\) and the corresponding maximum stability margin \\(\epsilon\\) are given as The lowest achievable value of \\(\gamma\\) and the corresponding maximum stability margin \\(\epsilon\\) are given as
@@ -5456,11 +5474,11 @@ If \\(W\_1\\) and \\(W\_2\\) are the pre and post compensators respectively, the
G\_s = W\_2 G W\_1 G\_s = W\_2 G W\_1
\end{equation} \end{equation}
as shown in [Figure 51](#figure--fig:shaped-plant). as shown in [Figure 53](#figure--fig:shaped-plant).
<a id="figure--fig:shaped-plant"></a> <a id="figure--fig:shaped-plant"></a>
{{< figure src="/ox-hugo/skogestad07_shaped_plant.png" caption="<span class='figure-number'>Figure 51: </span>The shaped plant and controller" >}} {{< figure src="/ox-hugo/skogestad07_shaped_plant.png" caption="<span class='figure-number'>Figure 53: </span>The shaped plant and controller" >}}
The controller \\(K\_s\\) is synthesized by solving the robust stabilization problem for the shaped plant \\(G\_s\\) with a normalized left coprime factorization \\(G\_s = M\_s^{-1}N\_s\\). The controller \\(K\_s\\) is synthesized by solving the robust stabilization problem for the shaped plant \\(G\_s\\) with a normalized left coprime factorization \\(G\_s = M\_s^{-1}N\_s\\).
The feedback controller for the plant \\(G\\) is then \\(K = W\_1 K\_s W\_2\\).<br /> The feedback controller for the plant \\(G\\) is then \\(K = W\_1 K\_s W\_2\\).<br />
@@ -5491,13 +5509,13 @@ Systematic procedure for \\(\hinf\\) loop-shaping design:
- A small value of \\(\epsilon\_{\text{max}}\\) indicates that the chosen singular value loop-shapes are incompatible with robust stability requirements - A small value of \\(\epsilon\_{\text{max}}\\) indicates that the chosen singular value loop-shapes are incompatible with robust stability requirements
7. **Analyze the design** and if not all the specification are met, make further modifications to the weights 7. **Analyze the design** and if not all the specification are met, make further modifications to the weights
8. **Implement the controller**. 8. **Implement the controller**.
The configuration shown in [Figure 52](#figure--fig:shapping-practical-implementation) has been found useful when compared with the conventional setup in [Figure 38](#figure--fig:classical-feedback-small). The configuration shown in [Figure 54](#figure--fig:shapping-practical-implementation) has been found useful when compared with the conventional setup in [Figure 40](#figure--fig:classical-feedback-small).
This is because the references do not directly excite the dynamics of \\(K\_s\\), which can result in large amounts of overshoot. This is because the references do not directly excite the dynamics of \\(K\_s\\), which can result in large amounts of overshoot.
The constant prefilter ensure a steady-state gain of \\(1\\) between \\(r\\) and \\(y\\), assuming integral action in \\(W\_1\\) or \\(G\\) The constant prefilter ensure a steady-state gain of \\(1\\) between \\(r\\) and \\(y\\), assuming integral action in \\(W\_1\\) or \\(G\\)
<a id="figure--fig:shapping-practical-implementation"></a> <a id="figure--fig:shapping-practical-implementation"></a>
{{< figure src="/ox-hugo/skogestad07_shapping_practical_implementation.png" caption="<span class='figure-number'>Figure 52: </span>A practical implementation of the loop-shaping controller" >}} {{< figure src="/ox-hugo/skogestad07_shapping_practical_implementation.png" caption="<span class='figure-number'>Figure 54: </span>A practical implementation of the loop-shaping controller" >}}
We will conclude this section with a summary of the **advantages** offered by the above \\(\hinf\\) loop-shaping design procedure: We will conclude this section with a summary of the **advantages** offered by the above \\(\hinf\\) loop-shaping design procedure:
@@ -5518,25 +5536,25 @@ Many control design problems possess two degrees-of-freedom:
Sometimes, one degree-of-freedom is left out of the design, and the controller is driven by an error signal i.e. the difference between a command and the output. Sometimes, one degree-of-freedom is left out of the design, and the controller is driven by an error signal i.e. the difference between a command and the output.
But in cases where stringent time-domain specifications are set on the output response, a one degree-of-freedom structure may not be sufficient.<br /> But in cases where stringent time-domain specifications are set on the output response, a one degree-of-freedom structure may not be sufficient.<br />
A general two degrees-of-freedom feedback control scheme is depicted in [Figure 53](#figure--fig:classical-feedback-2dof-simple). A general two degrees-of-freedom feedback control scheme is depicted in [Figure 55](#figure--fig:classical-feedback-2dof-simple).
The commands and feedbacks enter the controller separately and are independently processed. The commands and feedbacks enter the controller separately and are independently processed.
<a id="figure--fig:classical-feedback-2dof-simple"></a> <a id="figure--fig:classical-feedback-2dof-simple"></a>
{{< figure src="/ox-hugo/skogestad07_classical_feedback_2dof_simple.png" caption="<span class='figure-number'>Figure 53: </span>General two degrees-of-freedom feedback control scheme" >}} {{< figure src="/ox-hugo/skogestad07_classical_feedback_2dof_simple.png" caption="<span class='figure-number'>Figure 55: </span>General two degrees-of-freedom feedback control scheme" >}}
The presented \\(\mathcal{H}\_\infty\\) loop-shaping design procedure in section is a one-degree-of-freedom design, although a **constant** pre-filter can be easily implemented for steady-state accuracy. The presented \\(\mathcal{H}\_\infty\\) loop-shaping design procedure in section is a one-degree-of-freedom design, although a **constant** pre-filter can be easily implemented for steady-state accuracy.
However, this may not be sufficient and a dynamic two degrees-of-freedom design is required.<br /> However, this may not be sufficient and a dynamic two degrees-of-freedom design is required.<br />
The design problem is illustrated in [Figure 54](#figure--fig:coprime-uncertainty-hinf). The design problem is illustrated in [Figure 56](#figure--fig:coprime-uncertainty-hinf).
The feedback part of the controller \\(K\_2\\) is designed to meet robust stability and disturbance rejection requirements. The feedback part of the controller \\(K\_2\\) is designed to meet robust stability and disturbance rejection requirements.
A prefilter is introduced to force the response of the closed-loop system to follow that of a specified model \\(T\_{\text{ref}}\\), often called the **reference model**. A prefilter is introduced to force the response of the closed-loop system to follow that of a specified model \\(T\_{\text{ref}}\\), often called the **reference model**.
<a id="figure--fig:coprime-uncertainty-hinf"></a> <a id="figure--fig:coprime-uncertainty-hinf"></a>
{{< figure src="/ox-hugo/skogestad07_coprime_uncertainty_hinf.png" caption="<span class='figure-number'>Figure 54: </span>Two degrees-of-freedom \\(\mathcal{H}\_\infty\\) loop-shaping design problem" >}} {{< figure src="/ox-hugo/skogestad07_coprime_uncertainty_hinf.png" caption="<span class='figure-number'>Figure 56: </span>Two degrees-of-freedom \\(\mathcal{H}\_\infty\\) loop-shaping design problem" >}}
The design problem is to find the stabilizing controller \\(K = [K\_1,\ K\_2]\\) for the shaped plant \\(G\_s = G W\_1\\), with a normalized coprime factorization \\(G\_s = M\_s^{-1} N\_s\\), which minimizes the \\(\mathcal{H}\_\infty\\) norm of the transfer function between the signals \\([r^T\ \phi^T]^T\\) and \\([u\_s^T\ y^T\ e^T]^T\\) as defined in [Figure 54](#figure--fig:coprime-uncertainty-hinf). The design problem is to find the stabilizing controller \\(K = [K\_1,\ K\_2]\\) for the shaped plant \\(G\_s = G W\_1\\), with a normalized coprime factorization \\(G\_s = M\_s^{-1} N\_s\\), which minimizes the \\(\mathcal{H}\_\infty\\) norm of the transfer function between the signals \\([r^T\ \phi^T]^T\\) and \\([u\_s^T\ y^T\ e^T]^T\\) as defined in [Figure 56](#figure--fig:coprime-uncertainty-hinf).
This problem is easily cast into the general configuration. This problem is easily cast into the general configuration.
The control signal to the shaped plant \\(u\_s\\) is given by: The control signal to the shaped plant \\(u\_s\\) is given by:
@@ -5566,11 +5584,11 @@ The main steps required to synthesize a two degrees-of-freedom \\(\mathcal{H}\_\
5. Replace the prefilter \\(K\_1\\) by \\(K\_1 W\_i\\) to give exact model-matching at steady-state. 5. Replace the prefilter \\(K\_1\\) by \\(K\_1 W\_i\\) to give exact model-matching at steady-state.
6. Analyze and, if required, redesign making adjustments to \\(\rho\\) and possibly \\(W\_1\\) and \\(T\_{\text{ref}}\\) 6. Analyze and, if required, redesign making adjustments to \\(\rho\\) and possibly \\(W\_1\\) and \\(T\_{\text{ref}}\\)
The final two degrees-of-freedom \\(\mathcal{H}\_\infty\\) loop-shaping controller is illustrated in [Figure 55](#figure--fig:hinf-synthesis-2dof). The final two degrees-of-freedom \\(\mathcal{H}\_\infty\\) loop-shaping controller is illustrated in [Figure 57](#figure--fig:hinf-synthesis-2dof).
<a id="figure--fig:hinf-synthesis-2dof"></a> <a id="figure--fig:hinf-synthesis-2dof"></a>
{{< figure src="/ox-hugo/skogestad07_hinf_synthesis_2dof.png" caption="<span class='figure-number'>Figure 55: </span>Two degrees-of-freedom \\(\mathcal{H}\_\infty\\) loop-shaping controller" >}} {{< figure src="/ox-hugo/skogestad07_hinf_synthesis_2dof.png" caption="<span class='figure-number'>Figure 57: </span>Two degrees-of-freedom \\(\mathcal{H}\_\infty\\) loop-shaping controller" >}}
#### Observer-Based Structure for \\(\hinf\\) Loop-Shaping Controllers {#observer-based-structure-for-hinf-loop-shaping-controllers} #### Observer-Based Structure for \\(\hinf\\) Loop-Shaping Controllers {#observer-based-structure-for-hinf-loop-shaping-controllers}
@@ -5650,11 +5668,11 @@ When implemented in Hanus form, the expression for \\(u\\) becomes
where \\(u\_a\\) is the **actual plant input**, that is the measurement at the **output of the actuators** which therefore contains information about possible actuator saturation. where \\(u\_a\\) is the **actual plant input**, that is the measurement at the **output of the actuators** which therefore contains information about possible actuator saturation.
The situation is illustrated in [Figure 56](#figure--fig:weight-anti-windup), where the actuators are each modeled by a unit gain and a saturation. The situation is illustrated in [Figure 58](#figure--fig:weight-anti-windup), where the actuators are each modeled by a unit gain and a saturation.
<a id="figure--fig:weight-anti-windup"></a> <a id="figure--fig:weight-anti-windup"></a>
{{< figure src="/ox-hugo/skogestad07_weight_anti_windup.png" caption="<span class='figure-number'>Figure 56: </span>Self-conditioned weight \\(W\_1\\)" >}} {{< figure src="/ox-hugo/skogestad07_weight_anti_windup.png" caption="<span class='figure-number'>Figure 58: </span>Self-conditioned weight \\(W\_1\\)" >}}
The Hanus form prevents windup by keeping the states of \\(W\_1\\) consistent with the actual plant input at all times. The Hanus form prevents windup by keeping the states of \\(W\_1\\) consistent with the actual plant input at all times.
When there is no saturation, \\(u\_a=u\\), the dynamics of \\(W\_1\\) remains unaffected. When there is no saturation, \\(u\_a=u\\), the dynamics of \\(W\_1\\) remains unaffected.
@@ -5713,11 +5731,11 @@ Moreover, one should be careful about combining controller synthesis and analysi
### Introduction {#introduction} ### Introduction {#introduction}
In previous sections, we considered the general problem formulation in [Figure 57](#figure--fig:general-control-names-bis) and stated that the controller design problem is to find a controller \\(K\\) which based on the information in \\(v\\), generates a control signal \\(u\\) which counteracts the influence of \\(w\\) on \\(z\\), thereby minimizing the closed loop norm from \\(w\\) to \\(z\\). In previous sections, we considered the general problem formulation in [Figure 59](#figure--fig:general-control-names-bis) and stated that the controller design problem is to find a controller \\(K\\) which based on the information in \\(v\\), generates a control signal \\(u\\) which counteracts the influence of \\(w\\) on \\(z\\), thereby minimizing the closed loop norm from \\(w\\) to \\(z\\).
<a id="figure--fig:general-control-names-bis"></a> <a id="figure--fig:general-control-names-bis"></a>
{{< figure src="/ox-hugo/skogestad07_general_control_names_bis.png" caption="<span class='figure-number'>Figure 57: </span>General Control Configuration" >}} {{< figure src="/ox-hugo/skogestad07_general_control_names_bis.png" caption="<span class='figure-number'>Figure 59: </span>General Control Configuration" >}}
In this chapter we are concerned with the **structural decisions** associated with the following selection tasks of control structure design: In this chapter we are concerned with the **structural decisions** associated with the following selection tasks of control structure design:
@@ -5748,31 +5766,40 @@ The reference value \\(r\\) is usually set at some higher layer in the control h
- **Optimization layer**: computes the desired reference commands \\(r\\) - **Optimization layer**: computes the desired reference commands \\(r\\)
- **Control layer**: implements these commands to achieve \\(y \approx r\\) - **Control layer**: implements these commands to achieve \\(y \approx r\\)
Additional layers are possible, as is illustrated in [Figure 58](#figure--fig:control-system-hierarchy) which shows a typical control hierarchy for a chemical plant. Additional layers are possible, as is illustrated in [Figure 60](#figure--fig:control-system-hierarchy) which shows a typical control hierarchy for a chemical plant.
<a id="figure--fig:control-system-hierarchy"></a> <a id="figure--fig:control-system-hierarchy"></a>
{{< figure src="/ox-hugo/skogestad07_system_hierarchy.png" caption="<span class='figure-number'>Figure 58: </span>Typical control system hierarchy in a chemical plant" >}} {{< figure src="/ox-hugo/skogestad07_system_hierarchy.png" caption="<span class='figure-number'>Figure 60: </span>Typical control system hierarchy in a chemical plant" >}}
In general, the information flow in such a control hierarchy is based on the higher layer sending reference values (setpoints) to the layer below reporting back any problems achieving this (see [ 6](#org-target--fig-optimize-control-b)). In general, the information flow in such a control hierarchy is based on the higher layer sending reference values (setpoints) to the layer below reporting back any problems achieving this (see [Figure 61b](#org-target--fig-optimize-control-b)).
There is usually a time scale separation between the layers which means that the **setpoints**, as viewed from a given layer, are **updated only periodically**.<br /> There is usually a time scale separation between the layers which means that the **setpoints**, as viewed from a given layer, are **updated only periodically**.<br />
The optimization tends to be performed open-loop with limited use of feedback. On the other hand, the control layer is mainly based on feedback information. The optimization tends to be performed open-loop with limited use of feedback. On the other hand, the control layer is mainly based on feedback information.
The **optimization is often based on nonlinear steady-state models**, whereas we often use **linear dynamic models in the control layer**.<br /> The **optimization is often based on nonlinear steady-state models**, whereas we often use **linear dynamic models in the control layer**.<br />
From a theoretical point of view, the optimal performance is obtained with a **centralized optimizing controller**, which combines the two layers of optimizing and control (see [ 6](#org-target--fig-optimize-control-c)). From a theoretical point of view, the optimal performance is obtained with a **centralized optimizing controller**, which combines the two layers of optimizing and control (see [Figure 61c](#org-target--fig-optimize-control-c)).
All control actions in such an ideal control system would be perfectly coordinated and the control system would use on-line dynamic optimization based on nonlinear dynamic model of the complete plant. All control actions in such an ideal control system would be perfectly coordinated and the control system would use on-line dynamic optimization based on nonlinear dynamic model of the complete plant.
However, this solution is normally not used for a number a reasons, included the cost of modeling, the difficulty of controller design, maintenance, robustness problems and the lack of computing power. However, this solution is normally not used for a number a reasons, included the cost of modeling, the difficulty of controller design, maintenance, robustness problems and the lack of computing power.
<a id="table--fig:optimize-control"></a>
<div class="table-caption">
<span class="table-number"><a href="#table--fig:optimize-control">Table 6</a>:</span>
Alternative structures for optimization and control
</div>
| ![](/ox-hugo/skogestad07_optimize_control_a.png) | ![](/ox-hugo/skogestad07_optimize_control_b.png) | ![](/ox-hugo/skogestad07_optimize_control_c.png) | <figure class="subfigures" id="table--fig:optimize-control">
|-------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| <div class="subfigure-row">
| <span class="org-target" id="org-target--fig-optimize-control-a"></span> Open loop optimization | <span class="org-target" id="org-target--fig-optimize-control-b"></span> Closed-loop implementation with separate control layer | <span class="org-target" id="org-target--fig-optimize-control-c"></span> Integrated optimization and control | <div class="subfigure" id="org-target--fig-optimize-control-a" style="flex-basis: 32%">
<img src="/ox-hugo/skogestad07_optimize_control_a.png" alt="Open loop optimization" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(a)</span> Open loop optimization</div>
</div>
<div class="subfigure" id="org-target--fig-optimize-control-b" style="flex-basis: 32%">
<img src="/ox-hugo/skogestad07_optimize_control_b.png" alt="Closed-loop implementation with separate control layer" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(b)</span> Closed-loop implementation with separate control layer</div>
</div>
<div class="subfigure" id="org-target--fig-optimize-control-c" style="flex-basis: 32%">
<img src="/ox-hugo/skogestad07_optimize_control_c.png" alt="Integrated optimization and control" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(c)</span> Integrated optimization and control</div>
</div>
</div>
<figcaption><span class="figure-number">Figure 61: </span>Alternative structures for optimization and control</figcaption>
</figure>
### Selection of Controlled Outputs {#selection-of-controlled-outputs} ### Selection of Controlled Outputs {#selection-of-controlled-outputs}
@@ -5885,7 +5912,7 @@ Thus, the selection of controlled and measured outputs are two separate issues.
### Selection of Manipulations and Measurements {#selection-of-manipulations-and-measurements} ### Selection of Manipulations and Measurements {#selection-of-manipulations-and-measurements}
We are here concerned with the variable sets \\(u\\) and \\(v\\) in [Figure 57](#figure--fig:general-control-names-bis). We are here concerned with the variable sets \\(u\\) and \\(v\\) in [Figure 59](#figure--fig:general-control-names-bis).
Note that **the measurements** \\(v\\) used by the controller **are in general different from the controlled variables** \\(z\\) because we may not be able to measure all the controlled variables and we may want to measure and control additional variables in order to: Note that **the measurements** \\(v\\) used by the controller **are in general different from the controlled variables** \\(z\\) because we may not be able to measure all the controlled variables and we may want to measure and control additional variables in order to:
- Stabilize the plant, or more generally change its dynamics - Stabilize the plant, or more generally change its dynamics
@@ -5977,19 +6004,24 @@ Then when a SISO control loop is closed, we lose the input \\(u\_i\\) as a degre
A cascade control structure results when either of the following two situations arise: A cascade control structure results when either of the following two situations arise:
- The reference \\(r\_i\\) is an output from another controller. - The reference \\(r\_i\\) is an output from another controller.
This is the **conventional cascade control** ([ 7](#org-target--fig-cascade-extra-meas)) This is the **conventional cascade control** ([Figure 62a](#org-target--fig-cascade-extra-meas))
- The "measurement" \\(y\_i\\) is an output from another controller. - The "measurement" \\(y\_i\\) is an output from another controller.
This is referred to as **input resetting** ([ 7](#org-target--fig-cascade-extra-input)) This is referred to as **input resetting** ([Figure 62b](#org-target--fig-cascade-extra-input))
<a id="table--fig:cascade-implementation"></a>
<div class="table-caption"> <figure class="subfigures" id="table--fig:cascade-implementation">
<span class="table-number"><a href="#table--fig:cascade-implementation">Table 7</a>:</span> <div class="subfigure-row">
Cascade Implementations <div class="subfigure" id="org-target--fig-cascade-extra-meas">
<img src="/ox-hugo/skogestad07_cascade_extra_meas.png" alt="Extra measurements \(y_2\)" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(a)</span> Extra measurements \(y_2\)</div>
</div> </div>
<div class="subfigure" id="org-target--fig-cascade-extra-input">
| ![](/ox-hugo/skogestad07_cascade_extra_meas.png) | ![](/ox-hugo/skogestad07_cascade_extra_input.png) | <img src="/ox-hugo/skogestad07_cascade_extra_input.png" alt="Extra inputs \(u_2\)" loading="lazy">
|--------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------| <div class="subfigure-caption"><span class="subfigure-label">(b)</span> Extra inputs \(u_2\)</div>
| <span class="org-target" id="org-target--fig-cascade-extra-meas"></span> Extra measurements \\(y\_2\\) | <span class="org-target" id="org-target--fig-cascade-extra-input"></span> Extra inputs \\(u\_2\\) | </div>
</div>
<figcaption><span class="figure-number">Figure 62: </span>Cascade Implementations</figcaption>
</figure>
#### Cascade Control: Extra Measurements {#cascade-control-extra-measurements} #### Cascade Control: Extra Measurements {#cascade-control-extra-measurements}
@@ -6013,7 +6045,7 @@ where in most cases \\(r\_2 = 0\\) since we do not have a degree-of-freedom to c
##### Cascade implementation {#cascade-implementation} ##### Cascade implementation {#cascade-implementation}
To obtain an implementation with two SISO controllers, we may cascade the controllers as illustrated in [ 7](#org-target--fig-cascade-extra-meas): To obtain an implementation with two SISO controllers, we may cascade the controllers as illustrated in [Figure 62a](#org-target--fig-cascade-extra-meas):
\begin{align\*} \begin{align\*}
r\_2 &= K\_1(s)(r\_1 - y\_1) \\\\ r\_2 &= K\_1(s)(r\_1 - y\_1) \\\\
@@ -6023,12 +6055,12 @@ To obtain an implementation with two SISO controllers, we may cascade the contro
Note that the output \\(r\_2\\) from the slower primary controller \\(K\_1\\) is not a manipulated plant input, but rather the reference input to the faster secondary controller \\(K\_2\\). Note that the output \\(r\_2\\) from the slower primary controller \\(K\_1\\) is not a manipulated plant input, but rather the reference input to the faster secondary controller \\(K\_2\\).
Cascades based on measuring the actual manipulated variable (\\(y\_2 = u\_m\\)) are commonly used to **reduce uncertainty and non-linearity at the plant input**. Cascades based on measuring the actual manipulated variable (\\(y\_2 = u\_m\\)) are commonly used to **reduce uncertainty and non-linearity at the plant input**.
In the general case ([ 7](#org-target--fig-cascade-extra-meas)) \\(y\_1\\) and \\(y\_2\\) are not directly related to each other, and this is sometimes referred to as _parallel cascade control_. In the general case ([Figure 62a](#org-target--fig-cascade-extra-meas)) \\(y\_1\\) and \\(y\_2\\) are not directly related to each other, and this is sometimes referred to as _parallel cascade control_.
However, it is common to encounter the situation in [Figure 59](#figure--fig:cascade-control) where the primary output \\(y\_1\\) depends directly on \\(y\_2\\) which is a special case of [ 7](#org-target--fig-cascade-extra-meas). However, it is common to encounter the situation in [Figure 63](#figure--fig:cascade-control) where the primary output \\(y\_1\\) depends directly on \\(y\_2\\) which is a special case of [Figure 62a](#org-target--fig-cascade-extra-meas).
<div class="important"> <div class="important">
With reference to the special (but common) case of cascade control shown in [Figure 59](#figure--fig:cascade-control), the use of **extra measurements** is useful under the following circumstances: With reference to the special (but common) case of cascade control shown in [Figure 63](#figure--fig:cascade-control), the use of **extra measurements** is useful under the following circumstances:
- The disturbance \\(d\_2\\) is significant and \\(G\_1\\) is non-minimum phase. - The disturbance \\(d\_2\\) is significant and \\(G\_1\\) is non-minimum phase.
If \\(G\_1\\) is minimum phase, the input-output controllability of \\(G\_2\\) and \\(G\_1 G\_2\\) are the same and there is no fundamental advantage in measuring \\(y\_2\\) If \\(G\_1\\) is minimum phase, the input-output controllability of \\(G\_2\\) and \\(G\_1 G\_2\\) are the same and there is no fundamental advantage in measuring \\(y\_2\\)
@@ -6039,7 +6071,7 @@ With reference to the special (but common) case of cascade control shown in [Fig
<a id="figure--fig:cascade-control"></a> <a id="figure--fig:cascade-control"></a>
{{< figure src="/ox-hugo/skogestad07_cascade_control.png" caption="<span class='figure-number'>Figure 59: </span>Common case of cascade control where the primary output \\(y\_1\\) depends directly on the extra measurement \\(y\_2\\)" >}} {{< figure src="/ox-hugo/skogestad07_cascade_control.png" caption="<span class='figure-number'>Figure 63: </span>Common case of cascade control where the primary output \\(y\_1\\) depends directly on the extra measurement \\(y\_2\\)" >}}
In terms of design, it is recommended to first design \\(K\_2\\) to minimize the effect of \\(d\_2\\) on \\(y\_1\\) and then to design \\(K\_1\\) to minimize the effect of \\(d\_1\\) on \\(y\_1\\). In terms of design, it is recommended to first design \\(K\_2\\) to minimize the effect of \\(d\_2\\) on \\(y\_1\\) and then to design \\(K\_1\\) to minimize the effect of \\(d\_1\\) on \\(y\_1\\).
@@ -6065,7 +6097,7 @@ Then \\(u\_2(t)\\) will only be used for **transient control** and will return t
##### Cascade implementation {#cascade-implementation} ##### Cascade implementation {#cascade-implementation}
To obtain an implementation with two SISO controllers we may cascade the controllers as shown in [ 7](#org-target--fig-cascade-extra-input). To obtain an implementation with two SISO controllers we may cascade the controllers as shown in [Figure 62b](#org-target--fig-cascade-extra-input).
We again let input \\(u\_2\\) take care of the **fast control** and \\(u\_1\\) of the **long-term control**. We again let input \\(u\_2\\) take care of the **fast control** and \\(u\_1\\) of the **long-term control**.
The fast control loop is then The fast control loop is then
@@ -6086,7 +6118,7 @@ It also shows more clearly that \\(r\_{u\_2}\\), the reference for \\(u\_2\\), m
<div class="exampl"> <div class="exampl">
Consider the system in [Figure 60](#figure--fig:cascade-control-two-layers) with two manipulated inputs (\\(u\_2\\) and \\(u\_3\\)), one controlled output (\\(y\_1\\) which should be close to \\(r\_1\\)) and two measured variables (\\(y\_1\\) and \\(y\_2\\)). Consider the system in [Figure 64](#figure--fig:cascade-control-two-layers) with two manipulated inputs (\\(u\_2\\) and \\(u\_3\\)), one controlled output (\\(y\_1\\) which should be close to \\(r\_1\\)) and two measured variables (\\(y\_1\\) and \\(y\_2\\)).
Input \\(u\_2\\) has a more direct effect on \\(y\_1\\) than does input \\(u\_3\\) (there is a large delay in \\(G\_3(s)\\)). Input \\(u\_2\\) has a more direct effect on \\(y\_1\\) than does input \\(u\_3\\) (there is a large delay in \\(G\_3(s)\\)).
Input \\(u\_2\\) should only be used for transient control as it is desirable that it remains close to \\(r\_3 = r\_{u\_2}\\). Input \\(u\_2\\) should only be used for transient control as it is desirable that it remains close to \\(r\_3 = r\_{u\_2}\\).
The extra measurement \\(y\_2\\) is closer than \\(y\_1\\) to the input \\(u\_2\\) and may be useful for detecting disturbances affecting \\(G\_1\\). The extra measurement \\(y\_2\\) is closer than \\(y\_1\\) to the input \\(u\_2\\) and may be useful for detecting disturbances affecting \\(G\_1\\).
@@ -6100,7 +6132,7 @@ We would probably tune the three controllers in the order \\(K\_2\\), \\(K\_3\\)
<a id="figure--fig:cascade-control-two-layers"></a> <a id="figure--fig:cascade-control-two-layers"></a>
{{< figure src="/ox-hugo/skogestad07_cascade_control_two_layers.png" caption="<span class='figure-number'>Figure 60: </span>Control configuration with two layers of cascade control" >}} {{< figure src="/ox-hugo/skogestad07_cascade_control_two_layers.png" caption="<span class='figure-number'>Figure 64: </span>Control configuration with two layers of cascade control" >}}
#### Selectors {#selectors} #### Selectors {#selectors}
@@ -6173,7 +6205,7 @@ Four applications of partial control are:
The outputs \\(y\_1\\) have an associated control objective but are not measured. The outputs \\(y\_1\\) have an associated control objective but are not measured.
Instead, we aim at indirectly controlling \\(y\_1\\) by controlling the secondary measured variables \\(y\_2\\). Instead, we aim at indirectly controlling \\(y\_1\\) by controlling the secondary measured variables \\(y\_2\\).
The table [Table 8](#table--tab:partial-control) shows clearly the differences between the four applications of partial control. The table [Table 4](#table--tab:partial-control) shows clearly the differences between the four applications of partial control.
In all cases, there is a control objective associated with \\(y\_1\\) and a feedback involving measurement and control of \\(y\_2\\) and we want: In all cases, there is a control objective associated with \\(y\_1\\) and a feedback involving measurement and control of \\(y\_2\\) and we want:
- The effect of disturbances on \\(y\_1\\) to be small (when \\(y\_2\\) is controlled) - The effect of disturbances on \\(y\_1\\) to be small (when \\(y\_2\\) is controlled)
@@ -6181,7 +6213,7 @@ In all cases, there is a control objective associated with \\(y\_1\\) and a feed
<a id="table--tab:partial-control"></a> <a id="table--tab:partial-control"></a>
<div class="table-caption"> <div class="table-caption">
<span class="table-number"><a href="#table--tab:partial-control">Table 8</a>:</span> <span class="table-number"><a href="#table--tab:partial-control">Table 4</a>:</span>
Applications of partial control Applications of partial control
</div> </div>
@@ -6201,7 +6233,7 @@ By partitioning the inputs and outputs, the overall model \\(y = G u\\) can be w
\end{aligned} \end{aligned}
\end{equation} \end{equation}
Assume now that feedback control \\(u\_2 = K\_2(r\_2 - y\_2 - n\_2)\\) is used for the "secondary" subsystem involving \\(u\_2\\) and \\(y\_2\\) ([Figure 61](#figure--fig:partial-control)). Assume now that feedback control \\(u\_2 = K\_2(r\_2 - y\_2 - n\_2)\\) is used for the "secondary" subsystem involving \\(u\_2\\) and \\(y\_2\\) ([Figure 65](#figure--fig:partial-control)).
We get: We get:
\begin{equation} \label{eq:partial\_control} \begin{equation} \label{eq:partial\_control}
@@ -6214,7 +6246,7 @@ We get:
<a id="figure--fig:partial-control"></a> <a id="figure--fig:partial-control"></a>
{{< figure src="/ox-hugo/skogestad07_partial_control.png" caption="<span class='figure-number'>Figure 61: </span>Partial Control" >}} {{< figure src="/ox-hugo/skogestad07_partial_control.png" caption="<span class='figure-number'>Figure 65: </span>Partial Control" >}}
##### Tight control of \\(y\_2\\) {#tight-control-of-y-2} ##### Tight control of \\(y\_2\\) {#tight-control-of-y-2}
@@ -6270,7 +6302,7 @@ The selection of \\(u\_2\\) and \\(y\_2\\) for use in the lower-layer control sy
##### Sequential design of cascade control systems {#sequential-design-of-cascade-control-systems} ##### Sequential design of cascade control systems {#sequential-design-of-cascade-control-systems}
Consider the conventional cascade control system in [ 7](#org-target--fig-cascade-extra-meas) where we have additional "secondary" measurements \\(y\_2\\) with no associated control objective, and the objective is to improve the control of \\(y\_1\\) by locally controlling \\(y\_2\\). Consider the conventional cascade control system in [Figure 62a](#org-target--fig-cascade-extra-meas) where we have additional "secondary" measurements \\(y\_2\\) with no associated control objective, and the objective is to improve the control of \\(y\_1\\) by locally controlling \\(y\_2\\).
The idea is that this should reduce the effect of disturbances and uncertainty on \\(y\_1\\). The idea is that this should reduce the effect of disturbances and uncertainty on \\(y\_1\\).
From \ref{eq:partial\_control}, it follows that we should select \\(y\_2\\) and \\(u\_2\\) such that \\(\\|P\_d\\|\\) is small and at least smaller than \\(\\|G\_{d1}\\|\\). From \ref{eq:partial\_control}, it follows that we should select \\(y\_2\\) and \\(u\_2\\) such that \\(\\|P\_d\\|\\) is small and at least smaller than \\(\\|G\_{d1}\\|\\).
@@ -6338,11 +6370,11 @@ Then to minimize the control error for the primary output, \\(J = \\|y\_1 - r\_1
### Decentralized Feedback Control {#decentralized-feedback-control} ### Decentralized Feedback Control {#decentralized-feedback-control}
In this section, \\(G(s)\\) is a square plant which is to be controlled using a diagonal controller ([Figure 62](#figure--fig:decentralized-diagonal-control)). In this section, \\(G(s)\\) is a square plant which is to be controlled using a diagonal controller ([Figure 66](#figure--fig:decentralized-diagonal-control)).
<a id="figure--fig:decentralized-diagonal-control"></a> <a id="figure--fig:decentralized-diagonal-control"></a>
{{< figure src="/ox-hugo/skogestad07_decentralized_diagonal_control.png" caption="<span class='figure-number'>Figure 62: </span>Decentralized diagonal control of a \\(2 \times 2\\) plant" >}} {{< figure src="/ox-hugo/skogestad07_decentralized_diagonal_control.png" caption="<span class='figure-number'>Figure 66: </span>Decentralized diagonal control of a \\(2 \times 2\\) plant" >}}
The design of **decentralized diagonal control systems** involves two steps: The design of **decentralized diagonal control systems** involves two steps:
+21 -16
View File
@@ -79,7 +79,7 @@ Sed aliquam
Here is a list of links to: Here is a list of links to:
- [Figure 5](#figure--fig:general-control-names) - [Figure 5](#figure--fig:general-control-names)
- [Table 3](#table--tab:table-with-equations) - [Table 2](#table--tab:table-with-equations)
- Listing [Code Snippet 1](#code-snippet--lst:matlab-figure) - Listing [Code Snippet 1](#code-snippet--lst:matlab-figure)
- Specific [line of code](#org-coderef--967846-4) - Specific [line of code](#org-coderef--967846-4)
- Equation \ref{eq:numbered} - Equation \ref{eq:numbered}
@@ -465,7 +465,7 @@ Numbering can be continued by using `+n` option as shown below.
``` ```
<div class="src-block-caption"> <div class="src-block-caption">
<span class="src-block-number"><a href="#code-snippet--lst:tikz-test-general-control-names">Code Snippet 4</a>:</span> <span class="src-block-number"><a href="#code-snippet--lst:tikz-test-general-control-names">Code Snippet 4</a>:</span>
Tikz code that is used to generate <a href="#org16fb2fb">5</a> Tikz code that is used to generate <a href="#orgd3b3bc3">5</a>
</div> </div>
<a id="figure--fig:test-general-control-names"></a> <a id="figure--fig:test-general-control-names"></a>
@@ -506,7 +506,7 @@ Fusce blandit mauris dui, sed lobortis sapien tincidunt ac. Maecenas vitae moles
### Sub Images {#sub-images} ### Sub Images {#sub-images}
Link to sub[ 2](#org-target--fig-general-control-names-1). Link to sub[Figure 6a](#org-target--fig-general-control-names-1).
```md ```md
#+name: fig:subfigure #+name: fig:subfigure
@@ -516,24 +516,29 @@ Link to sub[ 2](#org-target--fig-general-control-names-1).
| <<fig:general_control_names_1>> sub figure caption | <<fig:general_control_names_2>> sub figure caption | | <<fig:general_control_names_1>> sub figure caption | <<fig:general_control_names_2>> sub figure caption |
``` ```
<a id="table--fig:subfigure"></a>
<div class="table-caption">
<span class="table-number"><a href="#table--fig:subfigure">Table 2</a>:</span>
Subfigure Caption
</div>
| ![](figs/general_control_names.png) | ![](figs/general_control_names.png) | <figure class="subfigures" id="table--fig:subfigure">
|--------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| <div class="subfigure-row">
| <span class="org-target" id="org-target--fig-general-control-names-1"></span> sub figure caption | <span class="org-target" id="org-target--fig-general-control-names-2"></span> sub figure caption | <div class="subfigure" id="org-target--fig-general-control-names-1" style="flex-basis: 49%">
<img src="figs/general_control_names.png" alt="sub figure caption" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(a)</span> sub figure caption</div>
</div>
<div class="subfigure" id="org-target--fig-general-control-names-2" style="flex-basis: 49%">
<img src="figs/general_control_names.png" alt="sub figure caption" loading="lazy">
<div class="subfigure-caption"><span class="subfigure-label">(b)</span> sub figure caption</div>
</div>
</div>
<figcaption><span class="figure-number">Figure 6: </span>Subfigure Caption</figcaption>
</figure>
## Tables {#tables} ## Tables {#tables}
[Table 3](#table--tab:table-with-equations) shows a table with some mathematics inside. [Table 2](#table--tab:table-with-equations) shows a table with some mathematics inside.
<a id="table--tab:table-with-equations"></a> <a id="table--tab:table-with-equations"></a>
<div class="table-caption"> <div class="table-caption">
<span class="table-number"><a href="#table--tab:table-with-equations">Table 3</a>:</span> <span class="table-number"><a href="#table--tab:table-with-equations">Table 2</a>:</span>
A Simple table with included math A Simple table with included math
</div> </div>
@@ -545,7 +550,7 @@ Link to sub[ 2](#org-target--fig-general-control-names-1).
<a id="table--tab:table-without-head"></a> <a id="table--tab:table-without-head"></a>
<div class="table-caption"> <div class="table-caption">
<span class="table-number"><a href="#table--tab:table-without-head">Table 4</a>:</span> <span class="table-number"><a href="#table--tab:table-without-head">Table 3</a>:</span>
Table without Head Table without Head
</div> </div>
@@ -559,7 +564,7 @@ Link to sub[ 2](#org-target--fig-general-control-names-1).
<a id="table--tab:table-multiple-heads"></a> <a id="table--tab:table-multiple-heads"></a>
<div class="table-caption"> <div class="table-caption">
<span class="table-number"><a href="#table--tab:table-multiple-heads">Table 5</a>:</span> <span class="table-number"><a href="#table--tab:table-multiple-heads">Table 4</a>:</span>
Table with multiples groups Table with multiples groups
</div> </div>
@@ -592,7 +597,7 @@ Almost anything can be put here for instance this table below.
<a id="table--tab:table-with-equations-bis"></a> <a id="table--tab:table-with-equations-bis"></a>
<div class="table-caption"> <div class="table-caption">
<span class="table-number"><a href="#table--tab:table-with-equations-bis">Table 6</a>:</span> <span class="table-number"><a href="#table--tab:table-with-equations-bis">Table 5</a>:</span>
A Simple table with included math A Simple table with included math
</div> </div>
+58
View File
@@ -0,0 +1,58 @@
/* LaTeX-style subfigures across the site */
.subfigures {
margin: 1em 0;
}
.subfigure-row {
display: flex;
flex-wrap: wrap;
align-items: flex-end; /* bottom-align like LaTeX [b] */
justify-content: center;
gap: 1em;
}
.subfigure {
flex: 0 1 auto; /* use the inline flex-basis, but allow shrinking */
min-width: 0; /* let items shrink below their content width */
box-sizing: border-box;
}
.subfigure img {
display: block;
max-width: 100%;
height: auto;
margin: 0 auto;
}
.subfigure-caption {
text-align: center;
font-size: 0.85em;
color: #555;
margin-top: 0.4em;
}
.subfigure-label {
font-weight: 600;
margin-right: 0.25em;
}
/* Main caption styled like the theme's normal figure figcaption */
.subfigures > figcaption {
text-align: center;
margin-top: 0.75em;
}
/* Stack subfigures on narrow screens */
@media (max-width: 600px) {
.subfigure-row {
flex-direction: column;
align-items: center;
}
.subfigure {
flex-basis: auto !important;
width: 100%;
max-width: 100%;
}
}