I. UVOD U SOFTVERSKI PAKET MATLAB - tf.ni.ac.rs · TOOLBOX Kolekcija (biblioteka) izabranih...

Preview:

Citation preview

I. UVOD U SOFTVERSKI PAKET MATLAB 1. POKRETANJE MATLAB-A, OSNOVNI PROZORI I TOOLBAR-I MATLAB-A

2. MODULI MATLABA

TOOLBOX

Kolekcija (biblioteka) izabranih funkcija namenjena

rešavanju problema određenje oblasti.

Proširuju mogućnosti Matlab-a

Postoje toolbox-ovi za oblasti

– analize signala

– automatskog upravljanja

– simulacije dinamiĉkog ponašanja sistema

– identifikacije sistema

– veštačkih neuronskih mreža

– fuzzy sistema

– optimizacije

– analize robustnosti sistema

– ...

Postojeći toolbox-ovi se usavršavaju, a novi

nastaju

Aerospace Toolbox Bioinformatics Toolbox Communications Toolbox Control System Toolbox Curve Fitting Toolbox Data Acquisition Toolbox Database Toolbox Datafeed Toolbox Excel Link Filter Design Toolbox Filter Design HDL Coder Financial Toolbox Financial Derivatives Toolbox Fixed-Income Toolbox Fixed-Point Toolbox Fuzzy Logic Toolbox GARCH Toolbox Genetic Algorithm and Direct Search Toolbox Image Acquisition Toolbox Image Processing Toolbox Instrument Control Toolbox Mapping Toolbox Model-Based Calibration Toolbox Model Predictive Control Toolbox Neural Network Toolbox Optimization Toolbox OPC Toolbox Partial Differential Equation (PDE) Toolbox RF Toolbox Robust Control Toolbox Signal Processing Toolbox Spline Toolbox Statistics Toolbox Symbolic Math Toolbox System Identification Toolbox Virtual Reality Toolbox Wavelet Toolbox

3. BROJEVI, PROMENLJIVE

Realni brojevi

3 -99 0.0001 -9.639825 1.62e-20 -10.34e200

Opseg 308 308 308 3081.7977*10 ,  2.2251*10   ,   2.2251*10 1.7977*10

Posebni brojevi:

– broj pi (3.1415...)

– imaginarna jedinica i ili j

– beskonačna vrednost Inf

delenje nulom ne prekida program, već nastaje vrednost Inf

– neodređena vrednost (not a number) NaN

NaN je rezultat neodređenih izraza Inf / Inf ili 0/0

– podrazumevana tačnost eps (2.2204e-16)

– “privremena” promenljiva ans

Kompleksni brojevi

-4+7i 8i -9j -9*j 1.23-12e-4j

Promenljive

– naziv promenljive čine slova i brojevi

– mora početi slovom

– prvih 31 znakova se uzima u obzir

– razlikuju se mala i velika slova (npr. a i A su

dve promenljive)

4. ARITMETIČKE OPERACIJE – sabiranje +

– oduzimanje -

– množenje *

– delenje (levo) /

– desno delenje \

– stepenovanje ^

• Redosled operacija je određen na osnovu prioriteta:

1. unarni minus

2. stepenovanje

3. množenje ili delenje

4. sabiranje ili oduzimanje

• Upotrebom ( ) može se uticati na redosled izračunavanja

a=3 A=5; s=1415.2381; d=45, E=31

a=3+2 A=5*13; s=1415.2381/2.12 d=45^11, E=31*d w=(a+A)/(1+2*d)

Izrazi

• Oblik:

promenljiva = izraz

• Izraz čine: nazivi promenljivih, funkcije, operatori i drugi specijalni znaci.

• Ako se izostavi promenljiva sa leve strane znaka “=”, privremena promenljiva ans

prima vrednost izraza

• Kod dugačkih izraza, kada je potrebno unos nastaviti u narednom redu, predhodni

red završiti sa “...” (tri tačke)

• Znak “;” na kraju izraza sprečava da se ispiše vrednost promenljive

a=23

B=2*a^2+3*a+4

c=(a+B)/B

5. NIZOVI I MATRICE I OPERACIJE NAD NJIMA

Definisanje nizova a=[1 3 6 2 0.4 1e-2 4 90] % vektor vrsta 1x8 b=[3; 7; 1; 9; 12] % vektor kolona 5x1 c=1:100 % c=1,2,3,...,100 1x100 d=3:2:200 % d=3,5,7,...,200 e=linspace(1,200,100) % 100 elemenata od 1 do 200 f=logspace(-2,3,100) % 100 elementa od 10-2 do 103 g=e+f % sabiranje vektora

Definisanje i matrica

A=[1 2 3; 6 5 4; 9 8 7] % 3x3 matrica

Matrične operacije i funkcije h=g’ % transponovanje vektora B=A’ % transponovanje vektora C=A+B % sabiranje matrica E=A*B % množenje matrica F=inv(B) % inverzija matrica G=A/B --> A*inv(B) % desno deljenje matrica G=A\B --> inv(A)*B % levo deljenje matrica de=det(B) % determinanta matrica sv=eig(A) % sopstvene vrednosti matrice

Sistem linearnih jednačina

1 2 3

1 2 3

1 2 3

1

2

3

2 2.5

3 2 0.5

1.5

1 2 1 2.5

1 3 2 0.5

1 1 1 1.5

x x x

x x x

x x x

x

x

x

Izdvajanje kolona (redova) matrica

1 2 3 2 5 9

4 5 6 4 1 2

7 8 19 22 11 1

2 4 8 6 4 0

0 8 5 9 4 1

A

A = [1 2 -1; -1 3 2; -1 -1 1]; b = [-2.5; 0.5; 1.5]; x = A\b

Izdvojiti elemente iz 2. i 4 kolone

B = A([1 4],:)

Izdvojiti elemente iz poelednje 3 vrste

B = A(:,end-3:end)

Izdvojiti sve elemente koji pripadaju

istovremeno drugoj i trećoj vrsti i neparnim

kolonama

B = A(1:2:end,[2 3])

Spajanje matrica i vektora

1 2 3

4 5 6

7 8 19

A

1 2 3

45 3 4B

Specijalne matrice

Jedinična matrica I = eye(3,3)

Nulta matrica N = zeros(5,3)

Matrica sa svim 1 J = ones(6,8)

Formirati matricu spajanjem vrsta matrice A i

matrice B.

C = [A;B]

Formirati matricu spajanjem 1. i 3. vrste matrice

A i poslednje vrste matrice B.

B = [A([1 3],:),B(end,:)]

6. POLINOMI I OPERACIJE SA POLINOMIMA

Definisanje polinoma

Polinomi se zadaju preko vektora koeficijenata polinoma, počevši od najvećeg stepena polinoma. Na primer:

3 2( ) 2 3P s s s a = [2 -1 0 3]

Nule polinoma

3 2

1,2,3

( ) 2 3 0

?

P s s s

s

xi=roots[2 -1 0 3])

Formiranje polinoma iz njegovih nula

1 2 31, 2, 5

( ) ?

s s s

P s

P=poly([-1 2 -5])

Predstavljanje polinoma

a = polynom([1 2 3])

Izračunavanje polinoma 3 2( ) 2 3 0

(2) ?

P s s s

P

