You are on page 1of 75

Универзитет у Крагујевцу

ТЕХНИЧКИ ФАКУЛТЕТ ЧАЧАК

Предмет: Дигитални системи управљања

Семинарски рад

Коришћење MATLAB –а
у дигиталним системима управљања

Ментор: Студент:
др Радојка Крнета Крста Гавриловић, 3150/2001

У Чачку,
јануар 2007
САДРЖАЈ

1.Основе Matlab-а

1.1 Вектори
1.2 Функције
1.3 Графички приказ (Plotting)
1.4 Полиноми
1.5 Матрице
1.6 Штампање
1.7 Коришћење M-фајлова у Matlab-у
1.8 Помоћ у Matlab-у

2.Упуство за моделирање система

2.1 Железнички систем


2.2 Слободни дијаграм тела и Њутнови закони
2.3 Променљиве стања и излазне једначине
2.4 Matlab презентација

3.Упуство за дигитално управљање система

3.1 Представљање
3.2 Конверзија коришћењем c2dm
3.3 Стабилност и временски одзив
3.4 Дискретизовано ГМК

4.Упуство за ГМК (геометријско место корена)

4.1 Полови затворене спреге


4.2 Графички приказ ГМК коришћењем функције преноса
4.3 Бирање вредности параметра К из ГМК
4.4 Одзив затворене спреге

5.Упуство за простор стања

5.1 Једначине простора стања


5.2 Пројектовање контроле користећи померање пола
5.3 Представљање референтног улаза
5.4 Пројектовање обсервера
6.Упуство за PID регулаторе

6.1 Представљање
6.2 Регулатор
6.3 Карактеристике P, I, и D регулатора
6.4 Пример
6.4.1 Јединични одзив отворене спреге
6.4.2 Пропорционални регулатор
6.4.3 Пропорционални-диференцијални регулатор
6.4.4 Пропорционални-интегрални регулатор
6.4.5 Пропорционални-интегрални-диференцијални регулатор

7.Упуство за фреквенцијске методе анализе и синтезе

7.1Bode-ови дијаграми
7.1.1 Претек појачања и фазе
7.1.2 Фреквенција пропусног опсега
7.1.3 Одзив затворене спреге

8.MATLAB примери
1.Основе Matlab-а

1.1 Вектори
1.2 Функције
1.3 Графички приказ (Plotting)
1.4 Полиноми
1.5 Матрице
1.6 Штампање
1.7 Коришћење M-фајлова у Matlab-у
1.8 Помоћ у Matlab-у

Команде MATLAB-a коришћене за ову област су: plot, polyval, roots, conv, deconv,
polyadd,
Inv, eig, poly

Matlab је интерактивни програм за нумеричко рачунање и визуелно престављање


података
и најчешће га користе инжењери за анализу и дизајн. Постоје много различитих алата
који пружају основне функције Matlab-а у различитим областима примене.

1.1 Вектори

Креираћемо векторе тако што ћемо унети бројну вредност сваког вектора (одвајамо их
размаком између следећих заграда).

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

Matlab ће израчунати:

a=
1 2 3 4 5 6 9 8 7

Ако желимо да креирамо вектор са елементима од 0 до 20 са прираштајем сваког


следећег елемента за 2, урадићемо следеће:

t = 0:2:20

t=
0 2 4 6 8 10 12 14 16 18 20

Манипулација векторима је једноставна као и њихово креирање. Прво претпоставимо


да желимо да додамо 2 сваком елеменат вектора 'a'. Једначина ће тада да изгледати као:

b=a+2

b=
3 4 5 6 7 8 11 10 9
Ако желимо да саберемо два вектора, једначина сабирања два вектора имаће следећи
облик:

c=a+b

c=
4 6 8 10 12 14 20 18 16

Одузимање вектора постиже се стављањем знака минус ``-`` између два вектора.

1.2 Функције

Свака функција у Matlab-у представљена је као блок да изврши специфичан задатак. У


овом програмском пакету налазе се и неке стандардне функције нпр: sin, cos, log, exp,
sqrt, као и многе друге. Обично се константе као: pi, i и j користе у овом облику у
Matlab-у.
Пример:

sin(pi/4)

ans =

0.7071

Ако се одлучимо за неку другу функцију можемо откуцати help [function name] у
Matlab
командном прозору.

1.3 Графички приказ (Plotting)

У Matlab-у је једноставно креирати графички приказ неког резултата. Нпр.желимо да


прик ажемо графички синусни сигнал у функцији од времена.

t=0:0.25:7;
y = sin(t);
plot(t,y)
1.4 Полиноми

У Matlab-у полином је у облику вектора. Да би креирали полином просто унесемо сваки


коефициент полинома у вектор у опадајућем низу вредности. Нпр:

s 4  3s 3  15s 2  2 s  9

у Matlab уносимо векторе у следећем облику:

x = [1 3 -15 -2 9]

x=
1 3 -15 -2 9

Matlab интерпретира вектор дужине n+1 као полином n-тог реда. Ако полином нема
коефи
циент, мора се унети нула на одговарајуће место у вектору. Нпр:

s4 1

у Matlab-у ће бити представљен као:

y = [1 0 0 0 1]

Коришћењем функције polyval можемо пронаћи вредност полинома. Нпр: пронаћи


вредн
ост полинома за s=2,

z = polyval([1 0 0 0 1],2)

z=
17

Такође, можемо наћи корен полинома. Ово је корисно када имамо полиноме виших
редова
као нпр.

s 4  3s 3  15s 2  2 s  9
Проналажење корена полинома је лако, као и само уношење команде у Matlab;

roots([1 3 -15 -2 9])

ans =
-5.5745
2.5836
-0.7951
0.7860

Ако желимо да помножимо два полинома, резултат је множење њихових коефициената.


Matlab функција conv врши ову операцију:
x = [1 2];
y = [1 4 8];
z = conv(x,y)

z=
1 6 16 16

Ако желимо да поделимо два полинома користићемо команду deconv. Нпр. поделимо, z
са
y и добићемо резултат x.

[xx, R] = deconv(z,y)

xx =
1 2

R=
0 0 0 0

Као што се види, x је вектор полинома, а ако се y не садржи у z онда ће вектор остатка
бити различит од нуле.

1.5 Матрице

Уношење матрица у Matlab је исто као и уношење вектора, где је сваки ред ( врста )
матрице одвојен тачка - запетом.

B = [1 2 3 4;5 6 7 8;9 10 11 12]

B=
1 2 3 4
5 6 7 8
9 10 11 12

B=[1 2 3 4
5 6 7 8
9 10 11 12]

B=
1 2 3 4
5 6 7 8
9 10 11 12

Матрицама у Matlab-у може се манипулисати на много начина. Један од начина јесте и


транспонована матрица која се се означава апострофом у командној линији.

C = B'

C=
1 5 9
2 6 10
3 7 11
4 8 12

Треба знати да ако је С комплексна вредност, апостроф у командној линији даће


коњуговано-компексну транспоновану матрицу.
Множење матрица B и C преставићемо на следећем примеру:

D=B*C

D=
30 70 110
70 174 278
110 278 446

D =C*B

D=
107 122 137 152
122 140 158 176
137 158 179 200
152 176 200 224

Ако имамо квадратну матрицу, нпр. матрицу Е, можемо је, такође, помножити са самом
собом онолико пута колико нам је потребно, да бисмо добили жељену вредност степена
те матрице.

E^3

ans =
37 54
81 118

Ако хоћемо да сваки елеменат матрице подигнемо на трећи степен, морамо сваки
елеменат матрице подићи на трећи степен коришћењем команде ^.

E^3

ans =
1 8
27 64

Инверзну матрицу приказаћемо на следећем примеру:

X = inv(E)

X=
-2.0000 1.0000
1.5000 -0.5000

или хоћемо само карактеристичне вредности инверзне матрице:


eig(E)

ans =
-0.3723
5.3723

Расположива је и функција за налажење коефицијената карактеристичних полинома


матрице.Команда poly креира вектор који садржи коефициенте карактеристичног
полинома.

p = poly(E)

p=

1.0000 -5.0000 -2.0000

Треба да упамтимо да су карактеристичне вредности матрице исте као и корени њеног


карактеристичног полинома.

roots(p)

ans =
5.3723
-0.3723

1.6 Штампање

Да бисмо одштампали график, дијаграм или нешто друго у Matlab-у, довољно је да у


File
падајућем менију пронађемо команду Print и активирамо је.

1.7 Коришћење M-фајлова у Matlab-у

