Odziv funkcije prenosa drugog reda, svedeno na isto $\omega_C$

inicijalizacija

prvo prelaz na vektorsku grafiku

In [1]:
%plot inline -f "svg"

da učitamo control toolbox

In [2]:
pkg load control

funkcije prenosa se sada unose po formuli sa predavanja, izvedeno u marginagen.wxmx fajlu i opisano u validity.pdf fajluč uvek je $\omega_c = 1000$, $Q$ se menja

In [3]:
Q = 0.25;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq025 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Transfer function 'Hq025' from input 'u1' to output ...

                     1               
 y1:  -------------------------------
      6.226e-08 s^2 + 0.0009981 s + 1

Continuous-time model.
In [4]:
Q = 0.5;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq05 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Transfer function 'Hq05' from input 'u1' to output ...

                     1               
 y1:  -------------------------------
      2.361e-07 s^2 + 0.0009717 s + 1

Continuous-time model.
In [5]:
Q = 1;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq1 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Transfer function 'Hq1' from input 'u1' to output ...

                    1               
 y1:  ------------------------------
      6.18e-07 s^2 + 0.0007862 s + 1

Continuous-time model.
In [6]:
Q = 1.2;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq12 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Transfer function 'Hq12' from input 'u1' to output ...

                     1               
 y1:  -------------------------------
      7.113e-07 s^2 + 0.0007028 s + 1

Continuous-time model.
In [7]:
step(Hq025, Hq05, Hq1, Hq12, 0.01)
Gnuplot Produced by GNUPLOT 5.2 patchlevel 8 0 0.2 0.4 0.6 0.8 1 1.2 0 0.002 0.004 0.006 0.008 0.01 y1 Time [s] Step Response Hq025 Hq025 Hq05 Hq05 Hq1 Hq1 Hq12 Hq12
In [8]:
Tq025 = minreal(Hq025 / (1 - Hq025))
Transfer function 'Tq025' from input 'u1' to output ...

          1.606e+07    
 y1:  -----------------
      s^2 + 1.603e+04 s

Continuous-time model.

kada je ovaj fajl već koncepcijski bio formiran, nastala je funkcija unitnegativefeedback() data u vašem direktorijumu; motiv je bio da se izbegne numerička greška konačne dužine reči i sa njom povezan problem nepotrebnog rasta reda sistema; sledeća ideja je bila funkcija openlooptransferfunction() koja joj je inverzna, određuje funkciju prenosa koja kada joj se zatvori jedinična "negativna" povratna sprega daje funkciju prenosa koja se zadaje kao argument; ovde je isprobavamo; numerički različito, suštinski isto

In [9]:
Tq025a = openlooptransferfunction(Hq025)
Transfer function 'Tq025a' from input 'u1' to output ...

                   1             
 y1:  ---------------------------
      6.226e-08 s^2 + 0.0009981 s

Continuous-time model.
In [10]:
Tq05 = minreal(Hq05 / (1 - Hq05))
Transfer function 'Tq05' from input 'u1' to output ...

       4.236e+06  
 y1:  ------------
      s^2 + 4116 s

Continuous-time model.
In [11]:
Tq05a = openlooptransferfunction(Hq05)
Transfer function 'Tq05a' from input 'u1' to output ...

                   1             
 y1:  ---------------------------
      2.361e-07 s^2 + 0.0009717 s

Continuous-time model.
In [12]:
Tq1 = minreal(Hq1 / (1 - Hq1))
Transfer function 'Tq1' from input 'u1' to output ...

       1.618e+06  
 y1:  ------------
      s^2 + 1272 s

Continuous-time model.
In [13]:
Tq1a = openlooptransferfunction(Hq1)
Transfer function 'Tq1a' from input 'u1' to output ...

                  1             
 y1:  --------------------------
      6.18e-07 s^2 + 0.0007862 s

Continuous-time model.
In [14]:
Tq12 = minreal(Hq12 / (1 - Hq12))
Transfer function 'Tq12' from input 'u1' to output ...

       1.406e+06 
 y1:  -----------
      s^2 + 988 s

Continuous-time model.
In [15]:
Tq12a = openlooptransferfunction(Hq12)
Transfer function 'Tq12a' from input 'u1' to output ...

                   1             
 y1:  ---------------------------
      7.113e-07 s^2 + 0.0007028 s

Continuous-time model.
In [16]:
bode(Tq025, Tq05, Tq1, Tq12)
Gnuplot Produced by GNUPLOT 5.2 patchlevel 8 -100 -50 0 50 101 102 103 104 105 106 Magnitude [dB] Bode Diagram gnuplot_plot_1a gnuplot_plot_2a gnuplot_plot_3a gnuplot_plot_4a -180 -160 -140 -120 -100 101 102 103 104 105 106 Phase [deg] Frequency [rad/s] Tq025 Tq025 Tq05 Tq05 Tq1 Tq1 Tq12 Tq12

uočite da sve funkcije prenosa imaju isto $\omega_C = 1000$, ali im se margine faze razlikuju

In [17]:
bode(Tq025a, Tq05a, Tq1a, Tq12a)
Gnuplot Produced by GNUPLOT 5.2 patchlevel 8 -100 -50 0 50 101 102 103 104 105 106 Magnitude [dB] Bode Diagram gnuplot_plot_1a gnuplot_plot_2a gnuplot_plot_3a gnuplot_plot_4a -180 -160 -140 -120 -100 101 102 103 104 105 106 Phase [deg] Frequency [rad/s] Tq025a Tq025a Tq05a Tq05a Tq1a Tq1a Tq12a Tq12a

dakle, isti rezultati za oba načina računanja funkcije prenosa u otvorenoj sprezi

frekvencijske karakteristike u zatvorenoj sprezi

In [18]:
bode(Hq025, Hq05, Hq1, Hq12)
Gnuplot Produced by GNUPLOT 5.2 patchlevel 8 -120 -100 -80 -60 -40 -20 0 102 103 104 105 106 Magnitude [dB] Bode Diagram gnuplot_plot_1a gnuplot_plot_2a gnuplot_plot_3a gnuplot_plot_4a -150 -100 -50 0 102 103 104 105 106 Phase [deg] Frequency [rad/s] Hq025 Hq025 Hq05 Hq05 Hq1 Hq1 Hq12 Hq12