Documente Academic
Documente Profesional
Documente Cultură
Carte Matlab 2008 PDF
Carte Matlab 2008 PDF
MODELAREA, SIMULAREA
ŞI
CONTROLUL SISTEMELOR
Călin RUSU
Enikö SZÖKE
Melinda RADIAN KREISER
Cuprins
Referenţi ştiinţifici:
CUPRINS
Prefaţă 7
1. Introducere în MATLAB 11
1.1. Obiectivele lucrării 11
1.2. Introducere 11
1.2.1. Mediul MATLAB 12
1.2.2. Variabile, expresii si comenzii 14
1.2.3. Funcţii şi operaţii elementare 24
1.2.4. Trasarea graficelor 28
1.3. Matlab în controlul şi analiza sistemelor 29
1.4. Verificare 33
4. Introducere în Simulink 55
4.1. Obiectivele lucrării 55
4.2. Introducere 55
4.2.1. Lansare Simulink 56
4.2.2. Crearea unui model 57
4.2.3. Elemente de bază (blocuri şi linii) 58
4.2.4. Exemplu de simulare 63
4.3. Modelarea sistemelor 67
Bibliografie 169
Cuprins
PREFAŢĂ
Lucrarea nr. 1
1.2. Introducere
MATLAB este un mediu de modelare şi simulare interativ utilizat
pentru calcule şi analize ştiinţifice. Înglobează diverse posibilităţi de lucru,
precum: analiza numerică, calculul matricial, procesarea semnalelor sau
reprezentarea grafică, într-un mediu uşor de utilizat. Formularea
enunţurilor şi soluţiile problemelor se exprimă exact cum sunt scrise
matematic, nefiind necesară o programare tradiţională. Numele acestui
mediu provine de la matrix laboratory. În calcule complexe programul se
bazează pe operaţiile cu matrici.
12 Introducere în MATLAB
Expresii şi variabile
format short e
format long,
format long e
>> 13
ans =
13
>> cos(3.1416/3)
ans =
0.49999787927255
>>
>> a= 234.56778
a =
2.3457e+002
>> b=3.1416*(cos(3.1416/6))+2
b =
4.7207e+000
>> a1=3.5445/64;
>> % a1=3.5445/64
>>
>>
>> c='Transilvania'
c =
Transilvania
>> cs=[c,',Cluj']
cs =
18 Introducere în MATLAB
Transilvania, Cluj
Definirea matricilor
>> A=[4 32 31 5]
A =
4 32 31 5
>> A=[4,32,31,5]
A =
4 32 31 5
>> B=[3;4;5]
B =
3
4
5
⎡1 2⎤
Matrice C = ⎢ ⎥ se introduce în MATLAB utilizând spaţiu sau virgulă cu
⎣3 4⎦
punct şi virgulă sau carriage return, după cum urmează:
Introducere în MATLAB 19
C =
1 2
3 4
frow =
1 2
>>
>> f12=C(1,2)
f12 =
>>
20 Introducere în MATLAB
>>C*D,
>>C.*D,
>>C\D
>>C/D
-1
este echivalent cu CD .
-1
Inversa matricei se notează cu C şi se obţine utilizând comanda
>>inv(C).
>> C = [1 2;3 4]
C =
1 2
3 4
>> D = [5 6;7 8]
Introducere în MATLAB 21
D =
5 6
7 8
>> C*D
ans =
19 22
43 50
>> C\D
ans =
-3.0000 -4.0000
4.0000 5.0000
>> inv(C)*D
ans =
-3.0000 -4.0000
4.0000 5.0000
>> C.*D
ans =
5 12
21 32
>> E = D'
E =
5 7
6 8
>>
>>F = (1:9),
>> F = (1:1:9)
F =
1 2 3 4 5 6 7 8 9
>> F = (1:9)
F =
1 2 3 4 5 6 7 8 9
Introducere în MATLAB 23
>> 2^
După cum am arătat mai devreme pentru matrici sau tablouri, operaţiile
de ridicare la putere, înmulţire şi împărţire sunt diferite.
Operaţii Logice
>> t = 17>55,
>> L = D <= X
>> H = [1 3 5 7 9];
>> I = [0 2 3 4 5];
>> J = [2 2 6 3 4];
>> lgcal1 = H < I
lgcal1 =
0 0 0 0 0
lgcal2 =
1 1 1 1 1
lgcal3 =
0 1 0 1 1
Definirea funcţiilor
>> x=(0:0.002:2*pi);
Introducere în MATLAB 29
>> y=2*sin(x);
>> plot(x,y); title('Sinusoidal waveform');
Numere complexe
ans =
5.5000e+001 +1.4500e+002i
ans =
0.8151 - 0.0068i
>>
>> abs(25-65i)
ans =
69.6419
>> angle(25-65i)*(180/pi)
ans =
-68.9625
>> real(25-65i)
ans
25
>> imag(25-65i)
Introducere în MATLAB 31
ans
-65
>>
Polinoame
s 3 + 32s 2 + 32 se reprezintă ca
>>x = [1 32 0 32]
x =
1 32 0 32
>>
Primul element din vector este coeficientul termenului de grad cel mai
mare, iar ultimul coeficientul termenului de grad cel mai mic. ‘0’ este inclus deorece
nu exită termen de grad unu în polinoml. Polinomul se poate descompune
sub formă factorizată a cărui rădăcini se obţine cu funcţia poly(), după
cum urmează.
x =
1 3 -18 -40 0
Pentru polinomul caracteristic dat, rădăcinile se obţin cu comanda
roots().
32 Introducere în MATLAB
ans =
0
4.0000
-5.0000
-2.0000
>> x = [1 2 1];
>> y = [2 5];
>> m = conv(x,y)
m =
2 9 12 5
>> n = deconv(x,y)
n =
0.5000 -0.2500
>>
1.4 Verificare
N ( s) = 2s 2 + 6s + 9
D( s) = s 3 + 2s 2 − 9s + 1
N (s)
2. Fie o expresie raţională. Descompuneţi în fracţii simple folosind
D( s)
comenzile din Matlab.
Lucrarea nr. 2
N ( s) (2.1)
G(s) =
D( s )
N ( s ) = bm s m + bm −1 s m −1 + ... + b1 s + b0 (2.2)
D( s) = a n s n + a n −1 s n −1 + ... + a1 s + a0 . (2.3)
s+3
G ( s) = . (2.4)
s − 2s + 1
3
>> num = [1 3]
num =
1 3
>> den = [1 0 –2 1]
den =
1 0 -2 1
>> sys=tf(num,den)
Modelarea sistemelor liniare 37
Transfer function:
s + 3
----------------
s^3 - 2 s + 1
>>
d
x = Ax + Bu (2.5)
dt
y = Cx + Du
d ⎡0 1 ⎤ ⎡ 0 ⎤
x=⎢ ⎥ x + ⎢2.083⎥u (2.6)
dt ⎣0 − 1.71⎦ ⎣ ⎦
y = [1.05 − 5]x
>> A = [0 1; 0 –1.71]
A =
0 1.0000
0 -1.7100
>> B = [0;2.083]
B =
38 Modelarea sistemelor liniare
0
2.0830
C =
1.0500 -5.0000
>> D = 0
D =
>> sys=ss(A,B,C,D)
a =
x1 x2
x1 0 1
x2 0 -1.71
b =
u1
x1 0
x2 2.083
c =
x1 x2
y1 1.05 -5
d =
u1
y1 0
Continuous-time model.
>>
Modelarea sistemelor liniare 39
Uneori este necesară crearea unui model pentru un sistem liniar dat
prin specificarea zerourilor, polurilor şi a factorului de amplificare. Funcţia
sys=zpk(z,p,k), este utilizată pentru a genera un model de acest tip. Să
considerăm un sistem liniar cu următoarele caracteristici:
( s + z1 )( s + z 2 )...(s + z m ) ( s + 1)( s + 2)
G (s) = k =2 .
( s + p1 )( s + p 2 )...(s + p n ) s( s + 2)( s + 3)( s + 4)
z =
-1 -2
>> p = [0 –2 –3 –4]
p =
0 -2 -3 -4
>> k=2
k =
2
>> sys=zpk(z,p,k)
Zero/pole/gain:
40 Modelarea sistemelor liniare
2(s+1)(s+2)
-------------------
s(s+2)(s+3)(s+4)
>>
[A,B,C,D] = tf2ss(num,den),
[num,den]=ss2tf(A,B,C,D).
[z,p,k]=tf2zp(num,den).
[num,den]=zp2tf(z,p,k).
[A,B,C,D]=zp2ss(z,p,k).
[z,p,k]=ss2zp(A,B,C,D).
[num,den]=tfdata(sys).
42 Modelarea sistemelor liniare
[A,B,C,D]=ssdata(sys).
[z,p,k]=zpkdata(sys).
2.3. Verificare
1. Obţineţi reprezentarea sub forma funcţiei de transfer, a ecuaţiilor de
stare şi a modelului zerou-pol-factor de amplificare pentru sistemele a caror
comportamente sunt descrise prin ecuaţiile diferenţiale următoare:
d2 d d
−5 2
y (t ) + 2 y (t ) + 3 y (t ) = x(t ) + x(t ) ; 2 y '' ' + y '' = x .
dt dt dt
s +1 ( s + 1)( s + 2) 25 10
G ( s) = ; G ( s) = ; G ( s) = + .
s + 2s + 3
2
− s − 2s + 3s − 2
3 2
s + 3 s +1
Lucrarea nr. 3
G ( s ) = G1 ( s ) ⋅ G1 ( s ) ⋅ L ⋅ G N ( s )
N (3.1)
G ( s) = ∏ Gk ( s)
k =1
sau
2s + 1
G1 ( s ) = (3.2)
s + 10s 2 − 2s + 1
3
s+2
G2 ( s ) = (3.3)
( s + 3)( s − 3)
Zero/pole/gain:
(s-2)
-----------
(s+3)(s-3)
>>
G ( s ) = G1 ( s) + G1 ( s) + L + G N ( s )
N (3.4)
G ( s ) = ∑ Gk ( s)
k =1
sau
Zero/pole/gain:
(s+11.71)(s-2.323)(s^2+0.6175s+0.4044)
----------------------------------------
(s+10.21)(s+3)(s-3)(s^2-0.2056s+0.09799)
>>
G1 ( s )
G ( s) = (3.5)
1 m G1 ( s ) ⋅ G2 ( s )
Zero/pole/gain:
48 Conectarea sistemelor liniare
2(s-3)(s+3)(s+0.5)
---------------------------------------------
(s+10.23)(s+2.94)(s-2.99)(s^2-0.1795s+0.1223)
[A,B,C,D] = connect(a,b,c,d,q,iu,iy)
Pasul 1
Numerotaţi fiecare bloc din schemă prezentată în figura 3.4 începând
cu 1. Vezi figura şi modul în care s-a făcut numerotarea.
Pasul 2
Întroduceţi pentru fiecare bloc numărătorul şi numitorul sub formă
polinomială. Numărătorul şi numitorul blocului i se defineşte ca ni respectiv
di. Pentru diagrama bloc din figura precedentă numărătorul şi numitorul
arată după cum urmează:
Pasul 3
Specificaţi numărul total de blocuri. Folosiţi pentru aceasta variabila
nblocks. Întroduceţi fişierul script blkbuild pentru a construii
modelul descris prin ecuaţii de stare.
>> nblocks = 8;
>> blkbuild;
Pasul 4
Scrieţi o matrice care să indică configuraţia diagramei bloc. Pentru
Figura 3.4, matricea arată astfel:
50 Conectarea sistemelor liniare
>> q = [1 0 0 0 0
>> 2 1 –6 –7 –8
>> 3 2 0 0 0
>> 4 3 0 0 0
>> 5 4 0 0 0
>> 6 3 0 0 0
>> 7 4 0 0 0
>> 8 5 0 0 0]
q =
1 0 0 0 0
2 1 -6 -7 -8
3 2 0 0 0
4 3 0 0 0
5 4 0 0 0
6 3 0 0 0
7 4 0 0 0
8 5 0 0 0
>>
Pasul 5
Specificaţi intrările şi ieşirile sistemului. Pentru figura 3.4, intrarea
este conectată la primul bloc, iar ieşirea este conectată de blocul numărul 5.
>> iu = [1];
>> iy = [5];
Pasul 6
Întroduceţi declaraţia următoare:
>> [A,B,C,D]=connect(a,b,c,d,q,iu,iy);
Pasul 8
Folosiţi funcţia tf din MATLAB pentru a realiza conversia din
reprezentarea prin ecuaţii de stare în reprezentare prin funcţie de transfer.
Conectarea sistemelor liniare 51
Transfer function:
2
------------------------
s^3 + 13 s^2 + 56 s + 80
>>
3.4 Verificare
1. Determinaţi funcţia de transfer echivalentă pentru următoarele
sisteme conectate în serie folosind Matlab
2 2s + 5 s−2
G1 ( s ) = ; G2 ( s) = ; G3 ( s ) =
s+3 s − 5s + 7
2
s − 2)( s + 5 j )( s − 5 j )
2s + 1 s−4 s −1
G4 ( s) = 2 ; G5 ( s ) = 2 ; G6 ( s) = −1
s +3 s − 2s + 2 2s + 3s − 2 + s −3
Lucrarea nr. 4
4.2 Introducere
Simulink este o componentă grafică interactivă a mediului MATLAB,
fiind utilizat în modelarea, simularea şi analiza sistemelor. În Simulink, un
sistem se reprezintă prin diagrame bloc. Există mai multe biblioteci de
blocuri utile care corespund funcţiilor de transfer, sumatorelor,
dispozitivelor virtuale de intrare şi ieşire sau de alta natură. Simulink este
integrat în MATLAB de aceea, transferul datelor între aceste componente se
realizează foarte uşor. În această prezentare vom utiliza mediul grafic
Simulink în modelarea sistemelor, implementarea şi simularea sistemelor de
control.
56 Introducere în Simulink
>> simulink
1
s+ 1
Step Transfer Fcn Scope
pe care-l vom crea şi după care vom salva acest model într-un fişier al
directorului de lucru Work din Matlab, sub denumirea simple.mdl.
Pentru a reîncărca acest model în fereastra activă a aplicaţiei vom introduce
comanda
>>simple
Figura 4.3.
Dacă se doreşte crearea unui nou model, atunci se va selecta New din
meniul File (sau combinaţia Ctrl+N).
Blocuri
Un bloc poate să conţină una sau mai multe intrări şi de asemenea una sau
mai multe ieşiri. Următorul bloc defineşte o funcţie de transfer cu o intrare
şi o ieşire.
Linii
Acest model simplu este alcătuit din trei blocuri: Step, Transfer
Fcn, şi Scope. Step este un bloc de tip sursă prin care se generează un
semnal de tip treaptă. Acest semnal este transferat în direcţia indicată de
săgeată liniei la blocul liniar Transfer Function. Funcţia de transfer
modifică semnalul de intrare şi scoate la ieşire noul semnal. Blocul Scope
afişează semnalul asemănător unui osciloscop.
În Simulink există şi alte tipuri de blocuri, dar unele dintre acestea vor
fi discutate mai târziu. Momentan vom examina doar aceste trei blocuri.
Modificare bloc
[1 2 1]
Cel mai complicat bloc din cele trei enumerate este blocul "Scope".
Dacă facem dublu click pe simbolul grafic se va afişa următoarea fereastră
pentru osciloscop, figura 4.8.
Notă: semnalul de ieşire (desenat cu galben) este foarte mic relativ la axa
osciloscopului. Pentru a se putea studia mai bine semnalul, se foloseşte
butonul de autoscalare (binoclu), după care semnalul va arata ca în figura
4.12.
[1 20 400]
Achiziţionarea blocurilor
Bibiloteca Sinks
Modificarea blocurilor
Linia rezulată este cu o săgeată înnegrită. Dacă săgeata este fără haşură,
înseamnă că linia nu s-a conectat la bloc, vezi următoarea figură 4.27.
Simulare
>>K=2.5
după care apăsaţi Enter. Această variablă se poate acum utiliza în Simulink.
Dublu-click pe blocul Gain şi întroduceţi variabila K în câmpul destinat
factorului de amplificare.
Introducere în Simulink 79
K=5
Simulaţi din nou sistemul, deschideţi osciloscopul şi apăsaţi butonul
de autoscalare. O să vedeţi noua ieşire, dar acum cu un factor de amplificare
mai mare, figura 4.37.
Introducere în Simulink 81
Lucrarea nr. 5
• răspunsul tranzitoriu,
• eroarea regimului stabilizat,
• stabilitatea.
şi/sau mecanice) care se vor analiza trebuie să fie descrie printr-un set de
ecuaţii diferentiale care caracterizează funcţionarea acestora (legile fizice
ale domeniului – legile lui Kirchoff şi respectiv legile lui Newton). Astfel că,
metode precum cea de rezolvare a ecuaţiilor diferenţiale (Newton) sau cea a
trasformatei Laplace se vor folosi pentru a determina răspunsul în timp a
diferitelor tipuri de sisteme. Pasul următor în proiectarea unui sistem de
control consta în analiza răspunsului în domeniul timp a sistemului în sine,
lucru care reprezintă esenţa acestei lucrari de laborator.
s 2 + 2s + 1
G(s) = 3 (5.1)
s + 2 s 2 + 3s − 1
ans =
-1
-1
>> roots(den)
Analiza regimului tranzitoriu 85
ans =
-1.1378 + 1.5273i
-1.1378 - 1.5273i
0.2757
>>
După cum se poate vedea din exemplul de mai sus, s-au găsit două
zerouri, ambele de coordonate (-1,0), precum şi trei poli dintre care doi poli
complex conjugaţi localizaţi în plan la (-1.1378, j1.5273) si (-1.1378, -
j1.5273), respectiv al treilea pol pe axa reală la (0.2757,0).
Pentru reprezentarea grafică a polilor şi a zerourilor unui sistem dat,
vom utiliza urmatoarele comenzi MATLAB:
Transfer function:
s^2 + 2 s + 1
---------------------
s^3 + 2 s^2 + 3 s – 1
>> pzmap(sys)
Pole-Zero Map
2
1.5
0.5
zerou
Imaginary Axis
poli
0
-0.5
-1
-1.5
-2
-1.2 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4
Real Axis
- timpul de creştere - t r ,
- timpul de intrare în regim stabilizat - t ss ,
- timpul de atingere a supracreşterii maxime - t p ,
- supracreşterea maximă - PO , exprimată în %,
a
G(s) = (5.2)
s+a
Y ( s) = R( s) ⋅ G ( s)
a (5.3)
Y (s) =
s( s + a)
y (t ) = y f (t ) + y n (t ) = 1 − e − at (5.4)
5
Să considerăm funcţia de transfer G ( s ) = .
s+5
Transfer function:
5
-----
s + 5
>> step(sys)
2,2
tr = (5.5)
a
4
ts = . (5.6)
a
90 Analiza regimului tranzitoriu
ωn
G ( s) = (5.7)
s + 2ςω n s + ω n2
2
s = −ςω n ± jω n 1 − ς 2 .
1
c(t ) = 1 − e −ςωnt sin( βω n t + θ ) (5.8)
β
unde
β
β = 1 − ς 2 şi θ = tan −1 (5.9)
ς
π
tp = (5.10)
ωn 1 − ς 2
ξπ
−
1−ς 2
% PO = e x100% (5.11)
4
t ss = (5.12)
ςω n
ω n2 Y ( s) ωn2
G ( s) = ; = 2 (5.13)
s ( s + 2ζω n ) R( s ) s + 2ζω n s + ωn2
ωn2 ( s + z ) Y ( s) ωn2 ( s + z )
G ( s) = ; = 2 (5.14)
s ( s + 2ζω n ) R( s ) s + (2ζω n + ωn2 / z ) s + ωn2
ωn2 p
G (s) = ;
s( s + 2ζω n )( s + p)
Y (s) ωn2 ( s + z )
= 3 (5.15)
R( s ) s + (2ζω n + p) s 2 + 2ζω n ps + ωn2 p
5.3 Verificare
Determinaţi parametrii de răspuns în domeniul timp pentru sistemele
următoare:
4s 2 + 8s + 10 10 2s + 5
1. H (s) = ; 2. H ( s ) = ; 3. H ( s ) = ;
(s + 2)(s − 2s + 5)
2
s+3 s − 6s + 1
2
d ⎡− 3 − 2⎤ ⎡1 ⎤
s 2 + 5s + 25 x=⎢ ⎥ ⋅ x + ⎢ ⎥ ⋅u
4. H (s) = ; 5. dt ⎣1 0 ⎦ ⎣0 ⎦ ;
(s + 2 j)(s − 2 j)(s + 2)(s + 1)
y = [1 0] ⋅ x
s 2 + 2s + 1
6. H ( s ) = .
s 2 + 2s + 2
d2 d d
25 2
y (t ) − 10 y (t ) + 5 y (t ) = 15 u (t ) + 2u (t )
dt dt dt
d2 d d
−5 2
y (t ) + 5 y (t ) + y (t ) = 2 u (t ) + 3u (t ) − 1
dt dt dt
Lucrarea nr. 6
Tabelul 6.1.
Semnal Interpretarea fizica Funcţia de Transformata
de timp Laplace
intrare
treaptă Constanta de poziţie 1(t ) 1
s
rampă Constanta de viteză t 1
s2
parabolă Constanta de t2 1
acceleraţie s3
+ G (s )
-
E ( s) = R( s) − C ( s) (6.1)
C ( s) = E ( s) ⋅ G ( s) (6.2)
R( s)
E ( s) = (6.3)
1 + G(s)
s ⋅ R( s)
e(∞) = lim (6.4)
s →0 1 + G ( s )
Dacă aplicăm diferite intrări de test pentru R(s ) , putem trage concluzii
privitoare la relaţiile care există între sistemul în buclă deschisă - G (s ) şi
natura erorilor din regimul staţionar - e(∞) .
104 Analiza regimului stabil
1
e(∞) = lim . (6.5)
s →0 1 + G ( s )
1
e(∞) = lim . (6.6)
s →0 s ⋅ G(s)
1
e(∞) = lim . (6.7)
s →0 s ⋅ G ( s)
2
K P = lim G ( s ) . (6.8)
s →0
Acest lucru provine din relaţia (6.5). Ecuaţia (6.8) se mai numeşte eroare
statică de poziţie. Pentru o intrare de tip rampă sau parabolă, constantele
statice de erore din regimul stabil se pot exprima pe baza relaţiilor (6.6) şi
respectiv (6.7) şi sunt date de:
K v = lim s ⋅ G ( s ) (6.9)
s →0
Analiza regimului stabil 105
K a = lim s 2 ⋅ G ( s ) (6.10)
s →0
Functia de transfer:
Functia de transfer:
>>
106 Analiza regimului stabil
>> Kp = dcgain(sysg)
Kp =
5.2083
>>
Apoi, folosind relaţia (6.5) şi calculând erorile din regimul stabil pentru o
intrare de tip treaptă, vom scrie:
err
0.1611
>>
Functia de transfer:
>>
>> Kv = dcgain(syssg)
Kv =
0
>>
Din relaţia (6.6), pentru a determina eroarea statică a regimului stabil, vom
utiliza următoarea comandă MATLAB:
>> err=1/Kv
( s + z1 )( s + z 2 ) K
G ( s) = (6.11)
s ( s + p1 )( s + p 2 ) K
n
Tabel 6.2
Sistem de tip 0 Sistem de tip 1 Sistem de tip 2
Semnal Formul Constant Eroare Constant Eroar Constant Eroar
de a de a de a de e a de e
intrare calcul a eroare eroare eroare
erorii statică statică statică
e ss
Treaptă, 1 1
u (t ) 1+ K p Kp = k 1+ K p Kp = ∞ 0 Kp = ∞ 0
Rampă, 1 1
tu (t ) Kv = 0 ∞ Kv = k Kv = ∞ 0
Kv Kv
Parabolă 1 1
, Ka = 0 ∞ Ka = 0 ∞ Ka = k
Ka Ka
t 2 u (t )
D(s)
R(s) E(s) Y(s)
+
+ C (s ) + G (s )
-
B(s)
1 G2 ( s )
E ( s) = R( s) − D( s) (6.12)
1 + G1 ( s )G2 ( s ) 1 + G1 ( s )G2 ( s )
1
În aceasta relaţie (6.12), termenul - este o funcţie de
1 + G1 ( s )G2 ( s )
transfer asociată cu eroarea E (s) în raport cu intrarea R(s) , iar termenul
G2 ( s)
− este o funcţie de transfer asociată cu eroarea E (s ) în
1 + G1 ( s )G2 ( s )
raport cu intrarea de perturbaţie D(s ) . Aplicând teorema valorii finale vom
putea determina valoarea erorii staţionare a regimului stabil.
Astfel că avem:
s ⋅ R( s)
E R (∞) = lim (6.13)
s →0 1 + G ( s )G ( s )
1 2
s ⋅ R( s) ⋅ G2 ( s)
E D (∞) = lim (6.14)
s →0 1 + G ( s )G ( s )
1 2
1
E D (∞ ) = (6.15)
1
+ lim G1 ( s )
lim G2 ( s ) s →0
s →0
R(s) E(s)
C(s)
+ G ( s)
- 1 + G ( s) ⋅ H ( s) − G ( s)
B(s)
G(s)
T (s) = (6.16)
1 + G ( s) H ( s) − G ( s)
P ∂F
S PF = (6.17)
F ∂P
112 Analiza regimului stabil
s →0 s →0
[
lim sE ( s ) = lim sR( s ) 1 − C (sI − A) B
−1
] (6.18)
6.3 Verificare
1. Pentru sistemul din figura 6.1 determinaţi erorile de regim stationar
pentru sistemului G (s ) de mai jos, atunci când la intrare se aplică o
treaptă, o rampă şi respectiv o parabolă.
15( s + 2)( s + 3)
G(s) =
( s + 3)( s + 4)( s + 5)( s + 6)
25( s + 1)( s + 2)
G ( s) =
s ( s + 3)( s + 4)
10( s + 5)( s + 6)
G ( s) =
s 2 ( s + 2)( s + 3)
25 s
C ( s) = şi G ( s ) = .
s+2 ( s + 1)( s + 2)
4. Pentru sistemul din figura 6.4 valoarea erorii din regimul stationar
1 10
este . Se cere să se determine valoarea lui K dacă C ( s ) = ,
100 s+3
100 k
G(s) = şi H ( s ) = .
s ( s + 1)( s + 2) s+5
114 Analiza regimului stabil
Analiza sistemelor prin
metoda locul rădăcinilor
Lucrarea nr. 7
Y ( s) p( s)
T (s) = = (7.1)
R( s) q( s)
1 + K ⋅ G (s) = 0 (7.2)
+ K G (s )
-
B(s)
Y (s) K ( s + 1)( s + 3)
T (s) = = (7.3)
R( s ) s ( s + 2)( s + 3) + K ( s + 1)
s +1
1+ K = 0. (7.4)
s ( s + 2)( s + 3)
Această forma este necesară pentru a putea apela functia rlocus din
Matlab. Pentru obţinerea locului rădăcinilor pentru funcţia de transfer din
relaţia (7.4) se vor scrie urmatoarele linii de comandă:
>> p = [1 1];
>> q = [1 5 6 0];
>> rlocus(p,q)
>>
Aceste linii pot fi salvate într-un fisier m-script şi vor produce graficul
prezentat în figura 7.3. O alternativă a funcţiei rlocus din Matlab pentru
obţinerea locului rădăcinilor este utilizarea liniei de comandă
[r,K]=rlocus(p,q),
care va returna sub forma unei matrice r, valorile rădăcinilor din planul
complex s pentru factorul de amplificare K.
>> rlocfind(sys).
Metoda locul rădăcinilor 119
>> rlocfind(p,q)
selected_point =
-2.0636 + 3.4306i
ans = 13.6002
>>
După marcarea facută pe grafic vor apare polii selectaţi aşa cum indică
figura 7.5.
⎛ 2,0636 + j 3,4306 ⎞
⎜ ⎟
polii: s = ⎜ 2,0636 − j 3,4306 ⎟
⎜ 0.8454 ⎟
⎝ ⎠
13,6002( s + 1)( s + 3) 1
Y (s) = ⋅ . (7.5)
( s + 2)( s + 3) + 13,6002( s + 1) s
>> K = 13.6002;
>> num = K*poly([-1 -3]);
>> den = [1 5 6+K K 0]; % with R(s) included
>> [r,p,k]=residue(num,den)
r =
-1.2983 - 1.1461i
-1.2983 + 1.1461i
-0.4033
3.0000
p =
-2.0773 + 3.4311i
-2.0773 - 3.4311i
122 Metoda locul rădăcinilor
-0.8454
0
k =
[]
>>
Aşa cum se poate vedea din relaţia anterioară (7.6), efectul datorat
polului s = - 0.8454 este foarte mic în comparaţie cu ceilalţi doi poli. Astfel
că, dacă îl neglijăm putem face următoarea aproximare:
ans =
1.0000 4.1546 16.0876
>>
ω n2
T (s) = , (7.8)
s 2 + 2 sω n ξ + ω n
Metoda locul rădăcinilor 123
P ∂F K ∂s
S Ks = ⇒ S Ks = (7.9)
F ∂P s ∂K
s ∆K
S Ks = (7.10)
∆s K
s
unde reprezintă modificarea fracţionară datorată locaţiei polului - s, iar
∆s
∆K
este modificarea fracţionară datorată câştigului - K. Sensibilitatea este
K
un număr complex care se poate exprima sub forma
S Ks = σ + jω ⇒ r∠θ , (7.11)
7.3. Verificare
1. Folosind funcţia rlocus să se obţină locul rădăcinilor pentru
urmatoarele funcţii de transfer corespunzătoare unor sisteme de
control cu structură identică cu cea prezentată în figura 7.1, dacă
parametrul K variaza între: 0 < K < ∞ .
5 s 2 + 3s + 1
(a) G(s) = ; (b) G ( s ) = ;
s 3 + 2s 2 − s + 1 s 3 + 5s 2 + 2 s + 1
s3 + s2 + s +1
(c) G ( s) = 6 .
s + 12s 2 − 23s + 5
126 Metoda locul rădăcinilor
KG ( s ) = K
(s − 2s + 2) .
2
s (s + 3s + 2 )
2
s +1
G ( s) = .
s2
+ C(s) G(s)
-
B(s)
Lucrarea nr. 8
8.2 Introducere
Biblioteca Control Systems din MATLAB conţine două funcţii
sisotool şi rltool utile în proiectarea sistemelor de control. Acestea se
bazează pe metoda grafică Locul rădăcinilor şi reprezintă de fapt două
proceduri de analiză şi proiectare interactivă a sistemelor liniare de control
cu o intrare şi o ieşire (SISO).
>> sisotool
Apelul funcţiei sisotool se poate face cu sau fără argumente, după cum
urmează. De exemplu:
Acum vom selecta opţiunea Import Model din meniul File. Această
acţiune va deschide fereastra de dialog Import System Data, prezentată în
figura 8.2. Configuraţiile sistemului de control apar în Model Listbox.
Astfel că, blocurile sunt desemnate dupa cum urmeaza: F - bloc
preamplificator, G - modelul sistemului controlat, H - modelul senzorului,
K - modelul compensatorului, a cărui valoare iniţială este 1.
Click dreapta pentru locul radacinilor Click dreapta pentru diagramele Bode
Figura 8.4. Meniuri specifice pentru graficele RL si diagramele BODE
Proiectarea sistemelor de control cu metoda locul rădăcinilor 135
ts = 4τ , şi τ = 0,5 sec.
1 1
ςωn = = = 2 , şi tan −1 (0,707) = 45 º
τ 0,5
Prin urmare s1 = −2 + j 2
Vom începe prin a selecta Import Model din meniul File. Această
acţiune va deschide căsuţa de dialog Import System Data. Acum vom
selecta Gp prin click pe → pentru ca în câmpul G să se transfere valoarea
corespunzătoare funcţiei Gp. Acest lucru este prezentat în figura 8.10.
140 Proiectarea sistemelor de control cu metoda locul rădăcinilor
>> PD
Zero/pole/gain:
Proiectarea sistemelor de control cu metoda locul rădăcinilor 143
10.0157 (s+2.397)
Avem că:
t s = 4τ = 2 ⇒ τ = 0,5 sec.
1 1
ςω n = = = 2 şi tan −1 (0,707) = 45 º.
τ 0.5
>> sisotool
>> PhLead
Zero/pole/gain:
Proiectarea sistemelor de control cu metoda locul rădăcinilor 147
64,2588 ⋅ ( s + 1.75)
s + 8.023
Lucrarea nr. 9
K ⋅1
K V = lim sG (s ) = lim s =K (9.1)
s →0 s →0 s(s + 1)
1 1
ess = = < 0.1 ⇒ K ≥ 10
KV K
100
90
80
70
60
% Overs hoot
50
40
30
20
10
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
damping ratio ζ
80
70
60
P has e M argin (P M )
50
40
30
20
10
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
damping ratio ζ
Bode Diagrams
40
20
Phase (deg); Magnitude (dB)
-20
-100
-120
-140
-160
-180
-1 0
10 10
Frequency (rad/sec)
1 s +1 T
C (s ) = ⋅ (9.4)
α s + 1 αT
sau
jωT + 1
C ( jω ) = cu α < 1 (9.5)
jωαT + 1
1
unde T = .
ωm α
0.41s + 1
C (s ) = (9.6)
0.123s + 1
clear all;
% Closed-loop sys
[gnumc,gdenc] = feedback(K*gnum,gden,hnum,hden,-1);
[numc,denc] = feedback(numo,deno,hnum,hden,-1);
bode(cnum,cden);
Bode Diagrams
30
Phase (deg); Magnitude (dB)
25
20
30
20
10
-1 0 1 2
10 10 10 10
Frequency (rad/sec)
sys1 = tf(K*gnum,gden);
sys2 = tf(numo,deno);
[mag1,ph1,w]=bode(K*gnum,gden,logspace(-1,2,500));
[mag2,ph2,w]=bode(numo,deno,logspace(-1,2,500));
subplot(211);
semilogx(w,20*log10(mag1),'r',w,20*log10(mag2),'b')
;
title('Bode Diagrams'); ylabel('Magnitude (dB)');
legend('uncompensated','compensated', -1);
subplot(212);
semilogx(w,ph1,'r', w,ph2,'b');
156 Proiectarea sistemelor de control cu metoda diagramelor BODE
ylabel('Phase (deg)');
xlabel('Frequency (rad/sec)');
legend('uncompensated','compensated', -1);
Bode Diagrams
50
Magnitude (dB)
0 uncompensated
compensated
-50
-100
-1 0 1 2
10 10 10 10
-80
-100
uncompensated
Phase (deg)
figure;
sys1c = tf(gnumc,gdenc);
sys2c = tf(numc,denc);
step(sys1c,sys2c);grid;
legend('uncompensated','compensated',-1);
Step Response
1.6
1.4
uncompensated
1.2 compensated
1
Amplitude
0.8
0.6
0.4
0.2
0
0 2 4 6 8 10 12
Time (sec.)
t=0:0.01:5;
y = t;
[y1,x1]=step(gnumc,conv(gdenc,[1 0]),t);
[y2,x2]=step(numc,conv(denc,[1 0]),t);
[y3,x3]=step(numc,denc,t);
[y4,x4]=step(gnumc,gdenc,t);
plot(t,y1,'r',t,y2,'b',t,y,'g');grid;
xlabel('Time (sec)');
title('Unit Ramp Input response');
legend('uncompensated', 'compensated', 'desired',-1);
158 Proiectarea sistemelor de control cu metoda diagramelor BODE
4.5
4
uncompensated
3.5 compensated
desired
3
2.5
1.5
0.5
0
0 1 2 3 4 5
Time (sec)
PM comp ≥ 45o .
Proiectarea sistemelor de control cu metoda diagramelor BODE 159
Bode Diagrams
40
20
P has e (deg); M agnitude (dB )
-20
-100
-120
-140 ωm
-160
-180
-1 0
10 10
Frequency (rad/sec)
1 s +1 T
C (s ) = ⋅ (9.7)
α s + 1 αT
sau
jω T + 1
C ( jω ) = cu α > 1 (9.8)
jωαT + 1
10 1
unde T = = 11.9 sec . Aceasta asigură ca frecvenţa ω =
să fie
ωm T
cu o decadă sub noua frecvenţă de trecere ω m . Astfel compensatorul
phase-lag proiectat este dat de
11.9s + 1
C (s ) = . (9.10)
119s + 1
clear all;
wm = 0.84; % gain-crossover frequency
alpha = 10; % phase-lag compensator parameter
T = 10/wm; % phase-lead compensator time constant
% Closed-loop sys
[gnumc,gdenc] = feedback(K*gnum,gden,hnum,hden,-1);
[numc,denc] = feedback(numo,deno,hnum,hden,-1);
bode(cnum,cden);
162 Proiectarea sistemelor de control cu metoda diagramelor BODE
Bode Diagrams
20
15
10
-10
-20
-30
-40
-50
-3 -2 -1 0
10 10 10 10
Frequency (rad/sec)
sys1 = tf(K*gnum,gden);
sys2 = tf(numo,deno);
[mag1,ph1,w]=bode(K*gnum,gden,logspace(-1,2,500));
[mag2,ph2,w]=bode(numo,deno,logspace(-1,2,500));
subplot(211);
semilogx(w,20*log10(mag1),'r',w,20*log10(mag2),'b');
title('Bode Diagrams'); ylabel('Magnitude (dB)');
legend('uncompensated','compensated', -1);
subplot(212); semilogx(w,ph1,'r', w,ph2,'b');
ylabel('Phase (deg)'); xlabel('Frequency (rad/sec)');
legend('uncompensated','compensated', -1);
Proiectarea sistemelor de control cu metoda diagramelor BODE 163
Bode Diagrams
50
Magnitude (dB)
0 uncompensated
compensated
-50
-100
-1 0 1 2
10 10 10 10
-80
compensate
-100 d system
uncompensated
Phase (deg)
-160
-180
-1 0 1 2
10 10 10 10
Frequency (rad/sec)
Figura 9.10 Diagramele Bode pentru sistemul necompensat şi respectiv
compensat
sys1c = tf(gnumc,gdenc);
sys2c = tf(numc,denc);
step(sys1c,sys2c);grid;
legend('uncompensated', 'compensated',-1);
Step Response
1.6
1.4
uncompensated
1.2 compensated
1
Amplitude
0.8
0.6
0.4
0.2
0
0 5 10 15 20 25 30 35
Time (sec.)
t=0:0.01:5;
y = t;
[y1,x1]=step(gnumc,conv(gdenc,[1 0]),t);
[y2,x2]=step(numc,conv(denc,[1 0]),t);
[y3,x3]=step(numc,denc,t);
[y4,x4]=step(gnumc,gdenc,t);
plot(t,y1,'r',t,y2,'b',t,y,'g');grid;
xlabel('Time (sec)');
title('Unit Ramp Input response');
legend('uncompensated', 'compensated', 'desired',-1);
Proiectarea sistemelor de control cu metoda diagramelor BODE 165
4.5
4
uncompensated
3.5 compensated
desired
3
2.5
1.5
0.5
0
0 1 2 3 4 5
Time (sec)
Teoria Sistemelor
1. Se va alege un sistem fizic SISO liniar al cărui ordin să fie 3 sau mai
mare;
Notă:
1. Se va utiliza MATLAB şi SIMULINK pentru realizarea
cerintelor menţionate.
26-28 Baritiu • Electrical Engineering Building • Technical University of Cluj • Cluj-Napoca • Romania
Telephone: (0264) 401242 • Lab: (0264) 401830 • Fax: (0264) 592055
http://www.et.utcluj.ro Calin.Rusu@edr.utcluj.ro
169
Bibliografie