У Matlab-у потребно је после и приликом креирања m-fajla, да се тај фајл сачува под
неким именом у work директоријуму Matlab-а.

1.8 Помоћ у Matlab-у

Покретање помоћи у Matlab-у врши се командом help у командном прозору, или ако
нам је
непозната нека команда и желимо да знамо њену функцију тада се уноси следеће: help
commandname.
2.Упуство за моделирање система

2.1 Железнички систем


2.2 Слободни дијаграм тела и Њутнови закони
2.3 Променљиве стања и излазне једначине
2.4 Matlab пример

MATLAB се може искористити за престављање физичког система или модела.


Почнимо са описивањем физичког система путем диференцијалних једначина.

2.1 Железнички систем

У овом примеру узећемо играчку воза која се састоји од агрегата и шасије. Воз путује
само у једном правцу, а ми желимо да направимо контролу (управљање) да воз има
могућност благог почетка кретања и благог заустављања са константном брзином
вожње.

Масу агрегата и шасије обележићемо са M1 и M2, респективно. Обе су повезане


опругом која има коефициент крутости к. F преставља силу од агрегата, а коефициент
трења је μ.

2.2 Слободни дијаграм тела и Њутнови закони

Описани железнички систем се може преставити са следећим дијаграмом:

На основу Њутновог закона знамо да збир сила које делује на масу је једнак убрзању
масе У овом случају силе које делују на масу M1 су сила опруге, сила трења и силе у
агрегату. Силе на масу M2 су сила опруге и сила трења.У вертикалном правцу,
гравитациона сила не постоји, већ само нормална сила земљине теже. Једначине
кретања у хоризонталном правцу дате су у следећим релацијама:

M 1 x1  F  k ( x1  x 2 )  M 1 g x1
.. .

M 2 x 2  k ( x1  x 2 )  M 2 g x 2
.. .
2.3 Променљиве стања и излазне једначине

Овај скуп једначина система може се претворити у форму једначина промељивих


стања.

x1  v1
.

v1   k M 1 x1  gv1  k x2  F
.

M1 M1

x2  v2
.

x  gv 2
v2   k M 2  k
.

M2 2
Узећемо да је излаз система брзина агрегата (мотора). Излазна једначина ће гласити:

y  v1

1. Функција преноса

Да би нашли функцију преноса система, прво ћемо применити Лапласову


трансформацију
на једначине променљивих стања и излазну једначину:

sX 1 ( s )  V1 ( s )
sX 2 ( s )  V2 ( s ) Y ( s )  V1 ( s )
sV1 ( s )   k X ( s )  gV1 ( s )  k X (s)  1 F ( s)
M1 1 M2 2 M1
sV2 ( s )  k X (s)  k X ( s )  gV2 ( s )
M2 1 M2 2
Када нађемо функцију преноса , нула као почетни услов мора бити усвојена.
Функција преноса добиће следећи облик:

Y (s) M 2 s 2  M 2 gs  1

F ( s) M 1 M 2 s 2  (2 M 1 M 2 g ) s 2  ( M 1 k  M 1 M 2 ( g ) 2  M 2 k ) s  kg ( M 1  M 2 )

2. Простор стања

Други метод за решавање проблема је коришћење методе простора стања. Четири


матрице
A, B, C и D карактеришу систем и биће коришћене за решавање проблема. Форма
простора стања је погодна за манипулисање променљивима стања и крајња једначина
приказана је у
следећем облику:
 . 
 x1  
0 1 0 0   0 
 .   k   x1   
v1   M 1  g k 0     1 
M1   v1    M 1 F 
 . 
 x2   0 0 0 1   x2   0 
.   k     
v 2   M 2 0 k  g  v 2   0 
M2  
 
 x1 
v 
y  0 1 0 0   0F 
1

 x2 
 
v 2 

2.4 Matlab пример

У m-file унећемо једначине, али пре тога бројне вредности параметара, пошто Matlab не
препознаје симболичке променљиве.

M1 = 1 kg
M2 = 0.5 kg
k = 1 N/sec
F= 1 N
u = 0.002 sec/m
g = 9.8 m/s^2

уносимо следеће:

M1=1;
M2=0.5;
k=1;
F=1;
u=0.002;
g=9.8;

Сада имамо два избора и то: да користимо функцију преноса, или простор стања за
представљање система.
Ако одаберемо функцију преноса онда уносимо следеће команде:

num=[M2 M2*u*g 1];


den=[M1*M2 2*M1*M2*u*g M1*k+M1*M2*u*u*g*g+M2*k M1*k*u*g+M2*k*u*g];

Ако одаберемо простор стања, онда уносимо следеће команде:

A=[ 0 1 0 0;
-k/M1 -u*g k/M1 0;
0 0 0 1;
k/M2 0 -k/M2 -u*g];
B=[ 0;
1/M1;
0;
0];
C=[0 1 0 0];
D=[0];

3.Упуство за дигитално управљање система

3.1 Представљање
3.2 Конверзија коришћењем c2dm
3.3 Стабилност и временски одзив
3.4 Дискретизовано ГМК

Команде MATLAB-a коришћене за ову област су: c2dm, pzmap, zgrid, dstep, stairs, rlocus

3.1 Представљање

На следећој слици приказан је типичан континуални систем управљања са повратном


спрегом. У највећем броју случајева управљање континуалних система врши се уз
помоћ аналогних контролера.

Аналогни контролер може бити замењен и дигиталним контролером као што је


приказано
на следећој слици, који врши исти задатак као и контролер континуалних сигнала.
Основна разлика између дигиталних и аналогних контролера је у томе да дигитални
контролер оперише над дискретним сигналима, а аналогни контролер оперише над
континуалним сигналима. Различити типови сигнала могу се представити различитим
графицима који су дати на следећој слици.

3.2 Конверзија коришћењем c2dm

У Matlab-у функција c2dm конвертује дати континуални систем ( у функцију преноса


или
простор стања) у дискретни систем коришћењем операције нулте задршке.Основна
команда је c2dm и део је следећег:

[numDz,denDz] = c2dm (num,den,Ts,'zoh')


[F,G,H,J] = c2dm (A,B,C,D,Ts,'zoh')
Време узорковања (Ts sec/uzorku) би требало да буде мање од 1/(30*ω), где је ω
природна учестаност затворене спреге.

1.Функција преноса

Претпоставимо да имамо следећу функцију преноса континуалног карактера.

X (s) 1

F ( s ) Ms  bs  k
2

M = 1 kg
b = 10 N.s/m
k = 20 N/m
F(s) = 1

Природна учестаност затворене спреге је већа од 1 rad/sec, одабраћемо време


узорковања
(Ts) до 1/100 sec. Креирамо m-file и уносимо следеће команде:

M=1;
b=10;
k=20;

num=[1];
den=[M b k];

Ts=1/100;
[numDz,denDz]=c2dm(num,den,Ts,'zoh')

Покретање m-file у командном прозору даће следеће матрице: numDz и denDz.

numDz =

1.0e-04 *

0 0.4837 0.4678

denDz =

1.0000-1.9029 0.9048
Из ових матрица дискретна функција преноса се може написати у облику:

X ( z ) 0.0001(0.4837 z  0.4678)

F ( z) z 2  1.9029 z  0.9048

2.Простор стања

Претпоставимо да имамо следећи континуални модел у простору стања:


.
 x 
0 1   x  0 
.        F 
k
v   M  b  v   1 M 
M
 

y  1 0   0F 
 x
v 

Све вредности константе су исте као и предходне. Следећи m-file конвертује


континуални модел у простору стања у дискретни модел у простору стања.

M=1;
b=10;
k=20;

A=[0 1;
-k/M -b/M];

B=[ 0;
1/M];

C=[1 0];

D=[0];

Ts=1/100;
[F,G,H,J] = c2dm (A,B,C,D,Ts,'zoh')

Креирамо нови m-file и копирамо предходне команде. Покрећемо тај m-file у Matlab
командном прозору и добијамо следеће матрице:

F=

0.9990 0.0095
-0.1903 0.9039

G=

0.0000
0.0095

H=

1 0

J=

0
На снову ових матрица, дискретни модел у простору стања можемо написати у облику:

 x(k )  0.9990 0.0095  x(k  1) 0


F (k  1)

v ( k )      
   0.1903 0.9039 v(k  1)  0.0095

y (k  1)  1 0   0F (k  1)


 x (k  1)
v(k  1) 

3.3 Стабилност и временски одзив система

За континуални систем знамо одређено понашање система зависно од различитих