y = polyval([-1 2 -5],2)

Množenje polinoma 3 2

2

( ) 2 3

( ) 2 1

( )* ( ) ( )

P s s s

Q s s s

P s Q s R s

R=conv([2 -1 0 3],[2 1 -1])

Delejne polinoma 3 2

2

( ) 2 3

( ) 2 1

( ) ( )( )

( ) ( )

P s s s

Q x s s

P s O sR s

Q s Q s

[R,O]=deconv([2 -1 0 3],[2 1 -1])

Izvod i integral polinoma 3 2( ) 2 3P s s s Pp=polyder([2 -1 0 3])

Pi=polyint([2 -1 0 3])

Razvoj količnika dva polinoma

1

1

( )( )

( )

m nm n

n n

b s RRK s

a s s p s p

3 2

3

2

2

3

2

( ) 2 3

( ) 3 2 ( 1)( 2)

( ) 9 2

( ) 2 12 5

b s s s

a s s s s s

b s

a s s ss

b=[2 1 0 3]; a=[1 3 2] [r, p, k] = residue(b,a)

r = 9 2 p = -2 -1 k = 2 -5

3 2

3

3

4

4 3 2

3

2 3

4

( ) 2 3

( ) ( 2)( 1)

5 9 7 2

( ) 9 7 2 2

( ) 2 1 ( 1) ( 1)

b s s s

a x s s

s s s s

b s

a s s s s s

Kreiranje polinoma iz njegovog razvoja

2 3

3 2

4 3 2

9 7 2 2

2 1 ( 1) ( 1)

2 3

5 9 7 2

s s s s

s s

s s s s

b=[2 1 0 3]; a=conv(conv([1 1],[1 1]),[1 1]) a=conv(a,[1 2]) [r, p, k] = residue(b,a) r = 9.0000 -7.0000 2.0000 2.0000 p = -2.0000 -1.0000 -1.0000 -1.0000 k = []

[b,a] = residue(r,p,k) b = 2.0000 1.0000 0.0000 3.0000 a = 1.0000 5.0000 9.0000 7.0000 2.0000

3

2 2

4

3

4

2

0.2500 0.3536 0.2500 0.3536

1.0000 1.414

( ) 2 1

( ) ( 3 2)( 2 3)

( )

( ) ( ) ( ) ( 1)

( 1

0.5

2 1.0000 1.4142

0.5  0.5

2 3

0.5

)

1

2

1

2

j j

j j

b s s

a x s s s s

b s

a s s s s

s

s

s

s s s

b = [2 1]; a1 = [1 3 2]; a2 = [1 2 3]; a = conv(a1,a2) [r,p,k] = residue(b,a) r = 1.0000 -0.2500 - 0.3536i -0.2500 + 0.3536i -0.5000

p = -2.0000 -1.0000 + 1.4142i -1.0000 - 1.4142i -1.0000 k = []

[pp,qq]=residue(r(2:3),p(2:3),[]) pp = -0.5000 0.5000 qq = 1.0000 2.0000 3.0000

7. GRAFICI

plot(x,y) plot(x,y,’r’,’--’) plot(x1,y1,’r’,’--’,x2,y2,’b’,’o’)

Oznaka Boja

y Žuta

m Ljubičasta

c Setloplava

r Crvena

g Zelena

b Plava

w Bela

k Crna

Oznaka Tip linije

- Puna

: Tačkasta linija

-. Crta tačka

-- Isprekidana linija

Crtanje na logaritamskoj skali semilogx semilogx(x,y,’r’); semilogy semilogy(x,y,’r’); loglog loglog(x,y,’r’);

Nova slika figure figure, plot(x,y,’r’);

Više odvojenih grafova na istoj slici subplot subplot(211),plot(x1,y1,’r’); subplot(212), plot(x2,y2,’k’);

xlabel (‘x os’) dodavanje naziva x osi

ylabel (‘y os’) dodavanje naziva y osi

title (‘Graf funkcije’) dodavanje naziva grafiku

grid on /grid off dodavanje mreže na grafiku

x1=linspace(0,20,5);

x2=0:0.01:20;

y1=1.3+0.9*x1;

y2=1.3+0.5*x2;

plot(x1,y1,’o’,x2,y2,’r’)

title(‘Grafik’), xlabel(‘x’), ylabel(‘y(x)’)

legend('y_1(x)','y_2(x)')

0 5 10 15 200

5

10

15

20Grafik

x

y(x

)

y1(x)

y2(x)

8. SKRIPTE I FUNKCIJE (M DATOTEKE)

Naredbe Matlaba se mogu unositi u editor i snimiti kao fajl pod određenim imenom sa ekstenzijom .m

Fajl sa naredbama Matlaba se naziva skripta.

Skripta se izvršava navođenjem imena SKRIPTE sa komandne linije u prozoru Comand Window, ili iz editora pokretanjem Run tastera ( )

Naredbe iz skripte se izvršavaju redom, a njihov rezultat se prikazuje u prozoru Comand Window.

Primer. Prethodni primer (grafik funkcije) snimiti u skriptu Grafik.m i izvršiti

Funkcije su .m fajlovi sa naredbama Matlaba koje imaju ulazne i izlazne argumente.

Funkcije počinju naredbom function a završavaju se naredbom end.

Primer funkcije transformacija.m

II. SYMBOLIC TOOLBOX 9. SIMBOLIČKO REŠAVANJE PROBLEMA – SYMBOLIC MATH TOOLBOX

Definicija simboličke promenljive

x=sym(‘x’), y=sym(‘y’), --> syms x y

x=sym('x','real'), y=sym('y','real') --> syms x y real

c=sym('c','positive') --> syms c positive

--> syms c, assume(c>0)

Kreiranje simboličkih brojeva i matrica

