Sunteți pe pagina 1din 10

LUCRAREA Nr.

ESTIMAREA PARAMETRILOR
MODELELOR LINIARE GENERALE

Biblioteca Matlab System Identification pune la dispoziţia


utilizatorului o funcţie specială ce utilizează metoda minimizării erorii de
predicţie pentru estimarea parametrilor modelelor liniare. Această funcţie
are mnemonica pem (prediction-error minimization) şi poate fi utilizată
pentru estimarea parametrilor următoarelor tipuri de modele liniare:
- modelele proceselor continue în timp uzuale (întâlnite frecvent în
practica industrială);
- modele în spaţiul stărilor (ce utilizează reprezentarea prin ecuaţii
de stare);
- modele polinomiale de formă generală.

Vom prezenta modul de utilizare a acestor funcţii pentru fiecare caz


în parte.

6.1. Estimarea modelelor liniare pentru procese continue în timp


uzuale

Modelele proceselor continue în timp sunt date de funcţii de transfer


simple ce descriu dinamicile sistemului liniar în termenii unuia sau mai
multora din următoarele elemente:
- Amplificarea statică Kp;
- Una sau mai multe constante de timp Tpk. În cazul polilor
complecşi, constantele care descriu sistemul sunt: Tw – inversa
pulsaţiei naturale şi ξ - amortizarea sistemului;
- Zeroul procesului Tz;
- Timpul mort (întârzierea) al sistemului Td;
- Eventuali poli în origine (sistem cu caracter integrator).
Aceste modele ale proceselor sunt foarte utilizate pentru descrierea
dinamicilor sistemelor în multe aplicaţii de control din mediul industrial
şi nu numai. Dintre avantajele oferite de aceste modele putem sublinia
faptul că oferă o estimaţie pentru timpului mort şi că parametrii
(coeficienţii) acestor modele au o semnificaţie fizică. Modelele obţinute

72
cu ajutorul funcţiei pem sunt funcţii de transfer de ordinul I, II sau III şi
polii pot fi reali sau complecşi. Spre exemplu, următorul model descrie
un proces continuu de ordinul I:

Kp
G(s) = e −Td s
1 + sT p1
unde:
• K este amplificarea statică;
• Tp1 este constanta de timp a sistemului;
• Td este timpul mort (întârzierea intrare -ieşire).

În continuare este descris modul de estimare a parametrilor acestor


modele folosind funcţia pem.

Sintaxă: m = pem(data, Type)

Descriere: Funcţia pem este utilizată pentru estimarea parametrilor


corespunzători unor modelele de procese uzuale simple, continue în timp.
Aceste modele pot avea mai multe intrări dar numai o singură ieşire.
Parametrul data este un obiect de tip iddata ce conţine datele
intrare-ieşire ale sistemului ce trebuie identificat. Datele prelucrate de
această funcţie pot fi atât date din domeniul timp cât şi date din domeniul
frecvenţă.
Caracterul modelului este definit de argumentul Type. Acesta este un
acronim format din următoarele simboluri:
• P – este în mod obligatoriu prima literă a acronimului;
• 0, 1, 2 sau 3 – prin acest număr se notează numărul constantelor de
timp (polii) ai modelului. Posibilele integratoare (poli în origine)
nu sunt incluse în acest număr.
• D – este litera utilizată pentru a marca faptul că modelul conţine o
întârziere (delay).
• Z – este litera utilizată pentru a marca faptul că modelul are un
zerou.
• U – este litera utilizată pentru a marca faptul că modelul poate
avea poli complex conjugaţi. Dacă litera U nu este inclusă în
acronim, atunci toţi polii modelului sunt reali.

73
Exemplul 6.1
a) Type=’P1D’, corespunde unui model cu funcţia de transfer
Kp
G(s) = e −Td s
1 + sT p1
b) Type=’P0I’ corespunde unui model cu funcţia de transfer
Kp
G(s) =
s

c) Type=’P3UZ’ corespunde unui model cu funcţia de transfer


1 + Tz
G(s) = K p
(1 + 2ξTw s + (Tw s) 2 )(1 + T p 3 s)

Pentru sisteme cu mai multe intrări, Type este un vector de celule,


fiecare celulă descriind caracterul modelului corespunzător intrării
respective. De exemplu:

Type={’P1D’,’P0I’} corespunde unui model cu funcţia de transfer


K p (1) K p (2)
Y ( s) = e −T sU 1 ( s ) +
d
U 2 (s)
1 + sT p1 (1) s

Modelul obţinut este returnat sub forma unui obiect Matlab de tip
idproc (parametrul de ieşire m).

6.2 Estimarea modelelor în spaţiul stărilor

Modelele în spaţiul stărilor sunt modele ce utilizează variabilele de


