Upload
others
View
16
Download
1
Embed Size (px)
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