a=sym(‘2/3'); mat=sym([1 2;3 4]);

Zamena simboličke varijable numeričkom vrednošću ili drugom simbol. var.

subs(S), subs(S,new), subs(S,old,new)

syms a b, subs(a+b,a,4) ans = b + 4

syms a b subs(a+b,{a,b},{2,3}) ans =

5

Pretvaranje numeričke matrice u simboličku matricu

Određivanje simb. varijabli iz simb. izraza

b=[1 2 3; 4 5 6; 7 8 9]

b =

1 2 3

4 5 6

7 8 9

bb=sym(b)

bb =

[ 1, 2, 3]

[ 4, 5, 6]

[ 7, 8, 9]

f=sym('x^2+2*y^3-7*y+3+z'); findsym(f)

ans =

x, y, z

findsym(f,2)

ans =

x,y

Konverzija promenljivih

double konvertuje simboličke varijable u numeričke

poly2sym konvertuje numerički polinom u simbolički

sym2poly konvertuje simbolički polinom u numerički

syms a1 a2 a3 a4 a=[a1 a2; a3 a4] a =

[ a1, a2]

[ a3, a4]

b=double(a) b =

1 2

3 4

syms x f =x^2+2*x^3-6*x+3 p=sym2poly(f) p =

2 1 -6 3

p2 =[1 2 3 4 5] f2=poly2sym(p2) f2 =

x^4+2*x^3+3*x^2+4*x+5

Prikaz simboličkih izraza

pretty(s)

syms a1 a2 a3 a4 a=[a1 a2; a3 a4] % simbolička matrica b=inv(a) % simbolička matrica pretty(b) % prikaz

+- -+ | a4 a2 | | -------------, - ------------- | | a1 a4 - a2 a3 a1 a4 - a2 a3 | | | | a3 a1 | | - -------------, ------------- | | a1 a4 - a2 a3 a1 a4 - a2 a3 | +- -+

Diferenciranje

2( ) sin( )f x x x , 2

2

( )?

d f x

dx

2 2( , ) 2f x y x y y x , 2 ( , )

?d f x y

dxdy

syms x; f=x^2*sin(x); diff(f,2) ans = 2*sin(x)+4*x*cos(x)-x^2*sin(x)

syms x y; f=x^2*y+2*y^2*x diff(diff(f,x),y) ans = 2*x+4*y

Integraljenje

2 2( , ) 2f x y x y y x ,

( , ) ?f x y dx

2

( , ) axf x a e

( ) ?f x dx

( , ) xf x a xe

( ) ?

b

a

f x dx

10

0

( ) ?f x dx

syms x y; f=x^2*y+2*y^2*x int(f,x) ans = (x^2*y*(x + 3*y))/3

syms x, syms a, assume(a > 0); f=exp(-a*x^2) int(f,x,-inf,inf) ans = pi^(1/2)/a^(1/2)

syms x a b; f=x*exp(-x); F=int(f,x,a,b) % granice su parametri F =

-b*exp(-b)-exp(-b)+a*exp(-a)+exp(-a)

subs(F, {a,b}, [0,10]) % smena granica ans =

0.9995

Granične vrednosti

lim 1 sin

x

x

a bx

x x

0

1limx x

0

1limx x

0

1limx x

syms x a b; f=x*(1+a/x)^x*sin(b/x); limit(f,x,inf) ans =

exp(a)*b

syms x; limit(1/x,x,0) ans =

NaN

limit(1/x,x,0,’left’) ans =

-Inf

limit(1/x,x,0,’right’) ans =

Inf

Uprošćavanje izraza

R=expand(f)

cos(x+y)

R=factor(f)

x^3-y^3

R=simplify(f)

(x^2+5*x+6)/(x+2)

R=simple(f) – Koristi više različitih metoda

syms x y expand(cos(x+y)) ans =

cos(x)*cos(y)-sin(x)*sin(y)

syms x y factor(x^3-y^3) ans =

(x-y)*(x^2+x*y+y^2)

syms x f=(x^2+5*x+6)/(x+2) simplify(f) ans =

x+3

Grafik simboličke funkcije

ezplot(f),

ezplot(f,vektor_granica)

ezplot(x,y,t_granica)

x

yx = 2 sin(2 t) + 5, y = cos(2 t)

0 5 10-4

-2

0

2

4

6

ezplot(sym('-2*(x-2)^2+2+y'),[-2,8,-4,7]) grid hold on ezplot(sym('2*sin(2*t)+5'), sym('cos(2*t)'))

Algebarske jednačine

solve(eq), solve(eq,var) solve(eq1,eq2,...,eqn)

2 2

3

1 0

0.75 0.9 0

x y

x y

S=solve('x^2+y^2-1=0','y=4*sqrt(3)*x^3') S = x: [6x1 sym] y: [6x1 sym]

S.x ans = 1/2 -1/2 -1/12*(-18+6*i*39^(1/2))^(1/2) 1/12*(-18+6*i*39^(1/2))^(1/2) -1/12*(-18-6*i*39^(1/2))^(1/2) 1/12*(-18-6*i*39^(1/2))^(1/2)

S.y ans = 1/2*3^(1/2) -1/2*3^(1/2) -1/432*(-18+6*i*39^(1/2))^(3/2)*3^(1/2) 1/432*(-18+6*i*39^(1/2))^(3/2)*3^(1/2) -1/432*(-18-6*i*39^(1/2))^(3/2)*3^(1/2) 1/432*(-18-6*i*39^(1/2))^(3/2)*3^(1/2)

ezplot(sym('x^2+y^2-1=0'),[-1,1,-1,1]) hold on ezplot(sym('y=4*sqrt(3)*x^3'))

x

y

y == 4 31/2 x3

-1 -0.5 0 0.5 1-1

-0.5

0

0.5

1

syms x y real

S=solve('x^2+y^2-1=0','y=4*sqrt(3)*x^3') S = x: [2x1 sym] y: [2x1 sym] S.x ans = 1/2 -1/2 S.y ans = 3^(1/2)/2 -3^(1/2)/2

% Resenja su (1/2, 3 2) i (-1/2, - 3 2)

xy

y == 4 31/2 x3

-1 -0.5 0 0.5 1-1

-0.5

0

0.5

1

Diferencijalne jednačine

dsolve(deq) dsolve(deq,c1) dsolve(deq1,deq2,c1,c2)

Primer 1. y'(t)-y(t)=sin(t)

Primer 2. f’(t)-f(t)-g(t)=0, g’(t)+f(t)-g(t)=0

% Bez početnih uslova

dsolve('Dy-y=sin(t)') ans = -1/2*cos(t)-1/2*sin(t)+exp(t)*C1

% Sa početnim uslovima

dsolve('Dy = y + sin(t)','y(0)=1') ans = -1/2*cos(t)-1/2*sin(t)+3/2*exp(t)

S=dsolve('Df-f-g=0', 'Dg+f-g=0', 'f(0)=1', 'g(0)=2') S = f: [1x1 sym] g: [1x1 sym]

S.f ans = exp(t)*cos(t) + 2*exp(t)*sin(t)

S.g ans = 2*exp(t)*cos(t) - exp(t)*sin(t)

Odskočna i impulsna funkcija

heaviside(x) ezplot(heaviside(x),[-0.1 0.1])

-0.1 -0.05 0 0.05 0.1

0

0.2

0.4

0.6

0.8

1

x

heaviside(x)

dirac(x)

Laplasova i inverzna Laplasova transformacija

syms t s a laplace(t^5) ans = 120/s^6 laplace(exp(a*t)) ans = 1/(s-a) ilaplace(s/(s-a)) ans = Dirac(t)+a*exp(a*t) ilaplace(1/(s^2+s+1)) ans = 2/3*exp(-1/2*t)*3^(1/2)*sin(1/2*3^(1/2)*t)

Redovi

symsum(f), symsum(f,a,b)

2 2

1 11

2 3M

1 2 3M n

syms k M=symsum(1/k^2,1,inf) M = pi^2/6

syms k n M=symsum(k,1,n) M =

pi^2/6

III. CONTROL SYSTEM TOOLBOX Tipovi objekata modela

Modeli dinamičkih sistema

Model Family Model Types

Numeric LTI models

Basic numeric representation of

linear systems

tf

zpk

ss

frd

pid

pidstd

Identified LTI models —

Representations of linear systems

with tunable coefficients, whose

values can be identified using

measured input/output data.

idtf

idss

idfrd

idgrey

idpoly

idproc

Identified nonlinear models —

Representations of nonlinear

systems with tunable coefficients,

whose values can be identified

using input/output data. Limited

support for commands that

analyze linear systems.

idnlarx

idnlhw

idnlgrey

Model Family Model Types

Generalized LTI models —

Representations of systems that

include tunable or uncertain

coefficients

genss

genfrd

uss

ufrd

Dynamic Control Design Blocks

— Tunable, uncertain, or switch

components for constructing

models of control systems

ltiblock.gain

ltiblock.tf

ltiblock.ss

ltiblock.pid

ltiblock.pid2

ultidyn

udyn

loopswitch

FUNKCIJA PRENOSA

1

1 1 0 1

1

1 1 0

1

( )

( )i

m

m m

m m i

nn

n

i

n

i

sb s b s b s b

G ss a s a s a

s p

z

K

Konstruisanje prenosnih funkcija sys = tf(num,den) ili tf(sys) % Transfer function sys = zpk(z,p,k) ili zpk(sys) % Zero/pole/gain sys = frd(response,frequencies) % Frequency response data

Kreiranje funkcije prenosa

2

15( )

14 40.02G s

s s

II Način s = tf('s');

G = 1.5/(s^2+14*s+40.02)

G =

1.5

------------------

s^2 + 14 s + 40.02

Continuous-time transfer

function.

I Način

G = tf(1.5,[1 14 40.02])

G =

1.5

------------------

s^2 + 14 s + 40.02

Continuous-time transfer

function.

Kreiranje G preko polova, nula i pojačanja

15( )

( 9.996)( 4.004)G s

s s

Kašnjenje u funkciji prenosa

0.05

2

15( )

14 40.02

seG s

s s

Gzpk = zpk([],[-9.996 -4.004], 1.5)

Gzpk =

1.5

-------------------

(s+9.996) (s+4.004)

Continuous-time zero/pole/gain model.

Gtd = tf(1.5,[1 14 40.02],'ioDelay',0.05)

Gtd = tf(1.5,[1 14 40.02],'InputDelay',0.05)

Gtd = tf(1.5,[1 14 40.02],'OutputDelay',0.05)

Gtd =

1.5

exp(-0.05*s) * ----------------------

s^2 + 14 s + 40.02

Continuous-time transfer function.

Multivarijabilni sistem I Način

h11 = tf([1 -1],[1 1]);

h21 = tf([1 2],[1 4 5]);

H = [h11; h21]

H =

From input to output...

s - 1

1: -----

s + 1

s + 2

2: -------------

s^2 + 4 s + 5

II Način

s = tf('s')

h11 = (s-1)/(s+1);

h21 = (s+2)/(s^2+4*s+5);

H = [h11; h21]

Transformacije iz jednog u drugi oblik prenosne funkcije

3 2

5 5( )

12 44 48

15

( 2)( 4)( 6)

sG s

s s s

s

s s s

3 2

1( ) 5

( 2)( 4)( 6)

5 5

12 44 48

sG s

s s s

s

s s s

s = tf('s')

G=(5*s+5)/(s^3+12*s^2+44*s+48) Gzpk = zpk(G)

Gzpk =

5 (s+1)

-----------------

(s+6) (s+4) (s+2)

Continuous-time zero/pole/gain model.

s = tf('s')

Gzpk=5*(s+1)/(s+2)/(s+4)/(s+6); G = tf(Gzpk)

G =

5 s + 5

------------------------

s^3 + 12 s^2 + 44 s + 48

Continuous-time transfer function.

PROSTOR STANJA

0x(t) Ax(t) Bu(t), x(0) x

y(t) Cx(t) Du(t)

sys = ss(A,B,C,D) sys = ss(D) sys = ss(A,B,C,D,ltisys) sys_ss = ss(sys)

A = [0 1;-5 -2]; B = [0;3]; C = [0 1]; D = 0; sys = ss(A,B,C,D)

sys = a = x1 x2 x1 0 1 x2 -5 -2 b = u1 x1 0 x2 3

c = x1 x2 y1 0 1 d = u1 y1 0 Continuous-time state-space model.

Kašnjenje u prostoru stanja

( ) 2 ( ) 3 ( 1.5)

( 0.7)( )

( )

x t x t u t

x ty t

x t

A = -2; B = 3; C = [1; -1]; D = 0; G = ss(A,B,C,D,'InputDelay',1.5,'OutputDelay',[0.7; 0])

1 1

1 1

( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

N N

j j j j

j j

N N

j j j j

j j

x t Ax t Bu t A x t t B u t t

y t Cx t Du t C x t t D u t t

sys=delayss(A,B,C,D,delayterms)

( ) ( ) ( 1.2) 2 ( 0.5)

( ) ( 0.5) ( )

x t x t x t u t

y t x t u t

( ) 1 ( ) 0 ( ) 0 ( 0.5) 1 ( 1.2) 2 ( 0.5) 0 ( 1.2)

( ) 0 ( ) 1 ( ) 1 ( 0.5) 0 ( 1.2) 0 ( 0.5) 0 ( 1.2)

x t x t u t x t x t u t u t

y t x t u t x t x t u t u t

A=1; B=0; C=0; D=1; DelayT(1) = struct('delay',0.5,'a',0,'b',2,'c',1,'d',0); DelayT(2) = struct('delay',1.2,'a',-1,'b',0,'c',0,'d',0); sys = delayss(1,0,0,1,DelayT)

Redna veza sistema Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) sys = series(sys1,sys2)

1

1( )

3G s

s

, 2

1( )

5G s

s

2

1( )

8 15eG s

s s

Paralelna veza sistema Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) sys = parallel(sys1,sys2)