stare pentru a descrie un sistem folosind un set de ecuaţii diferenţiale de
ordinul I (în cazul sistemelor continue) sau ecuaţii cu diferenţe (în cazul
sistemelor continue). Variabilele de stare x(t) pot fi reconstituite din
datele intrare-ieşire măsurate fără ca ele să fie de obicei măsurate.
Această structură de model este o bună alegere pentru o estimare rapidă
deoarece necesită doar doi parametri: n – ordinul modelului (sau
dimensiunea matricei A) şi nk – una sau mai multe întârzieri pe intrare.
Forma generală a modelului în spaţiul stărilor este următoarea:
74
⎧~x (t ) = A(θ) x(t ) + B (θ)u (t ) + Ke(t ), x(0) = x0

⎩ y (t ) = C (θ) x(t ) + D(θ)u (t ) + e(t )

unde
~ ⎧ x& (t ), pentru sisteme continue
x (t ) = ⎨
⎩ x(t + Ts ), pentru sisteme discrete

Estimarea unui model în spaţiul stărilor folosind funcţia pem se


realizează folosind una din următoarele sintaxe:

a) m = pem(data, n)

Parametrul data este un obiect de tip iddata ce conţine datele intrare-


ieşire ale sistemului ce trebuie identificat, iar parametrul n este număr
întreg mai mare decât zero. Utilizând această sintaxă se obţine un model
reprezentat prin ecuaţii de stare de ordinul n, model returnat sub forma
unui obiect de tipul idss (parametrul de ieşire m).

b) m = pem(data, 'nx' ,[n1,n2,...nN])

Folosind această sintaxă se poate alege dintre mai multe variante de


modele. Parametrii n1, n2, ..., nN reprezintă ordinele modelelor ce se
doresc a fi comparate.

c) m = pem(data, 'best')

Folosind această sintaxă, programul selectează cea mai bună variantă din
modelele cu ordine de la 1 la 10.

d) m = pem(data,order,'nk',[0 .. 0])

Această sintaxă este utilizată pentru estimarea matricei D. În mod implicit


această matrice nu este estimată. Prin setarea la zero a componentei de pe
poziţia k din vectorul nk, coloana k din matricea D (corespunzătoare
intrării k) va fi estimată. Pentru a fi estimată toată matricea D, toate
componentele lui nk trebuie setate la zero.

75
e) m = pem(data,order,'DisturbanceModel','none')

Pentru date de estimare din domeniul timp funcţia pem estimează şi


matricea K. Pentru a seta matricea K la zero se utilizează sintaxa de mai
sus. Pentru date de estimare din domeniul frecvenţă matricea K este
fixată în mod implicit la zero.

6.3 Estimarea modelelor polinomiale de formă generală

Un model polinomial general cu mai multe intrări şi o singură ieşire


este dat de relaţia următoare:

B1 (q ) B (q) C (q)
A(q) y (t ) = u1 (t − nk1 ) + ... + nu u nu (t − nk nu ) + e(t )
F1 (q ) Fnu (q ) D(q )
unde:
- q reprezintă operatorul de întârziere cu un pas;
- A, B, C, D şi F sunt matrice în care se specifică coeficienţii
polinoamelor modelului. În cazul sistemelor cu o singură intrare A,
B, C, D şi F sunt vectori linie. Primul element al vectorilor A, C, D şi
F este 1 în timp ce vectorul B conţine pe primele poziţii atâtea zerouri
câte indică nk. Spre exemplu, polinomul A are forma:
A(q ) = 1 + a1q −1 + a2 q −2 + ... + a na q − na

Sintaxa utilizată pentru estimarea unui astfel de model este următoarea:

m=pem(data, orders)

unde
- m este un obiect Matlab de tip idpoly;
- data este un obiect Matlab de tip iddata;
- orders este un vector linie ce conţine ordinele polinoamelor A, B,
C, D şi F precum şi întârzierea pe intrare şi este definit astfel:
orders=[na nb nc nd nf nk]. În cazul unui model cu mai multe
intrări nb, nf şi nk sunt vectori linie ce conţin ordinele şi
întârzierile pentru fiecare intrare.

76
Exemplul 6.2
Considerăm un sistem continuu cu funcţia de transfer:
2
G(s) = e −s
(0.2s + 1)(5s + 1)

Se cere:
a) să se creeze un model Matlab pentru acest sistem;
b) să se simuleze răspunsul sistemului pe un interval de 600 de
secunde la o intrare u(t) de tip semnal sumă de sinusoide şi un
zgomot aleator gaussian;
c) folosind datele intrare-ieşire de la punctul b) să se estimeze
parametrii modelului. Să se compare răspunsul la intrare treaptă
pentru modelul real şi modelul estimat şi să se valideze modelul
folosind analiza reziduurilor.

