Platforma 2 - Discretiarea sistemelor continue 1. Sisteme de reglare continuale Sistemele automate moderne combină în bucla de reglare dispoitive pur numerice (calculatorul de proces, microcontrollerul) cu dispoitive continuale (care au mărimi de intrare şi de ieşire funcţii continuale, definite la orice moment de timp şi repreentate prin funcţii analitice f(t)). Un sistem de reglare se numeşte continual dacă toate dispoitivele componente ale sistemului de reglare sunt dispoitive cu funcţionare continuă în timp. Bucla de reglare convenţională este de forma: P(s) p(t) R(s) r(t) E(s) e(t) H R (s) U(s) u(t) H F (s) Y(s) y(t) Fig. 1. Schema generală a unui sistem de reglare convenţional Semnificaţiile semnalelor sunt: - r(t) repreintă semnalul de referinţă pe care mărimea de ieşire y(t) trebuie să-l urmărească - e(t) repreintă eroarea sistemului, e(t) = r(t) y(t) - u(t) repreintă semnalul de comandă furniat de regulator către partea fixă - y(t) este semnalul de ieşire din partea fixă sau mărimea care se regleaă - p(t) este semnalul perturbator care tinde să modifice valoarea mărimii de ieşire y(t) Dispoitivele componente sunt: - regulatorul repreentat prin funcţia de transfer H R (s); - partea fixă, repreentată prin funcţia de transfer H F (s) şi care este ansamblul element de execuţie+instalaţie tehnologică+traductor. Toate semnalele de timp care leagă dispoitivele de mai sus sunt semnale cu existenţă continuă în timp, definite deci la orice moment de timp, pe care le vom numi continuale (pentru a nu face confuie cu semnalele continue în sens matematic, semnalele continuale nefiind neapărat semnale continue în timp, putând avea discontinuităţi). Prin procesul de proiectare se găseşte în final o funcţie de transfer pentru regulator. Sistemul în buclă închisă de mai sus va avea performanţele dorite de proiectant, performanţe care sunt determinate prin simularea funcţionării sistemului de reglare de mai sus pe un anumit interval de timp în preenţa diferitelor semnale de test aplicate de obicei pe referinţă. Prin performanţe bune înţelegem un anumit comportament la semnalele de referinţă şi la semnalele perturbatoare. Un sistem de reglare trebuie, în general, să conducă la urmărirea cât mai precisă şi mai rapidă a mărimii de referinţă de către mărimea de ieşire precum şi la o cât mai bună rejectare a influenţelor mărimilor perturbatoare. 2. Sisteme de reglare hibride Evoluţia calculatoarelor numerice a permis introducerea acestora în sistemele de reglare automată. Un sistem numeric, care prelucreaă secvenţe de intrare numerice oferind la ieşire tot secvenţe numerice, are o serie de avantaje faţă de sistemele continuale. Putem să enumerăm câteva asemenea avantaje: - un semnal numeric este în mai mică măsură afectat de perturbaţii. Semnalele numerice sunt de obicei repreentate de două niveluri de informaţie distincte pe care, formal, le denumim biţi: 0 şi 1. Suportul fiic al acestor biţi este foarte diferit: niveluri de tensiune TTL ( 0 = 0 V, 1 = 5 V), magnetiarea sau nu a unor particule de material magnetic (dischete floppy, hard-disk),
încărcarea sau descărcarea unor condensatoare (memoria RAM, flash), reflectarea sau nu a unui fascicol laser (CD-ROM, DVD) sau emiterea sau nu a unui fascicol luminos (transmisia pe fibră optică). Indiferent de suportul fiic, informaţia este una de nivel ( low sau high ). În mod normal este mult mai greu de alterat un nivel pentru a-l face de nerecunoscut decât informaţia temorală conţinută de un semnal analogic. - un semnal numeric este mult mai uşor de stocat pe diferite suporturi. - un semnal numeric este mult mai uşor de prelucrat matematic cu ajutorul unui sistem de calcul. Atât analia unui semnal numeric cât şi sintea sa se fac mult mai uşor decât în caul unui semnal continuu. - un semnal numeric este mult mai uşor transmis la distanţă (cablu electric, fibră optică, unde electromagnetice (wireless)). - un semnal numeric este mult mai uşor repreentat grafic (pe display, plotter, imprimantă) Este evidentă caua pentru care se preferă astăi aproape în exclusivitate introducerea dispoitivelor numerice de conducere. Sistemul de reglare continual se va transforma în: R(s) r(t) E(s) e(t) C A N Sistem discret E() {e(kt e)} H R() ARN U() {u(kt e)} C N A U(s) u(t) P(s) p(t) H F (s) Y(s) y(t) Fig. 2. Sistem hibrid de reglare (combinaţie între un sistem discret şi unul continuu) 3. Discretiarea semnalelor continuale Pentru a stabili legătura dintre transformata Z a semnalului eşantionat şi transformata Laplace a semnalului continual se modeleaă fenomenul de eşantionare prin multiplicare cu o serie de impulsuri Dirac, conform proprietăţilor semnalelor de tip distribuţie, iar prin aplicarea unui semnal continuu u(t) la intrarea unui CAN, la ieşire se va obţine o secvenţă numerică {u(n)}. u(t) U(s) C A N {u k }={u(kt e )} U() Fig. 3. CAN. Discretiarea unui semnal continual 4. Crearea unui sistem discret (DTS) sys = tf(num,den,ts) Se procedeaă exact ca la sistemele continue numai că se introduce şi valoarea perioadei de eşantionare Ts în secunde. Variabila complexă implicită este. Deşi sistemul creat acum este un sistem pur discret, şi deci nu există noţiunea de perioadă de eşantionare pentru acesta, totuşi se introduce Ts ca o mărime de reervă ce va fi eventual utiliată dacă sistemul discret creat va fi utiliat în conjuncţie şi cu timpul fiic continuu. De exemplu se cere conversia sistemului discret în echivalentul său continuu. Dacă Ts=0 sistemul este continuu. Dacă Ts= -1 sau Ts=[] perioada de eşantionare este nespecificată. Dacă va fi nevoie de o valoare a acesteia, atunci se va moşteni valoarea transmisă eventual prin mărimea de intrare sau dacă şi aceasta provine de la un sistem pur discret se consideră valoarea Ts=1.
5. Discretiarea sistemelor continue Se pune problema discretiării unui SLIT continuu. Acesta este descris de o funcţie de transfer H c (s) care, în urma discretiării, se transformă într-o funcţie de transfer H d (). Nu există numai o singură metodă de discretiare a unui sistem continuu, aşa cum este în caul discretiării semnalelor continuale. Discretiarea funcţiei de transfer a unui sistem continuu se baeaă pe discretiarea răspunsului sistemului la anumite semnale tip sau pe anumite substituţii directe, aşa cum este caul în transformările biliniare. În mediul Matlab-Control Toolbox, principala funcţie care efectueaă operaţia de discretiare este c2d cu următoarele două sintaxe: sysd = c2d(sys,ts) Discretieaă sistemul LTI continuu sys folosind metoda răspunsului echivalent la intrare treaptă unitate. Ts este perioada de eşantionare în secunde. sysd = c2d(sys,ts,method) Prin argumentul method, se pot utilia diferite metode de discretiare, precum cele preentate în continuare. A. Discretiarea sistemelor prin identitatea răspunsului continuu şi discret la semnale de intrare tip (impuls sau treaptă) 5.1 Discretiarea sistemelor prin identitatea răspunsului indicial continuu (la intrare treaptă unitară continuă 1(t)) cu răspunsul indicial discret (la intrare treaptă unitară discretă 1(k)). Un SLIT continuu, caracteriat de funcţia de transfer continuă H c (s) se poate discretia astfel încât răspunsul său indicial la momentele de eşantionare să coincidă cu răspunsul indicial discret. u(t)=1(t) H c(s) Yc(s) y c(t) T e Y * c(s) {y c(kt e)} {uk}={1(k)} H d() Y d() {y d(k)} Fig. 4. Discretiarea sistemului continuu cu metoda identităţii răspunsurilor indiciale continue şi discrete Această metodă de discretiare are o aplicabilitate deosebită în sistemele automate deoarece ea se aplică întotdeauna pentru discretiarea părţii fixe a buclei de reglare. Din Fig. 2. se observă că putem îngloba partea fixă continuă într-un subsistem discret. Pentru aceasta CAN care are ca intrare eroarea sistemului e(t) = r (t) - y c (t) se poate distribui către referinţa r(t) şi mărimea de ieşire y c (t), obţinându-se sistemul din figura de mai jos. R(s) r(t) C A N Z{R(s)} {r(kt e)} Z{E(s)} {e(kt e)} H R() ARN U() {u(kt e)} Sistem discret C U(s) N A u(t) P(s) p(t) H F(s) Y c(s) y c(t) C A N Z{Y c(s)} {y c(kt e)} Fig. 5. SRA hibrid Sistemul din Fig. 5 este echivalent cu sistemul discret:
R(s) r(t) C A N Z{R(s)} {r(kt e )} Z{E(s)} {e(kt e)} H R () ARN U() {u(kt e)} Z{P(s)} {p(kt e)} Z{Y c(s)} H df () {y c(kt e)} Fig. 6. Echivalentul discretiat al SRA continuu Extrapolatorul de ordinul 0 transformă secvenţa discretă de intrare într-o mărime analogică, continuală, constantă pe porţiuni este chiar convertorul numeric-analogic CAN. Prin compararea celor două arhitecturi, obţinem: HdF() ZH F s HCNAs ZH Fs HEOZs (1) Pentru a calcula funcţia de transfer a extrapolatorului de ordinul 0, calculăm răspunsul la impuls discret şi obţinem: {u k} y(t) 1 1-2T e -T e 0 T e 2T e -T e 0 T e CAN (EOZ) Fig. 7. Răspunsul la impuls al CAN (extrapolator de ordin ero) Se observă din figura 7 cum răspunsul la impuls al extrapolatorului de ordin ero este: st 1 1 1 e e st y(t) h(t) 1(t) 1t T H(s) Lh(t) e e e s s s st 1 e e H CNA s (2) s Introducând (2) în (1) obţinem: st 1 e e 1 H s H () Z H s H s ZH s 1 Z F df F CNA F (3) s s Această metodă de discretiare se mai numeşte cu considerarea extrapolatorului de ordinul 0 la intrarea instalaţiei continue, lucru întâlnit în realitate în conducerea cu calculatorul a instalaţiilor continue. Mai jos se preintă programul MATLAB pentru testarea acestei metode de discretiare: sysc=tf(1,[1,1,1]); % se construieste sistemul continuu te=.5; % perioada de esantionare % se discretieaa sistemul continuu sysd=c2d(sysc,te, oh ); [numd,dend]=tfdata(sysd, v ); % se calculeaa raspunsul la impuls continuu si discret [yc,tc]=impulse(sysc); [yd,xd]=dimpulse(numd,dend); figure(1);plot(tc,yc);hold; td=0:te:te*(length(yd)-1); plot(td,yd, o );title( Raspuns la impuls );hold; % se calculeaa raspunsul la treapta continuu si discret [yc,tc]=step(sysc); [yd,xd]=dstep(numd,dend);
figure(2);plot(tc,yc);hold; td=0:te:te*(length(yd)-1); plot(td,yd, o );title( Raspuns la treapta );hold; Din figura de mai jos se observă identitatea răspunsurilor indiciale şi faptul că răspunsurile ponderale sunt diferite. Fig. 8. Răspunsurile ponderale şi indiciale ale sistemului continuu şi a celui discretiat Repreentarea de stare a sistemului discretiat Sistemul continuu H F (s) este descris de ecuaţiile de stare forma: x t Ax t Bu t y Cx t Du t Sistemul echivalent discret este de forma: xk1 Ad xk Bd uk yk Cd xk Dd uk După cum se cunoaşte, răspunsul ponderal al sistemelor este: y pc t At At C e x (0) C e B (6) c iar răspunsul indicial este: t t A y ic t C e B d ypc d (7) 0 0 Răspunsul ponderal continuu calculat la momentele de eşantionare nu poate fi egal cu răspunsul ponderal al sistemului discretiat decât în caul în care, Te A AT e d e e (8) 0 Dacă aproximăm integrala din relaţia (8) prin: Te A ATe e d Te e 0 atunci relaţia (8) se poate obţine prin diviarea răspunsului la T e. Putem viualia acest lucru modificând în programul anterior comanda de afişare a răspunsului continuu în: [yc,tc]=impulse(sysc); figure(1);plot(tc,yc/te);hold; (4) (5)
5.2 Discretiarea sistemelor prin identitatea răspunsului ponderal continuu (la intrare impuls Dirac (t)) cu răspunsul ponderal discret (la intrare impuls discret (k)) Un SLIT continuu, caracteriat de funcţia de transfer continuă H c (s) se poate discretia astfel încât răspunsul său ponderal la momentele de eşantionare să coincidă cu răspunsul ponderal discret. u(t)= (t) H c(s) Yc(s) y c(t) T e Y * c(s) {y c(kt e)} {uk}={(k)} H d() Y d() {y d(k)} Fig. 9. Discretiarea sistemului continuu cu metoda identităţii răspunsurilor ponderale continue şi discrete Programul MATLAB anterior va suferi modificarea: sysd=c2d(sysc,te,'imp'); Prin raţionamente asemănătoare caului anterior, dacă modificăm o comandă în:
[yc,tc]=step(sysc); [yd,xd]=dstep(numd,dend); figure(2);plot(tc,yc/te);hold; De data aceasta modificarea se face în răspunsul la intrare treaptă. Pe măsură ce perioada de eşantionare scade, răspunsul indicial discret se depărteaă de cel continuu. Printre proprietăţile acestei metode de discretiare enumerăm: - H d () are acelaşi răspuns la impuls ca H c (s) ; - Dacă H c (s) este stabilă, atunci şi H d () este stabilă; - H d () nu păstreaă răspunsul în frecvenţă al lui H c (s). Concluionăm că există metode de discretiare care folosesc substituţia răspunsului invariant la impuls sau la treaptă) într-o integrală de forma: 1 Hd ZH c s ReXc 1 T polii X 1 e e c Xc Hc, metoda raspunsului la impuls 1 Xc Hc, metoda raspunsului la treapta e st e (metoda B. Discretiarea sistemelor prin substituţii directe (transformări biliniare) Aceste metode se baeaă pe aproximarea e st e prin forme raţionale. Aceste metode sunt bidirecţionale în sensul că se poate trece de la H c (s) la H d () dar şi invers. Substituţiile pentru s respectiv sunt funcţii raţionale în variabila complementară ( respectiv s). 5.3 Discretiarea sistemelor prin substituţia Tustin (aproximarea integralei cu metoda trapeelor) Substituţia Tustin se scrie sub formele: 2 1 s Te 1 2 1 s Te 1 1 1 (9)
Folosind substituţia de mai sus, un sistem continuu caracteriat de funcţia de transfer H c (s) discretieaă sub forma: se H d e 1 () Hc(s) 2 1 s (10) T 1 1 1 La aceeaşi substituţie se ajunge dacă operatorul complex de integrare este tratat în domeniul s timp. U(s) u(t) 1 s y t t u 0 d Z{U(s)} {u(kt e )} H() Z{Y(s)} {y(kt e )} Fig. 10. Aproximarea integralei printr-o funcţie raţională H() Programul MATLAB de simulare a răspunsurilor la semnale tip se modifică doar prin schimbarea metodei de discretiare: sysd=c2d(sysc,te,'tustin'); Pentru T e = 0.5 sec, se obţin răspunsurile Pentru T e = 0.1 sec, se obţin răspunsurile
Se observă că, pe măsură ce perioada de eşantionare scade, răspunsul la impuls discret distorsioneaă foarte mult dar cel la treaptă se apropie de cel continuu. 5.4 Discretiarea sistemelor prin metoda aproximării integralei cu metoda dreptunghiurilor cu diferenţe înapoi (Backward Rectangular) Folosind acelaşi raţionament ca la substituţia Tustin, dar înlocuind metoda de aproximare prin dreptunghiuri în loc de trapee se va obţine următoarea funcţie de transfer a sistemului discretiat: Hd() Hc(s) 1 s 1 (11) Te 5.5 Discretiarea sistemelor prin metoda aproximării integralei cu metoda dreptunghiurilor cu diferenţe înainte (Forward Rectangular) Se procedeaă la fel ca la metoda anterioară cu singura excepţie că se folosesc valorile la pasul k+1 pentru a calcula aria de la pasul k. Funcţia de transfer a sistemului discretiat cu această metodă este de forma Hd() Hc(s) 1 1 s (12) Te Folosirea acestei metode este rară deoarece se obţin de obicei sisteme anticauale. C. Discretiarea sistemelor prin dispoitive de tipul ZOH şi FOH 5.6 Discretiarea sistemelor utiliând dispoitivul ZOH (Zero-Order Hold) Un dispoitiv ZOH converteşte un semnal discret într-un semnal continuu. Discretiarea ZOH, Hd(), a unui sistem continuu invariant în timp, H(s), este preentată în figura de mai jos:
Dispoitivul ZOH genereaă un semnal continuu u(t) prin menţinerea constantă a fiecărei valori eşantionate (u[k]) pe durata perioadei de eşantionare. u( t) u[ k]; kt t ( k 1) s T s Semnalul u(t) este furniat la intrarea sistemului continuu H(s), reultă că ieşirea y(t) care este eşantionată la fiecare Ts secunde produce y[k]. 5.7 Discretiarea sistemelor utiliând dispoitivul FOH (First-Order Hold) Un dispoitiv FOH diferă de un dispoitiv ZOH prin mecanismul de menţinere a valorii. Pentru a transforma valorile eşantionate (u[k]) într-un semnal continuu FOH foloseşte interpolarea liniară între eşantioane. t k Ts u( t) u[ k] ( u[ k 1] u[ k]); kts t ( k 1) Ts T s Această metodă oferă o preciie mai bună decât ZOH pentru sisteme cu intrări netede. 6. Proprietăţile sistemelor discrete Funcţii MATLAB folosite în calculul ieşirii unui SDLIT: a. y=filter(b,a,x,ic); Calculeaă ieşirea unui filtru cu funcţia de transfer M k bk B( ) k 0 H ( ) la vectorul/secvenţa de intrare x. Vectorii b şi a conţin coeficienţii N A( ) k 1 a bk şi ak k 1 k în ordinea crescătoare a puterilor lui 1 [ b b 0 1... b M ] b a [ a a 1... a ], ic este un 0 N vector în care se specifică condiţiile iniţiale ale sistemului ic = [y[ 1] y[-2]... y[-n]]. Atunci când condiţiile iniţiale sunt nule, ic nu se specifică în funcţia filter. b. h=imp(b,a,l); Calculeaă răspunsul la impuls al unui filtru cu parametrii specificaţi în vectorii a şi b (vei filter), răspunsul la impuls fiind calculat pentru L eşantioane h [ h0 h1... hl 1]. Liniaritatea Exemplul 1 Programul MATLAB P_1 verifică proprietatea de liniaritate a unui sistem folosindu-se metoda descrisă în Figura 11. Dacă y[n] = yt[n] pentru orice semnale de intrare x1[n] şi x2[n] ( a,b C* ), sistemul este liniar. În ca contrar, dacă egalitatea nu este satisfăcută pentru o pereche de semnale x1[n] şi x2[n], sistemul este neliniar.
Fig. 11. Modelul de calcul al lui y[n] (a) şi yt[n] (b) % Program P_1 % Generarea secvenţelor de intrare x1[n] si x2[n] clf; n = 0:40; a = 2;b = -3; x1 = cos(2*pi*0.1*n); x2 = cos(2*pi*0.4*n); x = a*x1 + b*x2; num = [2.2403 2.4908 2.2403]; den = [1-0.4 0.75]; %definirea unui filtru de ordinul 2 ic = [0 0]; % conditii initiale nule y1 = filter(num,den,x1,ic); % calculeaa iesirea y1[n] y2 = filter(num,den,x2,ic); % calculeaa iesirea y2[n] y = filter(num,den,x,ic); % calculeaa iesirea y[n] yt = a*y1 + b*y2; d = y - yt; % calculeaa diferenta dintre y[n] si yt[n] % se afiseaa y[n] si yt[n] si diferenta dintre ele, d[n] subplot(3,1,1) stem(n,y); ylabel('amplitude'); title('raspunsul la secventa a \cdot x_{1}[n] + b \cdot x_{2}[n]'); subplot(3,1,2) stem(n,yt); ylabel('amplitudine'); title(' Iesirea yt[n]: a \cdot y_{1}[n] + b \cdot y_{2}[n]'); subplot(3,1,3) stem(n,d); axis([0 40 5 5]); xlabel('n');ylabel('amplitudine'); title('semnalul diferenta'); Invarianţa în timp Exemplul 2 Programul Matlab P_2 ilustreaă proprietatea de invarianţă în timp pentru un sistem discret, comenile Matlab fiind scrise conform figurii 12. Fig. 12. Modelul de calcul pentru y[n-k] şi yd[n]
% Program P_2 % Se genereaa secventa de intrare x[n] clf; n = 0:40; K = 10;a = 3.0;b = -2; x = a*cos(2*pi*0.1*n) + b*cos(2*pi*0.4*n); xd = [eros(1,k) x]; num = [2.2403 2.4908 2.2403]; den = [1-0.4 0.75]; ic = [0 0]; % Set initial conditions % Se calculeaa iesirea din filtru y[n] y = filter(num,den,x,ic); % Se calculeaa raspunsul yd[n] la secventa x[n] intiriata cu K yd = filter(num,den,xd,ic); % se calculeaa diferenta d[n] dintre semnalul y[n] si yd[n-k] d = y - yd(1+k:41+k); % Afisarea reultatelor subplot(3,1,1) stem(n,y); ylabel('amplitudine'); title('iesirea y[n]'); grid; subplot(3,1,2) stem(n,yd(1:41)); ylabel('amplitudine'); title(['iesirea la secventa de intrare x[n-', num2str(k),']']); grid; subplot(3,1,3) stem(n,d); xlabel('n'); ylabel('amplitudine'); title('diferenta dintre y[n] si yd[n+10]'); grid; Stabilitatea Exemplul 3 Programul Matlab P_3 testeaă stabilitatea unui sistem discret în funcţie de răspunsul la impuls al acestuia. Variabila parsum din scriptul de mai jos se calculeaă astfel: parsum P n0 h[ n] unde P este ales astfel încât h[p] <10-6. Testul este ilustrativ din punct de vedere didactic dar din punct de vedere teoretic nu este tocmai corect. De exemplu, pentru h[n] =1/ n, sistemul nu este stabil, însă există un număr întreg P, pentru care h[p] <10-6. % Program P_3 % Stabilitatea sistemului baata pe sumarea absoluta a raspunsului la %impuls clf; num = [1-0.8]; den = [1 1.5 0.9]; N = 300; % se calculeaa raspunsul la impuls vei help imp h = imp(num,den,n+1); parsum = 0; for k = 1:N+1; %help for parsum = parsum + abs(h(k)); if abs(h(k)) < 10^(-6), break, end
end % se repreinta grafic raspunsul la impuls n = 0:N; stem(n,h); title('raspunsul la impuls') xlabel('n'); ylabel('amplitudine'); % se afiseaa la consola abs(h(k)) disp('value =');disp(abs(h(k))); % se afiseaa la consola Suma valorilor absolute ale lui h[n] disp('suma =');disp(parsum); 7. Caracteriarea sistemelor discrete Se vor utilia următoarele noi funcţii MATLAB: a. plane(b,a); plane(,p); Repreintă într-o fereastră grafică localiarea erourilor şi polilor în planul Z pentru un sistem care are coeficienţii b k şi a k în vectorii linie a şi b, sau erourile şi polii sistemului în T T vectorii coloană [ 1 2... M ] şi p [ p1 p2... p N ]. b. freq(b,a,n); [H,w]=freq(b,a,N); Repreintă într-o fereastră grafică răspunsul în frecvenţă (de modul şi faă) al sistemului descris de coeficienţii din vectorii a şi b. Numărul de puncte în care se calculeaă H(ω) este N. A doua comandă returneaă în vectorul H răspunsul sistemului la pulsaţiile discrete specificate în vectorul w fără a mai face repreentarea grafică. c. b=poly(); Returneaă în vectorul b coeficienţii unui polinom ce are ca rădăcini elementele din vectorul. d. Z=roots(b); Returneaă în vectorul rădăcinile unui polinom ce are coeficienţii preciaţi în vectorul b. e. [r,p,k]=residue(b,a); Realieaă descompunerea lui H() în forma de mai jos: B( ) r(1) r( N) 1 H ( )... k(1) k(2)... 1 1 A( ) 1 p(1) 1 p( N) Vectorii r, p, k sunt: r = [r(1), r(2)...r(n)], p = [ p(1), p(2)...p(n)], k = [k(1), k(2)...k(m N +1)]. Exemplul 4 Fie un sistem discret caracteriat în domeniul timp de ecuaţia cu diferenţe: y[n]+ 0,9y[n 2] = 0,3x[n]+ 0,6x[n 1]+ 0,3x[n 2]. În Matlab ecuaţia cu diferenţe este repreentată de doi vectori: unul conţine coeficienţii intrării, bk ai termenilor în x şi celălalt conţine coeficienţii de reacţie ai ieşirii, ak. Obişnuit, a 0 1, în ca contrar, programul normeaă coeficienţii, astfel încât coeficientul lui y[n] să fie egal cu 1. Sistemul de mai sus este caracteriat de funcţia de transfer: H Y ( ) X ( ) 0.3 0.6 0,3 1 0,9 1 ( ) 2 2 Funcţia MATLAB filter determină secvenţa de ieşire y[n] a unui SDLIT caracteriat de o ecuaţie cu diferenţe sau funcţia de sistem H(), la o secvenţă x[n] aplicată la intrarea sistemului. Datorită modului de indexare a vectorilor în MATLAB, coeficienţii funcţiei de transfer sunt notaţi astfel: 1 M b(1) b(2)... b( M 1) H ( ) 1 N a(1) a(2)... a( N 1) Următorul program MATLAB (P_4) realieaă afişarea poiţiei polilor şi erourilor lui H() şi a caracteristicii de frecvenţă a SDLIT. Folosiţi comanda help pentru a vă familiaria cu funcţiile plane.m şi freq.m.
%Program P_4 %descrierea sistemului prin coeficientii bk si ak b=[0.3, 0.6, 0.3]; a=[1, 0, 0.9]; figure(1); %help figure plane(b,a);%repreentarea polilor si erourilor in planul Z title('distributia poli-erouri'); [H,W]=freq(b,a,512); figure(2); subplot(2,1,1); plot(w,abs(h)); %repreentarea modulului raspunsului in frecventa ylabel('magnitudune'); title('raspunsul filtrului in modul'); subplot(2,1,2); plot(w,angle(h)); %repreentarea raspunsului de faa title('raspunsul de faa al filtrului '); ylabel('faa');xlabel('w'); Exemplul 5 Se analieaă comparativ răspunsurile la impuls pentru două SDLIT de tip FTJ Butterworth şi eliptic de ordinul 5, cu frecvenţa normată de tăiere de Wn=0,5. Coeficienţii funcţiilor de transfer se obţin cu ajutorul funcţiilor butter şi ellip: %Program P_5 [b,a]=butter(5,0.5); %sintea coeficienţilor unui filtru butterworth [c,d]=ellip(5,1,20,0.5); %sintea coef. unui filtru elliptic %calculul raspunsului la impuls h1=imp(b,a,50); h2=imp(c,d,50); figure(1); subplot(211); stem(h1); title('raspunsul la impuls al filtrului Butterworth');xlabel('n'); subplot(212); stem(h2); title('raspunsul la impuls al filtrului Eliptic');xlabel('n'); Folosiţi comanda help şi notaţi sintaxa funcţiilor butter.m şi ellip.m. Exemplul 6. Pentru aceleaşi două sisteme de la Exemplul 5 se compară răspunsurile indiciale, folosind comenile MATLAB %Program P_6 [b,a]=butter(5,0.5); [c,d]=ellip(5,1,20,0.5); unit=[ones(50,1)]; %generearea treptei unitate g1=filter(b,a,unit); g2=filter(c,d,unit); figure(1); subplot(211); stem(g1); title('raspunsul indicial al filtrului Butterworth'); subplot(212); stem(g2); title('raspunsul indicial al filtrului Eliptic'); xlabel('n');
Exemplul 7. Se calculeaă şi afişeaă răspunsul în frecvenţă a unui sistem pentru care se specifică erourile şi polii. %Program P_7 =[exp(j*pi/5);exp(-j*pi/5p=[0.9*]; % polii functiei de transfer atunci coeficienţii funcţiei de transfer sunt b=poly() % se afiseaa vectorul b in fereastra matlab a=poly(p) % se afiseaa vectorul a in fereastra matlab iar caracteristica de frecvenţă a acestui sistem se obţine astfel: [H,W]=freq(b,a,512); figure(1); plot(w,abs(h)); title('modulul raspunsului in frecventa al filtrului'); Să se studiee funcţia p2tf.m care realieaă trecerea din erourile şi polii funcţiei de transfer în coeficienţii acesteia cu ajutorul comenii help p2tf. Exemplul 8. Cu ajutorul funcţiei residue.m se pot calcula reiduurile şi polii funcţiei de transfer, conform relaţiei: B( ) r(1) r( N) 1 H ( )... k(1) k(2)... k( M N 1) 1 1 A( ) 1 p(1) 1 p( N) Se analieaă pentru sistemul considerat la Exemplul 7 efectul comenii: [r,p,k]=residue(b,a). Cu ajutorul descompunerii în fracţii simple se poate calcula răspunsul la impuls n n h[ n] r1 p1 r2 p2 k[ n] Analia comparativă a răspunsurilor la impuls obţinute prin cele două funcţii (residue şi imp) se realieaă cu programul P_8. %Program P_8 =[exp(j*pi/5) exp(-j*pi/5)]; p=[0.9*]; b=poly(); a=poly(p); [r,p,k]=residue(b,a); n=(0:29); h1=r(1)*p(1).^n+r(2)*p(2).^n; h1(1)=h1(1)+k; h2=imp(b,a,30); figure(1); subplot(211) stem(h1) title('raspunsul la impuls obtinut utiliand funcţia residue'); subplot(212); stem(h2); title('raspunsul la impuls obtinut cu ajutorul functiei imp.m'); xlabel('n'); Exemplul 9. Se analieaă răspunsul unui sistem liniar invariant în timp la un semnal de tip sinusoidă, x[n] =Asin(2π*f *n + ), n 0,..., 60 şi f = 1/13, în două moduri: -cu ajutorul funcţiei filter.m; -cu ajutorul relaţiei: 2. j. f 2. j. f y[ n] H ( e ) sin(2f. n arg( H )));
Se va utilia funcţia: s=polyval(b,x); Returneaă valoarea unui polinom cu coeficienţii specificaţi în vectorul b, calculat în valoarea x. s(x) = b(1)x N +...+ b(n)x + b(n +1) %Program P_9 b=[0.1, 0.2, 0.1]; a=[1, 0, 0.9]; N=99; n=0:n; f=1/8;a=2; x=a*sin(2*pi*f*n+pi/7); y=filter(b,a,x); Hw=polyval(b,exp(2*j*pi*f))/polyval(a,exp(2*j*pi*f)); ys=a*abs(hw)*sin((2*pi*f*n)+pi/7+angle(hw)); figure(1); subplot(411); stem(n,x); ylabel('intrarea x[n]'); subplot(412); stem(n,y); axis([0 N -A A]); ylabel('y[n] calculat cu filter '); subplot(413); stem(n,ys); ylabel('ys[n] calculat cu residue') xlabel('n'); axis([0 N -A A]); subplot(414); stem(n,ys-y); ylabel('diferenta y[n]-ys[n]') xlabel('n'); axis([0 N -A A]); Ce observaţi în legătură cu secvenţa y[n]? 8. Simularea sistemelor hibride În cele ce urmeaă ne propunem să facem o comparaţie între diferitele metode de discretiare. Vom propune pentru implementare 3 modele Simulink: unul continuu, unul discret provenit din cel continuu prin discretiare cu diferite metode şi unul hibrid. Un program MATLAB ne oferă posibilitatea de a discretia subsistemele continue folosind diferite metode de discretiare. te=.1; %perioada de esantionare numr=[1,1];denr=[1,0]; % regulatorul continuu numf=1;denf=[1,.1]; % partea fixa continua syscr=tf(numr,denr); syscf=tf(numf,denf); sysdr=c2d(syscr,te,'imp'); % regulatorul discretiat sysdf=c2d(syscf,te,'tustin'); % partea fixa discretiata [numdr,dendr]=tfdata(sysdr,'v'); [numdf,dendf]=tfdata(sysdf,'v'); Modelul SRA continuu
Modelul SRA discret Modelul SRA hibrid Pentru T e = 0.1 şi regulator discretiat prin metoda răspunsului la impuls se obţin următoarele reultate: Răspunsurile sistemului continuu, discret şi hibrid Modificând metodele de discretiare: sysdr=c2d(syscr,te,'tustin'); % regulatorul discretiat sysdf=c2d(syscf,te,'oh'); % partea fixa discretiata obţinem reultatele: Răspunsurile sistemului continuu, discret şi hibrid Următoarele reultate se obţin pentru T e = 1 sec
Răspunsurile sistemului continuu, discret şi hibrid Se remarcă înrăutăţirea regimului tranitoriu (cresc suprareglajele şi apar oscilaţii ascunse). Teme de laborator: 1. Se consideră următoarea funcţie de transfer: 0,35 1 ( ) s s H s e 2 s 4s 5 Să se afle funcţia de transfer discretă cu ajutorul metodelor de discretiare de tip foh, oh şi tustin, se alege o perioadă de eşantionare de 0.1 sec. Apoi să se repreinte pe rând pe acelaşi grafic atât funcţia de transfer continuă cât şi cea discretiată cu fiecare din cele 3 metode preentate mai sus. 2. Pentru funcţia de transfer: 2 30s 90s 60 H ( s) 3 2 s 12s 47s 60 să se repreinte grafic răspunsul la intrare treaptă pentru funcţia de transfer discretă scrisă sub forma poli-erouri-amplificare, obţinută din funcţia de transfer continuă de mai sus, perioada de eşantionare fiind de 0,1 sec. Totodată să se calculee factorul de amplificare de poiţie K p şi să se trasee caracteristicile bode pentru funcţia de transfer discretă. 3. Să se repreinte ca modele tf, pk şi ss sistemele discrete considerând perioadele de eşantionare Ts=0.1; Ts=1 şi Ts=10. 2 5 82 3 1) H( ) ; H() s şi H() s. 2 2 ( 1) ( 1)( 1) ( 2) 4. Se consideră următoarele funcţii de transfer: s 3 30( s 8) K H() s ; H() s şi H() s pentru K=1; T=1; 2 2 s 4s16 ss ( 2)( s 4) Ts 2 s 1 0;0.01;0.1;0.2;0;0.707;1;2. Să se deducă modelele discrete care repreintă discretiarea sistemelor de mai sus cu perioadele de eşantionare Ts=0.1; Ts=1; Ts=10. Se vor folosi diferite metode de discretiare. 5. Să se implementee în Simulink şi să se afişee pe acelaşi grafic atât funcţia de transfer 1 continuă H ( s), precum şi funcţia de transfer discretă a acesteia cu ajutorul blocurilor de 2 s 1 tip oh şi foh. La intrare se aplică un semnal sinusoidal, iar perioada de eşantionare se alege mai întâi 0.01 sec, apoi 1 sec.