1

1( )

3G s

s

, 2

1( )

5G s

s

2

2 8( )

8 15e

sG s

s s

G1=tf([1],[1 3]); G2= tf([1],[1 5]); Ge=series(G1,G2)

Ge =

1

--------------

s^2 + 8 s + 15

Continuous-time transfer function.

G1=tf([1],[1 3]); G2= tf([1],[1 5]); Ge=parallel(G1,G2)

Ge =

2 s + 8

--------------

s^2 + 8 s + 15

Continuous-time transfer function.

Povratna sprega Važi za bilo koji dinamički sistem (tf, zpk, ss, ...)

sys = feedback(sys1,sys2)

2( )

3G s

s

2

3( )

2 1H s

s s

2

3 2

2 4 2( )

5 7 9e

s sG s

s s s

G=tf([2],[1 3]); H= tf([3],[1 2 1]); Ge= feedback(G,H,-1)

Ge =

2 s^2 + 4 s + 2

---------------------

s^3 + 5 s^2 + 7 s + 9

Continuous-time transfer function.

G(s) R(s) Y(s) E(s)

-

H(s)

MEŠOVITA VEZA SISTEMA I NAČIN (primena series, paralel, feedback) Primer.

1

2( )

3G s

s

,

2 2

3( )

2 1G s

s s

,

3

1( )

1G s

s

,

2

3 2

2 4 2( )

5 7 9e

s sG s

s s s

G1=tf([2],[1 3]); G2= tf([3],[1 2 1]); G3=tf([1],[1 1]); Gd= series(G1,G2)

Ge= feedback(Gd,G3,-1)

Ge =

6 s + 6

-------------------------------

s^4 + 6 s^3 + 12 s^2 + 10 s + 9

Continuous-time transfer function.

1G (s)

Y(s) E(s)

- 2G (s)

U(s) R(s)

3G (s) Y1(s)

II NAČIN (primena connect) sysc = connect(sys1,...,sysN,inputs,outputs)

Primer.

1

2( )

3G s

s

,

2 2

3( )