локација полова у s-равни. Нпр.систем је нестабилан када је било који пол лоциран
десно од имагинарне осе. За дискретни систем, можемо анализирати понашање система
у зависности од положаја различитих полова у z-равни. Карактеристике у z-равни су
повезане са карактеристикама у s-равни и дате су релацијом:

Z  e sT

T = Време узорковања (sec/узорак)


s = Локација у s-равни
z = Локација у z- равни

Приметимо да је у z- равни систем стабилан јер је близу имагинарне осе и унутар


јединичног круга. Систем је стабилан када су сви полови лоцирани унутар јединичног
круга, а нестабилан када су полови ван јединичног круга.
Посматрајмо следеће три једначине,

4. 6
 n 
TS
1.8
n 
Tr
ln M P /  2

1  ln M P /  
2

где су:

ζ = Фактор пригушења
ωn = Природна учестаност (rad/sec)
Ts = Време смирења
Tr = Време успона
Mp = Прескок

Имамо дискретну функцију преноса:

Y ( z) 1
 2
F ( z ) z  0.3 z  0.5

Креирамо нови m-file и унесемо следеће команде.

numDz=[1];
denDz=[1 -0.3 0.5];

pzmap(numDz,denDz)
axis([-1 1 -1 1])
zgrid

Покренемо m-file у командном прозору и добићемо график са линијама константног


фактора пригушења и природне учестаности.

Хајде да употребимо јединични одзив. Додаћемо следеће команде у m-file и вратимо их


у командни прозор.

[x] = dstep (numDz,denDz,51);


t = 0:0.05:2.5;
stairs (t,x)
Доказали смо да можемо користити локације полова да би анализирали временски
одзив
система.

3.4 Дискретизовано ГМК

ГМК је поступак графичког приказивања положаја корена у s-равни када се неки


параметар система мења у границама од нуле па до бесконачне вредности.
Карактеристична једначина система са повратном спрегом дата је следећом релацијом:

1  KG ( z ) Hzoh( z )  0

где је G(z) – дигитални компезатор, а Hzoh(z) претвара функцију преноса у z домен.


Механизми цртања локације коренова су исти као у z – равни и s – равни. У Matlab-у
функцију sgrid користимо да нађемо ГМК. За анализу дискретизованог ГМК користимо
функцију zgrid (zeta, ωn) која црта линије константног фактора пригушења и природне
учестаности.
Нека имамо следећу дискретну функцију преноса:

Y ( z) z  0.3
 2
F ( z ) z  1.6 z  0.7

и захтев за фактор пригушења већи од 0.6 и природне учестаности веће од 0.4


rad/узорку. Следеће команде цртају ГМК са фактором пригушења и природном
учестаности. Креирамо нови m-file и унесемо следеће команде, покретањем m-фајла
добићемо графички приказ ГМК.

numDz=[1 -0.3];
denDz=[1 -1.6 0.7];

rlocus (numDz,denDz)
axis ([-1 1 -1 1])
zeta=0.4;
Wn=0.3;
zgrid (zeta,Wn)

Из овог графика, закључујемо да је систем стабилан зато што су сви полови лоцирани
унутар јединичног круга. Природна учестаност је већа од 0.3, а фактор пригушења је
већи од 0.4. У овом примеру имали смо ГМК унутар жељене области где је фактор
појачања (K) одабран у жељеној области која даје потребан одзив пројектованог
система.

4.Упуство за ГМК (геометријско место корена)

4.1 Полови затворене спреге


4.2 Графички приказ ГМК
4.3 Бирање вредности параметра појачања К из ГМК
4.4 Одзив затворене спреге

Команде MATLAB-a коришћене за ову област су: cloop, rlocfind, rlocus, sgrid, step

4.1 Полови затворене спреге

ГМК функције преноса H(s) је представљање локација свих могућих полова затворене
спреге са пропорционалним појачањем К и повратном спрегом.

Карактеристична једначина система дата је следећом релацијом:


a ( s )  Kb( s)  0
a(s)
 b( s )  0
K

Полови затворене спреге система су вредности нула карактеристичне једначине:


1 + K H(s) = 0.
Ако би написали H(s) = b(s)/a(s) тада би једначина добила следећи облик:

a ( s )  Kb( s)  0
a(s)
 b( s )  0
K

Нека је n = ред од a(s) и m = ред од b(s).


Прво ћемо прихватити све позитивне вредности за К у границама k -> 0, полови
затворене
спреге система су a(s) = 0 или полови од H(s). У границама k -> ∞, полови затворене
спреге система су b(s) = 0 или нуле од H(s).

Без обзира колику ћемо узети вредност К, затворена спрега система мора увек имати
n полова, где је n број полова H(s). ГМК мора имати n грана, свака грана почиње од
пола
H(s) и иде у нулу H(s). У овом случају граница H(s) је s -> 0.
Број полова у основи је n-m, одузимањем броја полова од броја нула добијамо број
грана ГМК.

ГМК је уствари локација свих могућих полова затворене спреге. Из ГМК можемо
одабрати
жељено појачање код система затворене спреге. Ако су изабрани полови на десном
делу равни систем ће бити нестабилан. Полови који су ближи имагинарној оси имају
добар утицај на одзив затворене спреге, тада систем може бити дру гог па некад и првог
реда што зависи од локације доминантних полова.

4.2 Графички приказ ГМК коришћењем функције преноса

Ако имамо функцију преноса система:

Y (s) s7
H (s)  
U ( s ) s ( s  5)( s  15)( s  20)

Како ћемо направити одзив за систем користећи ГМК у MATLAB-у?


Направићемо MATLAB фајл и назваћемо га rl.m. Унећемо функцију преноса у
командни прозор да би приказали ГМК (командом rlocus).

num=[1 7];
den=conv(conv([1 0],[1 5]),conv([1 15],[1 20]));
rlocus(num,den)
axis([-22 3 -15 15])
4.3 Бирање вредности параметра појачања К из ГМК

Очигледно, неће сви полови затворене спреге задовољити наш критеријум цртања
ГМК. Да би знали који део ГМК је прихватљив користићемо команду sgrid (Zeta,Wn)
да прикажемо линије природне учестаности (то могу бити вектори ако желите да
видите опсег прихватљивих вредности). У нашем случају потребно је да је 07<Z
и1.8<ωn и треба их унети у командни прозор.

zeta=0.7;
Wn=1.8;
sgrid(zeta, Wn)
На графику две црне испрекидане линије под углом од 450 указују на локацију пола Z
= 0.7; између ових линија полови ће имати Z > 0.7 и изван линија Z < 0.7. Круг на
графику указује на локацију пола са природном учестаности ωn = 1.8, унутар круга ωn
< 1.8, а ван круга ωn > 1.8.

Сви полови су у левом делу равни на предходном графику, тако да је систем затворене
спреге стабилан.
У овом случају потребан је само пропорционални регулатор да помери полове на
графику:

[kd,poles] = rlocfind(num,den)

Ако желимо можемо да одаберемо тачке на следећем графику да би задовољили задати


критеријум.

Треба знати да ГМК може имати више од једне гране, када одаберемо пол, лако је наћи
где се налази други тј. остали полови. Са графика видимо да су сви полови одабрани
(сви у црвеној боји "+") на одговарајућој позицији.

4.4 Одзив затворене спреге

Ако желимо да нађемо одзив на јединичну функцију морамо знати функцију преноса
затворене спреге. У Matlab унећемо следеће:

[numCL, denCL] = cloop((kd)*num, den)

Два аргумента функције cloop су нумератор и денумератор система (бројилац и


именилац функције преноса) система са отвореном спрегом.
Проверити одзив јединичне функције система са затвореном спрегом.

step(numCL,denCL)
5.Упуство за простор стања

5.1 Једначине простора стања


5.2 Пројектовање регулатора коришћењем померања пола
5.3 Представљање референтног улаза
5.4 Пројектовање обсервера

Команде MATLAB-a коришћене за ову област су: acker, lsim, place, plot, rscale

5.1 Једначине простора стања

Постоји неколико различитих начина да се опише систем са линеарним


диференцијалним једначинама. Представа простора стања је дата следећим
једначинама:

dx
 A x  Bu
dt
y  C x  Du

где је, х вектор (може бити позиција, брзина у механичким системима), u је скаларна
величина представљена као улаз (може бити сила или обртни момент у механичком
систему), и y је скаларна величина представљена као излаз.
Матрице А(n х n), В(n х 1), С(1 х n) дају везу између вектора стања и улазних и
излазних величина.

Да бисмо приказали метод простора стања, као пример користићемо магнетну куглу.
Напајање кроз намотаје индукује магнетну силу која делује на куглу (направљену од
магнетног материјала) тако да кугла може да виси у ваздуху.
Једначина овог система гласи:

d 2h Ki 2
M  Mg 
dt 2 h
di
V  L  iR
dt
где је: h вертикална позиција кугле, i је јачина струје кроз електромагнет, V је
прикључни напон, М маса кугле, g је гравитација, L је индуктивност, R је отпорност и
К је коефициент магнетне силе на кугли.
Узећемо вредности за следеће величине: M = 0.05 Kg, K = 0.0001, L = 0.01 H, R = 1Ω, g
=9.
81 m/sec2. Систем је у равнотежи ако је h = K i2/Mg тј. када кугла стоји у ваздуху.

dx
 A x  Bu
dt
y  C x  Du

h 
  
Одавде: x  h  преставља променљиве стања за систем, u је улазни напон (Δ V), и y
 j 
је излаз (Δ h). Уносимо матрицу система у m-file.

A=[ 0 1 0
980 0 -2.8
0 0 -100];
B = [0
0
100];
C = [1 0 0];

Прва ставка, коју треба урадити са једначином стања јесте пронаћи полове система, то
су
вредности s које се добијају решшавањем det (sI - A) = 0.

poles = eig(A)
добићемо три пола:

poles =

31.3050
-31.3050
-100.0000

један од ових полова се налази у десној полуравни, што значи да је систем нестабилан.
Да бисмо проверили шта се дешава у нестабилном систему када је почетни услов
ненулти, додајемо следеће команде у наш m-file.

t = 0:0.01:2;
u = 0*t;
x0 = [0.005 0 0];
[y,x] = lsim(A,B,C,0,u,t,x0);
h = x(:,2); %Delta-h je izlaz
plot(t,h)

покрећемо m-file и добијамо следећи график:

5.2 Пројектовање контролера коришћењем померања пола

Направимо контролер за следећи систем. Шематски приказ повратне спреге је приказан


на
следећој слици:
Детерминанта матрице (sI-(A-BK)) представњљена је карактеристичним полиномом за
овај затворени систем. Матрице А и B*K су обе матрице реда 3х3 што значи да ће
постојати три пола за овај систем. Користићемо MATLAB функцију place да би нашли
матрицу појачања К, која ће дати жељене полове.

Пре него што приступимо овој методи морамо одлучити где желимо да се полови
налазе.
Подесићемо t < 0.5 sec са прескоком од 5%, онда можемо да ставимо два доминантна
пола у опсегу -10 +/- 10i. Трећи пол можемо поставити на -50 на почетку, а касније ту
вредност променит. У m-file додајемо следеће:

p1 = -10 + 10i;
p2 = -10 - 10i;
p3 = -50;

K = place(A,B,[p1 p2 p3]);

lsim(A-B*K,B,C,0,u,t,x0);

Ако би померили полове даље улево добили би бржи одзив.

p1 = -20 + 20i;
p2 = -20 - 20i;
p3 = -100;
K = place(A,B,[p1 p2 p3]);
lsim(A-B*K,B,C,0,u,t,x0);

Поређењем кеофициента К у оба случаја, закључак је, генерално, што се даље померају
полови, то ће бити већи коефициент.

Напомена!!
Ако желимо да ставимо два или више полова на исту позицију команда place неће
функционисати, тада можемо користити команду acker.
На пример:
K = acker(A,B,[p1 p2 p3])

5.3 Представљање референтног улаза

Приступимо регулацији система где на улазу имамо јединичну функцију.


У m-file користићемо команду lsim са следећим садржајем:

t = 0:0.01:2;
u = 0.001*ones(size(t));
lsim(A-B*K,B,C,0,u,t)
Фактор појачања се обележава као N (Nbar) и представљен је у следећој шеми:

Фактор појачања Nbar из MATLAB-a примењујемо функцијом rscale.

Nbar=rscale(A,B,C,0,K)
5.4 Пројектовање обсервера

Следи шематски приказ система:

Обсервер је у основи копија малог `постројења` који има исти улаз и скоро исту
диференцијалну једначину. Одговарајуће трајање мереног излаза y упоређује се са
излазом .

Ако желимо да динамика обсервера буде што бржа, него што је и сам систем, морамо
поставити полове најмање пет пута даље улево од доминантног пола у систему. Ако
бисмо
користили команду place морамо, да поставимо три обсервер пола на различите
локације.

op1 = -100;
op2 = -101;
op3 = -102;

L = place(A',C',[op1 op2 op3])';


Једначине у блок дијаграму изнад дате су за . Уобичајено је за систем написати
комбиновану једначину, затим за обсервер који користи оригинално стање x плус
грешка стања e = x - . Као повратну спрегу користимо u = -K .

At = [A - B*K B*K
zeros(size(A)) A - L*C];
Bt = [ B*Nbar
zeros(size(B))];
Ct = [ C zeros(size(C))];

Да би видели како изгледа одзив за ненулти почетни услов без референтног улаза
додајмо следеће линије у m-file. Типично је да обсервер почиње са нулом као почетним
условом
=0. Ово нам даје почетни услов за грешку која је једнака почетном услову стања.

lsim(At,Bt,Ct,0,zeros(size(t)),t,[x0 x0])

Одзиви свих стања налазе се на следећим графицима.

Следећи график је увећан због неких детаља.


-Плава линија преставља одзив на позицију кугле , плава тачкаста линија је
процењено
стање .
-Зелена линија преставља одзив на брзину кугле , зелена тачкаста линија је
процењено
стање .
-Црвена линија преставља одзив струје ,црвена тачкаста линија је процњено стање
.

6.Упуство за PID регулаторе

6.1 Увод
6.2 Регулатор
6.3 Карактеристике P, I, и D регулатора
6.4 Пример
6.4.1 Јединични одзив отворене спреге
6.4.2 Пропорционални регулатор
6.4.3 Пропорционални-диференцијални регулатор
6.4.4 Пропорционални-интегрални регулатор
6.4.5 Пропорционални-интегрални-диференцијални регулатор

Команде MATLAB-a коришћене за ову област су: step cloop

6.1 Увод

Овде ћемо вам приказати карактеристике пропорционалног ( P ), интегралног ( I ) и


диференцијалног (D) регулатора и како да их искористимо да добијемо жељени одзив.
Посматрајмо систем са повратном спрегом:
С-регулатор, D-уређај.

6.2 Регулатор

Функција преноса PID регулатора може се написати на следећи начин:

KI Kd s2  K ps  Kr
Kp   Kd s 
s s
Kp = Пропорционално појачање
KI = Интегрално појачање
Kd = Диференцијално појачање

Хајде да погледамо како PID регулатор ради у систему са затвореном спрегом.


Величина (e) преставља сигнал грешке, разлика измећу жељеног улаза (R) и тренутнот
излаза (Y).
Сигнал грешке (e) ће бити послат PID регулатору и он ће израчунати диференцијални и
интегрални сигнал грешке.
u  K p e  K I  edt  K d
de
dt

Сигнал (u) ће бити послат урећају и нови излаз (Y) ће бити израчунат. Излаз (Y) биће
послат сензору да нађе нову грешку сигнала (e). Регулатор узима нови сигнал грешке и
рачуна диференцијал и нтеграл за тај нови сигнал грешке.

6.3 Карактеристике P, I, и D регулатора

Пропорционални регулатор (Kp) има ефекат скраћења времена успона, али неће никад
елиминисати грешку стационарног стања. Интегрални регулатор (K I) има ефекат
елиминисања грешке стационарног стања. Диференцијални регулатор (Kd) имаће
ефекат пораста стабилности система и редукцију прескока.
Ефекти сваког дејства регулатора Kp, Kd, и Ki на систем са затвореном спрегом
изведени су у следећој табели.

Грешка
Одзив Време успона Прескок Време смирења стационарног
стања
Kp умањено увећано мале промене увећано
Kd умањено увећано увећано уклоњено

KI мале промене умањено умањено мале промене

Потребно је да знамо да ове корелације нису у потпуности исправне, зато што Kp, Kd, и
Ki
су зависне једна од друге. У ствари, промена једног од ових параметара може
променити, ефекат друге две.

6.4 Пример

Нека имамо тело (опругу) и треба да решимо проблем пригушења.

Једначина модела стања дата је следећом релацијом:

M x  x  kx  F
.. .

Лапласова једначина једначине модела стања дата је следећом релацијом:

Ms 2 X ( s )  bsX ( s )  kX ( s )  F ( s )

Функција преноса између излаза X(s) и улаза F(s) постаје:

X (s) 1

F ( s ) Ms  bs  k
2

