Close loop performance - SISO control
This commit is contained in:
parent
ba2944e057
commit
0b9b1f349e
BIN
Figures/perfconp.pdf
Normal file
BIN
Figures/perfconp.pdf
Normal file
Binary file not shown.
BIN
Figures/perfconp.png
Normal file
BIN
Figures/perfconp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 133 KiB |
BIN
Figures/perfconp.svg
Normal file
BIN
Figures/perfconp.svg
Normal file
Binary file not shown.
After Width: | Height: | Size: 339 KiB |
@ -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 |
|
||||||
| -1.1837-0.0041777i |
|
| -1.1837-0.0041777i |
|
||||||
|
|
||||||
*** TODO Close loop performance
|
*** Close loop performance
|
||||||
First we compute the close loop transfer functions.
|
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
|
#+begin_src matlab :results none :exports code
|
||||||
Gcl = feedback(Gvc, K);
|
K.InputName = 'e';
|
||||||
Gtcl = feedback(Gtvc, K);
|
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
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
#+begin_src matlab :results none :exports code
|
#+begin_src matlab :results none :exports code
|
||||||
|
freqs = logspace(-2, 2, 1000);
|
||||||
|
|
||||||
figure;
|
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
|
#+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
|
*** Effect of rotation speed
|
||||||
We first identify the system (voice coil and light mass) for multiple 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]]).
|
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:
|
As the rotation frequency increases:
|
||||||
- one pole goes to lower frequencies while the other goes to higher frequencies
|
- one pole goes to lower frequencies while the other goes to higher frequencies
|
||||||
- one zero appears between the two poles
|
- 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.
|
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]]
|
[[file:Figures/Guv_ws.png]]
|
||||||
|
|
||||||
** TODO Plant Control - MIMO approach
|
** TODO Plant Control - MIMO approach
|
||||||
|
|
||||||
** test
|
** test
|
||||||
|
|
||||||
#+begin_src matlab :exports none :results silent
|
#+begin_src matlab :exports none :results silent
|
||||||
|
Loading…
Reference in New Issue
Block a user