Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Control-System Toolbox
• je kolekcija algoritama za modeliranje, analizu i projektovanje sistema automatskog upravljanja
• realizovan je kroz biblioteku M-datoteka
• Upotrebljava linearne vremenski nepromenljive modele (predstavljene LTI objektima)
– jedna promenljiva opisuje model sistema
• Sadrži bogat skup alata za analizu MIMO sistema
– LTI Viewer - grafički korisnički interfejs
– Alati za dizajn regulatora LQG
• Podržava kontinualna kašnjenja ulaza
• Kompatibilnost sa prethodnom verzijom je očuvana
– Novouvedene klase su smanjile broj komandi i znatno pojednostavile upotrebu toolbox-a
LTI modeli
• Modeli linearnih vremenski nepromenljivih sistema
– funkcija prenosa tf
– opis preko nula/polova/pojačanja zpk
– model u prostoru stanja ss
• descriptor model u prostoru stanja dss
– diskretna funk. prenosa (polinomi po z-1) filt
– Frequency Response Data (FRD) model uključuje eksperimentalne podatke frekventnog odziva
• Diskretni sistemi imaju dodatni parametar - vreme odabiranja Ts
• Model se opisuje jednim objektom (promenljivom), npr. sys
sys = tf( num, den ) sys = zpk( z, p, k ) sys = ss( a, b, c, d ) sys = tf( num, den, Ts) sys = zpk( z, p, k ,Ts ) sys = ss( a, b, c, d, Ts )
Modeli u prostoru stanja
• Posmatra se linearan, vremenski nepromenljiv (invarijantan) sistem sa više ulaza i više izlaza (MIMO)
• Kontinualan model se opisuje skupom diferencijalnih jednačina 1. reda i skupom algebarskih jednačina gde je: x(t) vektor koordinata stanja, u(t) vektor ulaza u sistem, a y(t) vektor izlaza.
• Vremenski diskretan model se opisuje skupom diferencnih i skupom algebarskih jednačina
)()()(
)0(),()()( 0
ttt
ttt
uDxCy
xxuBxAx
kTk
kkk
kkk
)()()(
)0(),()()1( 0
uDxCy
xxuFxEx
Funkcija prenosa - preko polinoma
• opisuje linearan, vremenski nepromenljiv sistem sa jednim izlazom i jednim ulazom (SISO)
• Ovakva predstava je podjednako primenljiva na vremenski kontinualne i vremenski diskretne modele
)()()( sUsGsY
011
1
011
1
...
...
)(
)()(
asasas
bsbsbsb
sQ
sPsG
nn
n
mm
mm
011
1
011
1
...
...
)(
)()(
azazaz
bzbzbzb
zQ
zPzG
nn
n
mm
mm
Funkcija prenosa - nule, polovi i pojačanje
• f-ja prenosa se može prestaviti u faktorizovanom obliku: gde su p(i) nule, q(i) polovi sistema, a k je pojačanje.
• Ovakva predstava je podjednako primenljiva na vremenski kontinualne i vremenski diskretne modele
• Podsedanje: suma parcijalnih sabiraka se dobija Matlab funkcijom residue
nmqsqsqs
pspspsk
sQ
sPsG
n
m
,
))...()((
))...()((
)(
)()(
21
21
)(...)(
)()(
2
2
1
1 skqs
r
qs
r
qs
r
sQ
sPsG
n
n
Primeri LTI modela
• za ispis funkcije prenosa je upotrebljena metoda display objekta tf (odnosno zpk)
» h = tf( 1, [1 1] ) Transfer function: 1 ----- s + 1 » m=ss([0 1;0 -12.5],[0; 38.9],[0 1],0); » sys = zpk( 0.5, [-0.1 0.3], 1, 0.05 ) Zero/pole/gain: (z–0.5) --------------- (z+0.1) (z–0.3) Sampling time: 0.05
» m=ss([0 1; 0 -12.5],[0; 38.9],[1 0],0,... 'InputName', 'napon', ... 'OutputName', {'ug.pozicija'} ) a = x1 x2 x1 0 1 x2 0 -12.5 b = napon x1 0 x2 38.9 c = x1 x2 ug.pozicija 1 0 d = napon ug.pozicija 0 Continuous-time model.
Zadavanje funkcije prenosa
• Preko polinoma
• Preko Laplasovog operatora ‘s’ » hm = tf( 38.9, [1 12.5 0] );
» s = tf(‘s’); » hm = 38.9/(s^2 + 12.5*s)
Izdvajanje podataka iz modela
• odgovarajudom funkcijom
• pristupom polju strukture
» [P, Q] = tfdata(m); » P{1} ans = 0 0 38.9000 » Q{1} ans = 1.0000 12.5000 0
[num, den, Ts] = tfdata(sys) % Ts=vreme odab. [z, p, k, Ts] = zpkdata(sys) [a, b, c, d, Ts] = ssdata(sys) [a, b, c, d, e, Ts] = dssdata(sys) [response, frequency, Ts] = frdata(sysfr) sys.num sys.a sys.Ts
MIMO sistemi
• funkcije prenosa MIMO sistema su nizovi funkcija prenosa SISO sistema.
• svaki SISO sistem se opisuje polinomima brojioca i imenioca
– brojioci i imenioci se pamte u dva niza delija
– funkcija prenosa MIMO sistema je matrica SISO funkcija
• SISO se može opisati preko niza nula, niza polova i pojačanja
num = { 0.5 , [1 1] } den = { [1 0] , [1 2] } H = tf( num, den )
h11 = tf( 0.5, [1 0] ) h12 = tf( [1 1], [1 2] ) H = [ h11 , h12 ]
Zeros = { [ ] , –1 } % [ ] - nema nula Poles = { 0, –2 } Gains = [ 0.5 , 1 ] H = zpk( Zeros, Poles, Gains )
Prethodna verzija Toolbox-a je podržavala samo SIMO sisteme opisane funkcijama prenosa.
Konverzije modela
• konstruktori modela tf, zpk, ss su ujedno i konvertori modela, npr. sys_ss = ss(sys)
» h = tf( 1, [1 2 1] ); % funkcija prenosa 1/(s^2+2s+1) » zpk(h) Zero/pole/gain: 1 --------- (s+1)^2
» m = ss(A,B,C,D); » w = tf(m) Transfer function from input "napon" to output "ug.pozicija": 38.9 ------------ s^2 + 12.5 s » w.num{1} ans = 0 0 38.9000
Konverzije modela - “stare” funkcije
[p,q] = ss2tf(a,b,c,d,bu) [r,t,k] = ss2zp(a,b,c,d,bu) [a,b,c,d] = tf2ss(p,q) [r,t,k] = tf2zp(p,q) [a,b,c,d] = zp2ss(r,t,k) [p,q] = zp2tf(r,t,k)
>> P=38.9; Q=[1 12.5 0]; >> [A,B,C,D]=tf2ss(P,Q) A = -12.5000 0 1.0000 0 B = 1 0 C = 0 38.9000 D = 0
Osobine (properties) modela
• LTI modeli sadrže dodatne podatke o: vremenu odabiranja, kašnjenjima ulaza i imenima ulaza i izlaza
• ove osobine se mogu
– postaviti pomodu set
– očitati sa get
• postoje
– osnove osobine
– osobine specifične modelu
» get(m) a: [2x2 double] b: [2x1 double] c: [1 0] d: 0 e: [] StateName: {2x1 cell} InternalDelay: [0x1 double] Ts: 0 InputDelay: 0 OutputDelay: 0 InputName: {'napon'} OutputName: {'ug.pozicija'} InputGroup: [1x1 struct] OutputGroup: [1x1 struct] Name: '' Notes: {} UserData: []
Osnovne osobine modela
Property Name Description Data Type
InputDelay Input delay(s) Vector
InputGroup Input channel groups Structure
InputName Input channel names Cell vector of strings
Notes Notes on the model history Text
OutputDelay Output delay(s) Vector
OutputGroup Output channel groups Structure
OutputName Output channel names Cell vector of strings
Ts Sample time Scalar
Userdata Additional data Arbitrary
Osobine tf modela
Property Name Description Data Type
den Denominator(s) Real cell array of row vectors
num Numerator(s) Real cell array of row vectors
ioDelay I/O delay(s) Matrix
Variable Transfer function variable String 's', 'p', 'z', 'q', or 'z^-1'
Osobine zpk modela
Property Name Description Data Type
z Zeros Cell array of column vectors
p Poles Cell array of column vectors
k Gains Two-dimensional real matrix
Variable Transfer function variable String 's', 'p', 'z', 'q', or 'z^-1'
ioDelay I/O delay(s) Matrix
Osobine ss modela
Property Name Description Data Type
a State matrix 2-D real matrix
b Input-to-state matrix 2-D real matrix
c State-to-output matrix 2-D real matrix
d Feedthrough matrix 2-D real matrix
e Descriptor matrix 2-D real matrix
InternalDelay I/O delay(s) Matrix
Nx Number of states Scalar integer
StateName State names Cell vector of strings
Pristup osobinama modela
• osobine modela se mogu postavljati i čitati pojedinačno
• pristupanje osobinama kao poljima strukture
• dodatne osobine se mogu postaviti i u konstruktoru
» set( sys, 'inputname', 'napon', 'outputname', 'brzina’ ) » get( sys, 'inputn’ ) ans = ‘napon'
» sys.Ts = 0.3; % vreme odabiranja 0.3 sec. » sys.Ts % očitavanje vremena odabiranja ans = 3.0000e–01
» h1 = tf( num, den, 'inputname', { 'temperatura' ; '' } ) » h2 = tf( 100, [1 5 100], 'inputname', 'napon', ... 'outputn', 'struja', ... 'notes', 'Jednostavno el-kolo')
Karakteristike modela
• size(sys) - broj ulaza i izlaza modela
• isct(sys) - da li je sistem kontinualan?
• isdt(sys) - da li je sistem diskretan?
• pole(sys) - polovi sistema
• tzero(sys) - nule sistema
• dcgain(sys) - DC pojačanje
• norm(sys) - norma sistema (H2 ili Linfinity)
• covar(sys,W) - kovarijansa i odziv na beli šum
• pade(sys) - Pade-ova aproksimacija kašnjenja ulaza
• ...
Konverzije tipa kontinualan/diskretan
• diskretizacija kont. sistema sysd = c2d(sysc,Ts)
• kont. sistem na osnovu diskretnog sysc = d2c(sysd)
• promena periode odabiranja diskretnog sistema sysd1= d2d(sysd,Ts)
• metode diskretizacije/interpolacije:
– zero-order hold (default),
– first-order hold,
– matched zero-pole,
– Tustin-ova aproksimacija sa ili bez prewraping.
» sysd = c2d( sysc, Ts, 'foh') » sysc = d2c( sysd, 'tustin')
» h1 = tf( [1 0.4], [1 -0.7], 0.1 ) » h2 = d2d( h1, 0.25 ) Transfer function: z + 1.754 ------------ z – 0.41 Sampling time: 0.25 » step( h1, '--', h2, '-‘ )
Konverzije tipa kontinualan/diskretan (2)
» md = c2d(m, 0.025) a = x1 x2 x1 1 0.02147 x2 0 0.7316 b = napon x1 0.01098 x2 0.8352 c = x1 x2 ug.pozicija 1 0 d = napon ug.pozicija 0 Sampling time: 0.025 Discrete-time model.
» [p,q]=tfdata(md); » p{1} ans = 0 0.0110 0.0099 » q{1} ans = 1.0000 -1.7316 0.7316
7316.07316.1
0099.0011.0)(
2
zz
zzG
)()()(
)()()1(
kkk
kkk
DuCxy
FuExx
Vremensko kašnjenje
• Na ulazu
• Na izlazu
» s = tf('s'); » H = [1/s ; 2/(s+1)]*exp(-0.1*s) Transfer function from input to output... 1 #1: exp(-0.1*s) * - s 2 #2: exp(-0.1*s) * ----- s + 1
» set( h, 'inputdelay', 0.1 ) » h Transfer function: 38.9 exp(-0.1*s) * ------------ s^2 + 12.5 s
Vremenski i frekventni odzivi
• [y,t,x]=step(sys,ti) - jedinični odziv, ti = tFinal ili tVektor
• [y,t,x]= impulse(sys,ti) - impulsni odziv
• [y,t,x]= initial(sys,x0,ti) - odziv na početno stanje
• [y,t,x]= lsim(sys,u,t,x0) - odziv na pobudu u
• [mag,phase,w]=bode(sys,wi) - Bode -ov dijagam wi = {wmin, wmax} ili wVektor
• [mag,phase,w]= nyquist(sys,wi) - Nyquist -ov dijagam
• Drugi dijagrami:
– nichols(sys) - Nichols -ov dijagam
– sigma(sys) - dijagram singularnih vrednosti
– freqresp(sys,w) - kompleksan frekventni odziv
– ...
• sve komande rade sa kontinulanim i diskretnim modelima i to sa više ulaza i izlaza
Vremenski i frekventni odzivi (2)
• Kada se izlazne vrednosti ne preuzmu funkcije nacrtaju dijagrame
– Može se analizirati (nacrtati odziv) nekoliko modela
• Primeri step funkcije (primenljivi su i na ostale funkcije)
» step(sys) » step(sys1, sys2, sys3) » step(sys1, sys2, sys3, 15.2) » step(sys1, sys2, sys3, 0:0.01:15) » step(sys1, ‘r’, sys2, ‘-.’ sys3, 0:0.01:15)
Step
0 2 4 6 8 10 120
0.5
1
1.5
Step Response
Time (sec)
Am
plit
ude
0 5 100
0.5
1
1.5
From: In(1)
0 5 10
From: In(2)
0 5 10
From: In(3)
Step Response
Time (sec)
Am
plit
ude
0
1
2T
o: O
ut(
1)
0
0.5
1
To: O
ut(
2)
0 2 4 6 8 10 120
0.5
To: O
ut(
3)
Step Response
Time (sec)
Am
plit
ude
» s=tf('s'); » sys1=1/(s^2+s+1); » sys2=1/(s^2+s+2); » sys3=1/(s^2+s+3); » step(sys1,sys2,sys3) » a = [sys1, sys2, sys3]; » step(a) » b = [sys1; sys2; sys3]; » step(b)
» y = step(sys1); » [y,t] = step(sys1); » [y,t] = step(sys1,0:0.1:10); » step(sys1,'.',0:20)
Primer – motor (1)
• Kretanje servomehanizma sačinjenog od jednosmernog elektromotora sa opteredenjem se opisuje diferencijalnom jednačinom
)()()(
)()()(
tutty
tutt
DCx
BAxx
)(9,38)(5,12)( tUtt m
)(9.38
0
)(
)(
5.120
10
)(
)(
)(9,38)(5,12)()(
)()()(
)()()(
)()(
22
21
2
1
tUt
t
t
t
tUtxttx
txttx
tttx
ttx
m
m
» A = [0 1; 0 –12.5]; » B = [0; 38.9]; » C = [1 0]; » D = 0; » m = ss(A,B,C,D);
» P = 38.9; » Q = [1 12.5 0]; » m = tf(P,Q);
Primer – motor (2) » m = ss(A,B,C,D) a = x1 x2 x1 0 1 x2 0 -12.5 b = u1 x1 0 x2 38.9 c = x1 x2 y1 1 0 d = u1 y1 0
» set(m,'inputname','napon') » set(m,'outputname','pozicija') » set(m,'statename',{'fi',‘omega'}) » m a = fi omega fi 0 1 teta 0 -12.5 b = napon fi 0 omega 38.9 c = fi omega pozicija 1 0 d = napon pozicija 0
>> get(m) a: [2x2 double] b: [2x1 double] c: [1 0] d: 0 e: [] Scaled: 0 StateName: {2x1 cell} InternalDelay: [0x1 double] Ts: 0 InputDelay: 0 OutputDelay: 0 InputName: {'napon'} OutputName: {'pozicija'} InputGroup: [1x1 struct] OutputGroup: [1x1 struct] Name: '' Notes: {} UserData: []
Primer – motor (3) » mtf = tf(m) Transfer function from input "napon" to output "pozicija": 38.9 ------------ s^2 + 12.5 s » get(mtf) num: {[0 0 38.9]} den: {[1 12.5 0]} ioDelay: 0 Variable: 's' Ts: 0 InputDelay: 0 OutputDelay: 0 InputName: {'napon'} OutputName: {'pozicija'} InputGroup: [1x1 struct] OutputGroup: [1x1 struct] Name: '' Notes: {} UserData: []
» m2 = ss(A,B,[0 1],D,'outputname','brzina') a = x1 x2 x1 0 1 x2 0 -12.5 b = u1 x1 0 x2 38.9 c = x1 x2 brzina 0 1 d = u1 brzina 0 Continuous-time model. » mtf2 = tf(m2) Transfer function from input to output "brzina": 38.9 -------- s + 12.5
Motor (izlaz pozicija) - Karakteristični odzivi
0 500 1000 15000
1000
2000
3000
4000
5000From: napon To: pozicija
Step Response
Time (sec)
Am
plit
ude
0 0.02 0.04 0.06 0.08 0.10
0.02
0.04
0.06
0.08
0.1
0.12
0.14
From: napon To: pozicija
Step Response
Time (sec)
Am
plit
ude
0 0.02 0.04 0.06 0.08 0.10
0.5
1
1.5
2
2.5
From: napon To: pozicija
Impulse Response
Time (sec)
Am
plit
ude
0 0.1 0.2 0.3 0.4 0.50
0.5
1
1.5
2
2.5
3
3.5
From: napon To: pozicija
Impulse Response
Time (sec)
Am
plit
ude
» impulse(m)
» impulse(m,0:.001:.1)
» step(m,0:.001:.1)
» step(m)
Motor (izlaz brzina) - Karakteristični odzivi
0 0.1 0.2 0.3 0.4 0.50
5
10
15
20
25
30
35
40
From: In(1) To: brzina
Impulse Response
Time (sec)
Am
plit
ude
0 0.2 0.4 0.6 0.8 10
0.5
1
1.5
2
2.5
3
3.5
From: In(1) To: brzina
Step Response
Time (sec)
Am
plit
ude
» step(m2,0:.001:1)
» impulse(m2)
Motor (izlaz brzina) – složena pobuda
0 1 2 3 4 5 6 7 8 9 100
2
4
6
8
10
To: brz
ina
Linear Simulation Results
Time (sec)
Am
plit
ude
» t=0:0.001:10; » n=1000; » u=[zeros(1,n), ones(1,n), 3*ones(1,n), zeros(1,2*n), ... 0:0.001:2 ones(1,n), 2-(0:0.001:1.999)]; » lsim(m2,u,t)
Primeri vremenskih odziva
0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
From: napon To: ug.pozicija
Step Response
Time (sec)
Am
plit
ude
» step( m, 0.2 )
» step(md, 0.2, d2d(md,0.009), 0.2)
0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
From: napon To: ug.pozicija
Step Response
Time (sec)
Am
plit
ude
Primeri frekventnih odziva » sys = [tf(1,[1 1]) 1 ; tf([1 5],[1 1 10]) tf(–1,[1 0])] » bode( sys ) » bode( sys1, sys2, sys3 ) » bode( sys1, 'r', sys2, 'b--’ ) » bode( sys, {wmin , wmax} ) % opseg frekvencija [wmin,wmax]
-40
-20
0
From: In(1)
To: O
ut(
1)
-90
-45
0
To: O
ut(
1)
-100
0
100
To: O
ut(
2)
10-2
100
102
-180
0
180
To: O
ut(
2)
From: In(2)
10-2
100
102
Bode Diagram
Frequency (rad/sec)
Magnitu
de (
dB
) ; P
hase (
deg)
LTI View-er
• služi za analizi odziva u vremenskom i kompleksnom domenu
• je interaktivan interfejs ka korisniku
• omogudava
– prebacivanje između raznih tipova dijagrama
– crta odzive nekoliko LTI modela
– zumira oblasti dijagrama
– računa karakteristike odziva: vreme smirenja, ...
– prikazuje razne I/O kanale
– menja stilove prikaza dijagrama
• upotreba: ltiview(plottype,sys,extras)
ltiview('step',sys) ltiview('step',sys,Tfinal) ltiview('initial',sys,x0,Tfinal)
Povezivanje sistema
• služi formiranju složenijih sistema
• append(sys1,sys2,...) - objedinjuje ulaze i izlaze
• parallel(sys1,sys2) - paralelna veza
• series(sys1,sys2) - redna veza
• feedback(sys1,sys2) - povratna sprega
• connect(sys,q) - model u prostoru stanja sačinjen od blok dijagrama
Operacije sa LTI modelima
• omogudeni zahvaljujudi OOP mogudnostima MATLAB-a
• Paralelna veza objekata - sabiranje
• Redna veza objekata - množenje
• spajanje dva sistema različitih tipova modela poštuje pravila prioriteta: prostor stanja, nule/polovi/k, pa f-ja prenosa.
» tf(1,[1 0]) + tf([1 1],[1 2]) % 1/s + (s+1)/(s+2) Transfer function: s^2 + 2 s + 2 ------------- s^2 + 2 s » 2 * tf(1,[1 0]) * tf([1 1],[1 2]) % 2 * 1/s * (s+1)/(s+2) Transfer function: 2 s + 2 --------- s^2 + 2 s
Operacije sa LTI modelima • sabiranje i oduzimanje == paralelna veza:
sys1 + sys2
• množenje == serijska veza:
sys1 * sys2
• inverzija == zamena ulaza sa izlazima:
sys2 = inv(sys1)
• spajanje ulaza:
sys = [H1 ; H2]
• spajanje izlaza:
sys = [H1 , H2]
• transponovanje (transponuje se matrica f-ja prenosa):
sys’
• pertransponovanje (transponuju se matrice u modelu):
sys.’
append
• objedinjuje dinamiku više modela m = append(m1, m2, …, mn)
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
0
0
0
0
0
0
0
0
u
u
D
D
x
x
C
C
y
y
u
u
B
B
x
x
A
A
x
x
m1
m2
u1
u2
y1
y2
mn un yn
...
m
)(...00
............
0...)(0
0...0)(
2
1
sH
sH
sH
n
parallel
• povezuje dva modela u paralelnoj vezi. Modeli imaju neke zajedničke ulaze, a neki izlazi im se sabiraju. m = parallel(m1, m2) m = m1 + m2 m = parallel(m1, m2, ul1, ul2, iz1, iz2) gde su ul1, ul2, iz1, iz2 indeksi ulaza i izlaza.
Model 1 u1
y1
Model 2 y2
u2
u y
+
+
Model 1 u1 y1
Model 2 y2 u2
u y
+
+
v1
v2
z1
z2
series
• povezuje dva modela u serijskoj vezi. Neki izabrani izlazi prvog sistema se povezuju na izabrane ulaze drugog sistema.
– Nepovezani ulazi Modela 2 i izlazi Modela 1 se ne pojavljuju u zbirnom modelu.
m = series(m1, m2) m = m1 * m2
m = series(m1, m2, iz1, ul2)
Model 1 u1 y1
Model 2 y2
u2 Model 1
u1 y1 Model 2 y2
u2
v2
z1
feedback
• povezuje dva modela u zatvorenu povratnu spregu (tipično je Model 1 postrojenje, a Model 2 regulator)
– podrazumeva se negativna povratna sprega
– Svi označeni izlazi izlazi Modela 1 se povezuju na sve ulaze Modela 2 i svi izlazi Modela 2 se povezuju na označene ulaze Modela 1
m = feedback(m1, m2)
m = feedback(m1, m2, +1)
m = feedback(m1, m2, ul, iz)
Model 1
u2 y2
u1 y1
±
+
Model 2
v z iz ul
y1 Model 1 u1
+
± Model 2 u2 y2
ssdelete, ssselect
• ssdelete redukuje model: briše ulaze, izlaze i promenljive stanja iz modela u prostoru stanja
[ar,br,cr,dr] = ssdelete(a,b,c,d,ulaza,izlazi) [ar,br,cr,dr] = ssdelete(a,b,c,d,ulazi,izlazi,stanja)
• ssselect kreira novi model u prostoru stanja na osnovu posmatranog modela i željenih indeksa ulaza, izlaza i stanja modela koji se žele zadržati (kopirati)
[ae,be,ce,de] = ssselect(a,b,c,d,ulazi,izlazi) [ae,be,ce,de] = ssselect(a,b,c,d,ulazi,izlazi,stanja)
• Za oznake indeksa ulaza, izlaza ili stanja se mogu uporebiti []
connect
• Formira model složenog sistema na osnovu poznatih blokova modela m = connect(m0,veze,ul,iz)
• Koraci:
– svi blokovi u blok dijagramu se označe rednim brojevima 1, 2 ...
– prema uvedenom redosledu blokova napravi se objedinjeni model m0 pozivom append
– numerišu se monotonim nizom (1, 2, ...) svi ulazi, počevši od bloka sa indeksom 1 i nastavljajudi rast indeksa na narednim blokovima
– numerišu se izlazi svih blokova (1, 2, ...)
– odrede se veze među blokovima – matrica veza (veze)
• svaka vrsta označava jednu veza
• u prvoj koloni se uvek nalazi indeks ulaza, a u ostalim kolonama su indeksi izlaza povezani na taj ulaz
• nepopunjena mesta u matrici se dopunjavaju nulama
– odrede se indeksi ulaza (ul) i izlaza (iz) rezultujudeg modela
– pozove se funkcija connect
Primer 1
G1 G2
G5
U(s) Y(s)G3 G4
G6
G7
+ + +
+-
-
G1 G2
G5
U(s) Y(s)G3 G4
G6
G7
+ + +
+-
-
G4
G4
g1 = tf(1,2); g2 = tf(10,[1 2]); g3 = tf(3.4,2); g4 = tf(2,[1 1 2]); g5 = tf([1 1],[1 2 7]); g6 = tf(1,[1 2.5]); g7 = tf(1,12); g = feedback(g3, g4*g5, +1); g = feedback(g2*g, g6); g = g4*feedback(g1*g, g7*g4); minreal(g)
Transfer function: 17 s^3 + 76.5 s^2 + 204 s + 297.5 ------------------------------------------------------------------ s^6 + 7.5 s^5 + 46.5 s^4 + 124.5 s^3 + 293.2 s^2 + 289.7 s + 315.8
Primer 1 (2)
G1 G2
G5
U(s) Y(s)G3 G4
G6
G7
+ + +
+-
-1
1 2 3 4
5
6
7
2 3 4
5
6
7
1 2 3 4
57
6
% g1=... W = append(g1,g2,g3,g4,g5,g6,g7); veze=[ 1 -7 0 2 1 -6 3 2 5 4 3 0 5 4 0 6 3 0 7 4 0]; ulazi=1; izlazi=4; g=connect(W,veze,ulazi,izlazi)
Transfer function: 17 s^3 + 76.5 s^2 + 204 s + 297.5 ------------------------------------------------------------------ s^6 + 7.5 s^5 + 46.5 s^4 + 124.5 s^3 + 293.2 s^2 + 289.7 s + 315.8
s+5
10
G1
x'=Ax+Buy=Cx+Du
Sistem2
+-s1
2
U2
1
U1
2
Y2
1
Y1
2(s+1)
(s+2)
G3m1=tf(10,[1 5]); % blok 1 a2=[-9.02 17.78; -1.69 3.21]; b2=[-0.51 0.54; -0.00 -1.84]; c2=[-3.29 2.45; -13.50 18.07]; d2=[-0.55 -0.14; -0.64 0.29]; m2=ss(a2,b2,c2,d2); % blok 2 m3=tf([2 2],[1 2]); % blok 3 m = append(m1,m2,m3); veze=[3 1 -4; 4 3 0]; % veze na osnovu uvedenih brojeva ulazi=[1 2]; % redni brojevi ulaza izlazi=[2 3]; % redni brojevi izlaza q=connect(m,veze,ulazi,izlazi)
Primer 2
2
3 1
4
1
2
3
4
3
2
1
s+5
10
G1
x'=Ax+Buy=Cx+Du
Sistem2
+-s1
2
U2
1
U1
2
Y2
1
Y1
2(s+1)
(s+2)
G3
Primer 2 (na drugačiji način)
% opis blokova je isti ... % drugi izlaz se vrada na 2 ulaz (negativne povr. sprega se podrazumeva) m = feedback(m2, m3, 2, 2); % blok 1 se prosiruje dodatnim ulazom i izlazom kao y2=u2 mm =append(m1, 1); % serijska veza sa “ukrštenim vezama” (prema slici u2 je gore) m = series(mm, m, [2 1], [1 2])
3
2
1
Kanonske forme modela
» m a = x1 x2 x1 0 1 x2 0 -12.5 b = napon x1 0 x2 38.9 c = x1 x2 ug.pozicija 1 0 d = napon ug.pozicija 0 Continuous-time model.
» m1=canon(m,'companion') a = x1 x2 x1 0 0 x2 1 -12.5 b = napon x1 1 x2 0 c = x1 x2 ug.pozicija 0 38.9 d = napon ug.pozicija 0 Continuous-time model.
» m2=canon(m,'modal') a = x1 x2 x1 0 0 x2 0 -12.5 b = napon x1 1.556 x2 2.887 c = x1 x2 ug.pozicija 2 -1.078 d = napon ug.pozicija 0 Continuous-time model.
Sinteza - projektovanje regulatora
• geometrijsko mesto korena rlocus
• pole placement place
• linearan kvadratni Gausov reg. lqr, dlqr, lqry, kalman, lqgreg
Primer projektovanja LQG regulatora
• Za sistem sa slike regulisati izlaz y oko nule. Sistem se pobuđuje poremedajima tipa belog šuma d i postoji šum kod merenja izlaza n.
sys = ss(tf(100,[1 1 100])) % state-space plant model K = lqry(sys,10,1) % Design LQ-optimal gain K , u = –Kx [A,B,C,D] = ssdata(sys) % Separate control input u and disturbance input d P = ss(A,[B B],C,[D D]) % input [u;d], output y Kest = kalman(P,1,0.01) % Design Kalman state estimator KEST F = lqgreg(Kest,K) % Form LQG regulator = LQ gain + Kalman filter % PROVERA REZULTATA clsys = feedback(sys,F,+1) %positive feedback impulse(sys,'r--',clsys,'b-') % Open- vs. closed-loop impulse responses