где је:
M = 1kg
b = 10 N.s/m
k = 20 N/m
F(s) = 1

Укључимо ове вредности у функцију преноса и добићемо:

X (s) 1
 2
F ( s ) s  10 s  20

Овај проблем нам показује како свака од Kp, Ki и Kd има допринос за:
- брзо време пораста
- минимални прескок
- елиминисање грешке стационарног стања

6.4.1 Јединични одзив отворене спреге

Хајде прво да креирамо m-file и унесемо следеће:

num=1;
den=[1 10 20];
step(num,den)
Покретањем m-file у Matlab командном прозору добићемо следећи график:

Хајде да креирамо регулатор који ће да редукује време успона, време смирења и да


елиминише грешку стационарног стања.

6.4.2 Пропорционални регулатор

За функцију преноса затворене спреге предходног система пропорционални регулатор


је:

X (s) Kp
 2
F ( s ) s  10 s  (20  K p )

Пропорционално појачање Kp=300 и мења m-file у следеће:

Kp=300;
num=[Kp];
den=[1 10 20+Kp];

t=0:0.01:2;
step(num,den,t)

Покретањем m-file у Matlab командном прозору добијамо следећи график:


Напомена: Matlab функција cloop може се употребити за добијање функције преноса
затворене спреге директно из функције преноса отворене спреге. Следећи m-file
користи команду cloop да би се добио график сличан предходном.

num=1;
den=[1 10 20];
Kp=300;

[numCL,denCL]=cloop(Kp*num,den);
t=0:0.01:2;
step(numCL, denCL,t)

6.4.3 Пропорционални-диференцијални регулатор

Функција преноса повратне спреге датог система PD регулатора је:

X (s) Kd s  K p
 2
F ( s ) s  (10  K d ) s  (20  K p )

пустимо да Kp буде једнако 300. Унесимо следеће командеу m-file и покренимо га у


Matlab командном прозору.

Kp=300;
Kd=10;
num=[Kd Kp];
den=[1 10+Kd 20+Kp];

t=0:0.01:2;
step(num,den,t)
Овај график нам даје информацију о пропорционалном регулатору који редукује време
смирења као и прескок и има мали ефекат на време успона и грешку стационарног
стања.

6.4.4 Пропорционални-интегрални регулатор

Функција преноса за систем са повратном спрегом PI регулатора дата је у облику:

X (s) K ps  Kr
 3
F ( s ) s  10 s 2  (20  K p ) s  K r

смањимо Kp на 30 и Ki да буде једнако 70. Креирајмо m-file и унесимо следеће


команде:

Kp=30;
Ki=70;
num=[Kp Ki];
den=[1 10 20+Kp Ki];

t=0:0.01:2;
step(num,den,t)

Покренимо m-file у Matlab командном прозору и добићемо следећи график:


Редуковали смо пропорционално појачање Kp зато што интегрални регулатор редукује
време успона и повећава прескок као и пропорционални регулатор. Интегрални
регулатор елиминише грешку стационарног стања.

6.4.5 Пропорционални-интегрални-диференцијални регулатор

Функција преноса система са повратном спрегом са PID регулатором дата је у следећем


облику:

X (s) Kd s2  K ps  Kr

F ( s ) s 3  (10  K d ) s 2  (20  K p ) s  K r

Узећемо следеће вредности за Kp=350, Ki=300 и Kd=50, да бисмо добили жељени


одзив.
Унећемо следеће команде у m-file и покренимо га.

Kp=350;
Ki=300;
Kd=50;

num=[Kd Kp Ki];
den=[1 10+Kd 20+Kp Ki];

t=0:0.01:2;
step(num,den,t)
Сада имамо систем без прескока, брзо време успона и нема грешке стационарног стања.

7.Упуство за фреквенцијске методе анализе и синтезе

7.1 Bode-ови дијаграми


7.2 Претек појачања и фазе
7.3 Фреквенција пропусног опсега
7.4 Одзив затворене спреге

Команде MATLAB-a коришћене за ову област су: bode, margin, lsim, step, and cloop

Фреквенцијски одзив је престава одзива система на синусоидални улаз променљивих


фреквенција. Излаз линеарног система на синусоидални улаз је синусоида исте
фреквенције, али са различитом амплитудом и фазом. Фреквенцијски одзив је
дефинисан појачањем и фазном разликом између улазне и излазне синусоиде.

7.1 Bode-ови дијаграми

Bode-ов дијаграм је престава амплитуде и фазе G(jω),(где је ω вектор учестаности и


садржи само позитивне фреквенције). Да бисмо видели функцију преноса користићемо
команду Matlab-а bode. На пример:

bode(50,[1 9 30 40])

добијамо приказ Bode-овог дијаграма за функцију преноса:

