Sunteți pe pagina 1din 24

CREAREA I MANIPULAREA MODELELOR DE

SISTEME DINAMICE N MATLAB

1 Modele ale sistemelor liniare invariante n timp (LTI) cu o singur intrare


i o singur ieire (SISO)

n mod uzual, n procesul de proiectare a unui sistem de conducere i n mod


particular a unui sistem de reglare automat, prima etap const n dezvoltarea unui
model matematic al sistemului care va fi condus (numit de regul proces sau
instalaie tehnologic). O instalaie tipic este motorul de c.c., proces care va fi folosit
n continuare ca exemplu.
Pentru ilustrarea modului n care MATLAB (n particular toolbox-ul Control
System) lucreaz cu modele de sisteme dinamice, vor fi dezvoltate ecuaiile
difereniale care descriu dinamica motorului de c.c. cuplat la o sarcin inerial.
Modelul obinut va fi implementat pe baza funciilor MATLAB.

1.1 Reprezentri MATLAB ale modelelor liniare


Funciile toolboxului Control System permit crearea urmtoarelor reprezentri:
Modele n spaiul strilor (SS):

dx
= Ax + Bu
dt
y = Cx + Du

unde A, B, C, i D sunt matrice de dimensiuni corespunztoare, x este vectorul de


stare, iar u i y sunt vectorii de intrare i de ieire.
Funcii de transfer (TF), n domeniul continuu sau discret, ca de exemplu:

s +1
H (s ) = 2
s +s+3

Reprezentri de tip zerouri-poli-amplificare (ZPK), n domeniul continuu sau


discret:

H (z ) = 5
(z + 1 + j )(z + 1 j )
(z + 2)(z + 3)

Modele n domeniul frecven (FRD), care constau n msurtori eantionate ale


rspunsului n frecven al unui sistem.

1
1.2 Exemplu de sistem cu o singur intrare i o singur ieire (single-input
single-output: SISO) motorul de c.c.
Unul dintre cele mai simple modele ale unui motor de curent continuu cu sarcin
are ca mrime de ieire viteza unghiular la arbore (t) i ca mrime de intrare
tensiunea aplicat app(t) la bornele motorului. Viteza unghiular poate fi controlat
prin modificarea tensiunii aplicate.

Pentru obinerea unui model simplu, va fi luat n considerare o dinamic


idealizat; de exemplu, cmpul magnetic va fi considerat constant. Rezistena
circuitului este notat cu R, iar inductana nfurrii motorului cu L. Utiliznd legile
de baz ale fizicii este posibil obinerea ecuaiilor difereniale care descriu
funcionarea acestui sistem electromecanic. Mai precis, trebuie utilizate relaiile
dintre potenialul electric i fora mecanic bazate pe legea induciei a lui Faraday i
legea lui Ampre.
Cuplul la arborele motorului este proporional cu curentul i produs de tensiunea
aplicat la borne:

(t ) = K mi(t )

unde K m este o constant a motorului care depinde de proprietile fizice ale


acestuia.
Tensiunea electromotoare indus emf este o tensiune proporional cu viteza
unghiular:

emf (t ) = K b (t )

unde K b este o constant care depinde de anumite proprieti fizice ale motorului.
Partea mecanic a ecuaiilor motorului poate fi modelat utiliznd legea lui
Newton, care afirm c produsul dintre momentul de inerie J i derivata vitezei
unghiulare este egal cu suma tuturor cuplurilor care acioneaz asupra arborelui
motor.

2
d
J = i = K f (t ) + K mi (t )
dt

unde K f este o aproximare liniar a frecrii vscoase.


n final, ecuaia pentru partea electric a motorului poate fi descris de:

di
app (t ) emf (t ) = L + Ri(t ) ,
dt

ecuaie care poate fi scris sub forma:

di
app (t ) = L + Ri(t ) + K b (t ) .
dt

Aceste ecuaii conduc la un set de dou ecuaii difereniale care descriu


comportamentul motorului, prima pentru curentul indus:

di R K 1
= i (t ) b (t ) + app (t ) ,
dt L L L

iar cea de-a doua pentru viteza unghiular:

d 1 1
= K f (t ) + K mi (t ) .
dt J J

Pe baza ecuaiilor deduse se poate scrie o reprezentare de stare, considernd


curentul i i viteza unghiular ca variabile de stare ale sistemului. Tensiunea
aplicat la borne app este intrarea sistemului, iar viteza unghiular este ieirea
acestuia.

R Kb
1
d i L L i + (t )
=
dt K m K f L app
0
J J
i
y (t ) = [0 1] + [0] app (t )

1.3 Dezvoltarea de modele SISO


Dup obinerea ecuaiilor difereniale care descriu procesul, n MATLAB se pot
construi modele SISO folosind comenzi foarte simple.
Modelul n spaiul strilor:
Se introduc valorile nominale ale parametrilor motorului de c.c.:

3
R= 2.0 % Ohms
L= 0.5 % Henrys
Km = .015 % torque constant
Kb = .015 % emf constant
Kf = 0.2 % Nms
J= 0.02 % kg.m^2

n acest moment se poate construi reprezentarea numeric n spaiul strilor cu


funcia ss:

A = [-R/L -Kb/L; Km/J -Kf/J]


B = [1/L; 0];
C = [0 1];
D = [0];
sys_dc = ss(A,B,C,D)

Aceste comenzi furnizeaz urmtoarele rezultate:

a =
x1 x2
x1 -4 -0.03
x2 0.75 -10

b =
u1

x1 2
x2 0

c =
x1 x2
y1 0 1

d =
u1
y1 0

Conversia ntre reprezentri:


Dup introducerea reprezentrii de stare a motorului de c.c., se poate realiza
conversia n alte reprezentri, cum ar fi reprezentarea bazat pe funcie de transfer
(TF) sau modelul zerouri-poli-amplificare (ZPK).
Reprezentarea prin funcie de transfer:

sys_tf = tf(sys_dc)

4
Transfer function:
1.5
------------------
s^2 + 14 s + 40.02

Reprezentarea zerouri-poli-amplificare: n mod similar, funcia MATLAB zpk


realizeaz conversia din spaiul strilor sau de la funcia de transfer la reprezentarea
zerouri-poli-amplificare.

sys_zpk = zpk(sys_dc)

Zero/pole/gain:
1.5
-------------------
(s+4.004) (s+9.996)

Observaie. Reprezentarea n spaiul strilor este cea mai potrivit pentru calcule
numerice, i prin urmare este cea recomandat pentru o ct mai mare precizie.

1.4 Implementarea funciilor de transfer i a modelelor zerouri-poli-amplificare


n cazul exemplului de mai sus, abordarea n spaiul strilor produce un set de
matrice care reprezint modelul sistemului. Dac este aleas o alt abordare, se pot
construi modele corespunztoare utiliznd funciile tf, zpk, ss, sau frd.

sys = tf(num,den) % Transfer function


sys = zpk(z,p,k) % Zero/pole/gain
sys = ss(a,b,c,d) % State-space
sys = frd(response,frequencies)% Frequency response
data

De exemplu, se poate crea o funcie de transfer prin specificarea numrtorului i


numitorului funciei:

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

Transfer function:
1.5
------------------
s^2 + 14 s + 40.02

Alternativ, dac se dorete crearea direct a funciei de transfer a motorului de


c.c., se pot utiliza comenzile:

s = tf('s');
sys_tf = 1.5/(s^2+14*s+40.02)
5
Aceste comenzi au ca rezultat obinerea funciei de transfer:

Transfer function:
1.5
--------------------
s^2 + 14 s + 40.02

Pentru construirea modelului zerouri-poli-amplificare, se poate folosi, de


exemplu, comanda:

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

care are drept rezultat:

Zero/pole/gain:
1.5
-------------------
(s+9.996) (s+4.004)

Pentru introducerea ntrzierilor (timpului mort) n modelele liniare continue


trebuie specificat un timp de ntrziere la intrare sau la ieire. De exemplu, pentru
adugarea unui timp mort pe intrare la motorul de c.c., se poate utiliza comanda:

sys_tfdelay = tf(1.5, [1 14 40.02],'inputdelay',0.05)