Soluţie:

ModelProces=idproc('P2D','Kp',2,'Tp1',0.2,'Tp2',5,'Td'
,1);
u=idinput(300,'sine');
um=iddata([],u,1);
ym=sim(ModelProces,um,'noise');
y=ym.OutputData;
subplot(211)
plot(y)
subplot(212)
plot(u)
z=iddata(y,u,1);
ModelEstimat=pem(z,'P2D')
step(ModelProces,ModelEstimat)
pause
resid(z,ModelEstimat)

Rezultatele rulării acestui program sunt următoarele:

Process model with transfer function


K
G(s) = ------------------ * exp(-Td*s)
(1+Tp1*s)(1+Tp2*s)

77
with K = 1.9621
Tp1 = 11.051
Tp2 = 0.39806
Td = 3
Semnal de iesire
4

-2

-4
0 50 100 150 200 250 300
timp
Semnal de intr ar e
1

0.5

-0.5

-1
0 50 100 150 200 250 300
timp

Raspunsur i la intrar e tr eapta

2
Iesir e reala

1.5

Iesire estimata

0.5

0
-20 -10 0 10 20 30 40 50 60 70
Time

78
Exemplul 6.3
Considerăm un sistem discret descris prin ecuaţiile de stare:

⎧ x1k +1 = −0.2 x1k + 2u k


⎪ 2
⎨ x k +1 = −0.3 x k + 4u k , Ts=0.05 – perioada de eşantionare;
2

⎪ y = x1 + x 2
⎩ k k +1 k +1

Se cere:

a) să se creeze un model Matlab pentru acest sistem;


b) să se simuleze răspunsul sistemului pe un interval de 600 de
secunde la o intrare u(t) de tip semnal pseudo-aleator binar şi un
zgomot aleator gaussian;
c) folosind datele intrare-ieşire de la punctul b) să se estimeze
parametrii modelului. Să se compare răspunsul la intrare treaptă
pentru modelul real şi modelul estimat şi să se valideze modelul
folosind analiza reziduurilor.

Soluţie:

A = [-0.2, 0; 0, -0.3]; B = [1;3]; C=[1, 1]; D = 0;


K=[0;0];
x0=[0;0];
ModelProces=idss(A,B,C,D,K,x0,0.1);
u=idinput(1000,'prbs');
um=iddata([],u,0.1 );
ym=sim(ModelProces,um,'noise');
y=ym.OutputData;
subplot(211)
plot(y)
subplot(212)
plot(u)
z=iddata(y,u,0.1);
ModelEstimat=pem(z,2)
step(ModelProces,ModelEstimat)
pause
resid(z,ModelEstimat)
pause
compare(z,ModelEstimat)

79
Rezultatele rulării programului sunt următoarele:
A =
x1 x2
x1 -0.29501 0.14637
x2 0.020948 -0.61375
B =
u1
x1 0.029452
x2 0.0014044
C =
x1 x2
y1 134.65 6.6424
D =
u1
y1 0
K =
y1
x1 -0.0004054
x2 0.0015345
x(0) =
x1 0
x2 0

TEME:
1. Să se ruleze exemplele prezentate în lucrare.

2. Considerăm un sistem continuu cu funcţia de transfer:


20
G(s) = e −2 s
( s + 5)( s + 2)

Se cere:
a) să se creeze un model Matlab pentru acest sistem;
b) să se simuleze răspunsul sistemului pe un interval de 600 de
secunde la o intrare u(t) de tip semnal sumă de sinusoide şi un
zgomot aleator gaussian;
c) folosind datele intrare-ieşire de la punctul b) să se estimeze
parametrii modelului. Să se compare răspunsul la intrare treaptă
pentru modelul real şi modelul estimat şi să se valideze modelul
folosind analiza reziduurilor.

80
3. Considerăm un sistem continuu descris prin ecuaţiile de stare:

⎧ x&1 (t ) = x1 (t ) + 2 x2 (t ) − x3 (t )
⎪⎪ x& 2 (t ) = x2 (t )

⎪ x&3 (t ) = x1 (t ) − 4 x2 (t ) + 3x3 (t ) + u (t )
⎪⎩ y (t ) = x1 (t ) − x2 (t ) + x3 (t )
Se cere:

a) să se creeze un model Matlab pentru acest sistem;


b) să se simuleze răspunsul sistemului pe un interval de 1000 de
secunde la o intrare u(t) de tip semnal pseudo-aleator binar şi un
zgomot aleator gaussian;
c) folosind datele intrare-ieşire de la punctul b) să se estimeze
parametrii modelului. Să se compare răspunsul la intrare treaptă
pentru modelul real şi modelul estimat şi să se valideze modelul
folosind analiza reziduurilor.

81

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