Politecnico di Bari
Facoltà di Ingegneria
Dispensa per il Corso di
Controlli Automatici I
Uso del software di calcolo “Matlab 4.2” per il
tracciamento del luogo delle radici
Ing. Mariagrazia Dotoli
Uso del software di calcolo “Matlab 4.2” per il
tracciamento del luogo delle radici
1. Tracciamento del luogo delle radici
Consideriamo il sistema in figura e tracciamone il luogo
delle radici e il luogo delle radici complementare per
mezzo della procedura Matlab ‘rlocus’.
+
-
k
s ( s + 5)( s + 7)
» num=1;
» den=[1 12 35 0];
» roots(den)
ans =
0
-7
-5
»
»
»
»
rlocus(num,den), grid
title('Luogo delle radici')
figure(2),rlocus(-num,den), grid
title('Luogo delle radici complementare')
Determiniamo ora con la funzione ‘rlocfind’ i punti del luogo sull’asse immaginario e il punto
doppio del luogo sull’asse reale per il luogo delle radici propriamente detto.
» [k1,p1]=rlocfind(num,den)
Select a point in the graphics window
selected_point =
Luogo delle radici
Luogo delle radici complementare
10
8
8
6
6
4
4
2
Imag Axis
Imag Axis
2
0
-2
0
-2
-4
-4
-6
-6
-8
-10
-8
-6
-4
-2
0
-8
2
Real Axis
-8
-6
-4
-2
Real Axis
2
0
2
0.0138 + 5.9064i
k1 =
419.6004
p1 =
-11.9978
-0.0011 + 5.9138i
-0.0011 - 5.9138i
» [k2,p2]=rlocfind(num,den)
Select a point in the graphics window
selected_point =
-1.8940 - 0.0585i
k2 =
30.0590
p2 =
-8.1638
-1.9181 + 0.0535i
-1.9181 - 0.0535i
In effetti, si ha una equazione caratteristica
s 3 + 12 s 2 + 35s + k = 0
e quindi la tabella di Routh è la seguente.
3
1
35
2
12
k
1
420-k
0
k
Dunque il luogo interseca l’asse immaginario per k=420, ossia per
12s 2 + k = 12s 2 + 420 = 0
s = ± j 35 = ± j 5.92
3
come calcolato. Il punto doppio sull’asse reale corrisponde invece a
3s 2 + 24 s + 35
d
G( s) H (s) = −
=0
ds
s 2 ( s + 5) 2 ( s + 7) 2
ossia ad un valore
s=
− 12 + 39
= −1.92
3
con
k = −( s 3 + 12 s 2 + 35s ) = 30.04
come calcolato.
Consideriamo ora quattro diversi valori del guadagno, cui corrispondono diverse situazioni in anello
chiuso. In ciascun caso determiniamo la funzione di trasferimento in anello chiuso per mezzo della
funzione Matlab ‘feedback’ o della equivalente ‘cloop’. Fissiamo prima k=20. I tre poli in anello
chiuso sono reali. Si ha:
» k1=20;
» [numc1,denc1]=feedback(k1*num,den,1,1)
numc1 =
0
0
0
20
12
35
20
denc1 =
1
» roots(denc1)
ans =
-7.8809
-3.3649
-0.7542
Fissiamo quindi k=100. I tre poli in anello chiuso sono ora due complessi dominanti ed uno reale. Si
ha:
» k2=100;
» [numc2,denc2]=feedback(k2*num,den,1,1)
numc2 =
0
0
0
100
4
denc2 =
1
12
» roots(denc2)
35
100
ans =
-9.4099
-1.2951 + 2.9916i
-1.2951 - 2.9916i
Consideriamo ora il valore del guadagno critico k=420. A parte un polo lontano reale, gli altri due
sono immaginari puri.
» k3=420;
» [numc3,denc3]=feedback(k3*num,den,1,1)
numc3 =
0
0
0
420
12
35
420
denc3 =
1
» roots(denc3)
ans =
-12.0000
0 + 5.9161i
0 - 5.9161i
Infine, con k=500, si hanno due poli complessi instabili e un terzo polo reale non dominante.
» k4=500;
» [numc4,denc4]=feedback(k4*num,den,1,1)
numc4 =
0
0
0
500
12
35
500
denc4 =
1
» roots(denc4)
ans =
-12.4226
0.2113 + 6.3407i
5
0.2113 - 6.3407i
Risposte al gradino
2
1.5
» t1=[0:0.1:10]’;
» t2=[0:0.1:10]’;
» t3=[0:0.1:10]’;
» t4=[0:0.1:10]’;
» [y1,x1]=step(numc1,denc1,t1);
» [y2,x2]=step(numc2,denc2,t2);
» [y3,x3]=step(numc3,denc3,t3);
» [y4,x4]=step(numc4,denc4,t4);
» plot(t1,y1,t2,y2,t3,y3,t4,y4)
» grid
» axis([0 10 -2 2])
» title('Risposte al gradino')
» legend('Poli reali','Poli complessi stabili','Poli immaginari',
'Poli complessi instabili')
1
0.5
0
-0.5
-1
Poli reali
Poli complessi stabili
Poli immaginari
Poli complessi instabili
-1.5
-2
0
1
2
3
4
5
6
7
8
9
10
Come si nota, nel primo caso la risposta al gradino è analoga a quella di un sistema sovrasmorzato;
nel secondo a quella di un sistema sottosmorzato (il terzo polo è completamente dominato); nel
terzo caso si ha un polo reale dominato e due poli immaginari, per cui la risposta è in pratica
puramente oscillatoria; infine, nell’ultimo caso la risposta è divergente, poiché due dei poli sono
instabili.
Consideriamo ora in particolare il caso k=100 e analizziamo il tempo di assestamento e la
sovraelongazione percentuale del sistema.
Risposta al gradino per k=100
1.4
» yf2=y2(length(y2));
» yb1=(yf2*1.05)*ones(size(y2));
» yb2=(yf2*0.95)*ones(size(y2));
» plot(t2,y2,'k-',t2,yb1,'m',t2,yb2,'m-')
» title('Risposta al gradino per
k=100')
» grid
» zoom
1.2
1
0.8
0.6
0.4
0.2
Si determina graficamente un tempo di
assestamento al 5% di circa 2.4 secondi. Ciò è
coerente con la formula ricavata approssimando la
risposta al gradino con il suo inviluppo esponenziale:
t s5% ≅
0
0
1
2
3
4
5
6
7
8
9
10
3
δω n
dove δ e ω sono rispettivamente il coefficiente di smorzamento e la pulsazione naturale della coppia
di poli complessi e coniugati, ricavabili come segue:
» damp(denc2)
Eigenvalue
Damping
6
Freq. (rad/s)
-1.30e+000 + 2.99e+000i
-1.30e+000 - 2.99e+000i
-9.41e+000
3.97e-001
3.97e-001
1.00e+000
3.26e+000
3.26e+000
9.41e+000
Avendo memorizzato i valori delle ordinate yi, si può calcolare anche la sovraelongazione
percentuale.
» Mp2=(max(y2)-y2(length(y2)))/(y2(length(y2))-y2(1))*100
Mp2 =
23.8404
Sempre per questo sistema, possiamo calcolare l’errore di posizione, ossia l’errore a regime con
ingresso a gradino. Questo è nullo, poiché il tipo della funzione di trasferimento di anello è unitario.
Infatti:
» y2(length(t2))
ans =
1.0000
Del resto, la funzione di trasferimento dell’errore vale:
E ( s) =
s ( s + 5)( s + 7)
1
=
1 + G ( s ) s ( s + 5)( s + 7) + k
quindi l’errore di posizione è
e p = lim s→0 s ⋅ E ( s ) ⋅
1
1
=
=0.
s 1 + G (0)
ossia esso è nullo indipendentemente dal valore di k (se il sistema è stabile). Infine, verifichiamo
che per k=100 il terzo polo reale è dominato dagli altri due, calcolando l’espressione in fratti
semplici della funzione di trasferimento e i rapporti di dominanza, dati dal rapporto dei moduli dei
residui e dei poli.
» [r2,p2]=residue(numc2,denc2)
r2 =
1.3369
-0.6685 - 1.8132i
-0.6685 + 1.8132i
p2 =
-9.4099
-1.2951 + 2.9916i
-1.2951 - 2.9916i
7
» d21=abs(r2(1,1))/abs(p2(1,1))
d21 =
0.1421
» d22=abs(r2(2,1))/abs(p2(2,1))
d22 =
0.5928
» d23=abs(r2(3,1))/abs(p2(3,1))
d23 =
0.5928
Come si vede, il rapporto di dominanza relativo al polo reale è circa un quinto di quello
corrispondente ai poli complessi, che risultano quindi essere dominanti sul primo, come anticipato.
2 Bibliografia
R. C. Dorf, R. H. Bishop, Modern Control Systems, settima edizione, 1995, Addison-Wesley.
K. Ogata, Modern Control Engineering, terza edizione, 1997, Prentice Hall.
H. Saadat, Computational Aids in Control Systems Using Matlab, 1993, Mc Graw-Hill.
M. Tibaldi, Note introduttive a Matlab e Control System Toolbox, 1993, Progetto Leonardo.
8
Scarica

Introduzione a Matlab - DEE