50
s  9 s  30 s  40
3 2
Учестаност је на логаритамској скали, а фаза је дата у степенима, а појачање је дато у
децибелима.
Напомена: децибел је дефинисан као 20*log10 ( |G(j*w| ).

7.2 Претек појачања и претек фазе

Нека имамо следећи систем:

где је K константа појачања и G(s) је функција преноса између улаза и излаза. Претек
појачања је дефинисан као промена у појачању отворене спреге да би систем био
нестабилан. Претек појачања је разлика између фазне криве и -1800 у тачки где нам
учестаност даје појачање од 0dB. Претек појачања је разлика између вредности криве и
0dB у тачки где нам фреквенција даје фазу од -1800.
Добра ствар у претеку појачања јесте да нам не треба поновно цртање Bode-овг
дијаграма
у случају налажења новог претека појачања. На пример: ако унесемо команду
bode(50,[1 9 30 40]) добићемо следећи дијаграм:

Претек појачања се креће око 100 степени. Сада уносимо појачање 100. Уношењем
следе
ће команде bode(100*50,[1 9 3040]). Требало би да добијемо следећи график.
Као што се види график фазе је исти као и пре, график појачања је померен за 40dB на
горе.
Претек фазе је сада око -60 степени. Овај исти резултат ће бити постигнут ако се y-оса
на
графику појачања помери за 40dB на доле. У Matlab командном прозору унећемо
команду
margin да бисмо добили претек појачања.

margin(50,[1 9 30 40])

7.3 Фреквенција пропусног опсега

Ако имамо следећу функцију преноса затворене спреге система:


1
s  0.5s  1
2

хајде да погледамо фреквенцију пропусног опсега на Bode-овом дијаграму.

bode (1, [1 0.5 1 ])

Наша фреквенција пропусног опсега ће бити фреквенција која ће одговарати појачању


од -3dB. Ако погледамо у дијаграм наћићемо да је то приближно 1.4 rad/s. Можемо
прочитати
са дијаграма да је улазна учестаност 0.3 rad/sec.
За улазну учестаност од 3 rad/sec, фаза би била близу 180 0(скоро на крају фазе).
Користићемо команду lsim да би симулирали одзив система на син усоидални улаз.

Имајмо на уму да желимо да прикажемо одзив у стационарном стању.

w= 0.3;
num = 1;
den = [1 0.5 1 ];
t=0:0.1:100;
u = sin(w*t);
[y,x] = lsim(num,den,u,t);
plot(t,y,t,u)
axis([50,100,-2,2])

Приметимо да је излаз (плава линија), а улаз (розе линија);


Ако би подесили већу учестаност на улазу система добићемо веома ``увијен`` одзив.

w = 3;
num = 1;
den = [1 0.5 1 ];
t=0:0.1:100;
u = sin(w*t);
[y,x] = lsim(num,den,u,t);
plot(t,y,t,u)
axis([90, 100, -1, 1])

7.4 Одзив затворене спреге

Хајде да креирамо регулатор за следећи систем:

Где је Gc(s) регулатор и G(s) је:

10
1.25s  1

Пројектовање мора пропратити следеће спецификације:

- нулту грешку стационарног стања.


- максимални прескок мора бити мањи од 40%.
- време смирења мора бити мање од 2 sec.

Постоје два начина за решавање проблема:први је графичко решавање, а други је


нумеричко. Са Matlab-ом креираћемо m-file са следећим командама:

num = 10;
den = [1.25,1];
bode(num, den)
Ту су неколико карактеристика система који се директно могу прочитати са Bode-ових
ди
јаграма. Пре свега можемо видети фреквентни опсег је око 10 rad/sec. Како је
фреквентни
опсег исти као и природна учестаност, време успона је 1.8/ω=1.8/10=1.8 sec.
Претек појачања система је приближно 95 степени. Ово одговара пригушењу од
5/100=0.95.
Последње што нас интересује јесте грешка стационарног стања која може да се
директно прочита са Bode-овог дијаграма. Константе (Kp, Kv, or Ka) су лоциране као
пресек асимтоте са линијом за ω=1. Знамо да је овај систем нултог реда и лако можемо
наћи пресек.
Грешка стационарног стања је 1/(1+Kp)=1/(1+10)=0.091. Ако је систем првог реда
уместо нултог реда, константа за грешку стационарног стања може се наћи на сличан
начин као на следећем графику:

Хајде да проверимо јединични одзив на графику. Ово се може урадити додавањем две
линије кода у Matlab командном прозору.

[numc,denc] = cloop(num,den,-1);
step(numc,denc)

Као што се види систем има време успона око 2 секунде и има грешку стационарног
стања око 9%. Сада је потребно одабрати регулатор који ће одговарати задатом
критеријуму. Одабраћемо PI регулатор који је дат функцијом преноса:

K * ( s  a)
GC ( s ) 
s

Прва ствар која нам треба јесте да нађемо фактор пригушења који одговара
процентуалном
прескоку од 40%.Укључивањем ове вредности у једначину налазимо да фактор
пригушења одговара прескоку приближно 0,28.
Претек фазе би требао бити приближно 30 степени. Морамо имати фреквентни
пропусни опсег већи или једнак 12, ако хоћемо да нам време смирења буде мање од
1.75 секунди који се подудара са жељеним карактеристикама.

Сада, када знамо наш жељени претек фазе и фреквентни пропусни опсег, можемо
почети са цртањем графика. Треба да знамо да тражимо Bode-ов дијаграм отворене
спреге, а фреквентни пропусни опсег ће одговарати приближном појачању од -7 dB.

Хајде да видимо како ће интегрални део PI регулатора утицати на одзив. Променићемо


m-file да изгледа на следећи начин:

num = [10];
den = [1.25, 1];
numPI = [1];
denPI = [1 0];
newnum = conv(num,numPI);
newden = conv(den,denPI);
bode(newnum, newden, logspace(0,2))
Наш претек фазе и фреквентни пропусни опсег су премали. Додаћемо појачање и фазу
са
нулом. Променићемо m-file са следећим командама.

num = [10];
den = [1.25, 1];
numPI = [1 1];
denPI = [1 0];
newnum = conv(num,numPI);
newden = conv(den,denPI);
bode(newnum, newden, logspace(0,2))

Наш претек фазе је већи од 60 степени и фреквентни пропусни опсег креће се


приближно 11 rad/s. Хајде да ставимо појачање од 5 и да видимо шта ће се десити.

num = [10];
den = [1.25, 1];
numPI = 5*[1 1];
denPI = [1 0];
newnum = conv(num,numPI);
newden = conv(den,denPI);
bode(newnum, newden, logspace(0,2))

Потребно је проверити наш јединични одзив и коначан резултат тако што ћемо додати
следеће командне линије у m-file:

[clnum,clden] =cloop(newnum,newden,-1);
step(clnum,clden)

Као што се види одзив је бољи, али у пракси некад нећемо моћи подешавати појачање и
позицију полова, да бисмо добили жељене параметре.

-Прилог-
Кратак опис неких команди у MATLAB – у које су коришћене у предходним
упуствима.
Напомена: Mаtlab стандардне команде су обележене у црвеној боји, а нестандардне у
зе-
леној боји.
abs Абсолутна вредност
acker Рачуна K матрицу на место полова од A-BK, видети команду place
axis Подешава размеру графику, видети команду plot, figure
bode Црта Bode-ов дијаграм, видети logspace, margin, nyquist1
c2dm Континуални систем у дискретни
clf Брише фигуру
conv Конволуција , видети deconv
ctrb Контролабилна матрица, видети obsv
deconv Деконволуција и одвајање полинома, видети conv
det Налази детерминанту матрице
dimpulse Импулсни одзив линеарног система, видети dstep
dlsim Симулација дискретних линеарних система, видети lsim
dstep Јединични одзив дискретног линеарног система, видети stairs
eps Matlab нумеричка толеранција
feedback Повратна веза два система
figure Креира нову фигуру, видети subplot, axis
for Следећа петља
format Број формата ( експоненти )
function Креира функцију m-fајlа
grid Црта мрежу на графику
gtext Додаје део текста на графику, видети text
help Помоћ
hold Задржава тренутни график, видети figure
if Кондиционална извршна наредба
imag Враћа имагинарни део комплексног броја, видети real
impulse Импулсниодзив континуалног линеарног система, видети step, lsim, dlsim
input Улаз
inv Налази инверзну матрицу
Креира мрежу на консанти пригушења (zeta) и време смирења (sigma),
jgrid
видети sgrid, sigrid, zgrid
legend Легенда на графику
length Дужина вектора, видети size
lnyquist1 Креира Nyquist-ов график на логаритамској скали, видети nyquist1
log Природни логаритам, видети log10
loglog График који користи логаритамску скалу, видети semilogx/semilogy
logspace Враћа логаритамски вектор
lsim Симулира линеарни систем, видети step, impulse, dlsim.
margin Приказује претек фазе и претек појачања, видети bode
norm Норма вектора
nyquist1 Црта Nyquist-ов дијаграм
obsv Опсервабилна матрица, видети ctrb
ones Враћа вектор матрице за један, видети zeros
place Рачуна K матрицу на место полова од A-BK, видети команду acker
plot Црта график, видети figure, axis, subplot.
poly Враћа крактеристичне полиноме
polyadd Додаје два различита полинома
polyval Извршавање полинома
print Штампа тренутни график
pzmap Мапа пол-нуле
rank Налази број линеарно независних колона и редова у матрици.
real Враћа реални део комплексног броја, видети imag
rlocfind Налази вредност од k и полова одабраних тачака
rlocus Црта ГМК
roots Налази корен полинома
rscale Налази фактор увећања за систем са повратном спрегом
Генерише мрежу линија фактора пригушења (sigma), видети jgrid, sgrid,
sigrid
zgrid
size Даје димензију вектору матрице, видети length
sqrt Квадратни корен
ss Креира модел простора стања или га претвара у линеарни систем, видети tf
ss2tf State-space to transfer function representation, see also tf2ss
ss2zp State-space to pole-zero representation, see also zp2ss
stairs График јединичне одскочне функције за дискретан систем, видети dstep
step Црта јединични одзив, видети impulse, lsim, dlsim.
subplot Дели график у више прозора, видети plot, figure
text Додаје део текста тренутном графику, видети title, xlabel, ylabel, gtext
tf Креира функцију преноса, видети ss
tf2ss Преносна функција за престављање простора стања, видети ss2tf
tf2zp Преносна функција за престављање пола-нуле, видети zp2tf
title Додаје назив тренутном графику
xlabel/ylabel Додаје лабелу датом графику, текст,...
zeros Враћа вектор матрице од нуле
Генерише граничне линије фактора пригушења (zeta) и природне
zgrid
учестаности (Wn), видети sgrid, jgrid, sigrid
zp2ss Пол-нула за престављање простора стања, видети ss2zp
zp2tf Пол-нула за престављње функције преноса, видети tf2zp
8.MATLAB примери

У овом поглављу биће обрађени неки примери везани за материју која је укратко
описана у претходном поглављу.Сви примери урађени су у програмском пакету
MATLAB.

Пример 8.1
За функцију датој на следећој слици нацртати: g(t) ; g(-t) ; -g(t) ; g(t-1) ; g(2t) ;

Решење:
g = inline('2*t.*(t>=0 & t<=2) ','t');
t = (-3:0.01:4);
subplot(5,1,1); plot(t,g(t));

ylabel('g(t)');
axis([-0.5 6 -0.5 6]);
subplot(5,1,2); plot(t,-g(t));

ylabel('-g(t)');
axis([-0.5 6 -6 2]);
subplot(5,1,3); plot(t,g(t-1));

ylabel('g(t-1)');
axis([0 4 -0.5 6]);
subplot(5,1,4); plot(t,g(2*t));

ylabel('g(2t)');
axis([-0.5 6 -0.5 6]);
subplot(5,1,5); plot(t,g(-t));

xlabel('Vreme u (s)');
ylabel('g(-t)');
axis([-3 3 -0.5 5]);
График функције континуалног карактера

Да би смо добили график функције дискретног карактера за датe функцијe потребно je


да у програмском пакету MATLAB додамо команду ‘stem’ за сваку тражену функцију.

Решење:

g = inline('2*t.*(t>=0 & t<=2) ','t');


t = (-3:0.1:4);
subplot(3,1,1); plot(t,g(t));
stem (t,g(t))
ylabel('g(t)');
axis([-0.5 6 -0.5 6]);
subplot(3,1,2); plot(t,-g(t));
stem (t,-g(t))
ylabel('-g(t)');
axis([-0.5 6 -6 2]);
subplot(3,1,3); plot(t,g(t-1));
stem (t,g(t-1))
ylabel('g(t-1)');
axis([0 4 -0.5 6]);
subplot(5,1,4); plot(t,g(2*t));
stem (t,g(2*t))
ylabel('g(2t)');
axis([-0.5 6 -0.5 6]);
subplot(5,1,5); plot(t,g(-t));
stem (t,g(-t))
ylabel('g(-t)');
axis([-3 3 -0.5 5]);
xlabel('Vreme u (s)');

График функције дискретног карактера

Слика 8.1

Пример 8.2
Две функције дефинисане су на следећи начин:
,
Нацртати производ ове две функције у интерналу: -2<t<2
Решење:
x1=inline('(1.*(sin(20*pi*t)>=0))','t');
t=-2:0.01:2;
x12=inline('(-1.*(sin(20*pi*t)<0))','t');
subplot(3,1,1); plot(t,x12(t)+x1(t));
ylabel('x1(t)');
axis([-2 2 -1.3 1.3]);
x2=inline('(t.*(sin(2*pi*t)>=0))','t');
x22=inline('(-t.*(sin(2*pi*t)<0))','t');
subplot(3,1,2); plot(t,x22(t)+x2(t));
ylabel('x2(t)');
axis([-2 2 -2 2]);
subplot(3,1,3); plot(t,(x22(t)+x2(t)).*(x12(t)+x1(t)));
axis([-2 2 -2 2]);
ylabel('x1(t)*x2(t)');
xlabel('Vreme u (s)');

График функције континуалног карактера

За добијање дискретне функције у програмском пакету MATLAB уносимо следеће


решење:

Решење:
x1=inline('(1.*(sin(20*pi*t)>=0))','t');
t=-2:0.03:2;
x12=inline('(-1.*(sin(20*pi*t)<0))','t');
subplot(3,1,1); plot(t,x12(t)+x1(t));
stem (t,x12(t)+x1(t))
ylabel('x1(t)');
axis([-2 2 -1.3 1.3]);
x2=inline('(t.*(sin(2*pi*t)>=0))','t');
x22=inline('(-t.*(sin(2*pi*t)<0))','t');
subplot(3,1,2); plot(t,x22(t)+x2(t));
stem (t,x22(t)+x2(t))
ylabel('x2(t)');
axis([-2 2 -2 2]);
subplot(3,1,3); plot(t,(x22(t)+x2(t)).*(x12(t)+x1(t)));
stem (t,(x22(t)+x2(t)).*(x12(t)+x1(t)))
axis([-2 2 -2 2]);
ylabel('x1(t)*x2(t)');
xlabel('Vreme u (s)');

График функције дискретног карактера

Слика 8.2

Пример 8.3
Нацртати следеће континуалне синусоидалне сигнале:

а) sin 2πt ; b) sin (2πt-π/4) ; c) sin (2πt+π/2) ; d) Re[ej 4πt] ;

