diff --git a/figs/bode_plot_example_afm.pdf b/figs/bode_plot_example_afm.pdf new file mode 100644 index 0000000..cc192e3 Binary files /dev/null and b/figs/bode_plot_example_afm.pdf differ diff --git a/figs/bode_plot_example_afm.png b/figs/bode_plot_example_afm.png new file mode 100644 index 0000000..2153b95 Binary files /dev/null and b/figs/bode_plot_example_afm.png differ diff --git a/figs/classical_feedback_test_system.pdf b/figs/classical_feedback_test_system.pdf new file mode 100644 index 0000000..2a973aa Binary files /dev/null and b/figs/classical_feedback_test_system.pdf differ diff --git a/figs/classical_feedback_test_system.png b/figs/classical_feedback_test_system.png new file mode 100644 index 0000000..521b6c4 Binary files /dev/null and b/figs/classical_feedback_test_system.png differ diff --git a/figs/classical_feedback_test_system.svg b/figs/classical_feedback_test_system.svg new file mode 100644 index 0000000..384dc5f --- /dev/null +++ b/figs/classical_feedback_test_system.svg @@ -0,0 +1,165 @@ + + diff --git a/figs/loop_gain_manual_afm.pdf b/figs/loop_gain_manual_afm.pdf new file mode 100644 index 0000000..00d0db0 Binary files /dev/null and b/figs/loop_gain_manual_afm.pdf differ diff --git a/figs/loop_gain_manual_afm.png b/figs/loop_gain_manual_afm.png new file mode 100644 index 0000000..2dd5f56 Binary files /dev/null and b/figs/loop_gain_manual_afm.png differ diff --git a/figs/mech_sys_1dof_inertial_contr.pdf b/figs/mech_sys_1dof_inertial_contr.pdf new file mode 100644 index 0000000..352600b Binary files /dev/null and b/figs/mech_sys_1dof_inertial_contr.pdf differ diff --git a/figs/mech_sys_1dof_inertial_contr.png b/figs/mech_sys_1dof_inertial_contr.png new file mode 100644 index 0000000..b29b45e Binary files /dev/null and b/figs/mech_sys_1dof_inertial_contr.png differ diff --git a/figs/mech_sys_1dof_inertial_contr.svg b/figs/mech_sys_1dof_inertial_contr.svg new file mode 100644 index 0000000..d3dfda5 --- /dev/null +++ b/figs/mech_sys_1dof_inertial_contr.svg @@ -0,0 +1,166 @@ + + diff --git a/figs/open_loop_shaping.pdf b/figs/open_loop_shaping.pdf new file mode 100644 index 0000000..a9dc5df Binary files /dev/null and b/figs/open_loop_shaping.pdf differ diff --git a/figs/open_loop_shaping.png b/figs/open_loop_shaping.png new file mode 100644 index 0000000..38fcae7 Binary files /dev/null and b/figs/open_loop_shaping.png differ diff --git a/figs/open_loop_shaping.svg b/figs/open_loop_shaping.svg new file mode 100644 index 0000000..bbb325b --- /dev/null +++ b/figs/open_loop_shaping.svg @@ -0,0 +1,192 @@ + + diff --git a/index.html b/index.html index 31eece2..3bb2be2 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +-The typical methodology when applying Model Based Control to a plant is schematically shown in Figure 1. +The typical methodology when applying Model Based Control to a plant is schematically shown in Figure 1. It consists of three steps:
Figure 1: Typical Methodoly for Model Based Control
@@ -78,9 +95,9 @@ In this document, we will mainly focus on steps 2 and 3.Classical Control (1930)
@@ -156,10 +173,363 @@ Robust Control (1980)+Let’s consider the test-system shown in Figure 2. +The notations used are listed in Table 1. +
+ + ++
+Figure 2: Test System consisting of a payload with a mass \(m\) on top of an active system with a stiffness \(k\), damping \(c\) and an actuator.
+Notation | +Description | +Value | +Unit | +
---|---|---|---|
\(m\) | +Payload’s mass to position / isolate | ++ | [kg] | +
\(k\) | +Stiffness of the suspension system | ++ | [N/m] | +
\(c\) | +Damping coefficient of the suspension system | ++ | [N/(m/s)] | +
\(y\) | +Payload absolute displacement (measured by an inertial sensor) | ++ | [m] | +
\(d\) | +Ground displacement, it acts as a disturbance | ++ | [m] | +
\(u\) | +Actuator force | ++ | [N] | +
\(r\) | +Wanted position of the mass (the reference) | ++ | [m] | +
\(\epsilon = r - y\) | +Position error | ++ | [m] | +
\(K\) | +Feedback controller | +to be designed | +[N/m] | +
+Derive the following open-loop transfer functions: +
+\begin{align} + G(s) &= \frac{y}{u} \\ + G_d(s) &= \frac{y}{d} +\end{align} + ++Hint: You can follow this generic procedure: +
++Having obtained \(G(s)\) and \(G_d(s)\), we can transform the system shown in Figure 2 into a classical feedback form as shown in Figure 4. +
+ + ++
+Figure 3: Block diagram corresponding to the example system
++Usually, the controller \(K(s)\) is designed such that the loop gain \(L(s)\) has desirable shape. +This technique is called Open Loop Shaping. +
+ ++For instance example all the specifications can usually be explained in terms of the open loop gain. +
++
+Figure 4: Classical Feedback Architecture
++This is usually done manually has the loop gain \(L(s)\) depends linearly of \(K(s)\): +
+\begin{equation} + L(s) = G(s) K(s) +\end{equation} ++\(K(s)\) then consists of a combination of leads, lags, notches, etc. such that its product with \(G(s)\) has wanted shape. +
+k = 1e-6;
+m = 10;
+c = 10;
+
+G =
+
++
+Figure 5: Bode plot of the plant \(G(s)\)
++Specifications: +
+
+Using SISOTOOL
, design a controller that fulfill the specifications.
+
sisotool(G) ++
+In order to have the wanted Roll-off, two integrators are used, a lead is also added to have sufficient phase margin. +
+ ++The obtained controller is shown below, and the bode plot of the Loop Gain is shown in Figure 6. +
+K = 6e4 * ... % Gain + 1/(s^2) * ... % Double Integrator + (1 + s/111)/(1 + s/888); % Lead ++
+
+Figure 6: Bode Plot of the obtained Loop Gain \(L(s) = G(s) K(s)\)
++And we can verify that we have the wanted stability margins: +
+[Gm, Pm, ~, Wc] = margin(G*K) ++
+ | Value | +
---|---|
Gain Margin [dB] | +7.2 | +
Phase Margin [deg] | +48.1 | +
Crossover [Hz] | +50.7 | +
+The Open Loop Shaping synthesis can be performed using the \(\mathcal{H}_\infty\) Synthesis. +
+ ++Even though we will not go into details, we will provide one example. +
+ +
+Using Matlab, the \(\mathcal{H}_\infty\) synthesis of a controller based on the wanted open loop shape can be performed using the loopsyn
command:
+
K = loopsyn(G, Gd); ++
+where: +
+G
is the (LTI) plantGd
is the wanted loop shapeK
is the synthesize controller
+Matlab documentation of loopsyn
(link).
+
+Let’s re-use the previous plant. +
+ ++Translate the specification into the wanted shape of the open loop gain. +
+ +G = tf(16,[1 0.16 16]); + +Gd = 3.7e4*1/s*(1 + s/2/pi/20)/(1 + s/2/pi/220)*1/(s + s/2/pi/500); ++
[K,CL,GAM,INFO] = loopsyn(G, Gd); ++
bodeFig({K}) ++
The \(\mathcal{H}_\infty\) norm is defined as the peak of the maximum singular value of the frequency response
@@ -176,7 +546,7 @@ For a SISO system \(G(s)\), it is simply the peak value of \(|G(j\omega)|\) as aLet’s define a plant dynamics:
@@ -201,23 +571,23 @@ And compute its \(\mathcal{H}_\infty\) norm using thehinfnorm
func
-The magnitude \(|G(j\omega)|\) of the plant \(G(s)\) as a function of frequency is shown in Figure 2. +The magnitude \(|G(j\omega)|\) of the plant \(G(s)\) as a function of frequency is shown in Figure 7. The maximum value of the magnitude over all frequencies does correspond to the \(\mathcal{H}_\infty\) norm of \(G(s)\) as Equation \eqref{eq:hinf_norm_siso} implies.
--
Figure 2: Example of the \(\mathcal{H}_\infty\) norm of a SISO system
+Figure 7: Example of the \(\mathcal{H}_\infty\) norm of a SISO system
Optimization problem: @@ -246,17 +616,17 @@ The maximum value of the magnitude over all frequencies does correspond to the \