2 1G s

s s

,

3

1( )

1G s

s

,

G1=tf([2],[1 3]); G2= tf([3],[1 2 1]); G3=tf([1],[1 1]); G1.u = 'e'; G1.y = 'u'; G2.u = 'u'; G2.y = 'y'; G3.u = 'y'; G3.y = 'y1'; Sum = sumblk('e = r - y1'); T = connect(G1,G2,G3,Sum,'r','y')

T =

From input "r" to output "y":

6 s + 6

-------------------------------------

s^4 + 6 s^3 + 12 s^2 + 10 s + 9

Continuous-time transfer function.

1G (s)

Y(s) E(s)

- 2G (s)

U(s) R(s)

3G (s) Y1(s)

Primer. (I Način)

10 1( ) 5

2 1C

sG s

s

,

1( )

50 1H s

s

,

1

8( )

3 1G s

s

, 2

5( )

^ 2 12 25

sG s

s s

, 3

1( )

0.2 1G s

s

, 4

1G

s

Ge = 7500 s^5 + 97400 s^4 + 269095 s^3 + 193593 s^2 + 20015 s + 325 ----------------------------------------------------------------------------------------------------------------------------- 60 s^7 + 1071 s^6 + 1.349e04 s^5 + 1.095e05 s^4 + 276678 s^3 + 195218 s^2 + 20105 s + 325

s = tf('s'); Gc = 5*(10*s+1)/(2*s+1); G1 = 8/(3*s+1); G2 = (s+5)/(s^2+12*s+25); G3 = 1/(0.2*s+1); G4=1/s; H=1/(50*s+1);

G12=series(G1,G2); G123=parallel(G12,G3); G123H=feedback(G123,H,-1) Gdp = series(Gc,G123H); Gd = series(Gdp,G4); Ge = feedback(Gd,1,-1)

Primer. (II Način)

s = tf('s'); Gc = 5*(10*s+1)/(2*s+1); G1 = 8/(3*s+1); G2 = (s+5)/(s^2+12*s+25); G3 = 1/(0.2*s+1); G4=1/s; H=1/(50*s+1); Gc.u = 'e1'; Gc.y = 'x1'; G1.u = 'e2'; G1.y = 'x3'; G2.u = 'x3'; G2.y = 'x4';

G3.u = 'e2'; G3.y = 'x2'; G4.u = 's'; G4.y = 'y'; H.u = 's'; H.y = 'x5'; Sum1 = sumblk('e1 = r - y'); Sum2 = sumblk('e2 = x1 - x5'); Sum3 = sumblk('s = x2 + x4'); Ge = connect(Gc,G1,G2,G3,G4,H, ... Sum1, Sum2, Sum3, 'r', 'y')

e1 x1

x2

x3 x4

x5

e2 s

Ge = From input "r" to output "y":

125 s^5 + 1623 s^4 + 4485 s^3 + 3227 s^2 + 333.6 s + 5.417 ---------------------------------------------------------------------------------------------------------- s^7 + 17.85 s^6 + 224.8 s^5 + 1825 s^4 + 4611 s^3 + 3254 s^2 + 335.1 s + 5.417

Polovi i nule dinamičkog sistema Važi za bilo koji dinamički sistem (tf, zpk, ss, ...)

p = pole(sys) z = zero(sys) [z,gain]= zero(sys) pzplot(sys) [Wn,zeta]= damp(sys) [Wn,zeta,P]= damp(sys)

-5 -4 -3 -2 -1 0-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Pole-Zero Map

Real Axis (seconds-1)

Imagin

ary

Axis

(seconds

-1)

Primer.

H = tf([2 5 1],[1 2 3]);

pole(H) [z,gain]= zero(H) pzplot(sys) damp(H)

VREMENSKI ODZIVI SISTEMA

Odskočni odziv sistema

Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) A = [2 -4; 4 2]; B = [-1; 0.5]; C = [-0.5, -2]; D = [-1]; S=ss(A,B,C,D); H = tf([8 18 32],[1 6 14 24]); Grafici

stepplot(H); % ili stepplot(S); stepplot(H,8); % ili stepplot(S,8); step(H); % ili step(S); step(H,8); % ili step(S); Numeričke vrednosti [y,t] = step(H); % --> plot(t,y) [y,t] = step(H,8); % --> plot(t,y)

0 1 2 3 40

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

Step Response

Time (seconds)

Am

plit

ude

0 2 4 6 80

0.5

1

1.5

2Step Response

Time (seconds)

Am

plit

ude

Impulsni odziv sistema Važi za bilo koji dinamički sistem (tf, zpk, ss, ...)

H = tf([8 18 32],[1 6 14 24]); Grafici impulseplot(H) impulseplot(H, 10) impulse(H) impulse(H,10) Numeričke vrednosti [y,t] = impulse(H) % --> plot(t,y) [y,t] = impulse(H,10) % --> plot(t,y)

0 1 2 3 4-1

0

1

2

3

4

5

6

7

8

Impulse Response

Time (seconds)

Am

plit

ude

0 2 4 6 8 10-2

0

2

4

6

8

Impulse Response

Time (seconds)

Am

plit

ude

Odziv usled početnih uslova

Sistem je dat isključivo u prostoru stanja (ss)

0( ) ( ) ( ), (0)

( ) ( ) ( ), ( ) 0

x t Ax t Bu t x x

y t Cx t Du t u t

A=[-1 1; 0 -2]; B=[1; 2]; C=[1 3]; D=0; H = ss(A,B,C,D); x0=[1 2];

Grafici initialplot(H,x0) initialplot(H,x0,12) initial(H,x0) initial(V,x0,Tfinal) Numeričke vrednosti [y,t,x] = initial(H,x0) % --> plot(t,y), % --> plot(t,x) [y,t,x] = initial(H,x0,Tfinal)

0 1 2 3 4 50

1

2

3

4

5

6

7

Response to Initial Conditions

Time (seconds)

Am

plit

ude

Odziv na proizvoljnu pobudu Tipična pobuda [u,t] = gensig(type,tau) [u,t] = gensig(type,tau,Tf,Ts) Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) lsimplot(sys1,sys2,...) lsimplot(sys,u,t) lsimplot(sys,u,t,x0) lsimplot(sys1,sys2,...,u,t,x0) lsim(sys,u,t) lsim(sys,u,t,x0) Primer.

[u,t] = gensig('square',4,10,0.1); H = [tf([2 5 1],[1 2 3]) ; tf([1 -1],[1 1 5])] lsim(H,u,t)

-2

0

2

4

To: O

ut(

1)

0 2 4 6 8 10-1

0

1T

o: O

ut(

2)

Linear Simulation Results

Time (seconds)

Am

plit

ude

VREME USPONA, VREME SMIRENJA, PRESKOK, ... Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) stepinfo(G) s = tf('s'); G = (s+5)/(s^2+5*s+25); step(G) stepinfo(G) ans = RiseTime: 0.1882 SettlingTime: 1.5011 SettlingMin: 0.1881 SettlingMax: 0.2597 Overshoot: 29.8352 Undershoot: 0 Peak: 0.2597 PeakTime: 0.4789

0 0.5 1 1.5 20

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Step Response

Time (seconds)

Am

plit

ude

