Control System Toolbox / Matlab 7 · • je kolekcija algoritama za modeliranje, analizu i...

51
MATLAB 7 Control System Toolbox

Transcript of Control System Toolbox / Matlab 7 · • je kolekcija algoritama za modeliranje, analizu i...

MATLAB 7

Control System Toolbox

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

augstate

• sve koordinate stanja postaju i izlazi modela

m1 = augstate(m)

uD

xI

C

x

y

BuAxx

0

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