MODELARE ŞI SIMULARE ÎN MATLAB & Simulink ( Algoritmi de simulare in Inginerie Electrica- ASIE )
Conf dr. ing ing.. Lucia Lucian n MIHE MIHEŢ-POPA
Cuprinsul cursului – partea partea I
Introducere in MATLAB & Simulink Instrucţiuni, funcţii si operaţii de baza ale MATLABului Creare Cre area a gra grafice ficelor lor.. Rep Reprez rezent entări si funcţii grafice Achiziţia, interpolarea si aproximarea datelor – – –
Prelucrarea datelor si calcule calcule statistice Aproximarea datelor prin metoda metoda celor mai mici p ătrate Analiza Fourier si FFT
Analiza circuitelor electrice si electronice – – – –
Analiza circuitelor circuitelor electrice de cc si ca Răspuns spunsul ul in in domeni domeniul ul timp si frecv frecventa enta Metode de proiectare proiectare a RG-PID Tehnici de analiza a circuitelor circuitelor electronice
2
Cuprinsul cursului – partea partea I
Introducere in MATLAB & Simulink Instrucţiuni, funcţii si operaţii de baza ale MATLABului Creare Cre area a gra grafice ficelor lor.. Rep Reprez rezent entări si funcţii grafice Achiziţia, interpolarea si aproximarea datelor – – –
Prelucrarea datelor si calcule calcule statistice Aproximarea datelor prin metoda metoda celor mai mici p ătrate Analiza Fourier si FFT
Analiza circuitelor electrice si electronice – – – –
Analiza circuitelor circuitelor electrice de cc si ca Răspuns spunsul ul in in domeni domeniul ul timp si frecv frecventa enta Metode de proiectare proiectare a RG-PID Tehnici de analiza a circuitelor circuitelor electronice
2
Cuprinsul cursului – partea partea II
Introducere in Simulink; Modelarea Mode larea si simular simularea ea sisteme sistemelor lor dinam dinamice ice (in timp cont co ntin inu uu si dis discr cret et), ), sis siste teme melo lorr si el ele eme ment nte elo lor r neliniare; Proi Pr oiec ecta tare rea a siste sisteme melo lorr de reg regla lare re au auto toma mata ta (S (SRA RA)) utililiz ut izan and d RG RG-P -P,, PI, PI, PID; PID; Mod ode ela lare rea a ci circ rcui uite telo lorr el ele ect ctri rice ce si a fifiltltre relo lorr de re rete tea a si simularea diferitelor regimuri de func ţionare; Modela Mod elarea rea si simula simularea rea masin masinilo ilorr ele electri ctrice ce – Metode de pornire si franare a MCC cu excitatie separata – Actionari cu MCC, reglarea vitezei in cascada. 3
Structura prezentarii: C1 + C2 Introducere in MATLAB & Simulink
1.
Ce este MATLABul ? Lansarea Lansa rea in executie. executie. Interfata Interfata MATLAB MATLAB - utili utilizator zator Ce este Simulinkul ? Informatii ajutatoare ale MATLABului (Helpul online)
Instructiuni, functii si operatii de baza ale MATLABului
2.
– – – –
Structura programelor programelor MATLAB: MATLAB: fisiere script si function Matrice si operatii operatii matriceale matriceale Operatii si functii matemat matematice ice uzuale uzuale Programarea MATLAB. Instructiuni Instructiuni si functii functii de control
Crearea graficelor. Reprezentari si functii grafice
3.
– – –
Reprezentări grafice elementare Reprezentări grafice tridimensionale 3D Crearea si controlul ferestrelor ferestrelor grafice grafice 4
1.Introducere in MATLAB &Simulink 1.1. Ce este MATLABul? MATLAB =MATrix LABoratory
MATLABul este un pachet de programe de înalta performanta dedicat calculului numeric, reprezentărilor grafice si evaluărilor tehnice. Integreaza calcule matriceale, analiza numerica, vizualizarea grafica si limbajul de programare intr-un mediu usor de utilizat, in care problemele si soluţiile sunt exprimate printr-un model matematic MATLABul este de fapt un sistem interactiv care a fost iniţial conceput astfel incat elementul de baza cu care operează sa fie matricea. 5
1.1. Facilitati ale MATLABului Cele mai importante facilita ţi oferite de MATLAB sunt: Calcularea, evaluarea si analiza sistemelor (circuitelor electrice, acţionari electrice, SRA etc) Dezvoltarea algoritmilor de control Achiziţia, prelucrarea si analiza datelor Simulare, modelare, programare Vizualizare, reprezentare grafica si anima ţie Dezvoltarea unor aplicatii, bazate pe interfe ţe grafice interactive (GUI) Analiza si proiectarea sistemelor de reglare si conducere 6
1.1. Biblioteci MATLAB
Din punct de vedere structural MATLABul este realizat sub forma unui nucleu de baza in jurul căruia sunt construite asa numitele toolboxuri. MATLABul include aplicaţii specifice sau familii de caracteristici, dedicate unui anumit domeniu . Acestea sunt colecţii extinse de funcţii MATLAB, sub forma de fişiere (m-files), care dezvolta mediul de programare de la o versiune la alta, si care permit invatarea si aplicarea unor tehnici specializate. Principalele domenii in care aceste toolboxuri pot fi utilizate sunt descrise de (Fig. 1): 7
1.1. Structura MATLAB Pachetul de programe MATLAB con ţine cinci par ţi principale:
Mediul de dezvoltare (Development Environment): set de toolboxuri Biblioteca cu functii matematice (The MATLAB Mathematical Function Library) : sum, sine etc Limbajul MATLAB (The MATLAB Language):
algoritmi, functii, structuri de control a datelor si caracteristici de programare;
Grafica (Graphics): functii dedicate reprezentarilor grafice in 2D si 3D; Interfata cu un program de aplicatii (The MATLAB 8 Application Program Interface-API )
1.2. Lansarea in execu ţ ie. ie. Interfa ţ a MATLAB - utilizator MATLABul lucrează in principal cu cinci tipuri de ferestre, una principala pentru comenzi (command window ) si alte patru ferestre secundare: spatiul de lucru (workspace), directorul curent (current directory ), fereastra de afisare a comenzilor anterioare (command history ) si fereastra Launch Pad care permite accesarea urmatoarelor librarii-MATLAB, Toolboxes, Simulink si Blocksets (Fig. 2)
9
1.3. Ce este Simulinkul ?
SIMULINKul este un set de programe soft dedicat modelarii, simul ării si analizei sistemelor dinamice. Permite modelarea sistemelor liniare si neliniare atat in timp discret cat si in timp continuu sau hibride Simulinkul are la bază programul MATLAB fiind o unealta a acestuia; Ca si extensie a MATLABului, Simulinkul conţine suplimentar mai multe caracteristici specifice ale sistemelor dinamice. O diagrama bloc in Simulink reprezintă un model grafic al unui sistem dinamic, care conţine un set de simboluri denumite blocuri, interconectate intre ele prin linii. Fiecare bloc reprezinta un sistem dinamic elementar care genereaza o marime de iesire, sau mai multe, care poate fi o marime continua in timp sau discreta. Liniile de legatura reprezinta conexiunile dintre marimile de intrare si de iesire ale blocurilor . Tipul blocurilor, din sistemul modelat, determina relatia dintre intrarile, starile si iesirile acestuia, in functie de timp.
10
1.3. Lansarea in executie a Simulinkul ui ui
Lansarea pachetului de programe Simulink se face din MATLAB in doua moduri: prin accesarea pictogramei Simulink sau din fereastra de comanda (command window) prin scrierea cuvantului „simulink ”. Pe ecranul monitorului se va afi şa fereastra libr ăriei simulink (simulink library browser); aceasta conţine toate instrumentele (toolboxes) şi toate blocurile nucleului de baza simulink (începând de la „continuous” şi sfâr şind prin blocurile definite de utilizator („user-defined functions”), asa cum arata si figura 11
1.3. Facilitati Simulink Simulink Cele mai importante facilita ţi pe care le ofer ă Simulinkul sunt: Modelarea, simularea si analiza sistemelor dinamice Implementarea sistemelor liniare si neliniare Construirea unor diagrame bloc (continue si discrete), utilizând biblioteca existent ă sau crearea propriilor blocuri (librarii) Vizualizarea mai multor ferestre in acela şi timp si a mai multor variabile pe acela şi grafic Incorporarea unor programe scrise in C, C++, Ada, Fortran intr-un model de simulare dinamica utilizând libr ăria funcţiilor S (S-functions) Implementarea hard si testarea diferitelor strategii de control 12
1.4. Informatii ajutatoare ale MATLABului ( Helpul online )
MATLABul poseda o documentatie vasta care permite obtinerea informatiilor necesare despre invatarea si utilizarea acestui pachet de programe, atat online cat si tiparit (in format pdf). Comanda help furnizeaza informatii online despre orice functie MATLAB si Simulink sau realizata de un utilizator al pachetului de programe. Cu comanda help se pot obtine informatii ajutatoare despre o anumita functie, se pot lista fisierele dintr-un director sau se poate lista continutul unui anumit fisier. Informatii specifice despre o anumita functie sau despre un director se pot obtine tastand comanda help + „subiect”. De exemplu, tastand comanda help elfun vom obtine informatii despre toate functiile matematice elementare: functiile trigonometrice (sin, cos), exponentiale (exp, log ), complexe (real, imag ). Daca subiectul este un director helpul afiseaza fisierele continute in acesta. Se pot scrie helpuri (linii cu informatii ajutatoare) pentru fisierele MATLAB (M-file) sau pentru toolboxurile proprii construite de utilizator. 13
2. Instructiuni, functii si operatii de baza ale MATLABului
MATLABul este un limbaj de expresii. Expresiile tiparite de utilizator sunt interpretate si evaluate. Instructiunile MATLAB sunt de cele mai multe ori de forma : variabila = expresie Daca numele variabilei si semnul = sunt omise, MATLABul creeaza automat o variabila cu numele „ans” (Fig. 4) in care este returnat rezultatul unui calcul, ca in exemplul urmator: Tastand urmatoarea secventa (operatie matematica) in fereastra de comanda 20 – 2 * 5 MATLABul va returna urmatorul raspuns: ans = 10 Orice instructiune sau linie de instructiuni este terminata cu „enter”. Utilizand tasta „enter” se trece la urmatoarea secventa de linie. Daca ultimul caracter al liniei este punct-virgula „ ; ”, instructiunea este executata dar nu se
tipareste nimic in fereastra de comenzi (command window). MATLABul utilizeaza pentru reprezentarea numerelor, in notatia zecimala conventionala, punctul zecimal. De exemplu 0.15 = 0,15 sau 1.5021e-6 = 1,5021 * 10-6.
14
Simbolul doua puncte (:) este unul dintre cei mai importanţi operatori ai
MATLABului. Poate fi utilizat pentru a crea vectori si matrice, pentru a specifica submatrice si vectori si pentru a executa iteraţii. De exemplu comanda: t1 = 1:6 va genera un vector linie conţinând numerele de la 1 la 6 avand incrementul unitate. MATLABul va genera rezultatul: t1 = 1 2 3 4 5 6
Incrementul poate fi pozitiv sau negativ si poate fi diferit de unitate, ca in exemplul urmator: t2 = [(0:2:10); (5:-0.2:4)]
va genera urmatorii vectori: t2= 0 2.0000 4.0000 6.0000 8.0000 10.0000 5.0000 4.80000 4.60000 4.40000 4.20000 4.0000
MATLABul are cateva variabile speciale predefinite. Acestea nu pot fi declarate si sunt accesibile global in orice fisier-M (M-file) si includ: i, j, pi =π, inf = si NaN =Not-a-Number (0/0); Ambele variabile i si j au aceeasi valoare si sunt folosite pentru a genera numerele complexe, ca in exemplul urmator: z=3+4*j.
Va returna z = 3.0000 + 4.0000i
15
2.1. Structura programelor MATLAB MATLABul lucrează fie in modul linie de comanda, situaţie in care fiecare linie este prelucrata imediat si rezultatele sunt afişate, fie in programe conţinute in fişiere. Fişierele ce con ţin instrucţiuni MATLAB se numesc fi şiere-m (au extensia .m). Aceste fişiere constau dintr-o succesiune de instrucţiuni cu posibilitatea apel ării si altor fişiere – m si sunt fişiere text de tip ASCII. Un program MATLAB poate fi scris sub forma a doua tipuri de fişiere „script ” si / sau „function” . Ambele tipuri sunt scrise in format ASCII (text) iar algoritmul care a fost implementat poate fi urm ărit cu uşurinţa daca se cunosc convenţiile si sintaxa MATLAB. Aceste tipuri de fişiere (cu extensia .m) permit crearea unor funcţii noi care sa le completeze pe cele deja existente. Prin aceasta facilitate MATLABul poate fi extins la aplicaţii specifice utilizatorului care are, de asemenea, posibilitatea16
In tabelul 1 se vor prezenta cateva functii MATLAB de control al fisierelor:
Functia
Descrierea functiei
what
Listeaza fisierele cu extensia .m, .mat, .dat, .mex din directorul curent
who
Listeaza variabilele curente din memorie
whos
Listeaza variabilele curente din memorie, dimensiunile lor si tipul acestora
dir
Listeaza continutul directorului curent
cd
Returneaza sau schimba directorul curent
delete
Sterge fisierul precizat de pe disc which +nume fisier
Returneaza calea in care este localizat fisierul
17
2.1.1. Fişiere script
Un fişier script este un fişier extern ferestrei de comenzi fiind plasat in directorul curent si care conţine o secvenţa de comenzi MATLAB Fişierele script sunt cele mai simple fişiere-m (cu extensia .m) deoarece ele nu au nici mărimi de intrare nici de ie şire. După execuţia unui fişier script, variabilele cu care acesta a operat raman stocate in spaţiul de lucru (workspace). Fişierele script lucrează cu date existente din workspace. De asemenea, ele pot crea date noi cu care sa opereze. Daca avem mai multe fi şiere intr-un director este de dorit sa includem câteva comentarii (explicative) la începutul fiec ărui 18 fişier creat.
2.1.1. Fisiere script. Exemplu
Exemplul 1: Sa se scrie un program MATLAB sub forma de fisier script care sa
Solutie: Se creaza un fisier-m (M-file) cu numele amplitudine in care se scriu
calculeze amplitudinea si faza unei functii de transfer G(jw)=1 / (jw+2) pentru w = 1. următoarele linii:
%Amplitudine.m: exemplu de fisier script pentru calcularea amplitudinii si fazei lui G pentru w=1.
w=1; G=1 / (j*w+2); Amplitudinea = abs(G) Faza = atan( imag (G) / real (G))
Scriind cuvântul amplitudine in fereastra de comenzi (command window ) vom obtine următorul r ăspuns: Amplitudine = 0.4472 Faza = -0.4636 Scriind comanda help amplitudine in fereastra de comenzi, MATLABul ne va afisa
urmatorul text:
-amplitudine.m: exemplu de fisier script pentru calcularea amplitudinii si fazei lui G pentru w=1. 19
2.1.2. Fisiere function
Daca prima linie a unui fişier – M conţine cuvântul „function „function”, ”, fisier fisierul ul res respec pectiv tiv este este declarat ca fişier funcţie. Variabilele definite si manipulate in interiorul fi şierulu ieruluii functie functie sunt localiz localizate ate la nivelul acesteia. acesteia. Prin urmare la terminarea execu ţiei unei functii, in memoria calculatorul calcula torului ui nu raman raman decât variabi variabilele lele de ie ieşire ale acesteia. Un fişier funcţie difer ă de unul script script prin faptul faptul ca poate poate lucra cu argumen argumente te (secve (se cvente nte ale funct functiei iei:: intr ări - ieşiri). Forma generala a primei linii a unui fi şier fun funct ctio ion n est este: e:
function [param_iesire] [param_iesire] = = nu nume me_f _fun unct ctie ie (param_intrare) unde function este cuvântul cheie care declara fi şierul ca fişier funcţie, nume_functie este numele numele functiei, functiei, adica adica numel numele e sub care se salveaz salvează fişie ieru rull fa fara ra ex exte tens nsie ie,, param_iesire reprezintă parametrii de ieşire care trebuie separaţi prin virgula si cuprinşi intre paranteze drepte (daca functi functia a nu are are paramet parametrii rii de ieşire parantezele drepte si semnul egal nu mai au sens), iar param_intrare reprezintă parametrii de intrar int rare, e, car care e tre trebui buie, e, de ase asemen menea, ea, sep separa aratiti pri prin n virg virgula ula dar cup cuprin rinsi si int intre re paranteze rotunde.. rotunde Un fişier funcţie care care are are mai mai multe multe intra intrari ri si iesiri iesiri poa poate te fi de de forma: forma:
function [x, y, z] = z] = sfera (theta, phi, rho)
Daca fişier ierul ul fun functi ction on nu conţine nici un argument de iesire, atunci prima linie poate avea forma: functi fun ction on pri printr ntresu esults lts(x) (x)
20
2.1.2. Fişiere function. Exemple
Structura unui fifisi sier er fu func nctition on poate conţine instrucţiuni (comenzi) MATLAB de control, funcţii MATLAB care realizează calcularea si alocarea valorilor pentru pen tru mar marimi imile le de iesir iesire. e.
Exemplul 2. Sa se scrie un program MATLAB de tip function care sa
Solutie: Se Se cree creeaza aza un fis fisier ier-m -m (M(M-fil file) e) cu num numele ele medie care trebuie sa
calculeze media aritmetica a unui vector x.
aibe ac aibe acel elas asii nu nume me cu al fu func nctitiei ei ce urmeaza urmeaza sa fie fie definita definita in in prima prima linie, linie, dupa du pa cu cum m urm urmea eaza za:: function [mean] = medie medie(x) (x) N = length(x); mean = sum(x) / N;
Tastan Tas tand d urm urmato atoare arele le lin liniiii in fer fereas eastra tra de come comenzi nzi:: x = [1:10]; mean(x)
MATL MA TLAB ABul ul va retu return rna a urmato urmatoru rull ra rasp spun uns: s: ans = 5.5000 21
2.1.2. Fişiere function. Exemple
Exemplul 3: Exemplul 3: Sa se se scrie scrie un fisier fisier functi function on care sa calculez calculeze e rezistent rezistenta a echivalenta a unor rezistoare conectate in serie. Rezolvare: Se Se cre creaz aza a un fifisie sierr cu nu nume mele le echivalent.m, care are urmatoarea
configuratie:
function Re = echivalent (R) (R)
% echivalent echivalent este este un program func ţ ţ ie ie care calculeaz ă rezistenta echivalenta a unor rezistoare conectate in serie serie,, R R fiind fiind vectorul de intrare de lungime n iar iar Re Re este mărimea de ieşire, rezistenta echivalenta n = len length gth(R) (R);; %nu %numar marul ul rez rezist istoar oarelo elor r Re = su sum( m(R) R);; %re rez zist ste ent nta a ec echi hiv val alen enta ta
Sa presupunem ca dorim sa calculam rezistenta echivalenta a urm ătoarelor rezistente conectate in serie, având valorile 10, 20, 15, 16 si 5 Ohmi. Tastând următoarele linii in fereastra de comenzi: R = [1 [10 0 20 20 15 15 16 5] 5];; Rserie=echivalent(R)
Rezultatul obţinut va fi: Rserie =
66 22
2.2. Matrice si opera ii matriceale
MATLABul lucrează cu scalari, vectori si matrice. Un scalar este interpretat ca o matrice cu o linie si o coloana (1 x 1), iar un vector este o matrice linie (1 x n) sau coloana (n x 1). MATLABul este de fapt un pachet de programe care lucreaz ă numai cu un singur tip de obiecte-matric obiecte-matrice e numer numerice ice rectangular rectangulare e (tablou numeric numeric cu doua dimensiuni), cu elemente reale sau complexe. Operaţiile matriceale cu tablouri (arrays) sunt operaţii aritmetice element cu element (intr (intre e element elemente e situat situate e in in aceeasi aceeasi pozit pozitie ie a tablour tablourilor). ilor). Pentr Pentru u efectuarea operaţiilor cu tablouri se folosesc aceea şi operatori ca in operat ope ratiile iile cu sca scalar lari,i, pre preced cedati ati de sem semnul nul „.”, semn ce indica de fapt efectuarea operaţiilor element cu element. De exemplu operatorul de înmulţire a doua matrice A si B se simbolizează in cazul tablourilor prin A .* B Definirea matricelor se face prin una din metodele: – – – –
Introducerea listei de elemente Generarea prin instructiuni si functii Crearea de fisiere-m (m-files) Încărcarea din fişiere de date externe 23
2.2. Matrice si opera ţ ii ii matriceale
Ceea mai simpla metoda de definire a matricelor consta in utilizarea unei liste explicite care trebuie sa respecte urmatoarele reguli: – elementele unei linii trebuie separate prin spatii libere (blankuri) sau virgule – liniile se separa prin semnul (;) – elementele unei matrice sunt cuprinse intre paranteze drepte
Matricea A poate fi introdusa in MATLAB cu una din cele 2 secvente: • A = [1 2 3; 4 5 6; 7 8 9] sau A = [1, 2, 3; 4, 5, 6; 7, 8, 9].
⎡1 2 3⎤ ⎢ ⎥ A = 4 5 6 ⎢ ⎥ ⎢⎣7 8 9⎥⎦
In ambele cazuri se returneaz ă: A = 1 2 3 4 5 6 7 8 9
Pentru a determina dimensiunea unei matrice A si lungimea acesteia se utilizeaz ă functiile MATLAB size (A) si length (A). Suma matricei A se calculeaza cu comanda sum(A), si se obţine rezultatul: ans = 12
15
18 24
2.2.1. Calcule cu matrice. Generarea matricelor
MATLABul ofera un set de functii pentru utilizarea matricelor. Calculul determinantului unei matrice se face cu functia det , iar a inversei unei matrici cu functia inv . Daca dorim sa adăugam o noua linie unei matrice, de exemplu matricei B, acest lucru se poate realiza tastând comanda: – B = [B; [5 6]];
De asemenea, MATLABul ofer ă si facilitatea de a extrage o submatrice dintr-o matrice, sau de-a transforma o matrice intr-un vector. In cazul selectarii liniilor sau coloanelor se folosesc urmatoarele sintaxe: – A(:, n) - selecteaza coloana n a matricei A – A(m,:) - selecteaza linia m a matricei – A(:) - selecteaza toate elementele matricei A, privite ca o singura coloana. Utilizand functia eye, care se apeleaza cu una dintre sintaxele: I=eye(n), I=eye(m, n) sau I=eye(size(nume_matrice)) – se poate genera matricea identitate (matricea cu elementele de pe diagonala principala egale cu unu, iar toate celelalte elemente zero).
Functia linspace genereaza un vector cu pas liniar iar functia logspace genereaza un vector cu pas logaritmic. 25
2.2.1. Calcule cu matrice. Generarea matricelor
Exemplul 4: Sa se determine curentii I1, I2 si I3 unui sistem trifazat,
stiind ca valorile tensiunilor sunt U1=10V, U2=15V si U3=12V iar impedanta echivalenta a circuitului Z este o matrice patratica de ordinul 3; Solutie: Pentru a rezolva sistemul trifazat de curenti se utilizeaza comanda inv .
– Se poate scrie un fişier MATLAB-script sau se pot introduce următoarele linii in fereastra de comenzi (command window): – Z=[3 6 9;6 15 12;9 12 20]; – U=[10 15 12]; ⎡3 6 9 ⎤ – I = inv (Z)*U; ⎢ ⎥ Z = 6 15 12 ⎢ ⎥ MATLABul genereaza urmatorul rezultat: ⎢⎣9 12 20⎥⎦ I = -3.6491 1.2807 1.4737
Ceea ce inseamna ca – I1 = -3.6491 A, I2 = 1.2807 A si I3 = 1.4737 A 26
2.2.1. Calcule cu matrice. Generarea matricelor
MATLABul include patru functii de baza pentru generarea matricelor: – zeros: Genereaza o matrice cu toate elementele zero – ones: Genereaza o matrice cu toate elementele 1 (matricea unitate) – rand : Genereaza o matrice aleatoare cu distributie uniforma – randn: Genereaza o matrice aleatoare cu distributie normala
Exemplul : Sa se genereze o matrice M cu 2 linii si 4 coloane (cu dimensiunea 2 x 4) cu toate elementele zero si o matrice patratica N de ordinul 4 aleatoare cu distributie normala. – Solutie: Cu secventele: M = zeros(2, 4); N = randn(4, 4)
– Se obtin rezultatele: M = 0 0 0 0 0 0 0 0 N= 0.6353 0.0860 -0.3210 -1.2316 -0.6014 -2.0046 1.2366 1.0556 0.5512 -0.4931 -0.6313 -0.1132 -1.0998 0.4620 -2.3252 0.3792
27
2.2.2. Generarea vectorilor Generarea vectorilor cu pas liniar implica cunoaşterea limitelor intervalului (min, max) si a pasului de esantionare dintre doua elemente, el emente, sau numărul de elemente ale vectorului. Daca se cunosc limitele intervalului si pasul dintre doua elemente ale vectorului X, cu instrucţiunea: X = min: pasul de eşantionare: max Se generează numărul de elemente ale vectorului rezultant N = [( [(m max ax--min in)) / pas as]]. Daca pasul > 0 este necesar ca valoarea minima sa fie mai mica decat valoarea valoa rea maxima, maxima, iar daca daca pasul < 0, atunci atunci valoarea valoarea minima este este mai mare decat dec at val valoar oarea ea max maxima ima::
X1 = -5 : 0.5 : 5; X2 = 5 : -2 : -5
Daca pasul este omis atunci valoarea acestuia este considerata egala cu unitatea. De asemenea, se pot genera vectori cu pas logaritmic utilizând sintaxa logspace,, ca in exemplul de mai jos: logspace – Sa se genereze un vector vector cu N = 5 elemente elemente distribuite logaritmic pe -2 2 intervalul [10 , 10 ]. – Cu sintaxa: x = logspace logspace(-2, (-2, 2, 5)
– Se obtine rezultatul: 0.0100
0.1000
1.0000 10.0000 100.0000
28
2.3. Opera ţ ii ii si func ţ ii ii matematice uzuale
help elfun Pachetul de programe MATLAB conţine numero numeroase ase func functii tii pentr pentru u operati operatiii matematice fundamentale si pentru prelucrarea datelor Aceste operatii matematice se refera refera la: – calcule cu polinoame (f(x) = x3 + 3x + 15), – vectori, – numere complexe (a (a + j*b), sin,, cos), – functii trigonometrice (sin – exponentiale (exp) si logaritmice (log , log10 ). ). – ecuatii diferentiale (diff ), ), – integrale (quad , trapz ) si ode23,, ode45 ) etc. – metode de integrare numerica numerica (ode23 29
2.3.1. Numere complexe
Numerele complexe sunt introduse in MATLAB utilizând variabilele i si si j j;; Un număr complex z se poate exprima sub forma carteziana (z = a+i*b) sau sub forma polara ( z = r*ei φ), unde a si b sunt partile parti le reala si imagina imaginara ra ale ale acestuia acestuia,, iar r si φ reprezintă modulul si argumentul num ărului complex z . Funcţia abs determina modulul elementelor unui vector sau a unei matrice iar funcţia angle calculează argumentul elementelor unui vector sau a unei matrice si se exprima in radiani. Funcţia real returneaz returnează partea reala a num ărului complex, iar 30 imag returneaz returnează partea imaginara.
2.3.1. Numere complexe. Exemple Exemplul : Sa se calculeze amplitudinea si faza unei impedan ţe (Z) de intrare a unui circuit, ştiind ca: Z =
(5 + j6)(4 − j8) 9 − j 2
+ 4∠300
Se scri scriee un un fisi fisier er scr script ipt de for forma: ma: Rezolvare: Se Z1 = 5+6*j; Z2 = 4-8*j; Z3 = 9-2*j; the heta ta = (30 / 180 180)* )*p pi % ung unghiu hiull in radian radianii Z4=4*exp(j*theta); Z4=4*exp(j*t heta); Z = (Z1 * Z2 / Z3) + Z4; Z_ampl = abs(Z) % am ampli plitud tudine inea a lui Z Z_unghi = angle(Z)*(180 / pi); % un ungh ghiul iul in in grad gradee Z_polar = [Z_ampl, Z_unghi] % disp (Z_polar) MATLABul generează următorul rezultat: numărul com comple plex x Z in in for forma ma pol polara ara,, cu am ampli plitud tudine ineaa si faz fazaa ega egale le cu: Z_polar = 11.2039
9.7942
31
2.3.2. Funcţiile putere, radical, logaritm si exponenţiala
MATLABul dispune de doua functii pentru ridicarea la putere: – pow2 : pentru a ridica cifra 2 la puterea n (2n) – ^: pentru a ridica un num ăr a la puterea n (an) Functia exp calculează exponenţiala (ex) Functia log si log10 calculeaza logaritmul natural (ln) si zecimal (lg) Functia sqrt calculează radicalul de ordinul 2 dintr-un număr Calculul radicalului de ordinul 2 dintr-un num ăr ( 9), poate utiliza functia putere sau funcţia radical, apelata cu sintaxa sqrt (9). Obs: Argumentul acestor func ţii poate fi o matrice, caz in care se operează element cu element, sau poate fi un număr 32 complex.
2.3.3. Funcţii trigonometrice
Functiile trigonometrice se apelează cu sintaxa: x = nume_func ţ ie(argument)
in care nume_functie este numele uneia dintre functiile trigonometrice prezentate in tabelul 6, argumentul este valoarea pentru care se evalueaz ă funcţia, iar x este variabila in care se returneaza rezultatul. Obs: Daca argumentul este o matrice se folosesc operatori specifici tablourilor matriciale. Principalele funcţii trigonometrice
sin - Determina sinusul argumentului, cu rezultatul in radiani cos - Calculeaza cosinusul argumentului tan - Calculeaza tangenta argumentului asin - Calculeaza arcsinusul (sin-1) argumentului in radiani acos - Determina cos-1 in radiani atan - Calculeaza arctangenta (tan-1) argumentului, cu rezultatul in radiani atan2 - Calculeaza arctangenta unui argument complex 33
2.3.4. Calcule numerice cu polinoame
In MATLAB polinoamele sunt reprezentate ca un vector linie care conţine coeficienţii in ordine descrescătoare. De exemplu polinomul g(x)=x4 + 2x2 + 0.5x - 6 este reprezentat in MATLAB prin vectorul: g = [1 0 2 0.5 -1]. Cele mai uzuale func ţii pentru calculele cu polinoame sunt: – roots – calculează r ădăcinile unui polinom – poly – calculează coeficienţii unui polinom cu r ădăcinile date – polyder – calculează derivata polinoamelor – polyfit – aproximează un set de date cu un polinom de gradul n – residue – descompune in fracţii simple raportul a doua polinoame. 34
Programarea MATLAB. Instruc ţ iuni iuni si func ţ ii ii de control
Programele MATLAB sunt scrise pentru a realiza paşi secvenţiali, operaţiile fiind realizate una dup ă alta. In multe cazuri, insa, este necesara repetarea unui set de instrucţiuni atâta timp cat o condi ţie este realizata si pentru alt set de instruc ţiuni. Uneori este necesara repetarea unui grup de instrucţiuni de un anumit num ăr de ori. Instrucţiunile cu ajutorul c ărora se poate realiza acest lucru sunt for si while. 35
Instructiuni si functii de control
Instrucţiunea for este folosita pentru repetarea unui grup de instruc ţiuni de un anumit număr de ori. Un contor de ciclu va tine evidenta num ărului de repetări ale instrucţiunilor unui ciclu si il opreşte când contorul ajunge la valoarea precizata. Instrucţiunea while este folosita atunci când calculele efectuate cu un grup de instrucţiuni trebuie repetate pana când o anumita condi ţie este îndeplinita. Numărul de iteratii nu este cunoscut iniţial. Ieşirea din ciclu se realizează la indeplinirea conditiei impuse, care este testata la începutul fiecărei iteraţii. Instructiunea if poate fi implementata simpla sau poate include si clauzele else sau elseif . Forma generala a unei instruc ţiuni if este următoarea: if expresie_logica grup_de_instrucţiuni
end
Clauza else este utila pentru a executa un set de instructiuni , daca expresia logica este adevarata, si un alt set de instructiuni , daca expresia logica este falsa. Sintaxa instructiunii if este combinata cu clauza else, si are forma generala: if expresie_logica grupul_de_instructiuni A else
grupul_de_instructiuni B end
36
Instrucţiunea for
Instrucţiunea for permite repetarea unui grup de instruc ţiuni dintr-o bucla, de un anumit număr de ori. Are următoarea structura generala: for index = expresie grupul_de_instrucţiuni
end In care index este numele contorului, expresie este o matrice, un vector sau un scalar, iar grupul de instruc ţi uni poate fi orice expresie(functie) MATLAB (de exemplu k = initial : pas : final ). La folosirea buclei for trebuie respectate următoarele reguli: – indexul buclei for trebuie sa fie o variabila; – daca expresia este o matrice goala, bucla nu se executa; se va trece la următoarea instrucţiune după end ; – daca expresia este un scalar, bucla se executa o singura data, cu indexul dat de valoarea scalarului; – daca expresia este un vector linie, bucla se executa de atâtea ori de cate elemente are vectorul, de fiecare data indexul având valoarea egala cu urm ătorul element al vectorului; – daca expresia este o matrice, indexul va avea la fiecare iteraţie valorile conţinute in următoarea coloana a matricei; – la terminarea ciclului for , indexul are ultima valoare utilizata;
daca se utilizează operatorul doua puncte (:) pentru a defini expresia, ca in exemplul: for k = initial : pas : final
bucla se executa de: N = [(final-initial) / pas] + 1
37
Instructiunea for. Exemple Exemplu: Sa se scrie un program utilizând instruc ţiunea for pentru generarea unei matrice cu valorile corespunz ătoare lui i = [1, 4] afişate pe coloane, ştiind ca y = [i 5i2 2i]. Rezolvare: Se scrie următoarea secvenţa MATLAB: disp('Nr. var1 var2') for i=1:4 y = [i, 5*i^2, 2^i]; disp(y) end Se afiseaza rezultatul: Nr. var1 var2 1 5 2 2 20 4 3 45 8 4 80 16 38
Instructiunea for . Exemple Pentru a realiza un număr mare de calcule iterative, fara a defini de fiecare data valoarea unui parametru (variabila) când acesta (aceasta) se modifica, se utilizează instrucţiunea for . Exemplu: Sa se scrie un fişier script care sa utilizeze instrucţiunea for pentru a genera pătratul primelor 10 numere întregi si sa se afişeze rezultatul. Solu ţ ie: Se scrie un fişier script cu următoarea secvenţa: for m = 1:10 x(m) = m^2; end disp(x) In exemplul anterior numărul de iteraţii a fost controlat de var. m. 39
Descrierea instructiunii while
Instrucţiunea while se utilizează pentru repetarea unui set de instrucţiuni, atâta timp cat o condi ţie specificata este adevărata. Forma generala a acestei instructiuni este urmatoarea: while expresie
grup_de_instructiuni 1 end
grup_de_instructiuni 2
Grupul de instruc ţi uni 1 se executa cat timp „ expresie”
este adevarata. La sfâr şitul execuţiei instrucţiunii 1, expresie este retestata. Daca expresie este tot adevarata, grupul de instruc ţi uni 1 se executa din nou. Daca expresie este falsa, programul iese din bucla while si trece la grupul de instruc ţi uni 2 . 40
Instructiunea while. Exemple Exemplu: Sa se scrie un program, utilizând bucla while, care calculează suma elementelor vectorului: x = [5 2 -9 10 -1 9 -1] pana când intalneste un număr mai mare sau egal cu 8. Solutie: O varianta de program este urmatoarea: x = [5 2 -9 10 -1 9 -1]; sum = 0; k = 1; while (x(k) < = 8) & (k <= length(x)) sum = sum + x(k) k=k+1 end Se obtine rezultatul: sum = 5 k = 2 sum = 7 k = 3 sum = -2 k = 4 Iesirea din bucla while realizandu-se dupa ce au fost insumate 41
Instrucţiuni de intrare / ieşire
MATLABul conţine instrucţiuni (comenzi) despre anumite mărimi de intrare din fereastra de comenzi si despre datele de ieşire. Instrucţiunea input transmite instantaneu un mesaj scris catre utilizator, apoi asteapta introducerea marimii de intrare de la tastatura (R=input(‘expresie MATLAB’)); Instrucţiunea return comanda ieşirea din fişierul-m către funcţia care la apelat sau c ătre tastatura. Instrucţiunea error permite afişarea unor mesaje la întâlnirea unei erori. Se apeleaza cu sintaxa: error (’mesaj’)
Instrucţiunea break se utilizează pentru a iesi dintr-o bucla înainte ca aceasta sa se fi terminat. Se recomanda sa se utilizeze daca o condi ţie de eroare este detectata in interiorul unei bucle. Aceasta instruc ţiune încetează execuţia ciclurilor for si while. disp - Afişează un text sau o matrice fprintf - Afişează texte si matrice
42
Vectorizarea calculelor
Deoarece operaţiile cu matrice si vectori sunt executate de pachetul de programe MATLAB mai repede cu un ordin de mărime decât operaţiile compilate / interpretate, se obţine o viteza de lucru mai mare daca algoritmii înscrişi in fisiere-M sunt vectorizaţi. Oriunde este posibil, ciclurile while si for trebuie convertite in operaţii cu vectori sau matrice, aşa cum ilustrează si exemplele 14 si 15: In cazurile in care nu se poate vectoriza o parte din program, pentru a scădea timpul de execuţie, se procedează la prealocarea unor vectori in care vor fi reţinute rezultatele. De exemplu, incluzând o prima instrucţiune de prealocare folosind funcţia zeros, ciclul for următor se executa semnificativ mai repede: x = rand (1,100); % genereaz ă o matrice aleatoare cu distribu ţ ie uniforma y = zeros(1,100); % genereaz ă o matrice cu toate elementele zero de la 1 la 100 for i = 1:100 y(i) = det(x(i)^(i-1)); end
Explicaţia consta in faptul ca daca nu se face prealocarea, interpretorul MATLAB trebuie sa redimensioneze vectorul y la o dimensiune mai mare, de fiecare data când trece printr-o iteraţie a ciclului. Daca vectorul este 43 prealocat acest pas este eliminat si execuţia este mai rapida.
2.4.3. Vectorizarea calculelor. Exemple Ex. 14: Sa se scrie un program care calculeaz ă sinusul in 1000 de puncte, de la 1 la 10 cu pasul de 0.01, utilizând bucla for . Solutie: se scriu doua fişiere script care reprezintă grafic functia sin(t), primul utilizând bucla for iar al doilea convertit in forma vectoriala, dup ă cum urmeaz ă:
t = 0:.01:10; N = length(t); for i=1:N; y(i) = sin(t(i)); end plot(t, y) are si versiunea vectorizata: t = 0 : .01 : 10; y = sin(t); plot(t, y) Primul exemplu necesita un timp de execu ţie a comenzilor de 10-15 ori 44 mai mare decât cel de-al doilea.
3. Calcul grafic. Reprezentări si funcţii grafice
MATLABul furnizează un set de tehnici pentru reprezentarea grafica Detine numeroase funcţii grafice si ofer ă diferite facilitaţi pentru tipărirea si exportul fişierelor de date ; Tipul reprezentării grafice depinde in mare m ăsura de natura datelor (formatul acestora) si de felul informatiilor pe care dorim sa le obtinem de la graficul respectiv; Pachetul de programe MATLAB con ţine o librarie de functii, atat pentru generarea graficelor in coordonate liniare (bidimensionale x-y) 2D cat si pentru generarea graficelor in coordonate tridimensionale (3D) ; Reprezentarea grafica se poate face prin linii (continue, punctate, de contur etc), cu bare, in trepte, tip histograma si de asemenea, reprezentarea grafica a suprafetelor MATLABul permite si personalizarea graficelor (afisarea titlului, denumirea axelor, scrierea unui text pe grafic etc), adaugarea unei retele pe grafic (grid) sau crearea si controlul ecranului (divizarea ferestrelor) si al axelor; Exista posibilitatea creării interfetelor grafice interactive (Graphics User Interface) cu ajutorul unor funcţii MATLAB (uicontrol, uimenu, uigetfile, uisetcolor ). Pentru realizarea creării acestor interfeţe MATLABul foloseste programarea pe obiecte pentru controlul interactiv al graficelor, utilizand cateva elemente de control 45 predefinite .
Reprezentări si funcţii grafice
Pentru crearea graficelor exista trei modalitati de baza:
– utilizarea funcţiilor MATLAB pentru generarea graficelor – utilizarea liniilor de comenzi, utilizând fereastra de comenzi (command window), sau creând diferite fişiere-m – prin combinarea celor doua metode de mai sus. De exemplu prin utilizarea unei comenzi pt. crearea graficelor iar apoi prin folosirea uneia dintre uneltele (tools) interactive se poate modifica (personaliza) reprezentarea grafica ob ţinuta. Comanda plot generează un grafic in coordonate liniare. Se apeleaza cu una din
sintaxele:
plot(x); plot(x, y); plot(x1, y1, x2, y2, ..., xn, yn) Daca x e un vector (linie sau coloana), comanda plot (x) va genera un grafic liniar al elementelor vectorului x ca functie de indexul acestora, x = x(i), unde i = 1, 2, ..., n este nr. de ordine al elementului x. – MATLABul va unii punctele vectorului printr-o linie dreapta. Daca x este o matrice, fiecare coloana va fi trasata separat pe acela şi grafic. Daca x si y sunt matrice de aceeasi dimensiune, atunci comanda plot(x, y) va trasa grafic coloanele lui y in functie de coloanele lui x. Daca x este un vector , iar y o matrice, atunci coloanele lui y sunt trasate functie de vectorul x y = f(x); Daca x e un număr complex , atunci plot (x) este echivalent cu plot(real(x),imag(x)); 46
Reprezentări si funcţii grafice. Exemple De exemplu, daca x=[0 3.7 6.1 6.5 5.8 3.6]; Comanda plot(x) va genera graficul din figura ; Daca x si y sunt 2 vectori de aceeaşi lungime, comanda plot(x, y) va trasa grafic elementele lui x (axa-x) funcţie de elementele lui y (axa-y).
47
Reprezentări si funcţii grafice. Exemple
Ex. 16. Sa se reprezinte grafic func ţia y(t)=6e-2t pentru
intervalul de timp t=(0-4) secunde, avand pasul de eşantionare de 0.05. Rezolvare: Se scrie un fisier script, sau următoarea secvenţa MATLAB in fereastra de comenzi (command window):
t = 0:0.05:4; y = 6 * exp(-2 *t); plot (t, y)
title ( ’Raspunsul unui circuit RC’ )
% tipareste titlul graficului
xlabel (’Timpul (s)’)
% tipareste numele variabilei axei x
ylabel (’Tensiunea (V)’)
% precizeaza parametrul (variabila) axei y
grid %traseaza o retea de linii pe grafic 48
Reprezentări si funcţii grafice. Exemple Ex. 17: Sa se reprezinte pe acelaşi grafic tensiunea (u(t)) si curentul (i(t)) unui circuit RL, pentru intervalul de timp t=(0-20) ms ştiind ca u(t)=10cos(377t) si i(t)=5cos(377t+600). Soluţ ie: Se scrie un fişier MATLAB-script cu următoarele secvenţe de comenzi:
%Tensiunea si curentul unui circuit RL t = 0:1e-3:20e-3; %vectorul timp u = 10*cos(377*t); a_rad=(60*pi/180); %unghiul de faza in radiani i=5*cos(377*t + a_rad); plot( t, u, t, u,’*’,t, i, t, i,’o’ ), grid title(’tensiunea si curentul unui circuit RL’), xlabel(’timpul (s)’), ylabel(’tensiunea (V) si curentul (mA)’); text (0.003,1.5,’u(t)’), text (0.009,2,’i(t)’)
Fig. Reprezentarea grafic a tensiunii si curentului unui circuit RL 49 in regim statio sinusoidal.
Reprezentarea grafica in coordonate logaritmice si polare
Pentru reprezentarile grafice in coordonate logaritmice sau semilogaritmice se utilizeaza functiile loglog , semilogx si semilogy . Utilizarea acestor functii grafice este similara cu a celor utilizate in paragraful anterior. Descrierea acestor comenzi este urmatoarea: – loglog(x, y) – scaleaza ambele axe generand graficul logaritmului in baza 10 (log10(x) vs log10(y)); – semilogx (x, y) – scaleaza logaritmic doar axa x (log10(x)), cealalta axa fiind scalata liniar; – semilogy (x, y) – scaleaza logaritmic doar axa y (log10(y)), cealalta axa fiind scalata liniar;
Obs: Trebuie retinut faptul ca, deoarece logaritmul numerelor negative si zero nu exista, datele care urmeaza sa fie reprezentate grafic pe o axa logaritmica sau semilogaritmica, nu trebuie sa includa valoarea zero sau valori negative. Reprezentarea grafica in coordonate polare se face cu functia polar , si se apeleaza cu una din sintaxele urmatoare: polar ( theta, rho ) sau polar ( theta, rho, ’linie tip’ ) Unde theta si rho sunt vectori, theta fiind unghiul in radiani iar rho reprezinta amplitudinea semnalului respectiv. 50
Reprezentarea grafica in coordonate logaritmice . Exemplu
Exemplu: Se da fisierul de date (f,g), care
reprezinta frecventa functie de factorul de amplificare (gain) a unui amplificator operational. Sa se reprezinte grafic in coordonate semilogaritmice frecventa versus factorul de amplificare (scala logaritmica pentru frecventa si liniara pentru factorul de amplificare). Sa se tipareasca titlul graficului si marimile celor doua axe reprezentate. Solutie: Se scrie urmatorul fisier script:
%Reprezentarea grafica Bode pentru un %amplificator operational f = [20 40 80 100 120 2000 5000 8000 10000 12000 15000 20000]; g=[5 10 30 32 34 34 34 34 32 30 10 5]; semilogx(f, g) title(’Diagrama Bode pt. un amplificator’), xlabel(’Frecventa (Hz)’), ylabel(’Gain (dB)’)
51
3.1.2. Funcţii pentru generarea graficelor. Reprezentări grafice speciale
MATLABul conţine o familie (set) de functii pentru generarea graficelor. Cele mai importante dintre ele sunt descrise in tabelul 10 (pg. 36). Reprezentarea grafica cu bare se face cu functia bar si se apeleaza cu una dintre sintaxele: bar(y) – care traseaza un vector de bare cu elementele vectorului y, sau bar(x, y ) – care traseaza un grafic de bare cu elementele vectorului y la locatiile specificate de vectorul x , adica y=y(x). Aceasta functie creeaza un grafic de bare vertical, in care valorile vectorului y sunt utilizate pt. a determina inaltimea barei, iar valorile vectorului x sunt folosite pt. a eticheta fiecare bara. Reprezentarea grafica a semnalelor discrete se face cu functia stem, sub forma unor linii terminate cu cerculet la extremitatea opusa axei. Se apeleaza cu sintaxa stem(y) sau stem(x, y). Graficele in trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de esantionare si prelucrare a datelor. Reprezentarea grafica in trepte se face cu functia stairs, care se apeleaza cu una din sintaxele stairs(y) sau stairs(x, y). Functia mesh - Traseaza grafic o retea sub forma de plasa; Functia fplot genereza un grafic cu anumite restrictii intre limite specificate. Se apeleaza cu una dintre sintaxele urmatoare: fplot (’fun’, limite), fplot(’fun’, limite, n), fplot(’fun’, limite, n, unghi)
52
3.1.2. Funcţii pentru generarea graficelor. Exemple.
Ex. 20: Sa se reprezinte graficul in trepte al functiei y=sin(x). Rezolvare: Cu urmatoarea secventa MATLAB se obtine graficul din figura 12: x=0:.2:6; y=sin(x); stairs(x, y);
Functia compass reprezinta grafic vectori cu originea in originea sistemului de coordonate. Se apeleaza cu una din sintaxele: compass(z) sau compass(x, y), unde z este numarul complex z = x + iy, iar x si y sunt numere reale (proiectia vectorului pe abscisa si ordonata). Ex. 21: Sa se reprezinte grafic vectorii z1=2-5i si z2=3+2i. Solutie: Cu secventa urmatoare se obtine graficul din figura: z=[2-5*i,3+2*i]; compass(z);grid 53
3.1.2. Funcţii pentru generarea graficelor. Exemple. Ex. 22: Sa se scrie un fisier function care sa reprezinte grafic functia y=sin(x) / x intre limitele [-20, 20] cu n=50 de esantioane, utilizand functia MATLAB de reprezentare grafica fplot . Solutie: Se scrie urmatorul fisier function cu numele test.m:
function y = test(x) y = sin(x) . / x;
Cu secventa urmatoarea scrisa in fereastra de comanda: fplot (’test’, [-20 20], 50); grid 54
3.1.3. Reprezentări grafice cu axe multiple Funcţiile pentru reprezentările grafice cu axe multiple difera fata de celelalte funcţii grafice prin modalităţile de scalare a axelor. Funcţia MATLAB plotyy genereaza un grafic cu 2 axe y (pe ambele parti). Se apeleaza cu una din sintaxele: plotyy(x1, y1, x2, y2) sau plotyy(x1, y1, x2, y2, ’function1’, ’function2’); in care şirul de caractere function, poate fi inlocuit cu orice functie MATLAB ce accepta sintaxa h = function(x, y), cum ar fi functiile, care genereaza reprezent ări grafice: plot, semilogx, semilogy, loglog sau stem. Comanda plotyy(x1, y1, x2, y2) reprezinta grafic vectorul (matricea) x1 funcţie de y1, cu axa y inscriptionata pe partea stanga, si x2 functie de y2 cu axa y pe partea dreapta. Comanda plotyy(x1, y1, x2, y2, ’function1’, ’function2’) utilizeaza functia function1(x1, y1) pentru a reprezenta grafic setul de date pentru axa din partea stanga a ferestrei si functia function2(x2, y2) pentru a trasa grafic setul de date pentru axele din partea dreapta. De asemenea, se pot genera grafice cu axe multiple, doua axe x si cu doua axe y (axe duble) independente. Prin aceasta facilitate se pot reprezenta pe acelasi grafic mai multe seturi de date, avand domenii diferite, utilizand o 55 scalare proprie pentru fiecare axa (exemplul 24).
3.1.3. Reprezentări grafice cu axe multiple. Exemplu
Ex. 23: Sa se reprezinte pe acelasi grafic,
tiparind axa y pe ambele parti, doua functii matematice (exp si sin) utilizand comanda plot Solutie: Se scrie un fisier script cu urmatoarea secventa: x = 0:0.01:20; y1 = 200 * exp(-.05 * x).*sin(x); y2 = 0.8 * exp(-0.5 * x).*sin(10*x); [AX, H1, H2] = plotyy(x, y1, x, y2, ’plot’) %comanda care separa cele doua axe, %atribuindu-i cate o figura (H1, H2) pentru %fiecare axa set(get(AX(1),'ylabel'),'String','Axa-y partea stanga')
%comanda de inscriptionare a axei y din stanga
set(get(AX(2),'ylabel'),'String','Axa-y partea dreapta')
%comanda de inscriptionare a axei y din dreapta
xlabel('0 la 20 \ musec'),title('Graficul este inscriptionat cu axa y pe ambele parti') %comenzi % pentru inscriptionarea titlului si a axei x 56
3.2. Reprezent ări grafice tridimensionale (3D)
Functia MATLAB plot3 este o functie analoaga functiei plot cu diferenta ca reprezinta grafic linii si puncte intr-un spatiu tridimensional (3D). Daca x, y si z sunt trei vectori de aceeasi lungime functia plot3(x, y, z) genereaza o linie reprezentata tridimensional prin punctele ale căror coordonate sunt elementele celor trei vectori. Daca X, Y si Z sunt trei matrici coloana de aceeaşi dimensiune atunci functia plot3(X, Y, Z) va genera un grafic de linii tridimensional obţinute din cele trei coloane ale matricii respective. Functia mesh (Fig. 19) reprezinta grafic suprafete 3D sub forma unor retele, functia meshc reprezinta grafic combinatia suprafata 3D / linii de contur, reprezentate sub suprafata respectiva ca proiectii in planul bazei, iar functia meshz reprezinta grafic suprafete tridimensionale cu plan de referinta la cota zero. Reprezentarea grafica a suprafetelor se realizeaza utilizand comanda surf iar functia surfc genereaza un grafic tridimensional cu liniile de nivel proiectate pe planul bazei. Aceste reprezentari grafice sunt utile in special pentru vizualizarea matricilor, care sunt prea mari pentru a putea fi reprezentate sub forma numerica, si pentru functiile grafice de doua variabile. 57
3.2. Reprezent ări grafice 3D . Exemple
Exemplu: Sa se reprezinte
grafic in 3D cu un pas de π / 50, un arc spiralat (spirala) utilizând funcţiile sin(t) si cos(t), ştiind ca t=(0-10π). Sa se inscripţioneze cele trei axe x, y si z. Solu ţi e: Cu secvenţa următoare se obţine graficul din figura: t = 0 : pi / 50 : 10*pi; plot3(sin(t), cos(t), t) 58
3.2. Reprezentari grafice grafice 3D . Exemple
Ex. 26: Sa se reprezinte grafic intr-un spatiu
3D trei matrici coloana (X, Y si Z) utilizand functia mesh. Solutie: Se scrie un fisier script cu secventa urmatoare, care va returna graficul din fig. 19. [X, Y] = meshgrid ([-2:0.1:2]); Z = X.*exp(-X.^2-Y.^2); plot3(X,Y,Z), grid on Ex. 27 : Sa se reprezinte grafic functia Z=X*exp(-X 2 -Y 2 ) ca suprafata mesh, mesh asociata cu linii de contur ( meshc ) si ca suprafata cu plan de referinta ( meshz ). Solutie: Cu secventa urmatoare se obtin reprezentarile grafice din fig. 20. [X, Y] = meshgrid (-2 : 0.2 : 2, -2 : 0.2 : 2); Z = X.*exp(-X.^2-Y.^2); subplot(131), mesh(X,Y,Z), subplot(132), meshc(X,Y,Z), subplot(133), meshz(X,Y,Z) 59
3.3. Crearea si controlul ferestrelor grafice
MATLABul are doua ferestre grafice de baza: o fereastra de comanda si o fereastra grafica ; Fereastra grafica poate fi impartita in mai multe ferestre ; MATLABul ofera facilitatea de-a putea compara mai multe figuri sau grafice prin crearea, de exemplu, mai multor grafice in ferestre diferite pe aceeasi figura. Functia subplot creeaza si controleaza ferestrele unui grafic si poate fi apelata cu una din sintaxele: subplot(m, n, p) sau subplot(h). Functia subplot(m, n, p) împarte ecranul intr-o matrice [m x n], creează axele in subfereastra p si returneaza identificatorul de control al noilor axe. Argumentele m, n si p trebuie sa fie numere intregi in intervalul (1, 9). Scalarul m precizeaza in cate subferestre se imparte fereastra pe verticala, iar n specifica impartirea ferestrei pe orizontala. De exemplu comanda subplot(324) creaza sase ferestre intr-o figura (imparte o figura in 6 ferestre) si creaza a patra fereastra ca reprezentare grafica curenta 60
3.3. Crearea si controlul ferestrelor grafice . Exemplu
Ex.: Sa se reprezinte grafic o forma de unda
sinusoidala, una cosinusoidala si o forma de unda tangenţiala, pe aceeaşi figura dar in ferestre diferite. Solutie: Se scrie un fisier-M cu următorul continut:
x = linspace(0, 2*pi, 50); %functia linspace genereaz ă un vector %linie cu 50 de puncte intre (0 - 2 π ) y = sin(x); z = cos(x), w = tan(x); subplot(2, 2, 1), plot(x, y) %genereaza o figura cu patru ferestre si creaza %prima fereastra cu functia sin(x) subplot(2, 2, 2), plot(x, z) % creaza a doua fereastra pentru functia cos(x) %pe prima linie si a doua coloana subplot(2, 2, 3), plot(x, w) % creaza a treia fereastra pentru functia tan(x) %pe a doua linie si prima coloana 61
4. Achiziţia, interpolarea si aproximarea datelor
MATLABul deţine o biblioteca de funcţii dedicate analizei datelor , incluzând si: -reprezentările grafice interactive (GUI); -metode de statistica descriptiva; -coeficienţi si metode de corelare, interpolare sau filtrare; -aproximarea unui set de date cu o functie; -cautarea datelor in tabele; -analiza Fourier si FFT. 62
4.1. Importul si exportul fisierelor de date
MATLABul furnizează mai multe modalit ăţi de a importa sau exporta fişiere de date din / în fereastra de lucru (workspace); Formatul datelor poate fi text, binar sau standard; Datele text sunt în format ASCII, iar cele binare nu sunt in format ASCII şi nici nu pot fi v ăzute într-un editor de text; Formatul binar reprezintă imagini, sunete sau alte informaţii; Fişierele de date pot fi importate sau exportate şi prin utilizarea unor funcţii MATLAB dedicate. Pentru utilizarea acestor funcţii este necesar să se cunoască formatul fişierului (txt, dat, csv, mat); Cea mai simpla metod ă, de a importa fi şiere de date, utilizează editorul Import Wizard ; 63
4.2. Prelucrarea datelor si calcule statistice Pentru a crea o matrice C care con ţine elementele maxime sau minime ale matricelor de aceea şi dimensiune A si B, se folose şte sintaxa: C = max(A, B) sau C = min(A, B). Daca fişierul de date con ţine mai multe coloane, analiza acestora si calculul statistic sunt realizate separat (independent) pentru fiecare coloana. Asta înseamnă ca daca dorim sa calculam, de exemplu, maximul unei matrice, rezultatul va fi un vector linie care conţine valorile maxime ale datelor de pe fiecare coloana. 64
In tabelul următor se prezintă principalele funcţii MATLAB dedicate prelucr ării datelor si calculelor statistice.
Functia
Descrierea functiei
min, max
Determina minimul sau maximul unui vector sau matrici
mean
Determina valoarea medie
prod, sum
Calculeaza produsul si suma
std
Calculeaza abaterea standard
diff
Calculeaza diferenta dintre 2 numere succesive
trapz
Calculeaza integrala folosind metoda trapezelor 65
Prelucrarea datelor si calcule statistice . Exemplu
Datele eronate sau cele care nu îndeplinesc o anumita condiţie, impusa de utilizator, pot fi înlocuite, ca in exemplul urm ător: Exemplu: Fie matricea A = [9 1000 4 8; 1 6 5 5; 3 2 7 1]; Sa se elimine coloanele matricei A care conţin cel puţin un element ce se abate de la valoarea medie cu mai mult de trei ori abaterea standard (legea celor 3 sigma din statistica). Solutie: Se scrie un fisier - m cu secventa: m = mean(A); %valoarea medie sigma = std (A); %abaterea standard [n, p] = size(A);
e = ones(n, 1); % generează o matrice coloana cu toate elem. egale cu 1 dist = abs(A – e * m); mcond=dist<3*e*sigma; %genereaza o matrice (3 x 4) cu toate elementele unu Y = A(: , find(all(mcond))) celim = p - length(find(all(mcond))) Daca variabila celim = 0, matricea Y va fi identica cu matricea A, deci nu
se elimina nici o coloana. Daca Y e diferit de 0, atunci coloanele care nu indeplinesc conditia sunt eliminate din matricea A. 66
Derivarea si integrarea numerica a func ţiilor Integrarea si derivarea sunt concepte fundamentale pentru rezolvarea unui num ăr mare de probleme atat in inginerie cat si in ştiinţa. In unele situa ţii nu pot fi ob ţinute soluţii analitice fiind necesara aplicarea metodelor de integrare si derivare numerica. Derivata unei func ţii f(x) reprezinta viteza de variaţie a funcţiei in raport cu variabila x, notata cu dx: -Interpretarea geometrica a derivatei intr-un punct este panta tangentei la graficul funcţiei in punctul considerat ; Integrala func ţiei f(x) pe intervalul [a, b] are semnificaţia ariei delimitata de axa ox, curba f(x) si dreptele x = a si x = b
67
Calculul numeric al integralei
Calculul numeric al unei integrale, denumit si cuadratura, se poate face prin:
– aproximarea funcţiei de integrat f(x) printr-o alta funcţie g(x) pe intervale finite; – aproximarea funcţiei f(x) cu un set de func ţii liniare pe por ţiuni, aria calculându-se ca suma trapezelor care o compun (metoda trapezelor ) Daca aproximarea se face cu func ţii pătratice pe por ţiuni, metoda de integrare se nume şte
metoda lui Simpson.
68
Functiile MATLAB pentru integrare numerica
Functiile quad si quad8 se apeleaza cu sintaxele: quad(’f’, a, b), quad(’f’, a, b, tol), quad(’f’, a, b, tol, trace)
In care „f” este numele unui fisier functie care descrie functia f(x), a si b sunt limitele de integrare, tol – eroarea relativa admisa dintre 2 pasi consecutivi si trace – controleaza afisarea pe ecran a valorilor intermediare. Functia trapz poate fi apelata cu una dintre cele doua sintaxe: Z = trapz(X, Y) sau Z = trapz(Y) Cand functia trapz este apelata cu doua argumente, calculeaza integrala functiei y(x), X fiind un vector coloana care conţine abscisele iar Y este un vector coloana sau o matrice, cu acelasi numar de linii ca X . Z este un scalar daca Y este un vector, sau un vector linie daca Y este o matrice. 69
Integrare numerica. Exemple
Ex.: Sa se calculeze integrala functiei sin(x) pe intervalul [0, π] cu un pas de integrare de π / 100. Solutie: Cu urmatoarea secventa se obtine rezultatul cerut: X = 0 : pi / 100 : pi; Y = sin(X); Z = trapz(X, Y)
Se obtine rezultatul Z = 1.9998 70
Ex. : Utilizând regula lui Simpson si metoda trapezelor sa se calculeze integrala funcţiei y = sin(x) pe intervalul [0 - π]. Solutie: Se scrie un fisier – m script cu secvenţa:
%Utilizarea regulii lui Simpson si metoda trapezelor pt. calculul integralei functiei y = f(x)
a = 0; b = pi; N = 4; x = linspace(a, b, 2*N + 1); y = sin(x); for k = 1 : 2 * N + 1 if k==1 | k==2*N+1 w(k) = 1; elseif rem(k, 2)==0 w(k) = 4; else w(k) = 2; end end Intsimp = ((b-a) / (3*length(x)-1)) * sum(y .* w) Inttrapz = trapz(x,y)
Se obtine rezultatul:
– Intsimp = 1.8464 – Inttrapz = 1.9742
71
Functia MATLAB pentru derivare
Functia MATLAB pentru derivare este diff si poate fi apelata cu sintaxele: Y = diff(X) sau Y = diff(X, n) sau Y = diff(X, n, dim)
daca X este un vector linie sau coloana, X = [x(1), x(2),..., x(n)], atunci functia diff(X) va returna vectorul diferentelor elementelor adiacente, adica XD = [x(2)-x(1), x(3)-x(2),..., x(n)x(n-1)]; daca X este o matrice atunci diferentele se calculeaza pe fiecare coloana prin scaderea elementului din linia imediat urmatoare (superioara): diff ( X ) = X (2 : m,:) − X (1 : m −1, :)
Unde m reprezinta nr. de linii. 72
Derivarea numerica. Exemple
Ex. 34: Sa se aproximeze derivata numerica a unei functii y(x) pentru
X = [0, 1, 2, 3, 4, 5] si Y = [2, 6, 3, 5, 9, 12]. Solutie: Functia diff permite aproximarea derivatei numerice a unei functii y(x) cu relatia: dy = diff ( Y ). / diff ( X )
-Cu urmatoarea secventa MATLAB: X = [0, 1, 2, 3, 4, 5]; Y = [2, 6, 3, 5, 9, 12]; Z = diff(X); W = diff(Y); % dy = W = diff(Y)
-Se returneaza rezultatele: Z= 1 1 1 1 W= 4 -3 2 4
1 3 73
Derivarea numerica. Exemple
Ex. 35: Sa se scrie un fisier function, utilizand instructiunea for , care sa
realizeze aproximarea derivatei numerice a unei functii y(x) stiind ca X si Y sunt aceleasi ca in exemplul precedent. Solutie: Se scrie un fisier function cu numele diffn.m cu urmatorul continut: function dY = diffn(X, n) dY = X; for i = 1:n dY = diff(dY); end Dupa rularea fisierului function diffn.m se tasteaza in fereastra de
comanda:
dy = diff(Y) ./ diff(X) sau dY
si se obtine acelasi rezultat ca in exemplul 34. 74
Derivarea si integrarea ecuatiilor diferentiale dy
= g ( x , y ) O ecuaţie diferenţiala de ordinul 1 are forma: dx Unde x este variabila independenta iar y este functia necunoscuta. 2 Un exemplu de ecua ţie diferenţiala de ordinul 1 este y’=3x . Cunoscând condiţia iniţiala y(0) = -7.5 va rezulta soluţia y’ = x3-7.5. Metodele numerice cele mai cunoscute, pentru rezolvarea ecuaţiilor diferenţiale, sunt metoda Euler si metoda RungeKutta (ode23, ode45). Aceste functii se apeleaza cu sintaxa:
y , =
[x, y] = ode23(’yprim’,x0, xf, y0, tol, trace)
In care x0 si xf sunt valorile iniţiala si finala a variabilei x, y0 este vectorul coloana con ţinând condiţiile iniţiale, tol reprezintă toleranta iar trace parametrii care asigura tip ărirea rezultatelor 75
Integrarea ecuatiilor diferentiale. Exemplu
Ex. Sa se integreze ecuaţia
diferenţiala y’ = 3x2 pe intervalul [2, 4] cu condiţia iniţiala y(2) = 0.5 si sa se reprezinte grafic funcţia rezultanta. Solu ţ ie: Se scrie un fi şier function cu următorul conţinut: function dy = g1(x, y) dy = 3 * x^2;
Care se apelează cu următoarea secvenţa MATLAB, scrisa in fereastra de comanda sau, mai convenabil, intrun fisier script: [x,yn] = ode23(’g1’, 2, 4, 0.5); %sol. numerica ya = x.^3 - 7.5; %solutia analitica plot(x, yn, ’*’, x, ya); grid
76
4.3. Interpolarea si aproximarea datelor
Interpolarea unui set discret de date [xi, yi] presupune determinarea unei funcţii f(x) a.i. f(xi)=yi. Sa presupunem ca dorim sa estimam valoarea y(x) pentru 2 puncte de coordonate (x1, y1) si (x2, y2), unde x1 < x < x2: – Daca punctele sunt unite printr-o dreapta, interpolarea se numeste liniara, – daca sunt unite printr-un polinom de gradul 3, interpolarea se numeste spline cubica. O alta problema, frecvent întâlnita in inginerie electrica, consta in aproximarea unui set de date cu o funcţie care reprezintă „cea mai buna aproximare”. In acest caz funcţia determinata nu va trece prin toate punctele si va încerca sa elimine posibilele erori de măsurare. – De exemplu, metoda celor mai mici pătrate furnizează cea mai buna aproximare in sensul minimizării pătratului distantelor dintre punctele date si functia de aproximare. 77
Functiile MATLAB pentru interpolarea si aproximarea datelor .
Functia
Descrierea functiei
table1, table2
Interpoleaza liniar si citeste datele din tabele uni si bi-dimensionale Interpoleaza datele din tabele unidimensionale prin metoda transformatei Fourier Interpoleaza datele din tabele unidimensionale prin metoda Spline Aproximeaza un set de date cu un polinom de gradul n Interpoleaza liniar, spline sau cubic date din tabele unidimensionale 78
interpft spline polyfit interp1
Interpolarea functiilor de o singura variabila
Obiectivul interpolării il constituie estimarea valorilor unei funcţii f(x) pentru orice punct x=[x1, x2] al unui set de date. – Curba de interpolare trece prin toate punctele care o definesc. – Legea de interpolare poate fi liniara, cubica sau polinomiala.
Interpolarea spline cubica reprezint ă o curba neteda dintre fiecare pereche de puncte, definita de un set de polinoame de gradul trei. De exemplu sase puncte sunt conectate intre ele prin cinci curbe diferite de gradul trei. Se apeleaza cu sintaxa: yi = spline(x, y, xi)
unde x si y sunt vectorii care con ţin abscisele si ordonatele setului de date (cu pas de e şantionare mare), xi este un vector care conţine noile abscise, de regula cu un pas mai fin, iar yi este vectorul returnat asociat vectorului xi. Obs: Toate legile de interpolare necesita ca elementele lui x sa fie ordonate crescator. In plus, metoda cubic cere ca punctele de pe axa x sa fie 79situate
Pentru a sublinia diferenţa dintre cele doua tipuri de interpolări (liniara si spline) se prezintă exemplul următor cu reprezentare grafica:
Ex: Sa se reprezinte grafic o interpolare liniara si una spline cubica prin 6 puncte. Soluţ ie: Cu secvenţa: x = [0, 1, 2, 3, 4, 5]; y = [0, 20, 55, 60, 90, 100]; xi = 0 : 0.1 : 5; yi = spline(x , y, xi); plot(x, y, xi, yi, x, y,’o’) title(’Comparatie intre interpolare liniara si spline’); xlabel(’Timpul (s)’), ylabel(’Temperatura (grade)’);grid 80
Aproximarea datelor prin metoda celor mai mici pătrate
Pentru ca aproximarea sa fie considerata „cea mai buna” suma p ătratelor distantelor de la fiecare punct la curba (dreapta) aproximata (linie sau polinom) trebuie sa fie minima. Este posibil ca nici un punct sa nu se găsească pe curba aproximata. Acest lucru separa foarte clar aproximarea de interpolare. Aproximarea datelor printr-o linie dreapta se numeşte regresie liniara iar aproximarea unor date printr-un polinom se numeşte regresie polinomiala. Regresia liniara minimizează suma pătratelor dintre dreapta de aproximare si punctele date. Măsura calităţii unei aproximări liniare este data de suma pătratelor, după cum reiese si din ecuaţia:
sum _ p = sum ( y − y1 ).^ 2 Determinarea parametrilor m si n ai dreptei de aproximare y = mx+n se face utilizând funcţia polyfit . Determinarea celei mai bune aproximări a unui set de date (x, y) cu un polinom de ordinul n, poate fi apelata cu sintaxa: p = polyfit(x, y, n) 81
Aproximarea datelor prin metoda celor celor mai mici pătrate. Exemple.
Exemplu: Sa se aproximeze un set de date (x, y), utilizând metoda celor mai mici pătrate. Soluţ ie:Se scrie un fişier MATLAB cu secvenţa următoare, obţinânduse graficul din figura: x = [0, 1, 2, 3, 4, 5]; y = [0, 20, 55, 60, 90, 100]; coef = polyfit(x, y, 1); %determinarea parametrilor m = coef(1); n = coef(2); %parametrii dreptei de aproximare y1 = m * x + n; sum_p = sum((y-y1).^2 ;
%minimizarea sumei patratelor distantelor
plot(x, y1, x, y, ’*’)
82
Aproximarea datelor prin metoda celor celor mai mici pătrate. Exemplu.
Funcţia polyfit returnează coeficienţii (a )i ai polinomului p(x), care in punctele precizate de vectorul x are, in sensul celor mai mici pătrate, valorile date de vectorul y . Ex: Fie polinomul p(x) = x 3-6x2+11x-6, peste care este suprapus un zgomot cu distribuţie normala. Aproximaţi datele rezultate cu un polinom de gradul 3 utilizând metoda celor mai mici p ătrate. Reprezentaţi grafic datele cu zgomot si polinomul aproximat. Solutie: Cu secvenţa următoare se obţine graficul din figura: p = [1, -6, 11, -6]; x = 0 : .25 : 4; y = polyval (p, x) + randn(size(x)); %generarea polinomului p(x) peste care s-a %suprapus un zgomot cu distributie normala
c = polyfit (x, y, 3); % aproximeaza un polinom de ord. 3 poli3 = polyval (c, x); % evaluarea polinomului c pt. valorile precizate de x
plot(x, poli3, x, y,’*’);grid
83
Analiza Fourier si Transformata Fourier Rapida Analiza Rapida (FFT) Analiza Fourier este extrem de utila pentru procesarea datelor , deoarece descompune un semnal intr-un sir de componente sinusoidale de frecvente diferite , f ăcând trecerea din domeniul timp in domeniul frecventa, realizând calculul amplitudinii si fazei variabilelor (datelor, semnalelor) transformate. Pentru eşantionarea datelor vectoriale, analiza Fourier utilizează transformata Fourier discreta (discrete Fourier transform-DFT). Transformata Fourier rapida - FFT (Fast Fourier Transform) este un algoritm foarte eficient pentru calcularea transformatei Fourier, sau a transformatei Fourier discrete (DFT). De asemenea, FFT este o unealta utila pentru filtrarea datelor , procesarea semnalelor sau pentru procesarea imaginilor in domeniul frecventei si pentru estimarea spectrului puterii.
84
Analiza seriei Fourier
Daca g(t) este o functie periodica, cu perioada Tp: g (t ) = g (t ±T p )
Si daca in orice interval finit g(t) are cel puţin un număr de discontinuitati si un numar finit de minimuri si maximuri (condiţiile lui Dirichlet), atunci g(t) poate fi exprimata cu o serie de functii sinusoidale: g (t ) =
a0 2
∞
+ ∑ an ⋅ cos(n ⋅ w0 ⋅ t ) + bn ⋅ sin(n ⋅ w0 ⋅ t ) n =1
Unde w0 = 2*pi / T, a0 / 2 este componenta continua a seriei si reprezintă valoarea medie a funcţiei g(t) pe o perioada. 85
4.4.3. Transformata Fourier
Unealta matematica pentru analiza unui semnal in domeniul frecventei este Transformata Fourier care poate lua diferite forme in funcţie de semnalul analizat. Ceea ce au in comun aceste semnale este faptul ca sunt alcătuite dintr-un număr de componente sinusoidale de frecvente diferite, fiecare având o anumita amplitudine si faza initiala. Transformata Fourier face conversia unui semnal din domeniul timp intrun semnal discret in domeniul frecventa. Daca g(t) este un semnal neperiodic exprimat ca func ţie de timp, transformata Fourier a funcţiei g(t) este data de expresia integrala: G ( f ) =
∞
∑= g (t ) exp(− − j 2π ft ) dt
…..(18) Valoarea semnalului g(t) poate fi obţinuta din expresia transformatei Fourier (ec. 18) utilizând relaţia transformatei Fourier inverse: G (− f ∞)
∞
∑ g (t ) exp(
j 2π ft ) dt
−∞
∞
g ( t ) =
∫ G ( f ) exp( j 2π ft ) df
86
Transformata Fourier
Daca g(t) este un semnal continuu si periodic: g (t ) = g (t ± nT p )
Unde Tp este perioada semnalului, va rezulta transformata Fourier a functiei g(t) sub forma: G ( f ) =
1 T p
∞
∑ n = −∞
⎛ ⎜ ⎝
c n ⋅ δ ⎜ f −
1 ⎞
⎟ T p ⎠⎟
iar cn se poate exprima prin relatia: cn =
1 T p
∫ g (t ) exp(− j 2 ⋅ π ⋅ n ⋅ f ⋅ t )dt 0
87
Transformata Fourier rapida (FFT)
Transformata Fourier rapida (FFT) este o metoda eficienta de calcul a transformatei Fourier discrete. FFT reduce numărul de calcule matematice necesare pentru calculul transformatei Fourier discreta (DFT). FFT poate fi utilizata pentru calculul spectrului puterii unui semnal, pentru filtrarea digitala a semnalelor sau pentru obţinerea corelaţiei dintre 2 semnale. Functia MATLAB pentru calcularea transformatei Fourie discrete (DFT) a unui vector x , utilizand algoritmul de calcul al transformatei Fourier rapide (FFT) este: fft(x). Functia fft(x, N) se utilizează pentru a obţine FFT pentru un vector de lungime N (cu N puncte). Daca X este o matrice, functia fft returnează transformata Fourier a fiecărei coloane. Daca lungimea lui X este mai mica decat N, atunci matricea X este completata cu valoarea zero pana la dimensiunea N. Daca lungimea lui X este mai mare decât N, atunci secvenţa matricei X este trunchiata (redusa, micsorata). 88
MATLAB furnizează o colecţie de funcţii pentru calcularea si determinarea transformatei Fourier : Functia
Descrierea functiei
fft fft2 fftn ifft abs angle unwrap
Calculează transformata Fourier rapida Calculează transformata Fourier rapida (discreta) de ordinul 2 Calculează transformata Fourier rapida (discreta) de ordinul n Calculează transformata Fourier discreta inversa Calculează modulul (amplitudinea) Calculează unghiul de faza Elimina discontinuităţile unghiului de faza si genereaz ă un semnal 89 in radiani
FFT - Exemple
Ex. : Sa se calculeze si sa se reprezinte grafic amplitudinea unui semnal x = sin(2π*15*t) utilizand functia fft . b) Sa se reprezinte pe acelasi grafic faza si amplitudinea semnalului. Solutie: Se scrie un fisier script cu urmatorul continut, care va genera graficul din figura urmatoare: %Acest fisier calculeaza amplitudinea transformatei Fourier rapide a unei secvente
t = (0:99) / 100; % vectorul timp x = sin(2*pi*15*t) + sin(2*pi*40*t); %semnalul achizitionat y = fft (x); % calculeaza DFT a semnalului m = abs(y); %amplitudinea semnalului f=(0 : length(y) - 1) '/ length(y)*100; % vectorul frecventei subplot(211), plot(t,x), xlabel('timpul (s)'), ylabel('x(t)'), title(’Semnalul achizitionat in domeniul timp’) subplot(212), plot(f,m), xlabel('frecventa(Hz)'), ylabel('Amplitudinea semnalului'),title('Amplitudinea unui semnal calculata cu functia fft') p = unwrap(angle(y)); %functia angle calculeaza faza semnalului si functia unwrap elimina discontinuitatile fazei
figure, subplot(211), plot(f,m), ylabel('Amplitudinea semnalului'), grid; subplot(212), plot(f, p*180 / pi), xlabel('Frecventa (Hz)'), ylabel('Faza (grade)'),grid 90
FFT – Reprez. graf . a ampl si fazei unui semnal
91
FFT - Exemple
Ex.: Sa se scrie un fisier function care sa calculeze transformata
Solutie: Se scrie următorul fişier function cu numele testfft :
Fourier rapida a unui semnal de forma: x=2*sin(2*pi*50*t)+1.5*sin(2*pi*100*t)+sin(2*pi*200*t)+0.5*sin(2*pi*35 0*t);si care sa returneze vectorii frecventa si amplitudine. Sa se reprezinte pe acelaşi grafic amplitudinea si faza funcţie de frecventa.
function [f, X] = testfft t = 0 : .001 : 0.39; % crearea vectorului timp fe = 1 / (t(2) - t(1)); % frecventa de esantionare x=2*sin(2*pi*50*t)+1.5*sin(2*pi*100*t)+sin(2*pi*200*t)+0.5*sin(2*pi*350*t);
Xt = fft(x); % calcularea DFT a secventei Xm = abs(Xt); % calcularea amplitudinii FFT N=length(x);X=Xm(1:N / 2+1);Xp=Xt(1:N / 2+1);P=unwrap(angle(Xp)); f = [0 : N / 2] * fe / N; % crearea vectorului frecventa subplot(311), plot(t,x), subplot(312), plot(f,X), 92 subplot(313), plot(f,P*180 / pi)
FFT - Exemple
93
5. Analiza circuitelor electrice Utilizarea MATLABului pentru rezolvarea circuitelor electrice poate fi văzuta ca o metoda alternativa sau ca o solu ţie simultana pentru rezolvarea ecua ţiilor care le definesc. Prin scrierea unor programe, ca fi şiere script sau function, si prin utilizarea func ţiilor MATLAB, cum ar fi: ode, diff, fplot, plot, global etc, se pot calcula si vizualiza diferi ţi parametrii (curentul, tensiunea, puterea etc) care caracterizeaza functionarea circuitului respectiv, atat in regim staţionar cat si in regim tranzitoriu. Variaţia parametrilor unui circuit poate fi studiata prin aplicarea teoremelor si legilor din electrotehnica (Teoremele lui Kirchoff, Legea lui Ohm etc). Teoremele lui Kirchoff reprezintă, de fapt, relaţiile fundamentale pentru calculul circuitelor electrice.
94
5.1. Circuite electrice de curent continuu
Circuitele electrice de curent continuu sunt circuitele aflate in regim electrocinetic sta ţionar. Ele sunt formate dintr-un ansamblu de surse electrice (tensiune, curent), rezistoare, bobine si /sau condensatoare. Calculul unui circuit electric se poate face pe baza schemei electrice a acestuia in care intervin doar parametrii elementelor de circuit. In analiza circuitelor electrice in regim sta ţionar intervin diferite conexiuni de rezistoare si surse de tensiune si / sau curent. 95
Analiza circuitelor in regim stationar
Ex. 44: Se da circuitul rezistiv din figura. Cunoscandu-se parametrii R1 = 100 Ω, R2 = 100 Ω, Us = 5V. Sa se calculeze si sa se reprezinte grafic curentul (I) prin circuit si tensiunea (U) la bornele rezistentei de sarcina (R2) a circuitului. Sa se calculeze si sa se reprezinte grafic transferul maxim de putere (puterea disipata pe rezistenta de sarcina), ştiind ca U = 10 V, R1 = 10 kΩ, rezistenta de sarcina se modifica in plaja R 2 = (0-50) kΩ, U s =U +U 1 =U + R1 ⋅ I cu pasul de 1 kΩ. Solutie: Marimea de intrare este U − U U U s ⋅ R 2 tensiunea sursei (Us), iar parametrii de L1 : I = s ; L2 : I = U = R1 R R 1 + R 2 iesire sunt curentul (I) si tensiunea (U). Aplicandu-se Teorema lui Kirchoff pentru 2 tensiuni (teorema a doua) se obtine: U ⋅ R U 2 P 2 =
R 2
=
s
2
( R 1 + R 2 )2 96
Se scrie un fisier function cu numele L1 care conţine urmatoarea secventa: function I=L1(u) r1=100; r2=100;us=5; I=(us-u)/r1;
function I=L2(u) r1=100; r2=100; us=5; I=u / r2;
Dupa rularea fisierului L1, se tasteaza urmatoarea comanda, in fereastra de comenzi (command window), subplot(121), fplot('L1',[0,5]), grid, subplot(122), fplot('L2', [0,5]), grid In fisierul function L1 de mai sus trebuie declarate valorile numerice ale celor doua rezistente in definirea fiecarei functii. Daca avem mai mult de doua astfel de functii programul poate deveni dificil iar timpul de rulare poate fi suficient de mare.
Pentru a face legatura intre parametrii tuturor secventelor function, se utilizeaza functia global: 2) Se scrie un fisier function cu numele L2, utilizand functia global: function I = L2(u) global r1 r2 us = 5; I = u / r2; function I = L1(u) global r1 r2 us=5; I = (us-u) / r1; De asemenea, se mai scrie un fisier script cu numele „TestL1”, care trebuie apelat dupa rularea fisierul function L2, cu urmatoarea secventa, global r1 r2 r1 = 100; r2 = 100; u=0:0.01:5; I1 = L1(u); I2 = L2(u); figure, subplot(121), plot(u, I1), grid,subplot(122), plot(u, I2), grid 97
b) Puterea disipata pe rezistenta de sarcina se poate calcula cu următoarea secvenţa, utilizând ecuaţia (29): %acest fi şier script calculeaz ă
% transferul maxim de putere %disipata pe rezistenta de sarcina us=10; r1=10e3; r2=0:1e3:50e3; k = length(r2); %componentele vectorului r2 %Secventa următoare va calcula puterea disipata pe R2 for i = 1 : k p2(i) = ((us/(r1 + r2(i)))^2) * r2(i); end plot(r2, p2, r2, p2,’o’), title(’Puterea disipata pe rezistenta de sarcina’); xlabel(’R_2 (W)’), ylabel(’P_2 (W)’)
98
Calculul tensiunilor si curenţilor intr -un circuit electric Rezolvarea circuitelor electrice se poate face prin: Aplicarea teoremelor lui Kirchoff si legea lui Ohm ; I = inv (Z)*V sau I = Z \ U Utilizarea Teoremei curentilor ciclici (de contur). Prin aceasta metoda se pot calcula curentii din ochiurile de retea a circuitului respectiv. Teorema potentialelor la noduri. Prin aplicarea aceastei metode, daca circuitul respectiv conţine N noduri si noi selectam unul dintre ele ca referinta, vor rezulta N-1 ecuatii din care putem calcula tensiunea intre nodurile circuitului respectiv. 99
Ex. 45: Sa se calculeze tensiunile si curentii pentru circuitul din figura, stiind ca: RL = 2Ω; Solutie: Aplicand teoremele lui Kirchoff si legea lui Ohm putem scrie urmatoarele ecuatii pentru curentii si tensiunile circuitului electric din figura: U1 = 5, U1-U2 = 50 I1, U2-U3 = 100 I2, U2 = 300 I3, U3 = 2 I2, I1 = I2+I3 Ansamblul ecuatiilor valorilor necunoscute ale tensiunilor si curentilor are forma matriciala (A): Construim un vector coloana UI, cu primele trei componente reprezentand tensiunea (U1, U2, U3) iar urmatoarele trei componente se refera la curentii din circuit (I1, I2, I3). Dupa care scriem un fisier script cu urmatoarea secventa: A=[1 0 0 0 0 0;1 -1 0 -50 0 0;0 1 -1 0 -100 0;0 1 0 0 0 -300;0 0 1 0 -2 0;0 0 0 1 -1 -1]; Us=[5; 0; 0; 0; 0; 0]; UI = A \ Us; UI = 5.0000 3.0178 0.0592 0.0396 0.0296 0.0101
0 0 0 ⎤ ⎡1 0 0 ⎢1 − 1 0 − 50 ⎥ 0 0 ⎢ ⎥ ⎢0 1 − 1 0 − 100 0 ⎥ A = ⎢ ⎥ − 0 1 0 0 0 300 ⎢ ⎥ ⎢0 0 1 0 0 ⎥ −2 ⎢ ⎥ 1 −1 − 1 ⎥⎦ ⎢⎣0 0 0
100
Rezolvarea circuitelor cu Teorema curentilor de contur (ciclici)
Ex. 46: Utilizând teorema curenţilor de contur sa se calculeze curentul (I) care trece prin rezistenta R4 a circuitului din figura si puterea (P) furnizata de sursa de tensiune (us = 10 V), ştiind ca R = 10 Ω, R1 = 30 Ω, R2 = 15 Ω si R3 = 30 Ω: Solutie: Utilizând teorema curenţilor de contur si alegând sensurile acestora ca in figura se poate observa ca puterea furnizata de sursa de tensiune este P = 10 I1 iar curentul care trece prin rezistenta R4 este I = I3 – I2. Se scriu ecuaţiile corespunzătoare fiecărui ochi de reţea:
⎧10⋅ ( I 1 − I 2 ) +30⋅ ( I 1 − I 3) −10= 0⎫ ⎨ ⎬ 40 I 10 I 30 I 10 ⋅ − ⋅ − ⋅ = 2 3 ⎩ 1 ⎭ ⎧10⋅ ( I 2 − I 1 ) +15⋅ I 2 + 5⋅ ( I 2 − I 3 ) = 0⎫ ⎨ ⎬ − ⋅ + ⋅ − ⋅ = 10 I 30 I 5 I 0 1 2 3 ⎩ ⎭ ⋅ I 3 = 0⎫ ⎧30⋅ ( I 3 − I 1 ) + 5⋅ ( I 3 − I 2 ) + 30101 ⎨ ⎬
In forma matriciala ecuatiile (37) - (39) devin: ⎡ 40 − 10 − 30⎤ ⎡ I 1 ⎤ ⎡10⎤ ⎢ − 10 30 − 5 ⎥ ⋅ ⎢ I ⎥ = ⎢ 0 ⎥ ⎢ ⎥ ⎢ 2⎥ ⎢ ⎥ ⎢⎣− 30 − 5 65 ⎥⎦ ⎢⎣ I 3 ⎥⎦ ⎢⎣ 0 ⎥⎦
Programul MATLAB pentru calcularea curentilor I1, I2 si I3 si I si a puterii P poate fi scris intr-un fisier script:
Z = [40 -10 -30; -10 30 -5; -30 -5 65]; U = [10 0 0]‘ ; I = inv(Z)*U; Ir4 = I(3) – I(2);%curentul prin rezistenta R4 fprintf('Curentul prin rezistorul R4 este : %8.3f A \n', Ir4') P = I(1)*10; %puterea furnizata de sursa de tensiune fprintf('Puterea furnizata de o sursa de tensiune de 10V este: % 8.4 f W \ n ‘ , P)
MATLABul genereaza urmatorul raspuns: Curentul prin rezistorul R4 este: 0.037 A Puterea furnizata de o sursa de tensiune de 10V este: 4.7531 W 102
Rezolvarea circuitelor cu Teorema potentialelor la noduri
Ex. 47: Pentru circuitul din figura 38, sa se gaseasca tensiunea intre nodurile 1, 2 si 3 (U1, U2 si U3). Solutie: Utilizand teorema lui Kirchoff si luand in U 1 −U 2 U 1 −U 3 considerare regula conform + −5 = 0 10 20 careia curentii care ies dintr-un nod sunt pozitivi, U 2 −U 1 U 2 U 2 −U 3 U 3 −U 1 U 3 −U 2 + + =0 vor rezulta urmatoarele + −2= 10 50 40 20 40 ecuatii pentru fiecare nod: 103
In forma matriciala ecuatiile 44-46 devin: − 0.1 − 0.05 ⎤ ⎡U 1 ⎤ ⎡5 ⎤ ⎡ 0.15 ⎢ − 0.1 0.145 − 0.025⎥ ⋅ ⎢U ⎥ = ⎢0 ⎥ ⎢ ⎥ ⎢ 2⎥ ⎢ ⎥ ⎢⎣− 0.05 − 0.025 0.075 ⎥⎦ ⎢⎣U 3 ⎥⎦ ⎢⎣2⎥⎦
Fişierul script care calculează sistemul matricial de ecuaţii si care generează valorile tensiunilor la noduri are forma: %Acest fi şier calculeaz ă tensiunile la noduri U1, U2 si U3 Y = [0.15 -0.1 -0.05; -0.1 0.145 -0.025; -0.05 -0.025 0.075]; I = [5; 0; 2]; fprintf (‘ Tensiunile la noduri U1, U2 si U3 sunt: \ n ') U = inv(Y) * I
Se returnează următorul rezultat: Tensiunile la noduri U1, U2 si U3 sunt: U= 404.2857 350.0000 412.8571
104
Circuite electrice in regim tranzitoriu
Calculul mărimilor circuitelor electrice in regim tranzitoriu se refera la circuitele cu caracter capacitiv si / sau inductiv Se rezolva cu ajutorul Teoremelor lui Kirchoff, metoda transformatei Laplace (metoda operationala), Teorema curentilor de contur sau Teorema potentialelor la noduri, Teorema conditiilor initiale, Teoremele generatoarelor echivalente (Teorema lui Tevenin si Teorema lui Norton) sau cu ajutorul marimilor de stare (MM - ISI).; 105
Circuite electrice in regim tranzitoriu
Pentru analiza circuitelor de curent continuu in regim tranzitoriu se considera circuitul RC descris in figura Studiul acestui circuit se poate face cu ajutorul Teoremei lui Kirchoff pentru curent; Daca condensatorul este initial neincarcat, u(t) = 0 la t=0 (conditii initiale), atunci solutia ecuatiei este data de relatia: u(t) reprezinta raspunsul in domeniu timp a unui circuit RC, sau iesirea unui circuit care are ca intrare o tensiune continua constanta, iar RC reprezinta constanta de timp a circuitului.
C ⋅
du(t ) dt
+
u(t ) − us R
=0
⎛ t ⎞ ⎛ −⎜ ⎟ ⎞ ⎝ RC ⎠ ⎟ ⎜ u (t ) = us ⋅ 1 − e ⎜ ⎟ ⎝ ⎠
106
Circuite electrice in regim tranzitoriu - Exemple
Ex. 48: Sa se reprezinte grafic tensiunea (u(t)) la bornele unui condensator, stiind ca C = 10 µF, daca rezistenta R = 1 k Ω, R = 10 kΩ si R = 0.1 k Ω. Solutie: Se scrie un fisier script cu urmatorul continut: %incarcarea unui circuit RC c=10e-6; r1 = 1e3; tau1 = c*r1; t = 0 : 0.002 : 0.05; u1 = 10*(1-exp(-t / tau1)); r2 = 10e3; tau2 = c*r2; u2 = 10*(1-exp(-t / tau2)); r3 = 0.1e3; tau3 = c*r3; u3 = 10*(1-exp(-t / tau3)); plot(t,u1,t,u2,t,u3), title(’Incarcarea unui condensator cu trei constante de timp’); axis([0 0.06 0 12]); xlabel(’Timpul (s)’), ylabel(’Tensiunea pe condensator (V)’)
107
Ex. 49: Pentru o tensiune de intrare dreptunghiulara (us) cu amplitudinea de 5V si latimea pulsului de 0.5 sec si un condensator C = 10 µF, sa se reprezinte grafic tensiunea la bornele condensatorului u(t) pentru o rezistenta de 2.5 k Ω si apoi pentru una de 10 k Ω.
Solutie: Se scrie un fisier function cu numele rceval care va conţine secventa: function [v, t] = rceval (r, c) tau = r*c; for i = 1:50 t(i) = i / 100; v(i) = 5*(1-exp(-t(i) / tau)); end vmax = v(50); for i=51:100 t(i) = i / 100; v(i) = vmax*exp(-t(i-50) / tau); end Si un fisier script cu numele testrceval , care va apela fisierul function rceval , si care conţine secventa :
c=10.0e-6;r1=2500; [v1,t1] = rceval (r1,c); r2 = 10000; [v2, t2] = rceval (r2, c); figure, plot(t1,v1,t1,v1,'*b',t2,v2,t2,v2,'og'), axis([0 1 0 6]) title('Raspunsul unui circuit RC pentru un semnal de intrare dreptunghiular') xlabel('Timpul (s)'), ylabel('Tensiunea pe condensator (V)')
108
Transformata Laplace
Una din cele mai simple modalitati ale MATLABului de a calcula si de-a reprezenta grafic curentul si tensiunea unui circuit RLC, pentru studiul diferitelor regimuri tranzitorii, este utilizarea transformatei Laplace. Un sistem de ecuaţii, care defineşte funcţionarea unui circuit RLC, conţine ecuaţii diferenţiale care pot fi convertite foarte simplu in ecua ţii algebrice cu ajutorul Transformatei Laplace. Necunoscutele circuitului (tensiunea sau curentul) vor fi calculate in acest caz in domeniul operational (s). De asemenea, utilizând Transformata Laplace inversa, soluţia unei ecuaţii poate fi exprimata in domeniul timp. 109
Ex. 51: Sa se determine tensiunea u(t) la bornele unui condensator pentru circuitul RLC paralel din figura 45, ştiind ca R = 10 Ω, L = 1 / 32 H, C = 50 µF, Is = 2 A.
La t < 0, tensiunea la bornele condensatorului este uC(0) = 2 * 10 = 20V si curentul prin bobina i L = 0; La t > 0, comutatorul se închide si toate cele patru elemente sunt in paralel. Utilizând Teorema lui Kirchoff va rezulta ecuaţia: Aplicând Transformata Laplace ecuaţiei (57) vom obţine:
I s =
u(t ) R
+ C ⋅
I s U ( s) s
=
R
du(t ) dt
1
t
+ ⋅ ∫ u(τ ) ⋅d τ + i L (0) L
0
U ( s) I L(0)
+C s [ ⋅U ( s)−U c(0)] +
sL
+
s
110
Se scrie un fisier function, cu numele diff2, cu solutia ecuatiei diferentiale si un fisier script principal care apeleaza fisierul function si care reprezinta grafic tensiunea la bornele condensatorului utilizand functia MATLAB ode23 si Transformata Laplace: % Fisierul function cu Solutia unei ecuatii diferentiale de ordinul 2
function xderivat = diff2(t, x) is=2;C=50e-6;L=1/32;R=10; k1=1/C; k2=1/L; k3=1/(R*C); xderivat = [0 k2; -k1 -k3]*[x]+[0; k1*is]; %Fisierul script principal pentru analiza regimurilor tranzitorii a unui circuit RLC paralel %utilizand functia ode (solutie numerica) si Transformata Laplace %Analiza reg. tranzitoriu cu functia ode23
t0 = 0; tf = 30e-3; tspan = [t0 tf]; x0 = [0 20]; % conditiile initiale [t, x] = ode23('diff2', tspan, x0); subplot(211), plot(t, x(:,2)); %coloana 2-a a matricii x reprezinta tensiunea pe condensator xlabel('Timpul, s'), ylabel('Tensiunea pe condensator, V'); %Analiza reg. tranzitoriu utilizand Transformata Laplace
t2 = 0:1e-3:30e-3; ut = -6.667*exp(-1600*t2)+26.667*exp(-400*t2); subplot(212), plot(t2, ut); xlabel('Timpul (s)'),ylabel('Tensiunea pe condensator (V)');
111
112
Circuite electrice de curent alternativ
Conceptual nu exista nici o diferen ţa intre studiul circuitelor electrice pur rezistive, in regim staţionar (permanent sinusoidal), si studiul circuitelor electrice inductive si capacitive, daca scriem ecuaţiile circuitelor in forma matriciala sau le înlocuim cu fazori. Singura diferenţa, fata de circuitele rezistive, consta in faptul ca matricele conţin ca elemente numere complexe si impedanţa acestor circuite depinde de frecventa. Relaţiile fazoriale tensiune – curent pentru rezistor, bobina si condensator sunt: U R = I ⋅ R ; U L = I ⋅ ( j ω L ); U C =
I
( j ω C )
Si in acest caz pentru studiul diferitelor regimuri de func ţionare se utilizează Teoremele lui Kirchoff, Teorema poten ţialelor la noduri, Teorema curen ţilor ciclici (de contur) etc. MATLABul utilizează funcţii de integrare numerica (quad, quad8 ) pentru a obţine valorile efective, medii sau instantanee ale diferi ţilor parametrii, cum ar fi curentul, tensiunea sau puterea. Circuitele trifazate pot fi analizate prin conversia in domeniul frecventa Daca se cunoaşte funcţia de transfer (fdt) a unui circuit, libr ăria de funcţii MATLAB conţine funcţii dedicate care pot evalua fdt la o anumita frecventa, sau pot calcula polii si zerourile funcţiei respective 113
Analiza circuitelor electrice de c.a. in regim stationar
MATLABul conţine doua functii pentru integrarea numerica, quad si quad8, a circuitelor electrice. Ex. 52: Pentru circuitul din figura se cunosc valorile instantanee ale tensiunii si curentului. Sa se determine puterea medie, valoarea efectiva a tensiunii si factorul de putere utilizand
u (t ) = 10 cos( 220π t + 30 0 ) i (t ) = 6 cos( 220π t + 60 0 ) 1
U ef = U = I ef = I =
– a) metoda analitica – b) metoda numerica. 1
T 1 T
T
⋅
∫u
2
0 T
⋅
∫i
2
( t ) ⋅ dt
0
T
∫
P ⋅ u(t ) ⋅ i(t ) ⋅ dt medie = p(t ) =
( t ) ⋅ dt
k =
P
=
P
114
Solutie: Se scrie fisierul script cu urmatorul continut, care va apela si un
fisier function („Tensiunea”) creat pentru a defini tensiunea, curentul si puterea:
%Acest fisier calculeaza puterea medie si efectiva si factorul de putere %utilizand functia MATLAB de integrare numerica quad
%Calcul numeric T = 2*pi / (220*pi);%perioada formei de unda sinusoidale a = 0;b = T; %limitele de integrare x = 0 : 0.02 : 1; t = x .* b; Uint = quad('Tensiunea', a, b); Uef = sqrt(Uint / b); %tensiunea efectiva Iint = quad('Curentul', a, b); Ief = sqrt(Iint / b); %Valoarea efectiva a curentului Pint = quad('Putereainstantanee',a,b); Pmedie = Pint / b; %puterea medie k = Pmedie / (Ief * Uef); %factorul de putere %Solutia analitica: P_amedie = (60 / 2)*cos(30*pi / 180); U aef = 10 / sqrt(2); k a = cos(30*pi / 180);
115
fprintf('Puterea medie analitica %f \ n Puterea medie numerica: %f\n',P_amedie,Pmedie) fprintf('Tensiunea efectiva analitica % f \ n Tensiunea efectiva numerica: %f \ n', U_aef, Uef) fprintf('Factorul de putere analitic % f \ n Factorul de putere numeric: %f\n', k_a, k)
Fisierul function Tensiunea are următorul conţinut: function Usq = Tensiunea(t) %aceasta functie este utilizata pt. a defini tensiunea instantanee Usq = (10*cos(220 * pi * t + 60 * pi / 180)).^2; function Isq = Curentul(t) %Aceasta functie defineste curentul instantaneu Isq = (6*cos(220 * pi * t + 30 * pi / 180)).^2; function Pt = Putereainstantanee(t) %aceasta functie defineste puterea instantanee It = 6*cos(220 * pi * t + 30 * pi / 180); Ut = 10 * cos(220* pi * t + 60 * pi / 180); Pt = It * Ut;
116
Circuite de curent alternativ RC, RL si RLC
Rezolvarea circuitelor de curent alternativ (studiul diferitelor conditii de functionare), cu ajutorul MATLABului, se poate face prin metode analitice si prin metode numerice iterative. In inginerie electrica se apeleaza de multe ori la ecuatii diferentiale pentru studiul diferitelor probleme tehnice, cum ar fi rezolvarea circuitelor electrice. Se scriu ecuatiile unui astfel de circuit aplicand, de exemplu Legea lui Ohm sau Teoremele lui Kirchoff, dupa care se rescriu ecuatiile intr-o forma diferentiala simplificata de ordinul 1 sau 2, in functie de elementele componente ale circuitului respectiv 117 (bobine, condensatoare).
Ex. 53: Sa se calculeze si sa se reprezinte grafic tensiunea la bornele condensatorului (tensiunea de iesire) pentru circuitul RC din figura, pentru intervalul de timp 0<=t<=6, stiind ca tensiunea de alimentare (tensiunea de intrare) este un semnal sinusoidal (u=sin(t)). Ecuatia diferentiala care descrie tensiunea pe condensator a circuitului din figura este data de relatia: Ecuatia (71) poate fi rescrisa sub forma simplificata: Solutie: Inlocuind ecuatia (73) in
RC ⋅
a⋅
dy
dU C dt
+U C =U (t )
+ by = sin(2π t );a = RC ,b =1
dt
ecuatia diferentiala (72) a circuitului RC va rezulta solutia ecuatiei −1 2 a ( k ) ⎡ ⎤ ⎡2a(k )⋅ y(k −1) diferentiale de ordinul 1 +b(k )⎥ ⎢ +a(k )⋅ D(k −1) +u(k ) y(k ) = ⎢ Δt ⎣ Δt ⎦ ⎣ (Tensiunea pe condensator): 118
Considerând a = 1 / 2π, se scrie fişierul script care va calcula si reprezenta grafic tensiunea pe condensator (uC(t)): %Reprezentarea grafica a tensiunii pe condensator pt. un circuit de c.a. RC tin = 0; tfin = 6; t = linspace(tin, tfin, 3000); %genereaza un vector linie cu 3000 de puncte intre tin si tfin N = length(t); %dimensiunea vectorului timp y = zeros(1, N); dt = (tfin - tin) / (N-1); u = sin(t); %semnalul de intrare a = (1 / (2*pi)) * ones(1, N); %a=RC b = ones(1, N); y(1) = 0; %conditie initiala D(1) = (1 / a(1)) * (u(1) - b(1) * y(1)); for k = 2 : N y(k) = ((2*a(k) / dt + b(k))^(-1)) * (2*a(k) * y(k-1) / dt + a(k) * D(k-1) + u(k)); % tensiunea pe condensator D(k) = (2 / dt) * (y(k) - y(k-1)) - D(k-1); end plot(t,y,t,u,'--'), xlabel('Timpul'), ylabel('Tensiunea'), title('Tensiunea pe condensator si tensiunea de intrare a unui circuit RC'), grid 119
120
Exemplul urmator va descrie rezolvarea unui circuit RLC cu ajutorul MATLABului utilizand o metoda iterativa de ordinul 2 si o metoda de integrare numerica ode.
Ex. 54: Sa se calculeze si sa se reprezinte grafic tensiunea pe condensator in functie de timp pentru circuitul RLC din figura 50, pe intervalul , stiind ca LC=1, RC=3 si ω=1. Ecuatia care calculeaza tensiunea pe condensator a circuitului RLC din figura este: Ecuatia diferentiala de ordinul 2 se poate scrie sub forma: – In care a = LC, b = RC si c = 1 sunt constantele de timp ale circuitului.
Solutia ec. diferentiale este data de relatia:
d 2U C dU LC 2 + RC C + U C = U (t ) dt dt a
d 2 y dt 2
+b
dy dt
+ cy = sin( ω t )
⎛ 1 ⎞ ⎟⎟ ⋅ (− b(1) ⋅ D(1) − c(1) ⋅ y(1) + u(1)) ⎝ a(1) ⎠
D2 (1) = ⎜⎜
121
Solutie 1: Pentru conditiile initiale y(t=0)=y’(t=0)=0 se scrie un fisier script cu urmatoarea secventa : %Reprezentarea grafica a tensiunii pe condensator pt. un circuit de c.a. RLC tin = 0; tfin = 16*pi; t=linspace(tin,tfin,2000 );%genereaza un vector linie cu 2000 de puncte intre tin si tfin
a = 1;b = 3;c = 1; w = 1; %a = LC, b = RC, c = 1 N = length(t); %dimensiunea vectorului timp y = zeros(1,N); dt = (tfin - tin) / (N-1); u = sin(w * t); %semnalul de intrare y(1) = 0; D(1) = 0; D2(1)=(1/a)*(-b*D(1)-c*y(1)+u(1)); for k=2:N y(k)=((4*a/dt^2+2*b/dt+c)^(-1))*(y(k-1)*(4*a/dt^2+2*b/dt)+D(k1)*(4*a/dt+b)+a*D2(k-1)+u(k)); %tensiunea pe condensator D(k) = (2 / dt) * (y(k) - y(k - 1)) - D(k - 1); D2(k) = (4 / dt^2)*(y(k) - y(k-1)) - (4/dt) * D(k-1) - D2(k-1); end plot(t,y,t,u,'--'), xlabel('Timpul'), ylabel('Tensiunea'),title('Tensiunea pe condensator si tensiunea de intrare a unui circuit RC'),axis([0 50 -1 1]) 122
Solutie 2 : Sa se calculeze si sa se reprezinte grafic tensiunea pe
condensator pentru circuitul RLC din figura 50, utilizand metoda de integrare numerica ode45 (Runge-Kutta) si sa se compare graficul rezultant cu cel obtinut anterior. Se scrie un fisier function cu numele RLC.m care va include sistemul de ecuatii, dupa care se va scrie un fisier script „test RLC” care-l va include (apela) pe cel function: function zp=RLC(t,z) %Acest fisier function reprezinta grafic tensiunea pe condensator intr-un %circ RLC cu metoda ode45(Runge-Kutta) si include sistemul de ecuatii a = 1;b = 3;c = 1; zp(1,1) = z(2,1); zp(2,1) = (1/a) * (sin(t) – b * z(2,1) – c * z(1,1));
%Acest fisier script reprezinta grafic tensiunea pe condensator intr-un %circ RLC cu metoda ode45(Runge-Kutta) si acceseaza fisierul function RLC tspan = [0 16 * pi]; zin = [0; 0]; [t, z] = ode45('RLC', tspan, zin); plot(t,z(:,1),t,sin(t)),axis([0 50 -1 1]), xlabel('Timpul'),title('Comparatie intre Tensiunea pe condensator intr-un circuit RLC si Tensiunea sursei de alimentare') 123
124
R ăspunsul in domeniul timp si frecventa
Răspunsul în domeniul timp: - furnizează informaţii despre regimul tranzitoriu al modelelor liniare invariante în timp, pentru diferite tipuri de semnale de intrare şi perturbaţii; - permite determinarea unor caracteristici şi parametri (indicatori) ai sistemului respectiv, necesare în proiectare, cum ar fi: timpul de creştere, timpul de r ăspuns, timpul de reglare sau eroarea de regim staţionar . Răspunsul în domeniul frecven ţă / pulsaţie a unui sistem reprezintă diferenţa amplitudinii şi fazei unui semnal sinusoidal de la intrarea şi ieşirea acestuia. 125
Raspunsul in domeniul timp
Dacă se doreşte să se reprezinte grafic r ăspunsul în domeniul timp pentru un semnal treaptă şi impuls, se utilizează comenzile step( sys ) şi impulse( sys ).
H ( s ) =
1 2
s + 10 ⋅ s + 20 126
Locul geometric al radacinilor si alocarea polilor
Functia MATLAB pt. alocarea polilor: pzmap
Iar pt. locul geometric al radacinilor rlocus; 127
R ăspunsul in frecventa Răspunsul în frecvenţă sau diagrama Bode, alături de algoritmii de reglare ai regulatoarelor de tip propor ţional-integrator-derivativ (RG-PID), sunt cele mai utilizate metode de proiectare ale sistemelor de conducere utilizate în industrie. Mărimea de ie şire a unui sistem liniar, având ca mărime de intrare un semnal sinusoidal, este tot o sinusoidă de aceeaşi frecvenţă, dar de amplitudine şi fază diferite. Se poate aplica sistemelor de tip SISO sau MIMO, considerând sistemul respectiv liniar. Este utilizat pentru proiectarea sistemelor de conducere, acordarea parametrilor unor regulatoare sau pentru proiectarea diferitelor filtre electronice/filtre de re ţea etc.
128
Reprezentarea grafica a raspunsului in domeniul frecventa Dacă se doreşte reprezentarea grafică a r ăspunsului sistemului în domeniul frecvenţă, se utilizează funcţia bode( sys ), sau bodemag (s ys )
care reprezintă grafic doar amplitudinea diagramei Bode. 129
Funcţii dedicate creării şi conversiei modelelor liniare
Biblioteca Control System furnizează şi un set de funcţii (tf , ss, zpk , frd ) pentru crearea a patru tipuri de modele liniare, invariante în timp (Linear Time Invariant -LTI), şi pentru conversia dintr-un model în altul
130
Conversia modelelor Funcţia c2d realizează conversia modelelor continue în modele discrete echivalente, implementate prin tf , zpk şi ss; Se poate realiza şi conversia invers ă, utilizând func ţia d2c ; Metodele care realizeaz ă această conversie (discretizarea sistemelor liniare) sunt: zero-order-hold , first-order-hold , Tustin biliniar approximation (metoda trapezului), Tustin with frequency prewarping şi matched poles and zeros. Aceste funcţii pot fi apelate cu urm ătoarele sintaxe:
sysd = c2d (sysc, Ts, Metoda) Sysc = d2c (sysd, Metoda)
Dac ă nu se specific ă metoda de discretizare, atunci MATLABul va realiza conversia, utilizând metoda zoh (zeroorder-hold). O func ţ ie similar ă, cu cele de mai sus, este d2d , care poate fi utilizat ă atunci când se doreşte discretizarea modelului cu 131
Parametr st c de e baza aza pt. Parametrii ssi caracter caracteristici proiectarea SRA
Eroarea de regim staţ ionar caracterizează precizia de
funcţionare a SRA în regim sta ţionar. Suprareglajul este un indice de calitate al SRA în regim tranzitoriu, provocat de o varia ţie a mărimii de intrare, şi reprezintă depăşirea maximă de către mărimea de ieşire a valorii staţionare. Gradul de amortizare este tot un indice de calitate al regimului tranzitoriu şi reprezintă diferenţa dintre unitate şi raportul amplitudinilor a dou ă semioscilaţii succesive ale mărimii de ieşire, raportate la valoarea de regim sta ţionar. Timpul de creştere, timpul atingerii primului maxim şi timpul primei atingeri a valorii sta ţ ionare sunt indici de calitate care caracterizeaz ă rapiditatea r ăspunsului tranzitoriu al SRA. Timpul de r ăspuns al SRA reprezint ă timpul m ăsurat de la începutul procesului tranzitoriu până când, diferenţa dintre mărimea de ieşire şi valoarea sa staţionar ă scade sub o132 anumită limită (de ex. 5 %).
Conceptul de instabilitate a unui sistem în buclă închisă (RG+plant) este definit de marginea/rezerva de stabilitate. În acest sens, diagrama Bode furnizează doi parametrii: marginea de amplitudine (gain margin-GM ) şi marginea / rezerva de fază ( phase margin-PM ), după cum descrie figura
din dreapta. Un SRA liniar este stabil dacă marginea de fază (PM) şi marginea de amplitudine (GM) sunt pozitive. Dacă PM=0 sistemul se află la limita de stabilitate, iar dacă unul din cei doi parametri este negativ sistemul liniar este instabil.
133
Diagrama Nyquist
Diagrama Nyquist este utilizat ă, în tandem cu diagrama Bode, la estimarea performanţelor sistemelor de reglare automată, în buclă închisă (cu buclă de reglare/reacţie), pe baza proprietăţilor sistemului f ăr ă buclă de reglare, folosind fdt a acestuia, atunci când diagrama Bode ofer ă informaţii confuze despre stabilitatea sistemului în bucl ă deschisă. Criteriul Nyquist este cel mai important criteriu de apreciere a stabilităţii SRA, în timp continuu. De asemenea, diagrama Nyquist poate fi utilizată pentru a găsi domeniul de varia ţie al factorului de amplificare (gain) al regulatorului, pentru care sistemul în bucl ă închisă este stabil. Funcţia MATLAB, pentru reprezentarea grafic ă a diagramei Nyquist, este: nyquist (num, den) 134
Diagrama Nyquist - Exemplu nyquist (50,[1 9 30 40])
După cum rezultă din figura sistemul modelat prin fdt este stabil, deoarece diagrama Nyquist nu conţine nici o încercuire (suprapunere) a celor două axe în jurul valorii de -1 (punctul critic). Acest lucru se datorează faptului că, polii fdt ai sistemului nu sunt alocaţi în semiplanul drept. Utilizarea diagramei Nyquist permite vizualizarea intuitiv ă şi aprecierea gradului de stabilitate a sistemului şi a influenţei modificării unor parametrii ai acestuia asupra stabilităţii. 135
Diagrama Nyquist - Exemplu
136
Analiza circuitelor electrice utilizând r ăspunsul în frecvenţă
d 2U C dU LC 2 + RC C +U C =U i (t ),uc (0) = 0 dt dt H ( s ) =
=
U 0 ( s ) U i ( s ) s
=
R + sL +
R
L R
R
1
1 sC
=
sRC s LC + sRC + 1 2
=
Să se calculeze şi să se reprezinte grafic r ăspunsul în frecvenţă al circuitului RLC din figura ştiind că: R=10 kΩ, C=1,12 µF şi L = 5H ce se întâmplă dacă rezistenţa se modifică la valoarea R = 100 Ω în timp ce L şi C r ămân neschimbate? 137
Soluţ ie: Se scrie fişierul script (raspunsulfrecventaRLC.m) cu
următoarea secvenţă:
L=5; C=1.25e-6; R1=10000; R2=100; %parametrii circuitului num1=[R1 / L 0]; den1=[1 R1/L 1/(L*C )];%număr ătorul şi numitorul fdt w=logspace(1, 4); f=w / (2*pi); h1=freqs(num1, den1,w); mag1=abs(h1); phase1=angle(h1)*180 / pi; num2=[R2/L 0]; den2=[1 R2/L 1/(L*C)]; h2=freqs(num2,den2,w); mag2=abs(h2);phase2=angle(h2)*180/pi; subplot(221),loglog (f,mag1,'+'),title('Raspunsul amplitudine pt. R=10k'),ylabel('Amplitudinea') subplot(222),loglog (f,mag2,'--'),title('Raspunsul amplitudine pt. R=0.1k'),ylabel('Amplitudinea') subplot(223),semilogx (f,phase1,'--'),title('Raspunsul faza pt. R = 10k'), xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)') subplot(224),semilogx (f,phase2),title('Raspunsul faza pt. R = 0.1k'), xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)') 138
Fig. arata ca, deoarece rezistenta rezistorului R2 scade de la 10k la 0.1k, latimea de banda a raspunsului in domeniul frecventa scade si totodata factorul (indicatorul) de calitate al circuitului creste
139
6. Introducere in Simulink (1)
Simulinkul este un mediu interactiv de modelare, simulare si analiza dinamică a sistemelor liniare(continue), neliniare, discrete, (continue în timp, discrete în timp) sau hibride. Cu ajutorul pachetului de programe Simulink se pot construi diagrame bloc, utilizând biblioteca standard (nucleului de baza) sau realizând propriile blocuri (interfa ţa grafică interactiva denumită „graphical user interface” – GUI ). Modelele complexe se realizeaz ă ierarhic creând blocuri grupate în subsisteme. Aceste subsisteme se pot cupla între ele realizându-se un singur sistem în care se eviden ţiază mărimile de intrare şi de ieşire. După realizarea modelului matematic al sistemului, următorul pas este simularea dinamică utilizând una din metodele140de integrare numerică oferită de program (Ode23, Ode45 etc).
6. Introducere in Simulink (2)
Simularea dinamică a sistemului analizat se bazeaz ă pe cunoaşterea sistemului de ecua ţii diferenţiale, pe realizarea shemei bloc şi desigur pe utilizarea unei metode de integrare numerică. Rezultatele simul ării pot fi afişate atât grafic cât şi sub forma unor tabele numerice. Utilizând blocurile bibliotecii S-Functions se pot crea propriile blocuri, care se integreaz ă în schemele existente, realizate cu blocuri din biblioteca standard a Simulinkului. Utilizarea Simulinkului pentru studiul diferitelor regimuri de functionare ale sistemelor dinamice permite si vizualizarea mai multor ferestre grafice în acela şi timp. Biblioteca Simulink conţine mai multe seturi (colec ţii) de blocuri dedicate diferitelor domenii de activitate, cum ar fi ingineria electrica – maşini, convertoare statice si acţionări electrice, electronica - procesarea digitala a semnalelor etc. 141
6.1. Editorul Simulinkului Când se doreşte accesarea bibliotecii Simulink sau deschiderea unui model, Simulinkul afişează instantaneu fereastra editorului său. Pentru a deschide o fereastr ă Simulink si implicit pentru a crea un model nou se acceseaza new model din meniul principal. Aceasta fereastr ă conţine cele mai uzuale comenzi ale Simulinkului, cum ar fi: deschiderea unui model, salvarea acestuia, accesarea bibliotecii, setarea parametrilor simulării si rularea unei simulări etc
142
Editorul Simulinkului
Editorul Simulink conţine următoarele componente de baza: – conţine comenzile pentru crearea, editarea, Menu Bar vizualizarea, printarea si simularea modelelor; Toolbar – conţine cele mai utilizate comenzi Simulink care pot fi accesate printr-un simplu click pe butonul respectiv; Canvas – afişează diagrama bloc a modelului si implicit permite editarea acesteia; Status Bar – afişează situaţia simulării când aceasta este in progres. De asemenea, afi şează si timpul simul ării curente si 143 numele metodei de integrare numerica selectata.
Vizualizarea traiectoriei unui semnal. Crearea modelelor şi a subsistemelor.
Vizualizarea traiectoriei unui semnal necesita intr-o
prima etapa crearea unui model matematic, implementat in Simulink printr-o schema bloc. Pasul următor include alegerea metodei de integrare şi a pasului minim şi maxim, simularea modelului şi implicit vizualizarea diferitelor forme de unda. Crearea modelelor in Simulink reprezint ă: – construirea unei diagrame (scheme) bloc bazata pe modelul matematic al sistemului, aranjat astfel incat sa rezulte mărimile de intrare – stare – ieşire (MM-ISI). 144
Vizualizarea traiectoriei unui semnal
Pentru vizualizarea traiectoriei unui semnal se considera exemplul urmator: Sa se vizualizeze semnalul de iesire a unui amplificator care are factorul de amplificare (gain) egal cu 0.5 si care are ca marime de intrare un semnal sinusoidal. Primul pas consta in accesarea librariei Simulink, dupa care se deschide o fereastra pentru a crea modelul cerut. Din libraria standard se selecteaza blocurile necesare implementarii modelului, dupa cum urmeaza: – din libraria Math operation se selecteaza blocul Gain, care reprezinta un amplificator, si se muta in fereastra nou creata. Acest bloc are un singur parametru care este setat la valoarea unu. Desigur ca orice parametru intern al diferitelor blocuri poate fi modificat. In cazul modelului nostru am setat parametrul intern gain la valoarea ceruta (0.5); – din libraria Sources se selecteaza blocul Sine Wave care reprezinta semnalul de intrare sinusoidal; – din libraria Sinks se selecteaza blocul Scope care reprezinta 145 un Osciloscop;
Crearea modelelor/Vizualizarea semnalelor
Odată ce blocurile modelului sunt plasate in noua fereastra se pot unii prin linii pentru a realiza conexiunile dintre mărimile de intrare – stare – ieşire. Conectarea blocurilor se poate face manual, utilizând mouseul, sau automat, prin selectarea blocurilor care urmează a fi conectate, ţinând apăsat tasta Ctrl. Pentru vizualizarea semnalului de ieşire a blocului amplificator se poate selecta din meniul principal comanda start simulation după care prin dublu click pe Scope se vizualizează forma de undă rezultantă. O alta metodă de vizualizare a semnalelor este prin setarea parametrilor interni blocului Scope (ParametersData historySave data to workspace). Prin aceasta metoda datele pot fi salvate in fereastra de lucru a MATLABului si apoi prelucrate cu funcţiile (comenzile)
146
Crearea modelelor Crearea modelelor in Simulink utilizând biblioteca standard (nucleul de baza). Modelul al ăturat integreaz ă şi derivează un semnal sinusoidal (o forma de unda sinusoidala) şi reprezintă pe acelaşi grafic cele 3 semnale. Pentru a vizualiza pe acelaşi grafic mai multe semnale se utilizează blocul mux (multiplexor). Diagrama bloc a modelului şi rezultatul simulării sunt prezentate in figurile alăturate:
147
Modelarea sistemelor in timp continuu
In biblioteca Simulink standard exista atât blocuri analogice (continue) cat si discrete. In cazul blocurilor analogice acestea genereaz ă la ieşire mărimi continue chiar daca m ărimea de intrare este un semnal variabil. Blocurile analogice se reg ăsesc in libraria standard in setul de funcţii al bibliotecii Continuous precum si in alte biblioteci, cum ar fi Math Operations (gain, sum), Sinks (Scope) si Sources (Constant, Clock). Unele blocuri pot fi analogice sau discrete, in func ţie de mărimea de intrare la care sunt conectate, de 148 exemplu blocul gain
Un sistem continuu poate fi modelat cu ajutorul unei ecuaţii diferenţiale de ordinul 1, de forma : dxdt = − 2 x (t ) + u (t ) (*)
Unde u(t) reprezintă mărimea de intrare a sistemului si este un semnal dreptunghiular (forma de unda pătratica) cu amplitudinea si frecventa egale cu unu (1 rad/sec). Pentru a implementa acest model in Simulink avem nevoie de un bloc integrator (integer ), din biblioteca Continuous, care sa integreze mărimea proprie de intrare dx/dt pentru a obţine mărimea de ieşire x a sistemului. Pentru a genera un semnal dreptunghiular se utilizează blocul Signal Generator din biblioteca Sources, la care se va seta forma de unda corespunzătoare si unitatea de măsura se modifica in rad/sec. Alte blocuri necesare pentru a construi schema bloc a modelului sunt blocurile gain si sum din biblioteca Math Operations, iar pentru vizualizarea semnalului de ieşire este necesar si un osciloscop (scope) accesibil in biblioteca Sinks. Schema bloc a modelului si reprezentarea grafica a mărimii de iesire x a sistemului continuu sunt prezentate in figura următoare: 149
In ecuaţia (*), x reprezintă mărimea de ieşire a integratorului si a sistemului dar este in acela şi timp si una din mărimile de intrare care calculeaz ă derivata dx/dt. Ecuaţia (*) poate fi scrisa si cu ajutorul operatorului Laplace (s): s ⋅ x = −2 x + u Care are ca soluţie funcţia de transfer: x =
u
x 1 ; = s + 2 u s + 2
Pentru a implementa ecua ţia de mai sus este necesar blocul Transfer Fcn, la care se setează corespunzător coeficienţii de la număr ător si numitor (numerator [1], denominator [1 2]). Prin utilizarea Transformatei Laplace modelul devine mai simplu si are forma diagramei bloc din fig. 150 urmat.:
151
Crearea subsistemelor
Daca modelul pe care dorim sa-l implementam in Simulink creste ca dimensiune si complexitate, poate fi simplificat prin gruparea diferitelor blocuri intr-un subsistem sau in mai multe. Prin aceasta facilitate se reduce num ărul blocurilor modelului si se menţine ordinea de conectare a diagramei bloc a sistemului. Crearea subsistemelor se poate realiza prin doua modalitati: – Prin adăugarea unui bloc subsystem, din libraria Ports & Subsistems, la un model deja creat, iar apoi prin deschiderea acestuia se poate copia modelul existent in interiorul subsistemului; – prin gruparea blocurilor, prin selectarea acestora se fixează mouse-ul pe unul din blocuri şi se face clic pe butonul din dreapta. Din meniul ce apare se alege „create subsystem” şi cu un clic se obţine un singur bloc numit „subsystem”. Prin clic pe subsystem se obţine un nou meniu din care alegând „edit mask ” se obţine în final fereastra „mask editor ” 152
Exemplul următor utilizează una din cele doua metode de creare a subsistemelor descrisa mai sus si va reprezenta grafic rezultatul atât utilizând metoda directa din Simulink, prin utilizarea unui osciloscop, cat si prin utilizarea unui bloc mascat care apelează un fişier MATLAB script. Exemplul . Sa se modeleze un oscilator cu frecventa variabila si amplitudine constanta care sa genereze doua func ţii ortogonale, sinus si cosinus, iar apoi sa se reprezint ă grafic rezultatul simularii. Solutie: Modelul matematic al unui oscilator are forma: d 2 y1 2
dt
= −ω 2 ⋅ y1
y 2 =
1 dy1
dy 2
ω dt
dt
⋅
∫
= −ω ⋅ y1
y 2 = − ω y 1 ⋅ dt
∫
153
154
Modelarea si simularea sistemelor dinamice
Modelarea si simularea unui sistem dinamic con ţine doua etape: – Crearea unui model grafic utilizând editorul modelelor din nucleul de baza al libr ăriei Simulink (modelarea sistemului dinamic). Modelul dinamic descrie ecua ţiile matematice ale sistemului pe care dorim sa-l simulam, in funcţie de timp, stabilind m ărimile de intrare – stare – ieşire (MM-ISI). Aceste ecuaţii pot conţine ecuaţii algebrice, integrale si diferen ţiale; – Simularea regimurilor de funcţionare ale sistemului intrun anumit interval de timp. Simulinkul utilizeaz ă informaţiile de intrare ale utilizatorului in interiorul modelului pentru realizarea propriu-zisa a simul ării (simularea sistemului dinamic). 155
Modelarea sistemelor dinamice (1)
Simulinkul conţine o libr ărie cu blocuri standard si un editor grafic ce permite realizarea conexiunilor dintre ele. Astfel, prin selectarea si interconectarea corespunz ătoare a blocurilor se poate implementa, intr-o lume virtuala, orice sistem dinamic real. Fiecare bloc reprezintă un sistem dinamic elementar ce poate avea la ieşire o variaţie liniara (continua in timp), sau discreta (variabila in timp). Tipul fiecărui bloc determina leg ătura dintre mărimile de intrare, stare si cele de ie şire ale sistemului si variaţia acestuia in timp. Conexiunile dintre blocuri se realizeaz ă prin linii. Fiecare bloc poate sa contina una sau mai multe m ărimi de intrare - stare – ieşire, după cum descrie si figura: 156
Modelarea sistemelor dinamice (2)
Majoritatea blocurilor conţin parametrii care trebuie definiţi înaintea comenzii de simulare a sistemului, cum ar fi condiţiile iniţiale, pasul de eşantionare etc. Mărimile de ieşire ale unor blocuri depind de mărimile de stare ale sistemului. Aceste blocuri trebuie sa retina (memoreze) valorile de stare anterioare pentru a calcula actualele mărimi de stare. Pentru a realiza acest lucru aceste blocuri trebuie sa contina o memorie interna. De exemplu, blocul integrator realizează integrala semnalului de intrare si conţine ca mărime de stare valoarea anterioara mărimii de intrare. Blocuri care nu conţin mărimi de stare sunt, de exemplu: blocul sumator (sum), blocul gain etc. Principala caracteristica a blocurilor din biblioteca Simulink consta in posibilitatea de-a modifica parametrii acestora. Blocul gain conţine un parametru cu acelaşi 157 nume care poate fi modificat corespunzător.
Simularea sistemelor dinamice
Simularea sistemelor dinamice se refera la procesul de evaluare (calculare) a marimilor de stare si marimilor de iesire intr-un anumit interval de timp, utilizand informatii furnizate de modelul matematic al sistemului. Simularea propriu-zisa a unui sistem include doua faze: 1. Initializarea modelului 2. Executia modelului
In timpul procesului de initializare Simulinkul evaluează expresiile parametrilor din blocurile modelului matematic pentru a determina valorile acestora, determina calitatea semnalului (tipul si dimensiunile datelor), si verifica daca fiecare bloc poate accepta semnalele generate de parametrii de intrare. – De asemenea, in aceasta faza Simulinkul determina memoria necesara calculului parametrilor de stare si timpul de simulare necesar determinarii timpului de esantionare al blocurilor existente in modelul respectiv si le sorteaza in ordinea in care trebuie sa fie rulate (executate).
In faza de executie Simulinkul evalueaza succesiv marimile de stare si marimile de iesire ale sistemului pe intervalul de timp setat (simulation start time – stop time) utilizand informatiile 158 furnizate de modelul matematic al sistemului dinamic.
Înainte de lansarea in execuţie a simulării unui sistem dinamic se setează parametrii care definesc timpul de simulare (valoarea ini ţială si finală), metoda de integrare (ode23, ode45 etc) si pasul simul ării (pas variabil, pas fix – continuu sau discret). Acest lucru se poate realiza din meniul principal al editorului Simulink accesând fereastra Simulation Parameters, după cum descrie si figura:
159
Simulinkul ofer ă posibilitatea simulării unui sistem atât cu pas continuu (fix) cat si cu pas variabil. Diferenţa consta in faptul ca daca se alege pasul variabil se poate imbunatatii precizia simul ării prin reducerea mărimii pasului (paşii inutili vor fi eliminaţi). De asemenea, se poate alege metoda de integrare numerica din meniul Solver . Metodele de integrare a sistemelor continue sunt metodele numerice clasice (Runge-Kutta, Adams, Euler, Rosenbrock, metoda trapezelor etc). Simulinkul ofer ă opt metode de integrare numerica a ecuaţiilor diferenţiale care pot fi utilizate pentru rezolvarea unor sisteme flexibile (non-stiff) sau pentru sisteme rigide (stiff) si de asemenea pentru sisteme discrete (cu pas variabil). Al doilea meniu Workspace I/O din fereastra Simulation Parameters (fig. ) permite afisarea semnalelor de iesire. Acest meniu are trei opţiuni: Structure with time – permite salvarea datelor in workspace (timpul - tout si a semnalelor de iesire – xout, yout, xFinal). Pentru afişarea valorilor xout si yout se tasteaza in fereastra de comanda (command window) a MATLABului „xout.signals.values” sau „yout.signals.values”; Structure – acest meniu este identic cu primul cu deosebirea ca nu afişează timpul; Array – afiseaza marimile definite in workspace, având pe prima coloana vectorul timp. Meniul Diagnostic ne permite sa urmărim toate evenimentele decurse in timpul simulării: de atentionare (warning), eroare (error) sau de loc (non). Meniul Advance si meniul Real-Time Workshop permit stabilirea diferitelor opţiuni care pot afecta rezultatele simulării precum si o extensie a posibilităţilor de realizare a unor modele complexe in vederea utiliz ării unor algoritmi in timp real. 160
Modelarea si simularea sistemelor discrete (1)
Simulinkul ofer ă si facilitatea de-a simula sisteme discrete (date/semnale eşantionate), incluzând sisteme ale căror componente operează la rate de eşantionare diferite si sisteme care au in componenta atât mărimi discrete cat si continue. Blocurile discrete sunt redate in libr ăria Discrete, dar pot fi întâlnite si in alte librarii cum ar fi Sources (Pulse Generator) sau Sinks. Aceste blocuri prezintă un timp de discretizare (eşantionare), unele dintre ele având setat acest timp iar alte blocuri permit modificarea acestui parametru intern. Sistemele discrete din biblioteca Simulink au doua caracteristici de baza: – Blocuri care conţin parametrii ce pot fi setaţi pentru a defini timpul de eşantionare (de ex. blocurile sine wave sau pulse generator ). Aceste blocuri pot fi găsite in biblioteca Sources sau Discrete. – Blocuri care pot primi timpii de eşantionare de la alte blocuri conectate ca marimi de intrare ale acestora. 161
Modelarea si simularea sistemelor discrete (2)
Facilitatea setării timpului de eşantionare a unui bloc permite modelarea sistemelor care con ţin atât componente discrete care funcţionează la diferite rate de eşantionare cat si sisteme hibride care conţin atât componente continue cat si componente discrete. Timpul de eşantionare al unui bloc nu poate fi modificat in timpul unei simul ări. Daca se doreşte modificarea acestuia simularea trebuie oprita iar dup ă modificarea parametrului respectiv se poate reporni simularea pentru a avea efect. In continuare se prezintă un exemplu in care blocul integrator cu timp discret (Discrete-Time-Integrator) va genera la ie şire tot un semnal discret deoarece are ca m ărime de intrare un bloc analogic care genereaz ă un semnal continuu (blocul constant cat si blocul gain sunt mărimi analogice) care nu-i 162 modifica parametrii interni (timpul de e şantionare).
S imularea imularea sistemelor discrete
163
Discretizarea modelelor Prin discretizarea unui model se înţelege înlocuirea blocurilor continue ale modelului cu blocuri discrete echivalente, utilizând o anumită metodă de discretizare (Tustin, zoh etc). Simulinkul poate discretiza un model existent, utilizând o fereastr ă grafică interactivă (GUI), prin accesarea meniului tools model discretizer . Această metodă (GUI) de discretizare permite automat identificarea blocurilor continue ale modelului existent. Următorul pas constă în modificarea parametrului intern sample time (de la Ts=0 la Ts>0) al blocului respectiv pentru ai da acestuia caracter discret. Discretizarea modelelor reprezintă un pas important în proiectarea regulatoarelor (filtrelor) digitale şi este foarte utilă pentru simularea sistemelor de control în buclă 164 ă deschisă şi cu buclă de reglare (SRA, acţionare electric
Figura de mai jos ne ne arată cum se poate discretiza un model liniar existent prin utilizarea interfeţei grafice interactive GUI – Model Model Discretizer . Această metodă de discretizare permite automat identificarea blocurilor continue ale modelului existent. In cazul nostru exist există doar un singur bloc în această situaţie, blocul „Generator de semnal” :
165
Controlul in timp discret al SRA
Pentru reducerea erorilor şi a timpului de simulare, regulatoarele / controlerele continue pot fi înlocuite cu cele discrete. Diferenţa principală între cele două tipuri de regulatoare constă în faptul că sistemele digitale operează cu semnale discrete (discretizate cu un timp/perioada de eşantionare). Proiectarea unui sistem discret implic ă, în prima fază, discretizarea/conversia blocurilor continue iar apoi obţinerea unui model discret echivalent, implementat prin fdt sau prin mărimi de stare. s =
2 z − 1
⋅
166
Modelarea şi simularea sistemelor neliniare de control
Sistemele neliniare sunt acele sisteme care nu satisfac principiul superpoziţiei, adică nu sunt liniare şi omogene ; De exemplu, pentru un semnal de intrare sinusoidal, semnalul de ieşire al unui sistem neliniar (convertor static) va con ţine mai multe semnale de amplitudine şi fază diferite faţă de fundamentală (armonici), în timp ce un sistem liniar va con ţine la ieşire doar o mărime sinusoidală. Un model neliniar con ţine componente interne cum ar fi sursele controlate de tensiune sau curent, condensatoare, bobine sau elemente ce depind, de exemplu, de tensiunea aplicată la intrare. Elementele care au caracteristici neliniare se numesc regulatoare sau algoritmi de reglare, şi pot fi întâlnite, de exemplu, la protecţia sistemelor bazate pe scheme electrice cu relee, în interfeţele de ieşire ale echipamentelor de conducere numerică (convertoare numeric-analogice) etc. 167
Implementarea SRA cu elemente neliniare În sistemele de reglare automată (SRA) elementele neliniare se întâlnesc ca blocuri intermediare între regulatoare şi elementele de execuţie. Blocul de saturaţie modelează cel mai frecvent tip de neliniaritate, deoarece, în general domeniile de variaţie ale mărimilor fizice sunt limitate (cuplurile dezvoltate de servomecanisme şi motoare electrice, puterile surselor de alimentare, valorile absolute ale tensiunilor şi curenţilor etc). Un sistem neliniar poate fi modelat printr-o ecua ţie diferenţială de stare de forma:
dx dt
= f ( x, t ); x (0) = x0 168
Sistemul de reglare automat ă (SRA) are în componenţă un element neliniar (blocul de satura ţie), utilizat pentru limitarea semnalului de intrare al unui servomecanism, modelat printr-o func ţie de transfer cu poli şi zerouri descrisă de relaţia: H ( s ) =
10( s + 10) ⋅ ( s + 10) ( s + 1) ⋅ ( s + 0 3 + i ) ⋅ ( s + 0 3 − i )
169
Modelarea şi implementarea elementelor de circuit neliniare
Modelarea elementelor neliniare de circuit (rezisten ţă variabilă, inductanţă de saturaţie) se poate realiza prin utilizarea blocurilor Look-up-table, pentru implementarea vectorilor de intrare-ieşire, care caracterizeaz ă funcţionarea elementelor respective, sau prin utilizarea unui bloc neliniar din biblioteca Discontinuities, cum ar fi: Saturation, DeadZone, Relay etc. Dacă se cunoaşte expresia analitic ă de variaţie a parametrilor (de ex. I=f(U)), modelarea elementelor neliniare se poate face direct prin utilizarea unui bloc Fcn, în interiorul căruia se introduce ecuaţia respectivă. Biblioteca SimPowerSystems furnizează o colecţie vastă de modele neliniare. 170
Modelarea unei inductanţe variabile
Pentru modelarea unei inductan ţe variabile se pleac ă de la ecuaţiile de definiţie: u = L ⋅
di dt
=
d Ψ dt
Ψ = ∫ u ⋅ dt
i=
Ψ L(Ψ)
Curentul care trece prin bobin ă este o funcţie neliniar ă a fluxului de dispersie (leg ătur ă), care depinde de tensiunea care cade la bornele acesteia. De aceea modelul unei inductan ţe neliniare poate fi implementat ca o sursă controlată de curent, ca în figura:
171
Implementarea inductanţei neliniare in Simulink
Pentru implementarea caracteristicii neliniare i=f( Ψ) s-a utilizat un bloc Look-up-table din biblioteca Look-up-tables a nucleului de bază al Simulinkului, în interiorul c ăruia s-au setat parametrii de intrare-ie şire descrişi de figura 6.28: Vector of input values (fluxul): [-1.25 -1 1 1.25]*(120*sqrt(2)/(2*pi*60)), Vector of output values (curentul): [-2 -1 1 2]*(120*sqrt(2)/(2*pi*60)). 172
Modelarea circuitelor electrice Pentru modelarea circuitelor electrice în Simulink, se pleacă de la ecuaţiile matematice de defini ţie obţinute prin aplicarea teoremelor şi legilor din electrotehnic ă, care se aranjează într-o formă convenabilă implementării, în funcţie de mărimile de intrare – stare – ieşire (MM-ISI). Implementarea circuitelor electrice se poate face şi prin funcţii de transfer , mărimi de stare sau utilizând blocurile bibliotecii SimPowerSystems . După implementarea schemei bloc a circuitului electric, se setează corespunzător fiecare parametru din interiorul blocului respectiv , iar apoi se alege metoda de integrare numeric ă şi se trece la simularea r ăspunsului dinamic al circuitului. 173
Exemplul următor ilustrează implementarea în Simulink a unui circuit electric RL alimentat de la o sursă de tensiune alternativă şi simularea regimului tranzitoriu precum şi staţionar al acestuia.
U ca = i ⋅ R + L ⋅ i(t ) =
1
di
;i(0) = i0 dt
t
(U ∫ L
ca
− i ⋅ R)dt + i(0)
0
174
Exemplu: Să se implementeze în Simulink prin prin fdt modelul matematic (MM) al unui circuit RLC serie şi al unui circuit RLC paralel, iar iar apoi să se simuleze r ăspunsul treaptă aplicat la t=0, dacă R =1 =1.5, L=2 şi C=2.
Circuitele electrice pot fi implementate în Simulink mult mai simplu prin reducerea ecuaţ iilor matematice la func ţi i de transfer (fdt) sau la MM-ISI. Aceast ă metod ă de implementare se poate utiliza doar atunci când parametrii circuitului sunt constanţ i. Soluţ ie: În ambele cazuri, un circuit electric RLC poate fi
implementat ca un sistem de ordinul doi, care este stabil pentru valori reale pozitive ale parametrilor R, L şi C. Funcţia de transfer a circuitului serie si paralel RLC utilizat ca filtru de reţea (filtru trece jos), are forma: 1/ LC
G( s) = 2 s + s ⋅ R/ L +1/ LC
1/ LC
G( s) = 2 s + s⋅1/ RC +1/ L
175
Implementarea in Simulink a unui circuit RLC serie si paralel prin fdt
176
Biblioteca SimPowerSystems(SPS) Setul de blocuri din biblioteca SimPowerSystems extinde bibliotecile Simulinkului cu blocuri dedicate modelării, simulării şi analizei circuitelor electrice, maşinilor şi acţionărilor electrice, convertoarelor statice şi a sistemelor energetice de putere; Biblioteca SimPowerSystems poate fi utilizat ă împreună cu biblioteca Simulink standard pentru a construi diferite diagrame bloc prin conectarea elementelor unui sistem dinamic (ac ţionare electrică) cu diferiţi algoritmi de control în scopul studiului diferitelor strategii de comand ă şi efectele acestora asupra întregului sistem energetic de putere.
177
Caracteristicile Bibliotecii SimPowerSystems
Modelează şi simulează circuitele electrice şi electronice utilizând simboluri standard, cum ar fi: rezistorul, bobina, condensatorul sau dioda, tiristoare, tranzistoare etc; Furnizează blocuri care modeleaz ă diferite tipuri de maşini electrice (mcc, maşina de inducţie, maşina sincronă), convertoare statice (redresoare în punte, invertoare); Furnizează blocuri pentru modelarea unui sistem energetic complet de putere (Transport, Distributie); Utilizează metoda de discretizare a unui sistem dinamic pentru a creşte viteza de execuţie a unei simulări; Permite diferite metode de analiz ă a unui sistem (circuit electric) în vederea obţinerii MM-ISI şi 178 calculează transferul de putere.
Biblioteca SimPowerSystems( versiunea versiunea 6.5) conţinea nou nouă biblioteci cu componente electrice şi
electronice ( powerlib):
179
Analiza sistemelor in SimPowerSystems(SPS) Afişeaza tensiunea şi curentul în regim sta ţionar (Interfaţa grafică interactivă (GUI ) afişează valorile curenţilor şi tensiunilor măsurate în regim staţionar şi toate variabilele mărimilor de stare, incluzând curen ţii prin bobine şi tensiunile la bornele condensatoarelor); Afişeaza şi modifica valorile ini ţiale ale mărimilor de stare; Calculeaza circula ţia de putere şi iniţializeaza parametrii unei maşini electrice; Genereaza un raport care include calcularea m ărimilor de regim staţionar. Cu ajutorul bibliotecii SimPowerSystems se pot analiza diferite configuraţii de circuite electrice şi se pot calcula modelele matematice echivalente ale m ărimilor de stare (MM-ISI) f ăr ă sa fie necesar ă rularea unei simul ări
180
Modelarea şi simularea dispozitivelor electronice şi a convertoarelor statice
Pachetul de programe MATLAB & Simulink este o unealt ă convenabilă şi pentru modelarea, simularea şi analiza convertoarelor statice de comutaţie, utilizând atât funcţii/blocuri de stare (MM-ISI) cât şi fdt/blocuri cu fdt. Biblioteca SimPowerSystems ofer ă un set de blocuri dedicate modelării dispozitivelor electronice (dioda, tiristoare şi tranzistoare) şi a convertoarelor statice (redresoare şi invertoare monofazate sau trifazate în punte) denumit Power
181
Suplimentar această bibliotecă mai conţine două seturi de blocuri, Discrete Control blocks şi Control blocks , având în componenţă atât blocuri dedicate controlului convertoarelor statice cât şi diferitelor configuraţii de filtre şi regulatoare discrete:
182
Diferite configuraţii de blocuri dedicate controlului convertoarelor statice si filtre şi regulatoare discrete
183
184
185
186
187
188
Modelarea si simularea acţionărilor cu MCC
In general un sistem electromecanic (ac ţionare electrica) are ca marimi de intrare - tensiunea si cuplul mecanic rezistent, ca marimi de stare – tensiunea electromotoare indusa, curentul, fluxul, rezistente, inductanţe sau capacitaţi, iar ca mărimi de ieşire – turaţia, cuplul electromagnetic sau pozi ţia. Etapele de modelare si simulare ale ME sunt: – – – – –
Stabilirea variabilelor independente si asociate; Stabilirea funcţiilor de stare (relaţiile dintre mărimi); Scrierea ecuaţiilor de definiţie; Rezolvarea ecuaţiilor (prin metode analitice si numerice); Implementarea modelului matematic; 189 Simularea diferitelor regimuri de functionare.
Modelarea MCC cu excitaţie separata
MCC cu excitaţie separata se poate utiliza ca servomotor, controlul miscarii realizându-se atât prin indus (rotor) cat si prin infasurarea de excitaţie. Reglajul prin indus utilizează ca semnal de comanda tensiunea la bornele masinii (Ua) la un flux sau curent de excitaţie constant (IE=ct, Φ=ct), iar reglajul prin excitaţie reprezintă variaţia curentului din infasurarea de excitaţie cu tensiunea din indus constanta (Ua=ct). Ecuaţiile de definiţie ale MCC (modelul matematic al masinii) cu excitaţie separata se utilizează frecvent in analiza sistemelor de reglare automata (SRA). Pentru a modela o maşina de curent continuu (MCC) se pleacă de la ecuaţia volt-amper si de la ecuaţia de mişcare. 190
U a = I a ⋅ RT + La ⋅
dI a
M em − M R = J ⋅
1
dt
+U e
d Ω dt
U e = k a ⋅φ ⋅ M em = k a ⋅φ ⋅ I a
t
∫
I a(t ) = ⋅ (U a − I a ⋅ RT −U e)⋅dt + I a (0) La 0
Ω(t ) =
1
t
( M ∫ J
em
0
− M R ) ⋅ dt + Ω(0) 191
Implementarea MM al MCC in Simulink
192
Simularea pornirii in sarcina a unei MCC
193
Imp ementarea MCC cu exc taţ ie e separata luând uân in n Implementarea excita considerare constantele de timp ale maşinii
Pentru a simplifica implementarea modelului matematic al MCC cu excitaţie separata si pentru a eviden ţia mărimile de intrare – ieşire ale modelului, ecua ţiile de defini ţie pot fi exprimate in unitati relative (u.r.) si implementate in Simulink prin utilizarea blocurilor Fcn, din libraria User-Defined Functions. In exemplul urm ător se prezint ă implementarea modelului matematic al MCC cu excitaţie separata luând in calcul si constantele de timp ale maşinii si având parametrii exprimaţi in u.r .: Exemplul : Sa se implementeze MM al MCC cu excitatie separata, cu parametrii exprima ţi in u.r. si având ca mărimi de intrare: tensiunea indusului-ua, tensiunea aplicata infasurarii de excitatie-ue si cuplul rezistent la arborele masinii-Mr, iar ca mărimi de ieşire: curentul prin rotor – ia, curentul din infasurarea de excitatie - ie, cuplul electromagnetic – Mem si turatia - n.
– Sa se simuleze o pornire in regim de gol, o încărcare si modificarea turaţiei prin slăbire de câmp, reprezentând grafic mărimile de ieşire ale sistemului, stiind ca Ta=0.1, TE=0.1 si194
di a
T a =
La Ra
; T E =
L E R E
;T m =
J ⋅ Ra k ⋅ φ 2
2
dt di E dt d Ω dt
= = =
1 T a 1 T E 1 T m
⋅ (u a − i a − Ω ⋅ i E ) ⋅ (u E − i E ) ⋅ (i a ⋅ i E − M R )
195
196
Modelul matematic al MCC implementat prin funcţii de transfer
Modelul matematic al MCC poate fi implementat in Simulink si prin funcţii de transfer (fdt) utilizând Transformata Laplace S-a notat cu ke-constanta corespunzătoare tensiunii maşinii, cu km-constanta cuplului ma şinii. In SI cele doua constante sunt numeric egale, dupa cum rezulta si din ecuaţiile puterilor electrica si mecanica (Pe=Pm). Luând in considerare si constantele de timp electrice (Ta, TE) si mecanica (Tm) si notand – kM=km*Φ si kE=ke*Φ, se pot obţine funcţiile de transfer ale modelului matematic al MCC, corespunz ătoare 197 reglajului prin indus si excitaţie:
U a ( s ) = I a ( s ) ⋅ ( R a + s ⋅ L a ) + U e ( s ) U e ( s ) = k e ⋅ φ ⋅ Ω ( s )
∞
∫
F ( s ) = f (t ) ⋅ e − st dt
M em ( s ) = k m ⋅ φ ⋅ I a ( s ) = I E ( s ) ⋅ I a ( s )
0
M em ( s ) = M R ( s ) + J ⋅ Ω ( s ) ⋅ s U E ( s ) = ( R E + s ⋅ L E ) ⋅ I E ( s )
H 1( s) =
Ω( s)
k M
1
| M R ( s)=0 = = U a ( s) s ⋅ J ⋅ ( Ra + s ⋅ La ) + k M ⋅ k E k E ⋅ s2 ⋅T m ⋅T a + s ⋅T m +1
(
Ra + s ⋅ La
Ω( s)
)
k M ⋅ (1+ s ⋅T a )
= 2 H 2 ( s) = |U a ( s)=0 = M R ( s) s ⋅ J ⋅ ( Ra + s ⋅ La ) + k M ⋅ k E s ⋅T m ⋅T a + s ⋅T m +1 H 3 ( s ) = H 4 ( s ) =
Ω ( s ) U e ( s )
Ω ( s ) U e ( s )
|U a ( s ) = 0 = | I a ( s ) = 0 =
(
k E − k a (1 + s ⋅ T a )
(1 + s ⋅ T E ) ⋅ (1 + s ⋅ T m + s 2 ⋅ T m ⋅ T a ) k M
(1 + s ⋅ T m ) ⋅ (1 + s ⋅ T E )
198
)
Exemplu: Sa se modeleze un servomotor de CC cu magneti permanenţi prin fdt. Sa se simuleze pornirea MCC in sarcina (MR=0.35 u.r.) si reversarea brusca a tensiunii la borne, stiind ca Ta=4.05 ms si Tm=11.7 ms, kE=53 V / 1000 rpm, kM=0.5 Nm / A.
Ω( s) =
k M
( Ra + s⋅ La ) ⋅ sJ +k M ⋅ k E
⋅U a ( s) −
Ra + sLa
( Ra + s⋅ La ) ⋅ sJ +k M ⋅k E
⋅ M R( s)
199
200
Simularea unei porniri in sarcina si reversarea brusca a tensiunii la borne
201
Pornirea cu rezistoare si frânarea dinamica
Pornirea MCC se poate realiza prin: – conectarea directa la reţea, – modificarea tensiunii de alimentare (cresterea (cresterea progresiva prin trepte de tensiune sau prin alimentarea prin convertoare statice) – cu rezistoare (rezistenta (rezistenta se modifica in trepte). trepte). Frânarea MCC poate fi: – recuperativa, – dinamica (reostatica) – in contracurent (conexiuni contrare). Exemplul următor va prezenta o pornire a MCC cu excitaţie rezistiv si o frânare dinamica. dinamica. separata cu un starter rezistiv si
La pornirea cu rezistoare rezistenta se va modifica in trei trepte pana când maşina va ajunge la tura ţia nominala. Fran Fr anar area ea di dina nami mica ca (reostatica) (reostatica) se realizeaz ă prin deconectarea indusului (rotorului) de la re ţea si conectarea lui peste un rezistor. 202
203
204
205
Acţionări reversibile cu MCC cu excitatie separata si redresoare comandate
O acţionare electrica reversibila trebuie sa asigure funcţionarea, cel puţin in regim de motor, in ambele sensuri de rotaţie. Daca maşina de curent continuu este alimentata printr-un redresor comandat, care furnizeaz ă ambele polarităţi ale tensiunii redresate medii, MCC poate funcţiona atât in regim de motor cat si in regim de frână recuperativă, caz in care convertorul devine invertor. MCC funcţionează ca motor in cadranul 1 al caracteristicii mecanice (Mem=f(Ω)) iar ca frână recuperativa in cadranul 4. Frânarea recuperativa (generator pe reţea) se realizează atunci când Ue>Ua si Ia=-Ia iar turaţia este 206 mai mare decât valoarea nominala de mers in gol.
Schema de reglare a vitezei (turatiei) ac ţionării electrice reprezintă un sistem de reglare automata (SRA) cu bucla închisă de reglare, care include si o bucla de reglare a curentului din indus MCC cu excitaţie separata va funcţiona atât in regim de motor cat si in regim de frân ă recuperativa, fiind alimentata de la un convertor bialternanţă (redresor in punte) de patru cadrane prin care se regleaz ă tensiunea de alimentare a indusului masinii
207
Schema bloc de reglare implementata in Simulink
208
Simularea reg. de motor si frână recuperativă a unei actionări reversibile cu MCC si redresor comandat
209
Reglarea vitezei unei MCC utilizând controlul in cascada
Reglarea vitezei (turaţiei) sau a poziţiei unui servomotor de curent continuu se poate realiza ca in figura următoare. Schema bloc din figura urm ătoare este o schema de reglare a turaţiei in cascada având o bucla interna de reglare a cuplului electromagnetic sau a curentului din indus. Regulatoarele de tura ţie si de cuplu pot fi de tip PI, cel mai frecvent, sau de tip PID. In acest caz maşina de curent continuu este alimentata alime ntata printr printr-un -un conve convertor rtor de cc-cc (chop (chopper), per), care poate conţine un tiristor GTO in paralel cu o210 dioda.
Schema bloc de reglare a turaţiei in cascada utilizând o bucla interna de reglare a cuplului electromagnetic
211
212
213
214
215