FREKVENTNI ODZIV SISTEMA Bodeovi dijagrami

Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) bodeplot(sys) bode(sys) [mag,phase,wout]= bode(sys) sys = tf(1,[1 1]); bodeplot(sys) [mag,phase,w]= bode(sys)

-40

-30

-20

-10

0

Magnitu

de (

dB

)10

-210

-110

010

110

2-90

-45

0

Phase (

deg)

Bode Diagram

Frequency (rad/s)

Asimptotski Bodeovi dijagrami sys = tf([1 20],[1 2 3]); asymp(sys) % funkcija sa sajta matxworks-a

Bode Diagram

Frequency (rad/s)

-60

-50

-40

-30

-20

-10

0

10

20

Magnitu

de (

dB

)

0.01 0.1 1 10 100 1000-180

-150

-120

-90

-60

-30

0

Phase (

deg)

Frekventni odziv, Amplitudna i fazna karakteristika

Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) [H,wout]= freqresp(sys) sys = tf(1,[1 1 1]); w=linspace(0,5,200); [H,wout]= freqresp(sys,w); Hw = reshape(H,[],1); A=abs(Hw); fi=angle(Hw); fi=fi*360/2/pi; plot(wout,A), xlabel('w'), ylabel('A(w)') plot(wout,fi), xlabel('w'), ylabel('fi(w)')

0 1 2 3 4 50

0.2

0.4

0.6

0.8

1

1.2

1.4

w

A(w

)

0 1 2 3 4 5-180

-160

-140

-120

-100

-80

-60

-40

-20

0

w

fi(w

)

Propusni opseg sistema

Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) fb = bandwidth(sys) sys = tf(1,[1 1 1]); fb = 1.2712

0 1 2 3 4 50

0.2

0.4

0.6

0.8

1

1.2

1.4

w

A(w

)

Statičko pojačanje Važi za bilo koji dinamički sistem (tf, zpk, ss, ...)

k = dcgain(sys) sys = tf(1,[1 1 1]); step(sys) Kp = dcgain(sys) Kp = 1

0 2 4 6 8 10 120

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (seconds)

Am

plit

ude

Nikvistov dijagram Važi za bilo koji dinamički sistem (tf, zpk, ss, ...) h = nyquistplot(sys) nyquistplot(sys,{wmin,wmax}) nyquistplot(sys,w) nyquistplot(sys1,sys2,...,w) sys = tf([1 5],[1 2 4 0]); nyquistplot(sys);

-1 -0.8 -0.6 -0.4 -0.2 0-10

-8

-6

-4

-2

0

2

4

6

8

10

Nyquist Diagram

Real Axis

Imagin

ary

Axis

MARGINA POJAČANJA, FAZNA MARGINA, MARGINA KAŠNJENJA, PRESEČNE UČESTANOSTI margin(sys) allmargin(sys)

Primer.

H = tf([2 5 1],[1 2 3]);

margin(H) allmargin(H)

ans =

GainMargin: [1x0 double]

GMFrequency: [1x0 double]

PhaseMargin: -120.0000

PMFrequency: 0.5773

DelayMargin: [7.2552 0]

DMFrequency: [0.5773 Inf]

Stable: 1

-10

-5

0

5

10

Magnitu

de (

dB

)

10-2

10-1

100

101

102

-45

0

45

90

Phase (

deg)

Bode Diagram

Gm = Inf , Pm = -120 deg (at 0.577 rad/s)

Frequency (rad/s)

PID REGULATOR

C = pid(Kp,Ki,Kd,Tf)

C = pid(Kp)

C = pid(Kp,Ki)

C = pid(Kp,Ki,Kd)

C = pid(sys)

Primer.

Kp=1;

Ki=0.1;

Kd=3;

Tf=0.5;

G = pid(Kp,Ki,Kd,Tf);

step(C) bode(C)

0 5 10 15 201

2

3

4

5

6

7

Step Response

Time (seconds)

Am

plit

ude

0

20

40

60

Magnitu

de (

dB

)

10-3

10-2

10-1

100

101

102

-90

-45

0

45

90

Phase (

deg)

Bode Diagram

Frequency (rad/s)

C = pidstd(Kp) C = pidstd(Kp,Ti) C = pidstd(Kp,Ti,Td) C = pidstd(Kp,Ti,Td,N)

POREĐENJE ODZIVA VIŠE SISTEMA G = zpk([],[-5 -5 -10],100); C = pid(0,4.4); Gsp = feedback(G*C,1); step(G,Gsp);

C(s)

Y(s)

- G(s)

R(s)

0 1 2 3 4 5 6 70

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (seconds)

Am

plit

ude

G = zpk([],[-5 -5 -10],100); C1 = pid(0,4.4); T1 = feedback(G*C1,1); C2 = pid(2.9,7.1); T2 = feedback(G*C2,1); ltiview(G,T1,T2)

Step Response

Time (seconds)

Am

plit

ude

0 1 2 3 4 5 6 70

0.5

1

1.5

G

T1

T2

Impulse Response

Time (seconds)

Am

plit

ude

0 1 2 3 4 5 6 7 8-0.5

0

0.5

1

1.5

2

2.5

G

T1

T2

STABILNOST SISTEMA

pole polovi funkcije prenosa

zero nule funkcije prenosa

damp koeficijent prigušenja, prirodna učestanost

pzplot grafik nula i polova

rlocus geometrijsko mesto korena

allmargin margina pojačanja, margina faze, margina kašnjenja,

presečna učestanost

margin margina pojačanja, margina faze,

presečna učestanost

Primer. K=1; G = tf([.5 1.3],[1 1.2 1.6 0]); T = feedback(K*G,1);

pole(T) Polovi zatvorenog sistema P = -0.2305 + 1.3062i -0.2305 - 1.3062i -0.7389 + 0.0000i Nule zatvorenog sistema Z = -2.6000

-3 -2.5 -2 -1.5 -1 -0.5 0-1.5

-1

-0.5

0

0.5

1

1.5

Pole-Zero Map

Real Axis (seconds-1)

Imagin

ary

Axis

(seconds

-1)

Koeficijent prigušenja i prirodna učestanost zatvorenog sistema damp(T)

Eigenvalue Damping Frequency -7.39e-01 1.00e+00 7.39e-01 -2.31e-01 + 1.31e+00i 1.74e-01 1.33e+00 -2.31e-01 - 1.31e+00i 1.74e-01 1.33e+00 (Frequencies expressed in rad/seconds)

Geometrijsko mesto korena sistema u povratnoj sprezi rlocus(G)

Root Locus

Real Axis (seconds-1)

Imagin

ary

Axis

(seconds

-1)

-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1-15

-10

-5

0

5

10

15

System: G

Gain: 2.77

Pole: 0.000972 + 1.73i

Damping: -0.000562

Overshoot (%): 100

Frequency (rad/s): 1.73

kada K

Odskočni odziv zatvorenog sistema

step(T), title('Odskocni odziv za K = 1')

0 5 10 15 20 250

0.2

0.4

0.6

0.8

1

1.2

1.4

Odskocni odziv za K = 1

Time (seconds)

Am

plit

ude

Poređenje odskočnih odziva zatvorenog sistema za razne vrednosti pojačanja K