Aceast comand implementeaz funcia de transfer a motorului, dar adaug o


ntrziere de 0.05 secunde.

Transfer function:
1.5
exp(-0.05*s) * ------------------
s^2 + 14 s + 40.02

1.5 Implementarea sistemelor discrete n timp


Toolboxul Control System furnizeaz i suportul necesar pentru sisteme discrete
n timp. Acestea pot fi implementate n acelai mod ca i sistemele continue, singura
diferen fiind aceea c trebuie specificat perioada de eantionare pentru modelul
respectiv. De exemplu,

sys_disc = tf(1, [1 1], .01);

creeaz un model SISO de tip funcie de transfer:

Transfer function:
1

6
-----
z + 1
Sampling time: 0.01

Pentru introducerea ntrzierilor (timpului mort) n modelele discrete, trebuie


specificat un timp de ntrziere la intrare sau la ieire. Timpul mort trebuie s fie un
numr ntreg pozitiv care este multiplu al perioadei de eantionare. De exemplu,

sys_delay = tf(1, [1 1], 0.01,'outputdelay',5);

furnizeaz un sistem cu o ntrziere pe ieire de 0.05 secunde.

Transfer function:
1
z^(-5) * -----
z + 1
Sampling time: 0.01

1.6 Obiecte LTI


Pentru convenien, toolboxul Control System utilizeaz structuri de date numite
obiecte LTI, n scopul de a stoca datele referitoare la modelele de sisteme dinamice.
De exemplu, variabila sys_dc creat pentru motorul de c.c. este un obiect tip SS.
Exist, de asemenea, obiecte TF, ZPK, i FRD pentru funcii de transfer, modele
zerouri-poli-amplificare i modele n domeniul frecven. Cele patru tipuri de obiecte
LTI ncapsuleaz date de tip model i permit manipularea sistemelor liniare mai
degrab ca entiti de sine-stttoare, dect ca i colecii de vectori i/sau matrice.
Pentru a vizualiza coninutul unui obiect LTI, se poate folosi comanda get.
Liniile de cod urmtoare descriu coninutul obiectului sys_dc din exemplul cu
motorul de c.c.:

get(sys_dc)

a: [2x2 double]
b: [2x1 double]
c: [0 1]
d: 0
e: []
StateName: {2x1 cell}
InternalDelay: [0x1 double]
Ts: 0
InputDelay: 0
OutputDelay: 0
InputName: {''}
OutputName: {''}
InputGroup: [1x1 struct]
7
OutputGroup: [1x1 struct]
Name: ''
Notes: {}
UserData: []

Pentru manipularea datelor dintr-un obiect LTI se poate folosi comanda set;
pentru a vizualiza modul de utilizare se poate folosi comanda help sau Control
System Toolbox online reference.
O alt modalitate de a seta sau de a recupera proprietile unui model LTI const
n accesarea direct a acestuia folosind notaia bazat pe punct (.). De exemplu, dac
se dorete accesarea valorilor matricei A, n locul utilizrii comenzii get, se poate
tasta:

sys_dc.a

la prompterul MATLAB. Aceast comand returneaz valorile matricei A:

ans =

-4.0000 -0.0300
0.7500 -10.0000

n mod similar, dac se dorete modificarea valorilor matricei A, acest lucru se


poate face direct:

A_new = [-4.5 -0.05; 0.8 -12.0];


sys_dc.a = A_new;

Pentru mai multe informaii despre proprietile obiectelor LTI, se poate tasta
ltiprops la prompterul MATLAB.

8
2 Modele ale sistemelor liniare invariante n timp (LTI) multivariabile
(MIMO)

2.1 Exemplu de sistem multivariabil: Modelul de stare al unui avion de


transport cu reacie
Pentru implementarea n MATLAB a modelelor de sisteme MIMO (multi-input
multi-output) se pot utiliza aceleai funcii ca i n cazul sistemelor SISO. n
continuare este prezentat ca exemplu modelul unui avion cu reacie; pentru
nelegerea modului n care se obin ecuaiile care descriu modelul se poate consulta
un manual de specialitate.
Modelul avionului pentru un zbor de croazier la viteza MACH = 0.8 i la o
altitudine H = 40,000 ft. (picioare) este descris de urmtoarele linii de cod:

A = [ -0.0558 -0.9968 0.0802 0.0415


0.5980 -0.1150 -0.0318 0
-3.0500 0.3880 -0.4650 0
0 0.0805 1.0000 0];

B = [ 0.0073 0
-0.4750 0.0077
0.1530 0.1430
0 0];

C = [0 1 0 0
0 0 0 1];

D = [0 0
0 0];

Pentru specificarea acestui model de stare ca obiect LTI i pentru ataarea


denumirilor corespunztoare strilor, intrrilor i ieirilor, se pot utiliza urmtoarele
comenzi:

states = {'beta' 'yaw' 'roll' 'phi'};


inputs = {'rudder' 'aileron'};
outputs = {'yaw rate' 'bank angle'};

sys_mimo = ss(A,B,C,D,'statename',states,...
'inputname',inputs,...
'outputname',outputs);

Modelul LTI se poate vizualiza prin tastarea comenzii sys_mimo.

sys_mimo

9
a =
beta yaw roll phi
beta -0.0558 -0.9968 0.0802 0.0415
yaw 0.598 -0.115 -0.0318 0
roll -3.05 0.388 -0.465 0
phi 0 0.0805 1 0

b =
rudder aileron
beta 0.0073 0
yaw -0.475 0.0077
roll 0.153 0.143
phi 0 0

c =
beta yaw roll phi
yaw rate 0 1 0 0
bank angle 0 0 0 1

d =
rudder aileron
yaw rate 0 0
bank angle 0 0

Continuous-time model.

Modelul are dou intrri i dou ieiri. Unitile de msur sunt radiani pentru
beta (unghiul de alunecare - sideslip angle) i phi (bank angle), respectiv radiani/sec
pentru deriv (yaw rate) i ruliu (roll rate). Unghiurile de deflecie pentru crm
(rudder) i eleron (aileron) sunt n grade.
Ca i n cazul SISO, se poate folosi tf pentru obinerea funciei de transfer (care
este o matrice n cazul multivariabil).

tf(sys_mimo)

Transfer function from input "rudder" to output...


-0.475 s^3 - 0.2479 s^2 - 0.1187 s - 0.05633
yaw rate: ---------------------------------------------------
s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674

0.1148 s^2 - 0.2004 s - 1.373


bank angle: --------------------------------------------------
s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674

Transfer function from input "aileron" to output...

10
0.0077 s^3 - 0.0005372 s^2 + 0.008688 s + 0.004523
yaw rate: ---------------------------------------------------
s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674

0.1436 s^2 + 0.02737 s + 0.1104


bank angle: --------------------------------------------------
s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674

2.2 Implementarea funciilor de transfer pentru sisteme MIMO


Funciile (matricele) MIMO sunt tabele bi-dimensionale de funcii de transfer
elementare de tip SISO. Exist dou modaliti pentru specificarea modelelor MIMO
bazate pe funcii de transfer:
Concatenarea funciilor de transfer SISO
Utilizarea tf cu argumente de tip tablouri de celule (cell array)
Concatenarea funciilor de transfer SISO
Se consider urmtoarea funcie de transfer cu o singur intrare i dou ieiri:

s 1

H (s ) = s + 1
s+2
2
s + 4s + 5

Funcia H(s) poate fi specificat prin concatenarea componentelor sale SISO. De


exemplu:

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


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

sau, echivalent:

s = tf('s')
h11 = (s-1)/(s+1);
h21 = (s+2)/(s^2+4*s+5);

pot fi concatenate pentru a forma pe H(s).

H = [h11; h21]

Aceast sintax mimeaz concatenarea matriceal standard i prin urmare este


mai simpl i mai uor de interpretat pentru sistemele MIMO cu multe intrri i/sau
ieiri.
Utilizarea tf cu argumente de tip tablouri de celule (cell array)
Soluia alternativ este aceea de a defini funcii de transfer MIMO cu tf; pentru
aceasta sunt necesare dou tablouri de tip celul (notate de exemplu N i D) pentru
11
reprezentarea seturilor cu polinoamele de la numrtoare i numitoare. De exemplu,
pentru matricea de transfer raional H(s), cele dou tablouri de tip celul N i D
trebuie s conin reprezentarea vectorial pe linii a polinoamelor:

s 1 s +1
N (s ) = D (s ) = 2
s + 2 s + 4s + 5

Aceast matrice de transfer poate fi implementat prin tastarea liniilor:

N = {[1 -1];[1 2]}; % Cell array for N(s)


D = {[1 1];[1 4 5]}; % Cell array for D(s)
H = tf(N,D)

Comenzile de mai sus returneaz urmtorul rezultat:

Transfer function from input to output...


s - 1
#1: -----
s + 1

s + 2
#2: -------------
s^2 + 4 s + 5

Trebuie notat faptul c att N ct i D au aceleai dimensiuni ca i H. Pentru o


matrice de transfer MIMO oarecare H(s), intrrile de tip tablou de celule N{i,j} i
D{i,j} trebuie s fie reprezentri de tip vector linie ale numrtorului i numitorului
funciilor elementare Hij(s), care sunt componentele matricei de transfer H(s).

2.3 Accesarea perechilor intrare-ieire I/O n sistemele MIMO


Dup definirea unui sistem MIMO, perechile I/O se pot accesa i manipula prin
specificarea perechilor de intrare i de ieire ale sistemului. De exemplu, dac
sys_mimo este u sistem MIMO cu dou intrri i trei ieiri,

sys_mimo(3,1)

extrage subsistemul, prin maparea primei intrri la ieirea numrul trei. Indicele de
linie selecteaz ieirea i indicele de coloan selecteaz intrarea. n mod similar,

sys_mimo(3,1) = tf(1,[1 0])

redefinete funcia de transfer ntre prima intrare i cea de-a treia ieire ca un
integrator.

12
2.4 Caracteristici ale modelelor
Pentru investigarea caracteristicilor modelelor create se pot utiliza comenzile
toolbox-ului Control System. Printre caracteristicile modelelor ce pot fi vizualizate se
numr dimensiunea, poli, zerouri, amplificare etc., att pentru modelele continue ct
i discrete, SISO i MIMO. Sintaxa comenzilor este bazat pe obiectele LTI i este
prezentat n continuare.

Comand Descriere
size(model_name) Numrul de intrri i de ieiri
ndims(model_name) Dimensiunea
isct(model_name) Returneaz 1 dac sistemul este continuu
isdt(model_name) Returneaz 1 dac sistemul este discret
hasdelay(model_name) True dac sistemul are ntrzieri
pole(model_name) Polii sistemului
zero(model_name) Zerourile sistemului
dcgain(model_name) Amplificarea de c.c.
norm(model_name) Normele sistemului ( H 2 i L )
covar(model_name,W) Covariana rspunsului la zgomot alb
bandwidth(model_name) Limea de band a rspunsului n frecven
lti/order(model_name) Ordinul modelului LTI
pzmap(model_name) Calculeaz repartiia poli-zerouri a modelelor LTI
damp(model_name) Frecvena natural i amortizarea polilor sistemului
class(model_name) Creeaz un obiect sau returneaz o clas de obiecte
isa(model_name) Determin dac o intrare este obiectul unei clase date
isempty(model_name) Determin dac modelul LTI conine elemente
isproper(model_name) Determin dac modelul LTI este corect
issiso(model_name) Determin dac modelul LTI este SISO
lti/isstable
(model_name) Determin dac sistemul este stabil
reshape(model_name) Modific forma unui tablou LTI

13
3 Conexiuni de sisteme liniare. Conversii de modele. Reducerea ordinului
modelelor

3.1 Conexiuni de sisteme


n MATLAB se pot realiza o serie de operaii aritmetice cu modelele LTI, cum ar
fi adunarea, nmulirea sau concatenarea. Operaia de adunare corespunde unei
conexiuni paralele a sistemelor.

Funcia de transfer echivalent a unei conexiuni paralele (de sisteme SISO) se


obine folosind relaia:

Y (s ) = Y1 (s ) + Y2 (s ) + ... + Yn (s ) = [H1 (s ) + H 2 (s ) + ... + H n (s )]U (s )


Deoarece Y (s ) = H (s ) U (s ) , obinem:

n
H (s ) = [H i (s )]
i =1

n MATLAB, o linie de comand de tipul:

tf(1,[1 0]) + tf([1 1],[1 2]) % 1/s + (s+1)/(s+2)

are drept rezultat funcia de transfer:

Transfer function:
s^2 + 2 s + 2
-------------
s^2 + 2 s

Operaia de nmulire corespunde unei conexiuni serie ntre sisteme. Conexiunea


serie a mai multor sisteme liniare reprezentate prin funcii de transfer este ilustrat de
schema bloc din figura urmtoare.

14
Funcia de transfer echivalent a unei conexiuni serie (de sisteme SISO) se obine
astfel:

Y (s ) = [H n (s ) H n 1 (s )...H 3 (s ) H 2 (s ) H1 (s )] U (s ) = H (s )U (s )
n
H (s ) = [H i (s )]
i =l

n MATLAB, o comand de tipul:

2 * tf(1,[1 0])*tf([1 1],[1 2]) % 2*1/s*(s+1)/(s+2)

produce funcia de transfer:

Transfer function:
2 s + 2
---------
s^2 + 2 s

Dac operanzii sunt modele de tipuri diferite, modelul rezultat este determinat de
regulile de preceden. Modelele de stare au cea mai mare prioritate, n timp ce
funciile de transfer au cea mai mic prioritate. Prin urmare, suma (conexiunea
paralel) dintre un model de tip funcie de transfer i un model de de stare va fi
ntotdeauna un model de stare.
Alte operaii disponibile n toolbox-ul Control System sunt inversarea sistemelor,
transpunerea, pre-transpunerea (a se vedea biblioteca Arithmetic Operations). De
asemenea, se pot realiza operaiuni matriceale de extragere a subsistemelor
(Extracting and Modifying Subsystems).
Ca alternativ la operaiile de nmulire i adunare, se pot utiliza funciile
series i parallel.

sys1 + sys2 parallel(sys1,sys2) Systems in parallel


sys1 - sys2 parallel(sys1,-sys2) Systems in parallel
sys1 * sys2 series(sys2,sys1) Cascaded systems

15
Schema bloc a unei conexiuni cu reacie invers (paralel-opus) este urmtoarea:

Funcia de transfer echivalent poate fi obinut utiliznd relaiile urmtoare:

Y (s ) = H1 (S ) E (s ) = H1 (s )[U (s ) R(s )] = H1 (s )[U (s ) H 2 (s ) Y (s )]


Y (s ) + H1 (s ) H 2 (s ) Y (s ) = H1 (s )U (s )]
H1 (s )
Y (s ) = U (s ) = H (s ) U (s )
1 + H 1 ( s ) H 2 (s )
H1 (s )
H (s ) =
1 + H 1 ( s ) H 2 (s )

Observaie. Conexiunile multiple (serie, paralel, paralel-opus) se pot realiza


numai dac aa-numitele condiii de interconectare sunt ndeplinite. Relaiile de
calcul de la conexiunea serie i de la cea paralel sunt valabile i pentru sistemele
multivariabile (MIMO), lund n considerare regulile operaiilor cu matrice. Relaia
pentru sistemele cu reacie SISO obinut mai sus nu este ns valabil pentru
sistemele MIMO. n acest caz se lucreaz cu relaia matriceal:

H (s ) = [I + H 1 (s ) H 2 (s )] H 1 (s )
1

unde I este matricea identitate.

Pentru obinerea conexiunilor cu reacie invers (feedback) n MATLAB, se pot


utiliza funciile feedback i lft. De exemplu,