Решење: под а)
t=0:0.04:5;
x=sin(2*pi*t);
axis([-0.2 6 -1.5 1.5]);
subplot(211),plot(t,x),title('Kontinualni signal')
xlabel('(t)');
ylabel('sin(2pit)');
subplot(212),stem(t,x),title('Diskretni signal')
xlabel('(t)');
ylabel('sin(2pit)');

График функције sin 2πt континуалног и дискретног сигнала

Слика 8.3а

Решење: под b)
t=0:0.04:5;
x=sin(2*pi*t-pi/4);
axis([-0.2 6 -1.5 1.5]);
subplot(211),plot(t,x),title('Kontinualni signal')
xlabel('(t)');
ylabel('sin(2pit-pi/4)');
subplot(212),stem(t,x),title('Diskretni signal')
xlabel('(t)');
ylabel('sin(2pit-pi/4)');
График функције sin (2πt-π/4) континуалног и дискретног сигнала

Слика 8.3b

Решење: под c)
t=0:0.04:5;
x=sin(2*pi*t+pi/2);
axis([-0.2 6 -1.5 1.5]);
subplot(211),plot(t,x),title('Kontinualni signal')
xlabel('(t)');
ylabel('sin(2pit+pi/2)');
subplot(212),stem(t,x),title('Diskretni signal')
xlabel('(t)');
ylabel('sin(2pit+pi/2)');
График функције sin (2πt+π/2) континуалног и дискретног сигнала

Слика 8.3c

Решење: под d)
t=0:0.04:4;
z=exp(j*4*pi*t);
axis([-0.2 5 -1.5 1.5]);
subplot(211),plot(t,real(z)),title('Kontinualni signal')
xlabel('(t)');
ylabel('Re[e^j4pit]');
subplot(212),stem(t,real(z)),title('Diskretni signal')
xlabel('(t)');
ylabel('Re[e^j4pit]');
График функције Re[ej 4πt] континуалног и дискретног сигнала

Слика 8.3d

Пример 8.4
Скицирати следеће дискретне сигнале.Одредити период сваког сигнала.

а) cos (πn/4) ; b) sin (πn/3) ; c) cos (πn) ; d) sin(n) ;

Решење: под a)
n=0:0.4:8;
x=cos(pi*n/4);
axis([-0.2 6 -1.3 1.3])
stem(n,x);
xlabel('(n)');
ylabel('cos(pin/4)');
Слика 8.4a

Решење: под b)
n=0:0.4:8;
x=sin(pi*n/3);
axis([-0.2 6 -1.3 1.3])
stem(n,x);
xlabel('(n)');
ylabel('sin(pin/3)');
Слика 8.4b

Решење: под c)
n=0:0.1:8;
x=cos(pi*n);
axis([-0.2 6 -1.3 1.3])
stem(n,x);
xlabel('(n)');
ylabel('cos(pin)');

Слика 8.4c

Решење: под d)
n=0:0.2:8;
x=sin(n);
axis([-0.2 6 -1.3 1.3])
stem(n,x);
xlabel('(n)');
ylabel('sin(n)');
Слика 8.4d

Пример 8.5

Наћи парни и непарни део следећих функција:

а) g(t)=2t2-3t+6 ; b) g(t)=2t2-3t+6/1+t ; c) g(t)=2-t/1+t ;

Свака функција g(t) може се написати у облику g(t)= gp(t)+gn(t) , где је gp(t) парни део,
а
gn(t) непарни део функције.Из особина парности (gp(-t) = gp(t)) и непарности (gn(t)= -
gn(t)).

Следи: gp(t)=1/2 [g(t)+ g(-t)] и gn(t)=1/2 [g(t)-g(-t)]

Решење: под а)
syms t;
g=inline('2*t^2-3*t+6');
gp=1/2*(g(t)+g(-t));
gn=1/2*(g(t)-g(-t));
gp=simple(gp)
gn=simple(gn)

- Парни део функције g(t)=2t2-3t+6 је: gp= 2t2+6


- Непарни део функије g(t)=2t2-3t+6 је: gn=-3t
Решење: под b)
syms t;
g=inline('(2*t^2-3*t+6)/(t+1)');
gp=1/2*(g(t)+g(-t));
gn=1/2*(g(t)-g(-t));
gp=simple(gp)
gn=simple(gn)

- Парни део функције g(t)=2t2-3t+6/1+t је: gp= -(5t2+6)/(t2-1)


- Непарни део функије g(t)=2t2-3t+6/1+t је: gn= t*(2t2+9)/t2-1

Решење: под c)
syms t;
g=inline('(2-t)/(t+1)');
gp=1/2*(g(t)+g(-t));
gn=1/2*(g(t)-g(-t));
gp=simple(gp)
gn=simple(gn)

- Парни део функције g(t)= g(t)=2-t/1+t је: gp= -(2+t2)/t2-1


- Непарни део функије g(t)= g(t)=2-t/1+t је: gn= 3t/(t2-1)

Пример 8.6

Дата је експоненцијална функција e n  A e j n    B e 5 где су познати следећи


2
jn

парам-
етри:
-фрекфенција f  0.1 ; амплитуде А=5 и B=9; почетна фаза  3 .Ову функцију
преставити
графичким путем у MATLAB-у.

Решење:
n=0:150;
f=0.1;
omega=2*pi*f;
A=5;
B=9;
faza=pi/3;
e=A*exp(j*(omega*n+faza))+B*exp(2/5*j*(omega*n));
subplot(211),stem(n,real(e));
title('Realni deo'),xlabel('indeks (n)')
subplot(212),stem(n,imag(e));
title('Imaginarni deo'),xlabel('indeks (n)')
Слика 8.6