K1 = 0.5; T1 = feedback(G*K1,1); K2 = 1; T2 = feedback(G*K2,1); K3=2; T3 = feedback(G*K3,1); K4=3; T3 = feedback(G*K4,1); step(T1,'b',T2,'r',T3,'g', T4,':'12), title('Odskocni odziv'), legend('K = 0.5','K = 1','K =2', 'K =2.5' )

K=0.5, 1, 2 sistem stabilan K=4 sistem nestabilan

0 2 4 6 8 10 12-1

-0.5

0

0.5

1

1.5

2

2.5

3

Odskocni odziv

Time (seconds)

Am

plit

ude

K = 0.5

K = 1

K =2

K =4

Bodeovi dijagrami funkcije povratnog prenosa

bode(G), grid Bode Diagram

Frequency (rad/s)

-100

-50

0

50

System: G

Gain Margin (dB): 8.77

At frequency (rad/s): 1.72

Closed loop stable? YesMagnitu

de (

dB

)

10-1

100

101

102

-225

-180

-135

-90

System: G

Phase Margin (deg): 44.7

Delay Margin (sec): 0.752

At frequency (rad/s): 1.04

Closed loop stable? Yes

Phase (

deg)

Pretek pojačanja, pretek faze,

m = allmargin(G) GainMargins_dB = mag2db(m.GainMargin) m = GainMargin: [2.7440 Inf] GMFrequency: [1.7241 Inf] PhaseMargin: 44.6703 PMFrequency: 1.0362 DelayMargin: 0.7524 DMFrequency: 1.0362 Stable: 1 GainMargins_dB = 8.7677 Inf

Bode Diagram

Frequency (rad/s)

-100

-50

0

50

System: G

Gain Margin (dB): 8.77

At frequency (rad/s): 1.72

Closed loop stable? YesMagnitu

de (

dB

)

10-1

100

101

102

-225

-180

-135

-90

System: G

Phase Margin (deg): 44.7

Delay Margin (sec): 0.752

At frequency (rad/s): 1.04

Closed loop stable? Yes

Phase (

deg)

Grafička prezentacija margin_gui

Loop Gain K:

-K G

Feedback Loop:

0.5 s + 1.3

s3 + 1.2 s2 + 1.6 s

= G(s)-60

-40

-20

0

20

40

60

Open Loop GKM

agnitu

de (

dB

)

10-1

100

101

-225

-180

-135

-90

-45

Frequency (rad/sec)

Phase (

deg)

0 5 10 15 200

0.5

1

1.5

Closed-Loop Step Response

Time (sec)A

mplit

ude

0.1 10

Nikvistov dijagram

nyquist(sys) nyquist(sys,w) nyquist(sys1,sys2,...,sysN) nyquist(sys1,sys2,...,sysN,w) [re,im,w,sdre,sdim] = nyquist(sys)

Primer

nyquist(G)

Nyquist Diagram

Real Axis

Imagin

ary

Axis

-1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0-10

-8

-6

-4

-2

0

2

4

6

8

10

Poređenje Nikvistovih dijagrama za razne vrednosti pojačanja K

K1 = 0.5; G1=G*K1; K2 = 1; G2 = G*K2; K3=2; G3 = G*K3; K4=4; G4 = G*K4; nyquist(G1,'b',G2,'r',G3,'g', G4,':'), title(Nikvistov dijagram'), legend('K = 0.5','K = 1','K =2', 'K =2.5' )

-2.5 -2 -1.5 -1 -0.5 0

-8

-6

-4

-2

0

2

4

6

8

Nikvistov dijagram

Real Axis

Imagin

ary

Axis

K = 0.5

K = 1

K =2

K =4

REGULATORI pidtune, pidtool pid, pidstd String Type Continuous-Time Controller Formula

(parallel form)

'p' Proportional only Kp

'i' Integral only

'pi' Proportional and integral

'pd' Proportional and derivative

'pdf' Proportional and derivative with first-order filter on

derivative term

'pid' Proportional, integral, and derivative

'pidf' Proportional, integral, and derivative with first-

order filter on derivative term

Primer.

sys = zpk([],[-1 -1 -1],1); [C_pi,info] = pidtune(sys,'pi') T_pi = feedback(C_pi*sys, 1); step(sys,T_pi), legend('Bez PI','Sa PI') C_pi = 1 Kp + Ki * --- s with Kp = 1.14, Ki = 0.454 Continuous-time PI controller in parallel form. info = Stable: 1 CrossoverFrequency: 0.5205 PhaseMargin: 60.0000 0 2 4 6 8 10 12 14

0

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (seconds)

Am

plit

ude

Bez PI

Sa PI

[C_pid,info] = pidtune(sys,'pid'), T_pid = feedback(C_pid*sys, 1); [C_pidf,info] = pidtune(sys,'pidf'), T_pidf = feedback(C_pidf*sys, 1); step(sys,T_pi, T_pid, T_pidf), legend('Bez PI','Sa PI', 'Sa PID', 'Sa PIDF') C_pid = 1 Kp + Ki * --- + Kd * s s with Kp = 2.18, Ki = 0.921, Kd = 1.29 Continuous-time PID controller in parallel form. info = Stable: 1 CrossoverFrequency: 0.8250 PhaseMargin: 60.0000

0 2 4 6 8 10 12 140

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (seconds)

Am

plit

ude

Bez PI

Sa PI

Sa PID

Sa PIDF

C_pidf = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 2.17, Ki = 0.913, Kd = 1.28, Tf = 0.0106 Continuous-time PIDF controller in parallel form.

Konverzija regulatora u standardni oblik i obrnuto (pid, pidstd)

pidstd(C_pid)

ans = 1 1 Kp * (1 + ---- * --- + Td * s) Ti s with Kp = 2.18, Ti = 2.36, Td = 0.591

Continuous-time PID controller in standard form

pidstd(C_pidf)

ans = 1 1 s Kp * (1 + ---- * --- + Td * ---------------) Ti s (Td/N)*s+1 with Kp = 2.17, Ti = 2.37, Td = 0.588, N = 55.5 Continuous-time PIDF controller in standard form

PROJEKTNE ALATKE

ltiview – analiza lineatnih stacionarnih sistema

sisotool – podešavanje parametara kompenzatora

pidtool – projektovanje PID regulatora

ident – identifikacija sistema

ltiview – analiza lineatnih stacionarnih sistema

sisotool – podešavanje parametara kompenzatora

pidtool – projektovanje PID regulatora

ident – identifikacija sistema

IV. SIMULINK

Grafičko okruženje bazirano na bok dijagramima

Namenjeno za:

- modelovanje,

- simulaciju i

- projektovanje dinamičkih sistema

- automatsko generisanje programskog koda

Editor Simulink modela

Biblioteke blok dijagrama u Simulinku

Primer 1. Napraviti simulacioni model u Simulinku sistema koji je prikazan na sledećoj slici. Parametri sistema su: masa 1 2m , krutost opruge 1 3k i

koeficijent trenja 1 3b . Za početne vrednosti uzeti (0) 1x u odnosu na

ravnotežni položaj i (0) (0) 0x v . Pobudna funkcija je: a) sinusna amplitude 1 i kružne učestanosti 2rad/s, b) pravougaono periodična amplitude 2 i periode 5,

c)

0, 1

2.5, 1 2

0, 2

t

f t t

t

m1 k1 u(t)

x1

b1

Rešenje.