sys_f = feedback(tf(1,[1 0]), tf([1 1],[1 2])

calculeaz funcia de transfer n circuit nchis de la r la y pentru bucla de mai jos.


Rezultatul este:

Transfer function:
s + 2
-------------
s^2 + 3 s + 1

16
Figura urmtoare prezint schema bloc a conexiunii cu reacie invers:

Funcia lft poate fi folosit pentru construirea unor structuri cu reacie mai
complicate.

3.2 Conversii ntre sisteme continue i discrete


Comenzile c2d, d2c, i d2d realizeaz conversii de la un sistem continuu la
unul discret, de la discret la continuu i respectiv de la un sistem discret la altul
discret (prin re-eantionare):

sysd = c2d(sysc,Ts)%Discretization w/sample period Ts


sysc = d2c(sysd) % Equivalent continuous-time model
sysd1= d2d(sysd,Ts)% Resampling at the period Ts

Pentru realizarea operaiunilor de discretizare/interpolare sunt disponibile o serie


de metode, printre care extrapolatorul de ordin zero (zero-order hold) metoda
implicit, extrapolator de ordin unu (first-order hold), aproximarea Tustin, metoda
poli-zerouri etc. De exemplu:

sysd = c2d(sysc,Ts,'foh') % Uses first-order hold


sysc = d2c(sysd,'tustin') % Uses Tustin approximation

Discretizarea modelului motorului de c.c.


Modelul motorului prezentat n capitolul anterior poate fi discretizat prin folosirea
funciei c2d i prin alegerea unei perioade de eantionare corespunztoare. Alegerea
unei perioade de eantionare corecte implic mai muli factori, cum ar fi
performanele care trebuie obinute, cea mai mic constant de timp din proces,
viteza cu care va lucra controllerul (regulatorul) etc. Pentru acest exemplu, se poate
alege o perioad de eantionare de 0.01 secunde.

Ts=0.01;
sysd=c2d(sys_dc,Ts)

a =
x1 x2

17
x1 0.96079 -0.00027976
x2 0.006994 0.90484

b =
u1
x1 0.019605
x2 7.1595e-005

c =
x1 x2
y1 0 1

d =
u1
y1 0

Sampling time: 0.01


Discrete-time model.

Pentru a vizualiza amplificarea, polii i zerourile modelului discret, se poate


utiliza funcia zpk pentru a realiza conversia corespunztoare a modelului:

fd=zpk(sysd)

Zero/pole/gain:
7.1595e-005 (z+0.9544)
------------------------
(z-0.9608) (z-0.9049)

Sampling time: 0.01

Pentru a compara rspunsurile la intrare ale sistemelor sys_dc i sysd se


utilizeaz funcia:

step(sys_dc,sysd)

Rezultatul este prezentat n figura urmtoare. Se observ c rspunsurile la intrare


treapt ale sistemului continuu i sistemului discretizat prin metoda FOH (first order
hold) sunt aproape identice (ceea ce era de ateptat pentru modele fr ntrzieri
interne).

18
3.3 Reducerea ordinului modelelor
Reducerea ordinului modelelor SISO i MIMO se poate realiza cu comenzile
prezentate n tabelul urmtor:

Comenzi de reducere a
ordinului modelelor
hsvd Calculeaz valorile singulare Hankel pentru modele LTI
balred Aproximeaz modelele de ordin redus
minreal Realizarea minimal (anularea poli/zerouri)
balreal Calculeaz realizarea balansat intrare/ieire
modred Reducerea strilor n realizarea balansat I/O
sminreal Realizarea minimal structural

Pentru reducerea ordinului unui model, se pot realiza urmtoarele operaiuni:


Eliminarea strilor care sunt deconectate structural de intrri sau de ieiri prin
utilizarea funciei sminreal. Eliminarea strilor structural deconectate este un prim
pas util n reducerea ordinului modelelor, deoarece se realizeaz simplu i nu implic
calcule numerice.
Calculul unei aproximri de ordin redus a modelului cu funcia balred.
Eliminarea perechilor poli/zerouri identice prin folosirea funciei minreal.

Exemplu de reducere a ordinului unui model: Modelul unui gazificator


Gazificatorul este o instalaie care convertete materiale solide n gaze (The
MathWorks, ALSTOM Power UK). Modelul instalaiei este neliniar. Pentru
ncrcarea unui model liniarizat, se introduce n fereastra de comand MATLAB
linia:

19
load ltiexamples

Modelul este stocat n gasf. Dac se tiprete

size(gasf)

se obine:

State-space model with 4 outputs, 6 inputs, and 25


states.

nainte de a reduce modelul MIMO al instalaiei, se poate realiza reducerea unei


singure perechi I/O pentru a nelege procedura de reducere. De exemplu, dac se
dorete reducerea perechii formate din intrarea numrul 5 i ieirea numrul 3, se
utilizeaz comanda:

sys35 = gasf(3,5);

nainte de startarea procedurii de reducere, se localizeaz polii i zerourile cu


funcia MATLAB:

pzmap(sys35)

Pentru vizualizarea ct mai bun a polilor i zerourilor se poate realiza un zoom


cu comanda:

axis([-0.2 0.05 -0.2 0.2])

20
Se observ c modelul prezint perechi poli-zerouri apropiate, i prin urmare
acestea sunt candidate pentru realizarea reducerii ordinului modelului. Pentru a g[si
o reducere de ordin a modelului SISO, se parcurg urmtorii pai:
1. Se selecteaz un ordin corespunztor pentru sistemul redus prin examinarea
cantitii relative de energie per stare utiliznd o plotare de tip valoare singular
Hankel (HSV):

hsvd(sys35)

Pentru evidenierea ct mai bun a rezultatelor se seteaz o scar logaritmic prin


folosirea meniului ferestrei de tip figur. Rezult graficul urmtor:

Valorile singulare Hankel mici indic faptul c strile asociate contribuie ntr-o
mic msur la comportamentul intrare/ieire al sistemului. Graficul arat c
reducerea ultimelor 10 variabile de stare (asociate celor mai mici 10 valori singulare
Hankel) are un impact mic asupra erorii de aproximare.
2. Pentru eliminarea ultimelor 10 stri i crearea unei aproximri de ordinul 15, se
folosete comanda:

rsys35 = balred(sys35,15);

Se poate folosi size(rsys35) pentru a verifica faptul c sistemul redus conine


doar 15 variabile de stare.
3. Se compar rspunsurile n frecven (caracteristicile Bode) ale modelului
complet i ale modelului redus, utiliznd comanda bode:

bode(sys35,'b',rsys35,'r--')

Rezultatele sunt prezentate n figura de mai jos:

21
Aa cum se observ din suprapunerea caracteristicilor din figur, modelul redus
ofer o bun aproximare a modelului original.
Pentru reducerea n continuare a ordinului modelului se poate repeta procedura i
se pot elimina mai multe stri. Modelul poate fi redus simultan la ordinele 5, 10, 15
prin utilizarea comenzii

rsys35 = balred(sys35,[5 10 15]);

Caracteristicile Bode pot fi trasate cu comanda:

bode(sys35,'b',rsys35,'r--')

Se observ cum eroarea de aproximare crete pe msur ce ordinul modelului scade.


22
Modelele MIMO pot fi aproximate folosind aceeai procedur ca i n cazul
modelelor SISO:
1. Se selecteaz un ordin corespunztor pentru sistemul redus prin examinarea
cantitii relative de energie per stare utiliznd o plotare de tip valoare singular
Hankel (HSV):

hsvd(gasf)

Eliminarea celor 8 stri asociate celor mai mici valori singulare Hankel va avea
un impact mic asupra erorii de aproximare a modelului de ordin redus (orinul 17)
2. Pentru eliminarea ultimelor 7 stri i crearea unei aproximri de ordinul 17
pentru modelul MIMO, se folosete comanda:

rsys=balred(gasf,17);

Se poate folosi size(gasf) pentru a verifica faptul c sistemul redus conine doar
17 variabile de stare.
3. Pentru a facilita inspecia vizual a erorii de aproximare, se poate utiliza o
plotare a valorilor singulare (mai util dect caracteristicile Bode pentru modele
MIMO):

sigma(gasf,'b',gasf-rsys,'r')

Prin aceast comand se traseaz un grafic care compar sistemul original cu cel
redus din punct de vedere al valorilor singulare (eroarea de reducere).

23
Eroarea de reducere este mic n comparaie cu sistemul original, i prin urmare
modelul de ordin redus ofer o bun aproximare a modelului complet.

24

S-ar putea să vă placă și