Пример 8.7

Дате су следеће Лапласове трансформације:

а) F s      
s 1 4s 2s 2  1
; b) F s  ; c) F s 
3s 2  4 s  3 (5s 3  2 s ) (( s  2)( s  3)) 2

Израчунати и графички преставити дате функције као x(t ) у интервалу од t  0 до


t  10 .

Решење: под а)
syms X s x
X = (s+1)/(3*s^2+4*s+3);
x = ilaplace(X);
ezplot(x,[0,10])
резултат:
x =
1/15*exp(-2/3*t)*5^(1/2)*sin(1/3*5^(1/2)*t)+1/3*exp(-
2/3*t)*cos(1/3*5^(1/2)*t)
Да би се нацртала функција x(t ) у интервалу од t  0 до t  10 , користи се следећа
команда:
ezplot(x,[0,10])

График функције x(t ) приказан је на слици 8.7а:

Слика 8.7a

Решење: под b)
syms X s x
X = 4*s/(5*s^3+2*s);
x = ilaplace(X);
ezplot(x,[0,10])

резултат:
x =
2/5*10^(1/2)*sin(1/5*10^(1/2)*t)

Да би се нацртала функција x(t ) у интервалу од t  0 до t  10 , користи се следећа


команда:
ezplot(x,[0,10])
График функције x(t ) приказан је на слици 8.7b:

Слика 8.7b

Решење: под c)
syms X s x
X = (2*s^2+1)/((s-2)*(s-3))^2;
x = ilaplace(X)
ezplot(x,[0,10])

резултат:
x =
9*t*exp(2*t)+26*exp(2*t)+19*t*exp(3*t)-
26*exp(3*t)

Да би се нацртала функција x(t ) у интервалу од t  0 до t  10 , користи се следећа


команда:
ezplot(x,[0,10])
График функције x(t ) приказан је на слици 8.7c:

Слика 8.7c

Пример 8.8

За посматрану функцију X (z ) одредити њену инверзну Z-трансформацију:

5 z 3  z 2  3z
X ( z) 
z 3  2z  1

Решење:
syms X x z
X = (5*z^3-z^2-3*z)/(z^3-2*z+1);
x = iztrans(X)

резултат:
x =
1+2*sum((1/_alpha)^n,_alpha = RootOf(_Z^2-_Z-1))

Да бисмо добили функцију x[n] за n  0 до n  10 уносимо следеће:


num = [5 -1 -3 0];
den = [1 0 -2 1];
x = filter(num,den,[1 zeros(1,9)])

и у командном прозору MATLAB-а добија се вектор:


5 -1 7 -7 15 -21 37 -57 95 -151

Пример 8.9

Израчунати конволуцију сигнала:

x1  5 2 - 7 6 - 3 3 - 4 6 7 - 2 - 9 4 3 1 1 - 3 1 - 9 6 2 3 4 - 1 - 3 - 8 1 - 4 2 7 - 4 - 5 6 3
x 2  2 - 3 1 - 5 4 2 - 5 3 - 2 - 6 1 6 - 4 - 3 1 2 5 4 - 2 - 7 - 3 1 - 3 1 - 5 6 - 4 2 3 6 - 4

Решење:
x1=[5 2 -7 6 -3 3 -4 6 7 -2 -9 4 3 11 -3 1 -9 6 2 3 4 -1 -3 -8 1 -4 2 7 -4 -5 6 3];
x2=[2 -3 1 -5 4 2 -5 3 -2 -6 1 6 -4 -3 1 2 5 4 -2 -7 -3 1 -3 1 -5 6 -4 2 3 6 -4];
y=conv(x1,x2);
Nx1=length(x1);
Nx2=length(x2);
Ny=Nx1+Nx2-1;
nx1=0:Nx1-1;
nx2=0:Nx2-1;
ny=0:Ny-1;
subplot(221),stem(nx1,x1),title('Signal x1'),xlabel('n')
axis([0 33 -10 10])
subplot(222),stem(nx2,x2),title('Signal x2'),xlabel('n')
axis([0 33 -10 10])
subplot(212),stem(ny,y),title('Konvolucija signala x1 i x2'),xlabel('n')
axis([0 65 -400 400])
Слика 8.9

Пример 8.10

Дат је дискретни сигнал x(n)  a n  u (n) , одредити:


а) првих 25 одбирака добијеног дискретног сигнала за вредност константе 0,4.
b) приказати распоред нула и полова у z равни.

Решење: под а)
a=-0.4;
N=25;
n=[0:N-1]';
x=a.^n;
stem(n,x), xlabel('n'), ylabel ('x(n)'), title('niz x(n)=-0.4^n');
Слика 8.10а

Решење: под b)
B=1;
A=[1 -a];
z=0;
p=-0.4;
zplane(z,p);
Слика 8.10b

Пример 8.11

Нека је дата функција преноса: H(z)=Q(z)/P(z).


gde su : Q(z) i P(z) polinomi po z-1

Q(z) = 0.11- 0.01z-1 + 0.08z-2 - 0.06-4 + 0.044z-2,

P(z)=2.5 - 1.16z-1 + 0.1z-2 - 0.13z-3 + 1.5z-6

а) Израчунати амплитудску и фазну карактеристику.


b) Пронаћи положај нула и полова система у z – равни.

Решење: под а)
[H,w]=freqz(Q,P,256);
figure (2)
subplot(211), plot(w,abs(H),'k'),...
xlabel('frekvencija (rad)'),...
title('Amplitudska karakteristika')
axis([0 pi 0 1]);
subplot(212), plot(w,unwrap(angle(H)),'k'),...
xlabel('frekfencija (rad)'),...
title('Fazna karakteristika')
axis([0 pi -6 4]);
Слика 8.11а

Решење: под b)
Q=[0.11,-0.01,0.08,-0.06,0.044];
P=[2.5,-1.16,0.1,-0.13,1.5];
figure (1)
zplane(Q,P)
Слика 8.11b

Пример 8.12

Ако имамо каскадну везу два елемента чији су импулсни одзиви h1(n) и h2(n) импулсни
одзив целог система је дат изразом: h(n)=h1(n)*h2(n)
Дату једначину проверити у MATLAB – у.

h1(n)={0.25,0.8,0.16} i h2(n)={1,0.36,0.58,0.02}
Решење:
h1=[0.25 0.8 0.16];
h2=[1 0.36 0.58 0.02];
impuls=[1 zeros(1,10)];
pom=conv(h1,impuls);
hrez1=conv(h2,pom);
hrez2=conv(h1,h2);
disp('Impulsni odziv dobijen direktnim izracunavanjem je:')
disp(hrez1)
disp(hrez2)
Nh=length(hrez1);
nh=0:Nh-1
stem(nh,hrez1), title('Impulsni odziv kaskadne veze dva linarna
sistema')
Слика 8.12
-Прилог-
Кратак опис неких команди у MATLAB – у које су коришћене у предходним
примерима.

label x,y,z – Свака оса неког графичког објекта у MATLAB – у садржи лабелу за
ту осу ( х,y,z).У лабелу се уноси кратак текстуални опис везано за ту осу.

Синтакса за означавање лабеле је нпр. xlabel(...,'Naziv ose',...)

plot(t,x) – Ова команда служи за приказивање неког графичког објекта


дефинисаног
у MATLAB – у.Ова команда црта све линије које су дефинисане по х и y, тј за сваку
вре-
дност х-а одговара једна вредност y-а.

Синтакса за означавање команде plot је нпр. plot(X1,Y1,...)

subplot – Ова команда претвара тренутни график у посебан оквир.Тако престављен


гр-
афик у себи има дефинисане осе. Приликом дефинисања ове команде могуће је
дефинис-
ати исцртавање неколико графика одједном.

Синтакса за означавање команде subplot је нпр. subplot(213),двојка означава да


ис-
цртава два графика; јединица означава да један график прикаже у једној врсти; тројка
оз-
начава коликографика приказује.

stem(n,x) – Ова команда приказује дискретне вредности неке задате


функције.Прика-
зивање графика креће од х-осе као основе, а завршетак је на y-оси где у крајњој тачки
y-
осе исцртава се маркер (кружић) као показатељ крајње вредности.

Синтакса за означавање команде је нпр.stem(X,Y)

syms t – Ова команда приказује вредности неке задате функције уз помоћ симболичке
математике у MATLAB – у.

You might also like