Matematički model sistema: 1 1 1 1 1 1m x b x k x u

Rešenje po najvećem izvodu: 1 11 1 1

1 1 1

u b kx x x

m m m

Zadavanje vrednosti parametara blokova u Comand Window:

m1=2;

k1=3;

b1=3;

vremesimulacije = 10; % trajanje simulacije

Simulacioni dijagram u editoru.

Za vreme trajanja simulacije staviti promenljivu vremesimulacije. Za početne uslove u integratorima staviti odgovarajuće početne uslove iz zadatka.

Simulacioni dijagram eksportovan preko Clopboard-a

Rezultat simulacije (Scope blok)

Primer 2. Napraviti simulacioni model sledećeg sistema ako je poznato:

1 2m , 1 3k , 1 3b , 2 1m , 2 1k . Za početne vrednosti izabrati 1(0) 1x i

2 (0) 2x u odnosu na ravnotežni položaj i 1 2(0) (0) 0x x . Pobuda je

0, 1

1.5, 1 2

0, 2

t

u t t

t

Matematički model sistema:

1 1 1 1 1 1 2

2 2 2 2 2 2 1 1 2 2

( ) ( )

( ), 0

m x b x k x x u t

m x b x k x k x x b

m2 m1 k2 k1 u(t)

x2 x1

b1 b2

Rešenje po najvećim izvodima:

1 1 11 1 1 2

1 1 1 1

2 2 1 12 2 2 1 2

2 2 2 2

2 1 1 22 1 2 2

2 2 2

, 0

b k k ux x x x

m m m m

b k k kx x x x x

m m m m

b k k kx x x b

m m m

Zadavanje vrednosti parametara blokova u Comand Window:

m1=2; k1=3; b1=3

m2=1; k2=1; b2=0

vremesimulacije = 10; % trajanje simulacije

Simulacioni dijagram. Za početne uslove u integratorima staviti odgovarajuće početne uslove iz zadatka.

( )u t

Rezultat simulacije (Scope blok)

x1(t) x2(t)

Primer 3. Odrediti linearni (linearizovani) model u prostoru stanja za sistem iz prethodnog primera.

Rešenje. Pobudne funkcije u modelu se zamene „In“ ulaznim blokovima. Takođe, Izlazi modela se zamene sa „Out“ blokovima. U našem primeru „Signal builder“ se zameni sa „In“ blokom, dok se „Scope“ i „Scope1“ zamene sa „Out1“ i „Out2“.

Odredjivanje radne (ravnotezne) tačke

[x,u,y] = trim('SimZad2Lin');

x = 0 0 0 0 u = 0 y = 0

0

SimZad2Lin je naziv modela sistema u Simulinku.

Odredjivanje linearnog modela u prostoru stanja

[A,B,C,D] = linmod('SimZad2Lin',x,u)

A = 0 0 1.0000 0 0 0 0 1.0000 -1.5000 1.5000 -1.5000 0 3.0000 -4.0000 0 0 B = 0 0 0.5000 0 C = 1 0 0 0 0 1 0 0 D = 0

0

Formiranje linearnog modela u prostoru stanja

S=ss(A,B,C,D)

S = a = x1 x2 x3 x4 x1 0 0 1 0 x2 0 0 0 1 x3 -1.5 1.5 -1 0 x4 3 -4 0 0

b = u1 x1 0 x2 0 x3 0.5 x4 0 c = x1 x2 x3 x4 y1 1 0 0 0 y2 0 1 0 0 d = u1 y1 0

y2 0

Funkcija prenosa sistema

G=tf(S)

G = From input to output... 0.5 s^2 + 2 1: -------------------------------------- s^4 + s^3 + 5.5 s^2 + 4 s + 1.5 1.5 2: ------------------------------------- s^4 + s^3 + 5.5 s^2 + 4 s + 1.5

Poređenje sa teorijskim rezultatom:

Sa simulacionog dijagrama ili iz:

1 1 11 1 1 2

1 1 1 1

2 2 1 12 2 2 1 2

2 2 2 2

2 1 1 22 1 2 2

2 2 2

, 0

b k k ux x x x

m m m m

b k k kx x x x x

m m m m

b k k kx x x b

m m m

usvajanjem četiri nove promenljive:

1 1 3 1 2 2 4 2, , ,z x z x z x z x

sledi:

1 3

2 4

1 1 13 3 1 2

1 1 1 1

2 1 1 24 4 1 2

2 2 2

z z

z z

b k k uz z z z

m m m m

b k k kz z z z

m m m

, 1

0 0

1

2

00

00

u

mB

1 1

2 2

y z

y z

1 0 0 0

0 1 0 0C

, 0

0D

1 1 1

1 1 1

1 1 2 2

2 2 2

0 0 1 0 0 0 1 00 0 1 0

0 0 0 1 0 0 0 10 0 0 1

3 3 20 3 301 02 2 2

2 23 4 0

3 4 0 00 01 1 1

k k bA

m m m

k k k b

m m m

Primer 4. Napraviti u Simulinku simulacioni diagram punjenja i pražnjenja rezervoara koji je prikazan na slici. Isticanje tečnosti definisano je sledećim

izrazom: ( ) ( )iq t k h t . Na bazi dobijenog modela kreirati model u obliku

podsistema. Rešenje. Model sistema

( )

( ) ( )u i

dh tA q t q t

dt

( ) ( )iq t k h t

uq

iq

A

h

Simulacioni dijagram

Formiranje simulacionog dijagrama podsistema

Pobudne funkcije u modelu se zamene „In“ ulaznim blokovima. Takođe, Izlazi modela se zamene sa „Out“ blokovima. Označe se ulaz sa Qu(t) i izlati sa h(t) i Qi(t) (videti sliku).

Iz menija se „Diagram“ bira se opcija „Subsistem & Model Reference“, a potom „Create Subsistem from Selection“. Imenuje se novodobijeni blok („Rezervoar“ u ovom primeru). Obrišu se „In“ i „Out“ blokovi i dobija se sledeći blok, koji se dalje može koristiti kao regularni model rezervoara. Ovaj blok ima jedan ulaz i dva izlaza

Primer 5. Kreirati simulacioni diagram punjenja i pražnjenja dva kaskadno vezana rezervoara prikazana na slici. Isticanje tečnosti definisano je sledećim

izrazima: 2 1( ) ( )q t k h t i

4 2 2( ) ( )q t k h t . Ulazni protok je pravougaono

periodična funkcija amplitude 2, širine 1 i periode 2. Poznato je 1 2A , 1 1k ,

2 1A i 2 2k . Početna stanja visina rezervoara su 1(0) 2h i 1(0) 1h .

Rešenje. Model sistema

11 1 2

( )( ) ( )

dh tA q t q t

dt

22 3 4

( )( ) ( )

dh tA q t q t

dt

3 2q q

2 1( ) ( )q t k h t

4 2 2( ) ( )q t k h t

3q

4q

2A

2h

1q

2q

1A

1h

Podsistem

Simulacioni dijagram. Za pošetne uslove u integratorima staviti promenljive h10 i h20.

Zadavanje vrednosti parametara blokova u Comand Window: A1=2; k1=1; h10=2; A2=1; k2=2; h20=1; vremesimulacije = 10; % trajanje simulacije

Rezultat simulacije

Recommended