Close loop performance - SISO control

This commit is contained in:
Thomas Dehaeze 2019-01-28 11:52:31 +01:00
parent ba2944e057
commit 0b9b1f349e
4 changed files with 52 additions and 8 deletions

BIN
Figures/perfconp.pdf Normal file

Binary file not shown.

BIN
Figures/perfconp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
Figures/perfconp.svg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

View File

@ -1092,19 +1092,64 @@ However, when we look at the poles of the closed loop with a diagonal controller
| -1.1837+0.0041777i |
| -1.1837-0.0041777i |
*** TODO Close loop performance
First we compute the close loop transfer functions.
*** Close loop performance
First, we create the closed loop systems. Then, we plot the transfer function from the reference signals $[\epsilon_u, \epsilon_v]$ to the output $[d_u, d_v]$ (figure [[fig:perfcomp]]).
#+begin_src matlab :results none :exports code
Gcl = feedback(Gvc, K);
Gtcl = feedback(Gtvc, K);
K.InputName = 'e';
K.OutputName = 'u';
Gtvc.InputName = 'u';
Gtvc.OutputName = 'y';
Gvc.InputName = 'u';
Gvc.OutputName = 'y';
Sum = sumblk('e = r-y', 2);
Tvc = connect(Gvc, K, Sum, 'r', 'y');
Ttvc = connect(Gtvc, K, Sum, 'r', 'y');
#+end_src
#+begin_src matlab :results none :exports code
freqs = logspace(-2, 2, 1000);
figure;
bode(Gcl, Gtcl)
ax1 = subplot(1,2,1);
hold on;
plot(freqs, abs(squeeze(freqresp(Tvc(1, 1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Ttvc(1, 1), freqs, 'Hz'))));
hold off;
xlim([freqs(1), freqs(end)]);
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude [m/N]');
legend({'w = 0 [rpm]', 'w = 60 [rpm]'}, 'Location', 'southwest')
title('$G_{r_u \to d_u}$')
ax2 = subplot(1,2,2);
hold on;
plot(freqs, abs(squeeze(freqresp(Tvc(1, 2), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Ttvc(1, 2), freqs, 'Hz'))));
hold off;
xlim([freqs(1), freqs(end)]);
ylim([1e-5, 1]);
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]');
title('$G_{r_u \to d_v}$')
linkaxes([ax1,ax2],'x');
#+end_src
#+HEADER: :tangle no :exports results :results file :noweb yes
#+HEADER: :var filepath="Figures/perfconp.png" :var figsize="full-tall"
#+begin_src matlab
<<plt-matlab>>
#+end_src
#+NAME: fig:perfcomp
#+CAPTION: Close loop performance for $\omega = 0$ and $\omega = 60 rpm$
#+RESULTS:
[[file:Figures/perfconp.png]]
*** Effect of rotation speed
We first identify the system (voice coil and light mass) for multiple rotation speed.
Then we compute the bode plot of the diagonal element (figure [[fig:Guu_ws]]) and of the coupling element (figure [[fig:Guv_ws]]).
@ -1112,7 +1157,7 @@ Then we compute the bode plot of the diagonal element (figure [[fig:Guu_ws]]) an
As the rotation frequency increases:
- one pole goes to lower frequencies while the other goes to higher frequencies
- one zero appears between the two poles
- the zero disappears when $\omega > \sqrt{\frac{k}{m}}$ and the low frequency pole becomes unstable (positive real part)
- [ ] the zero disappears when $\omega > \sqrt{\frac{k}{m}}$ and the low frequency pole becomes unstable (positive real part)
To stabilize the unstable pole, we need a control bandwidth of at least twice of frequency of the unstable pole.
@ -1214,7 +1259,6 @@ To stabilize the unstable pole, we need a control bandwidth of at least twice of
[[file:Figures/Guv_ws.png]]
** TODO Plant Control - MIMO approach
** test
#+begin_src matlab :exports none :results silent