Informatica
Functiile de transfer ale sistemelor continue si cu esantionareFunctiile de transfer ale sistemelor continue si cu esantionareSistemele liniare si invariante in timp cu o intrare si o iesire pot fi descrise prin functia de transfer, prin ecuatii de stare si prin poli, zerouri si factorul de amplificare. In Matlab, modelul unui asemenea sistem este un obiect cu proprietati. Proprietatile generale ale acestui obiect sunt: inputname - numele intrarii, sir de caractere, outputname - numele iesirii, sir de caractere inputdelay - intarzierea la intrare in secunde, outputdelay - intarzierea la iesire in secunde, name - numele obiectului corespunzator, sir de caractere. Prescrierea si obtinerea proprietatilor obiectului se fac cu functiile get() si set() set(numeobiect, proprietate, valoare) get(numeobiect, proprietate) Definitiile proprietatilor generale ale acestor sisteme pot fi vazute cu instructiunea ltiprops 1.1 Descrierea sistemelor liniare si invariante in timp cu a intrare si o iesire prin functia de transferCrearea unei sistem descris de o functie de transfer se face cu functia tf. 1.1.1 Sisteme continueFie functia de transfer a unui sistem continuu
unde M(s) si N(s) snt polinoame in s. Crearea functiei de transfer se face cu functia sys = tf(M, N) unde M si N sunt vectori cu coeficientii polinoeamelor M(s) si N(s) in ordine descrescatoare a puterilor lui s. Exemplu. Fie un bloc cu functia de transfer
Numele blocului va fi sys1. Functia de transfer se creaza cu instructiunile M = [2 1]; N = [1 2 3]; sys1 = tf(M, N) Transfer function: 2 s + 1 s^2 + 2 s + 3 Un alt mod de creare a unei functii de transfer este de a specifica direct expresia ei ca functie de s in felul urmator: se
defineste variabila complexa s ca se
defineste functia de transfer ca Exemplu. Functia de transfer de mai sus se defineste astfel s = tf('s') Transfer function: s sys2 = tf((2*s+1)/(s^2+2*s+3)) Transfer function: 2 s + 1 s^2 + 2 s + 3 Prescrierea si obtinerea proprietatilor obiectului se fac cu functiile get() si set() set(numeobiect, proprietate, valoare) get(numeobiect, proprietate) ca de exemplu set(sys, 'inputname', 'u') get(sys, 'inputname) Pentru blocul sys1 de mai sus putem secrie set(sys1, 'inputname', 'u') set(sys1, 'outputname', 'y') sys1 Transfer function from input 'u' to output 'y': 2 s + 1 s^2 + 2 s + 3 Prescrierea unei intarzieri de 0.2 s pentru blocul sys1 se poate face ca mai jos set(sys1, 'inputdelay', 0.2) sys1 Transfer function from input 'u' to output 'y': 2 s + 1 exp(-0.2*s) * ------------- s^2 + 2 s + 3 Intarzierea se obtine cu functia get() get(sys1, 'inputdelay') ans = 0.2000 Prescrierea unei intarzieri pentru un bloc se poate face si direct, in expresia functiei de transfer sys3 = tf(exp(-0.2*s) * (2*s+1)/(s^2+2*s+3)) Transfer function: 2 s + 1 exp(-0.2*s) * ------------- s^2 + 2 s + 3 Proprietatile specifice ale unui obiect creat cu functia tf sunt: num - numaratorul functiei de transfer, vector, den - functiei de transfer, vector, ioDelay - intarzierea intre intrare si iesire, scalar, Variable - s, in cazul sistemelor continue. Definitiile proprietatilor specifice ale acestor sisteme pot fi vazute cu instructiunea ltiprops tf Prescrierea si obtinerea acestor proprietati se fac cu functiile set() si get() de mai sus. Exemplu. get(sys3, 'variable') ans = s Prescrierea si obtinerea acestor proprietati se fac accesand proprietatile sub forma
numeObiect.numeProprietate Proprietatile num si den sunt tablouri de celule cu elementele vectori linie. Exemplu. Sa accesam proprietatile num si den ale modelului sys1. sys1.num ans = 0 2 1 sys1.den ans = 1 2 3 Datele modelului sys de forma tf se obtin si cu functia tfdata() cu formele: [num, den] = tfdata(sys) [num, den] = tfdata(sys, 'v') num si den sunt numaratorul si numitorul functiei de transfer. In prima forma, num si den sunt celule de vectori, in forma a doua sunt vectori. Exemplu. [num, den] = tfdata(sys1) num = [1x3 double] den = [1x3 double] num ans = 0 2 1 den ans = 1 2 3 Exemplu. [num1, den1] = tfdata(sys1, 'v') num1 = 0 2 1 den1 = 1 2 3 1.2 Descrierea sistemelor liniare si invariante in timp cu a intrare si o iesire prin ecuatii de stareCrearea unei sistem descris de ecuatii de stare se face cu functia ss. 1.2.1 Cazul sistemelor continueUn sistem continuu, liniar si invariant in timp este descris de ecuatiile de stare:
unde x - vectorul de stare de dimensiune n, A - matrice de dimensiune n, b - vector coloana de dimensiune n, u - intarea scalara, y - iesirea scalara, c - vector linie de dimensiune n, d - scalar. Creare unui model se face cu functia ss(A, b, c, d) unde parametrii A, b, c, d au semnificatia de mai sus. Exemplu. Fie sistemul descries de ecuatiile de stare
El este creat ca mai jos. A = [0 1; -3 -2]; b = [0; 1]; c = [1 0]; d = 0; sys4 = ss(A, b, c, d) a = x1 x2 x1 0 1 x2 -3 -2 b = u1 x1 0 x2 1 c = x1 x2 y1 1 0 d = u1 y1 0 Continuous-time model. Proprietatile specifice ale unui asemenea model sunt: a - matricea A, b - vecorul b, c - vectorul c, d - vectorul d, Nx - numarul de stari, scalar, StateName - vector de celule cu siruri de caractere, numele variabilelor de stare. Definitiile proprietatilor specifice ale acestor sisteme pot fi vazute cu instructiunea ltiprops ss Prescrierea si obtinerea acestor proprietati se fac cu functiile set() si get() de mai sus. Exemplu. get(sys4, 'a') ans = 0 1 -3 -2 Exemplu. Vom atribui numele pozitie si viteza celor doua variabile de stare. set(sys4, 'statename', ) sys4 a = pozitie viteza pozitie 0 1 viteza -3 -2 b = u1 pozitie 0 viteza 1 c = pozitie viteza y1 1 0 d = u1 y1 0 Continuous-time model. Prescrierea si obtinerea acestor proprietati se fac si accesand proprietatile sub forma numeObiect.numeProprietate Exemplu. Modelul de mai sus se poate crea astfel. sys6.a = [0 1; -3 -2]; sys6.b = [1;2]; sys6.c = [1 0]; sys6.d = 0; sys6 a = x1 x2 x1 0 1 x2 -3 -2 b = u1 x1 1 x2 2 c = x1 x2 y1 1 0 d = u1 y1 0 Datele modelului sys de tip ss sunt se obtin cu functia ssdata() cu forma [a, b, c, d] = ssdata(sys) Exemplu. [ax, bx, cx, dx] = ssdata(sys4) ax = 0 1 -3 -2 bx = 0 1 cx = 1 0 dx = 0 1.3 Descrierea sistemelor liniare si invariante in timp cu a intrare si o iesire prin poli, zerouri si factorul de amplificareCrearea unui sistem descris de zerouri, poli si facorul de amplificare se face cu functia zpk. 1.3.1 Cazul sistemelor continueUn sistem continuu, liniar si invariant in timp este descries de un vector ce contine polii sistemului, un vector ce contine zerourile si facorul de amplificare scalar. Crearea unui model se face cu functia zpk cu forma zpk(z, p, k) unde: z - vector cu zerourile sistemului, p - vector cu polii sistemului, k - factorul de amplificare, scalar. Exemplu. Fie un sistem cu polii -1+i, -1-i si factorul de amplifcare 2. El este creat ca mai jos. sys3 = zpk([], [-1+i, -1-i], 2) Zero/pole/gain: 2 (s^2 + 2s + 2) Proprietatile specifice ale unui model creat cu functia zpk sunt: z - vectorul zerourilor, p - vectorul polilor, k - factorul e amplificare, scalar, ioDelay - intarzierea intre intrare si iesire, scalar, Variable - s, in cazul sistemelor continue. Definitiile proprietatilor specifice ale acestor sisteme pot fi vazute cu instructiunea ltiprops zpk Prescrierea si obtinerea acestor proprietati se fac cu functiile set() si get() de mai sus. Zerourile, polii si factorul de amplificare ale unui model sys de tip zpk se obtin cu functia zpkdata() cu forma [z p k] = zpkdata(sys) [z p k] = zpkdata(sys, 'v') z este vectorul zerourilor, p este vectorul polilor, k este factorul de amplificare. In prima forma z, p si k sunt tablouri de celule cu elemente vectori coloana, in forma a doua sunt vectori. Exemplu. Sa obtinem z si p sub forma de vectori. [num, den, k] = zpkdata(sys3, 'v') num = Empty matrix: 0-by-1 den = -1.0000 + 1.0000i -1.0000 - 1.0000i k = 2 Exemplu. Sa obtinem z si p sub forma de vectori de celule. [num, den, k] = zpkdata(sys3) num = [0x1 double] den = [2x1 double] k = 2 Vectorul polilor din celula den se afisaza ca den ans = -1.0000 + 1.0000i -1.0000 - 1.0000i 1.4 Functia de transfer a sistemelor continueOperatiile asupra modelelor sunt urmatoarele: adunarea si scaderea a doua modele, +, -, conectarea in serie, *, conectarea in reactie a doua modele, feedback, conectarea arbitrara a modelelor. 1.4.1 Conectarea in reactie a doua modeleFie doua modele sys1 si sys2. Functia sys = feedback(sys1, sys2) creaza un model sys corespunzator conexiunii din Figura 24.
Figura 24 . Conectarea in reactie a doua blocuri. Exemplu. Fie doua blocuri sys1 si sys2 cu functiile de transfer si . Sa se determine functia de transfer a conexiunii din Figura 24. M = [2 1]; N = [1 2 3]; sys1 = tf(M, N) Transfer function: 2 s + 1 s^2 + 2 s + 3 M1 = [1]; N1 = [2 1]; sys2 = tf(M1, N1) Transfer function: 1 2 s + 1 sys3 = feedback(sys1, sys2) Transfer function: 4 s^2 + 4 s + 1 2 s^3 + 5 s^2 + 10 s + 4 1.5 Discretizarea modelelor continueFunctia pentru conversia unui model continuu in unul discret este c2d(). De regula inaintea sistemului continuu se introduce un extrapolator de ordin zero (zero-order hold, ZOH). Functia c2d() are formele sysd = c2d(sysc, Ts) sysd = c2d(sysc, Ts, 'metoda de extrapolare') unde sysd este modelul discret, sysc este modelul continuu, Ts este perioada de esantionate in secunde. Prima forma utilizeaza un extrapolator de ordin zero, in forma a doua extrapolatorul se poate allege din mai multe metode: 'zoh', extrapolator de ordin zero, 'foh' extrapolator de ordin unu, etc. Exemplu. Sa discretizam modelul cu functia de transfer
cu un extrapolator de ordin zero pentru perioada de esantionare Ts = 0.2s num = [1]; den = [1 0.2 0]; H = tf(num, den) Transfer function: 1 s^2 + 0.2 s D = c2d(H, 0.2) Transfer function: 0.01974 z + 0.01947 z^2 - 1.961 z + 0.9608 Sampling time: 0.2
|