Sunteți pe pagina 1din 216

MODELARE ŞI SIMULARE ÎN

MATLAB & Simulink


(Algoritmi de simulare in Inginerie Electrica-ASIE)

Conf. dr. ing. Lucian MIHEŢ-POPA


Cuprinsul cursului – partea I
z Introducere in MATLAB & Simulink
z Instrucţiuni, funcţii si operaţii de baza ale
MATLABului
z Crearea graficelor. Reprezentări si funcţii grafice
z Achiziţia, interpolarea si aproximarea datelor
– Prelucrarea datelor si calcule statistice
– Aproximarea datelor prin metoda celor mai mici pătrate
– Analiza Fourier si FFT
z Analiza circuitelor electrice si electronice
– Analiza circuitelor electrice de cc si ca
– Răspunsul in domeniul timp si frecventa
– Metode de proiectare a RG-PID
– Tehnici de analiza a circuitelor electronice 2
Cuprinsul cursului – partea II
z Introducere in Simulink;
z Modelarea si simularea sistemelor dinamice (in timp
continuu si discret), sistemelor si elementelor
neliniare;
z Proiectarea sistemelor de reglare automata (SRA)
utilizand RG-P, PI, PID;
z Modelarea circuitelor electrice si a filtrelor de retea
si simularea diferitelor regimuri de funcţionare;
z Modelarea si simularea masinilor electrice
– Metode de pornire si franare a MCC cu excitatie separata
– Actionari cu MCC, reglarea vitezei in cascada.
3
Structura prezentarii: C1 + C2
1. Introducere in MATLAB & Simulink
z Ce este MATLABul ?
z Lansarea in executie. Interfata MATLAB - utilizator
z Ce este Simulinkul ?
z Informatii ajutatoare ale MATLABului (Helpul online)
2. Instructiuni, functii si operatii de baza ale MATLABului
– Structura programelor MATLAB: fisiere script si function
– Matrice si operatii matriceale
– Operatii si functii matematice uzuale
– Programarea MATLAB. Instructiuni si functii de control
3. Crearea graficelor. Reprezentari si functii grafice
– Reprezentări grafice elementare
– Reprezentări grafice tridimensionale 3D
– Crearea si controlul ferestrelor grafice
4
1.Introducere in MATLAB &Simulink
1.1. Ce este MATLABul?
MATLAB =MATrix LABoratory
z MATLABul este un pachet de programe de înalta
performanta dedicat calculului numeric,
reprezentărilor grafice si evaluărilor tehnice.
z 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
z 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:
z Calcularea, evaluarea si analiza sistemelor (circuitelor
electrice, acţionari electrice, SRA etc)
z Dezvoltarea algoritmilor de control
z Achiziţia, prelucrarea si analiza datelor
z Simulare, modelare, programare
z Vizualizare, reprezentare grafica si animaţie
z Dezvoltarea unor aplicatii, bazate pe interfeţe grafice
interactive (GUI)
z Analiza si proiectarea sistemelor de reglare si
conducere
6
1.1. Biblioteci MATLAB
z Din punct de vedere structural
MATLABul este realizat sub forma
unui nucleu de baza in jurul căruia
sunt construite asa numitele
toolboxuri.
z MATLABul include aplicaţii specifice
sau familii de caracteristici, dedicate
unui anumit domeniu .
z 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.
z Principalele domenii in care aceste
toolboxuri pot fi utilizate sunt descrise
de (Fig. 1):
7
Fig. 1. Lista principalelor toolboxuri ale versiunii MATLAB 6.5.
1.1. Structura MATLAB
Pachetul de programe MATLAB conţine cinci parţi
principale:
z Mediul de dezvoltare (Development Environment):
set de toolboxuri
z Biblioteca cu functii matematice (The MATLAB
Mathematical Function Library) : sum, sine etc
z Limbajul MATLAB (The MATLAB Language):
algoritmi, functii, structuri de control a datelor si
caracteristici de programare;
z Grafica (Graphics): functii dedicate reprezentarilor
grafice in 2D si 3D;
z Interfata cu un program de aplicatii (The MATLAB8
Application Program Interface-API)
1.2. Lansarea in execuţ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?
z SIMULINKul este un set de programe soft dedicat modelarii, simulării si
analizei sistemelor dinamice.

z Permite modelarea sistemelor liniare si neliniare atat in timp discret cat si


in timp continuu sau hibride
z 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.
z 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.
z 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 Simulinkului

Lansarea pachetului de programe


Simulink se face din MATLAB in
doua moduri:
z prin accesarea pictogramei Simulink
z 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

Cele mai importante facilitaţi pe care le oferă Simulinkul sunt:


z Modelarea, simularea si analiza sistemelor dinamice
z Implementarea sistemelor liniare si neliniare
z Construirea unor diagrame bloc (continue si discrete),
utilizând biblioteca existentă sau crearea propriilor blocuri
(librarii)
z Vizualizarea mai multor ferestre in acelaşi timp si a mai
multor variabile pe acelaşi grafic
z Incorporarea unor programe scrise in C, C++, Ada, Fortran
intr-un model de simulare dinamica utilizând librăria funcţiilor
S (S-functions)
z Implementarea hard si testarea diferitelor strategii de control

12
1.4. Informatii ajutatoare ale
MATLABului (Helpul online)
z 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).
z Comanda help furnizeaza informatii online despre orice functie MATLAB si
Simulink sau realizata de un utilizator al pachetului de programe.
z 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.
z 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).
z Daca subiectul este un director helpul afiseaza fisierele continute in acesta.
z 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
z 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

z 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:
z Tastand urmatoarea secventa (operatie matematica) in fereastra de comanda
20 – 2 * 5
z MATLABul va returna urmatorul raspuns: ans = 10
z Orice instructiune sau linie de instructiuni este terminata cu „enter”. Utilizand tasta „enter” se
trece la urmatoarea secventa de linie.
z Daca ultimul caracter al liniei este punct-virgula „ ; ”, instructiunea este executata dar nu se
tipareste nimic in fereastra de comenzi (command window).
z 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
z 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.
z 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
z 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
z 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);
z 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
z 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.
z 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.
z 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.
z 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
scrierii de noi proceduri.
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
z 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
z 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.
z După execuţia unui fişier script, variabilele cu care acesta a
operat raman stocate in spaţiul de lucru (workspace).
z Fişierele script lucrează cu date existente din workspace. De
asemenea, ele pot crea date noi cu care sa opereze.
z Daca avem mai multe fişiere intr-un director este de dorit sa
includem câteva comentarii (explicative) la începutul fiecărui
fişier creat. 18
2.1.1. Fisiere script. Exemplu
z Exemplul 1: Sa se scrie un program MATLAB sub forma de fisier script care sa
calculeze amplitudinea si faza unei functii de transfer G(jw)=1 / (jw+2) pentru w = 1.

z Solutie: Se creaza un fisier-m (M-file) cu numele amplitudine in care se scriu


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))

z Scriind cuvântul amplitudine in fereastra de comenzi (command window) vom


obtine următorul răspuns:
Amplitudine = 0.4472
Faza = -0.4636
z 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
z Daca prima linie a unui fişier – M conţine cuvântul „function”, fisierul respectiv este
declarat ca fişier funcţie.
z Variabilele definite si manipulate in interiorul fişierului functie sunt localizate la
nivelul acesteia. Prin urmare la terminarea execuţiei unei functii, in memoria
calculatorului nu raman decât variabilele de ieşire ale acesteia.
z Un fişier funcţie diferă de unul script prin faptul ca poate lucra cu argumente
(secvente ale functiei: intrări - ieşiri).
z Forma generala a primei linii a unui fişier function este:
function [param_iesire] = nume_functie (param_intrare)

unde function este cuvântul cheie care declara fişierul ca fişier funcţie, nume_functie
este numele functiei, adica numele sub care se salvează fişierul fara extensie,
param_iesire reprezintă parametrii de ieşire care trebuie separaţi prin virgula si
cuprinşi intre paranteze drepte (daca functia nu are parametrii de ieşire parantezele
drepte si semnul egal nu mai au sens), iar param_intrare reprezintă parametrii de
intrare, care trebuie, de asemenea, separati prin virgula dar cuprinsi intre paranteze
rotunde.
z Un fişier funcţie care are mai multe intrari si iesiri poate fi de forma:
function [x, y, z] = sfera (theta, phi, rho)
z Daca fişierul function nu conţine nici un argument de iesire, atunci prima linie poate
avea forma:
function printresults(x) 20
2.1.2. Fişiere function. Exemple
z Structura unui fisier function poate conţine instrucţiuni (comenzi) MATLAB
de control, funcţii MATLAB care realizează calcularea si alocarea valorilor
pentru marimile de iesire.

z Exemplul 2. Sa se scrie un program MATLAB de tip function care sa


calculeze media aritmetica a unui vector x.

z Solutie: Se creeaza un fisier-m (M-file) cu numele medie care trebuie sa


aibe acelasi nume cu al functiei ce urmeaza sa fie definita in prima linie,
dupa cum urmeaza:
function [mean] = medie(x)
N = length(x); mean = sum(x) / N;
z Tastand urmatoarele linii in fereastra de comenzi:
x = [1:10];
mean(x)
z MATLABul va returna urmatorul raspuns:
ans = 5.5000
21
2.1.2. Fişiere function. Exemple
z Exemplul 3: Sa se scrie un fisier function care sa calculeze rezistenta
echivalenta a unor rezistoare conectate in serie.

z Rezolvare: Se creaza un fisier cu numele echivalent.m, care are urmatoarea


configuratie:

function Re = echivalent(R)

z % echivalent este un program funcţie care calculează rezistenta echivalenta a


unor rezistoare conectate in serie, R fiind vectorul de intrare de lungime n iar Re
este mărimea de ieşire, rezistenta echivalenta
n = length(R); %numarul rezistoarelor
Re = sum(R); %rezistenta echivalenta
z 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 = [10 20 15 16 5];
Rserie=echivalent(R)
z Rezultatul obţinut va fi:
Rserie = 66
22
2.2. Matrice si operaţii matriceale
z MATLABul lucrează cu scalari, vectori si matrice.
z 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).
z MATLABul este de fapt un pachet de programe care lucrează numai cu
un singur tip de obiecte-matrice numerice rectangulare (tablou numeric cu
doua dimensiuni), cu elemente reale sau complexe.
z Operaţiile matriceale cu tablouri (arrays) sunt operaţii aritmetice element
cu element (intre elemente situate in aceeasi pozitie a tablourilor). Pentru
efectuarea operaţiilor cu tablouri se folosesc aceeaşi operatori ca in
operatiile cu scalari, precedati de semnul „.”, semn ce indica de fapt
efectuarea operaţiilor element cu element.
z De exemplu operatorul de înmulţire a doua matrice A si B se
simbolizează in cazul tablourilor prin A .* B
z 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 matriceale
z 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
z 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⎤
In ambele cazuri se returnează:
A = ⎢⎢4 5 6⎥⎥
z
A=
1 2 3 ⎢⎣7 8 9⎥⎦
4 5 6
7 8 9
z Pentru a determina dimensiunea unei matrice A si lungimea acesteia se utilizează
functiile MATLAB size (A) si length (A).
z 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
z MATLABul ofera un set de functii pentru utilizarea matricelor.
z Calculul determinantului unei matrice se face cu functia det, iar a inversei
unei matrici cu functia inv.
z 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]];
z De asemenea, MATLABul oferă si facilitatea de a extrage o submatrice
dintr-o matrice, sau de-a transforma o matrice intr-un vector.
z 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.
z 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).
z 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
z 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;
z 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 ⎥⎥
z MATLABul genereaza urmatorul rezultat:
⎢⎣9 12 20 ⎥⎦
I = -3.6491
1.2807
1.4737
z 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
z 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

z 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
z Generarea vectorilor cu pas liniar implica cunoaşterea limitelor intervalului
(min, max) si a pasului de esantionare dintre doua elemente, sau numărul
de elemente ale vectorului.
z 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 = [(max-min) / pas].
z Daca pasul > 0 este necesar ca valoarea minima sa fie mai mica decat
valoarea maxima, iar daca pasul < 0, atunci valoarea minima este mai mare
decat valoarea maxima:
X1 = -5 : 0.5 : 5; X2 = 5 : -2 : -5
z Daca pasul este omis atunci valoarea acestuia este considerata egala cu
unitatea.
z De asemenea, se pot genera vectori cu pas logaritmic utilizând sintaxa
logspace, ca in exemplul de mai jos:
– Sa se genereze un vector cu N = 5 elemente distribuite logaritmic pe
intervalul [10-2, 102].
– Cu sintaxa:
x = logspace(-2, 2, 5)
– Se obtine rezultatul:
28
x = 0.0100 0.1000 1.0000 10.0000 100.0000
2.3. Operaţii si funcţii matematice uzuale
help elfun
z Pachetul de programe MATLAB conţine numeroase functii pentru operatii
matematice fundamentale si pentru prelucrarea datelor
z Aceste operatii matematice se refera la:
– calcule cu polinoame (f(x) = x3 + 3x + 15),
– vectori,
– numere complexe (a + j*b),
– functii trigonometrice (sin, cos),
– exponentiale (exp) si logaritmice (log, log10).
– ecuatii diferentiale (diff),
– integrale (quad, trapz) si
– metode de integrare numerica (ode23, ode45) etc.

29
2.3.1. Numere complexe

z Numerele complexe sunt introduse in MATLAB utilizând


variabilele i si j;
z 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 reala si imaginara ale acestuia, iar r si φ reprezintă
modulul si argumentul numărului complex z.
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.
z Funcţia real returnează partea reala a numărului complex, iar
imag returnează partea imaginara. 30
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) + 4∠300
9 − j2
Rezolvare: Se scrie un fisier script de forma:

Z1 = 5+6*j; Z2 = 4-8*j; Z3 = 9-2*j;


theta = (30 / 180)*pi % unghiul in radiani
Z4=4*exp(j*theta);
Z = (Z1 * Z2 / Z3) + Z4;
Z_ampl = abs(Z) % amplitudinea lui Z
Z_unghi = angle(Z)*(180 / pi); % unghiul in grade
Z_polar = [Z_ampl, Z_unghi] % disp (Z_polar)

MATLABul generează următorul rezultat:


numărul complex Z in forma polara, cu amplitudinea si faza egale cu:

Z_polar = 11.2039 9.7942 31


2.3.2. Funcţiile putere, radical, logaritm si exponenţiala

z 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)
z Functia exp calculează exponenţiala (ex)
z Functia log si log10 calculeaza logaritmul natural (ln) si
zecimal (lg)
z Functia sqrt calculează radicalul de ordinul 2 dintr-un număr
z Calculul radicalului de ordinul 2 dintr-un număr ( 9), poate
utiliza functia putere sau funcţia radical, apelata cu sintaxa
sqrt (9).
z Obs: Argumentul acestor funcţii poate fi o matrice, caz in
care se operează element cu element, sau poate fi un număr
complex. 32
2.3.3. Funcţii trigonometrice
z 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

z sin - Determina sinusul argumentului, cu rezultatul in radiani


z cos - Calculeaza cosinusul argumentului
z tan - Calculeaza tangenta argumentului
z asin - Calculeaza arcsinusul (sin-1) argumentului in radiani
z acos - Determina cos-1 in radiani
z atan - Calculeaza arctangenta (tan-1) argumentului, cu rezultatul in radiani
z atan2 - Calculeaza arctangenta unui argument complex
33
2.3.4. Calcule numerice cu polinoame
z In MATLAB polinoamele sunt reprezentate ca un vector linie
care conţine coeficienţii in ordine descrescătoare.
z De exemplu polinomul g(x)=x4 + 2x2 + 0.5x - 6 este
reprezentat in MATLAB prin vectorul:
g = [1 0 2 0.5 -1].
z 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 si funcţii de control
z Programele MATLAB sunt scrise pentru a realiza
paşi secvenţiali, operaţiile fiind realizate una după
alta.
z 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.
z Uneori este necesara repetarea unui grup de
instrucţiuni de un anumit număr de ori.
z Instrucţiunile cu ajutorul cărora se poate realiza
acest lucru sunt for si while.
35
Instructiuni si functii de control
z 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.

z 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.
z 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
z 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 36
end
Instrucţiunea for
z 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ţiuni poate fi orice expresie(functie) MATLAB (de
exemplu k = initial : pas : final).
z 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;
z daca se utilizează operatorul doua puncte (:) pentru a defini expresia, ca in
exemplul:
for k = initial : pas : final
z bucla se executa de:
N = [(final-initial) / pas] + 1 37
- daca N este pozitiv, si nu se executa daca N este negativ.
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.39m.
Descrierea instructiunii while
z Instrucţiunea while se utilizează pentru repetarea unui set
de instrucţiuni, atâta timp cat o condiţie specificata este
adevărata.
z Forma generala a acestei instructiuni este urmatoarea:

while expresie
grup_de_instructiuni 1
end
grup_de_instructiuni 2

z Grupul de instrucţiuni 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ţiuni 1 se executa din nou. Daca expresie este falsa,
programul iese din bucla while si trece la grupul de
instrucţiuni 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


primele trei elemente, al patrulea element neindeplinind conditia impusa.
Instrucţiuni de intrare / ieşire
z MATLABul conţine instrucţiuni (comenzi) despre anumite
mărimi de intrare din fereastra de comenzi si despre datele
de ieşire.
z Instrucţiunea input transmite instantaneu un mesaj scris
catre utilizator, apoi asteapta introducerea marimii de intrare
de la tastatura (R=input(‘expresie MATLAB’));
z Instrucţiunea return comanda ieşirea din fişierul-m către
funcţia care la apelat sau către tastatura.
z Instrucţiunea error permite afişarea unor mesaje la întâlnirea
unei erori. Se apeleaza cu sintaxa:
error (’mesaj’)
z 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.
z disp - Afişează un text sau o matrice
z fprintf - Afişează texte si matrice 42
z pause - Cauzează oprirea executării unui fisier-M
Vectorizarea calculelor
z 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.

z 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:
z 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.
z 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
z 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
prealocat acest pas este eliminat si execuţia este mai rapida. 43
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
mai mare decât cel de-al doilea. 44
3. Calcul grafic. Reprezentări si funcţii grafice

z MATLABul furnizează un set de tehnici pentru reprezentarea grafica


z Detine numeroase funcţii grafice si oferă diferite facilitaţi pentru tipărirea si exportul
fişierelor de date ;
z 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;
z 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) ;
z 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
z 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;
z 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
predefinite . 45
Reprezentări si funcţii grafice
z 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.
z 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)
z 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.
z 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.
z Daca x este un vector, iar y o matrice, atunci coloanele lui y sunt trasate functie
de vectorul x Æ y = f(x);
z 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

z De exemplu, daca
x=[0 3.7 6.1 6.5 5.8 3.6];
Comanda plot(x) va genera
graficul din figura ;
z 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

z 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.
z 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)

z title ( ’Raspunsul unui circuit RC’ )


% tipareste titlul graficului
z xlabel(’Timpul (s)’)
% tipareste numele variabilei axei x
z ylabel(’Tensiunea (V)’)
% precizeaza parametrul (variabila) axei y
z grid %traseaza o retea de linii pe grafic
48
Reprezentări si funcţii grafice. Exemple

z 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).
z 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)’);
Fig. Reprezentarea grafic a tensiunii
text(0.003,1.5,’u(t)’), text(0.009,2,’i(t)’) si curentului unui circuit RL
49
in regim stationar sinusoidal.
Reprezentarea grafica in coordonate logaritmice si polare
z 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.
z 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;
z 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.

z 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’)
z Unde theta si rho sunt vectori, theta fiind unghiul in radiani iar rho
reprezinta amplitudinea semnalului respectiv.
50
Reprezentarea grafica in coordonate logaritmice.
Exemplu
z 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.
z Solutie: Se scrie urmatorul fisier script:
z %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
z MATLABul conţine o familie (set) de functii pentru generarea graficelor. Cele mai
importante dintre ele sunt descrise in tabelul 10 (pg. 36).
z 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.
z 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).
z 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).
z Functia mesh - Traseaza grafic o retea sub forma de plasa;
z 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.
z Ex. 20: Sa se reprezinte graficul in trepte al
functiei y=sin(x).
z Rezolvare: Cu urmatoarea secventa MATLAB
se obtine graficul din figura 12:
x=0:.2:6; y=sin(x); stairs(x, y);

z Functia compass reprezinta grafic vectori cu


originea in originea sistemului de coordonate.
Se apeleaza cu una din sintaxele:
compass(z) sau compass(x, y),
z unde z este numarul complex
z z = x + iy, iar x si y sunt numere reale
(proiectia vectorului pe abscisa si ordonata).
z Ex. 21: Sa se reprezinte grafic vectorii z1=2-5i
si z2=3+2i.
z 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.
z 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.
z Solutie: Se scrie urmatorul fisier
function cu numele test.m:
function y = test(x)
y = sin(x) . / x;
z Cu secventa urmatoarea scrisa in
fereastra de comanda:
fplot(’test’, [-20 20], 50); grid

54
3.1.3. Reprezentări grafice cu axe multiple

z Funcţiile pentru reprezentările grafice cu axe multiple difera fata de celelalte


funcţii grafice prin modalităţile de scalare a axelor.
z Funcţia MATLAB plotyy genereaza un grafic cu 2 axe y (pe ambele parti).
z 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.
z 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.
z 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.
z 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
scalare proprie pentru fiecare axa (exemplul 24). 55
3.1.3. Reprezentări grafice cu axe
multiple. Exemplu
z 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:
z x = 0:0.01:20; y1 = 200 * exp(-.05 * x).*sin(x);
z y2 = 0.8 * exp(-0.5 * x).*sin(10*x);
z [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
z set(get(AX(1),'ylabel'),'String','Axa-y partea
stanga')
z %comanda de inscriptionare a axei y din stanga
z set(get(AX(2),'ylabel'),'String','Axa-y partea
dreapta')
z %comanda de inscriptionare a axei y din dreapta
z xlabel('0 la 20 \ musec'),title('Graficul este
inscriptionat cu axa y pe ambele parti')
z %comenzi % pentru inscriptionarea titlului si a axei x
56
3.2. Reprezentări grafice tridimensionale (3D)
z Functia MATLAB plot3 este o functie analoaga functiei plot cu
diferenta ca reprezinta grafic linii si puncte intr-un spatiu
tridimensional (3D).
z 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.
z 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.
z 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.
z 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

z 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.
z Soluţie: 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 3D. Exemple
z Ex. 26: Sa se reprezinte grafic intr-un spatiu
3D trei matrici coloana (X, Y si Z) utilizand
functia mesh.
z 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
z Ex. 27: Sa se reprezinte grafic functia
Z=X*exp(-X2-Y2) ca suprafata mesh, mesh
asociata cu linii de contur (meshc) si ca
suprafata cu plan de referinta (meshz).
z 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
z MATLABul are doua ferestre grafice de baza: o fereastra de
comanda si o fereastra grafica ;
z Fereastra grafica poate fi impartita in mai multe ferestre ;
z 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.
z Functia subplot creeaza si controleaza ferestrele unui grafic si
poate fi apelata cu una din sintaxele:
subplot(m, n, p) sau subplot(h).
z 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.
z 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.
z 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
z 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.
z Solutie: Se scrie un fisier-M cu următorul
continut:
x = linspace(0, 2*pi, 50);
z %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

z 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

z MATLABul furnizează mai multe modalităţi de a importa sau


exporta fişiere de date din / în fereastra de lucru (workspace);
z Formatul datelor poate fi text, binar sau standard;
z 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;
z Formatul binar reprezintă imagini, sunete sau alte informaţii;
z 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);
z Cea mai simpla metodă, de a importa fişiere de date,
utilizează editorul Import Wizard; 63
4.2. Prelucrarea datelor si calcule statistice

z 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).
z 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
z Datele eronate sau cele care nu îndeplinesc o anumita condiţie, impusa
de utilizator, pot fi înlocuite, ca in exemplul următor:

z 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).
z 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)))
z 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
z Integrarea si derivarea sunt concepte fundamentale
pentru rezolvarea unui număr mare de probleme
atat in inginerie cat si in ştiinţa.
z In unele situaţii nu pot fi obţinute soluţii analitice fiind
necesara aplicarea metodelor de integrare si
derivare numerica.
z 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 ;
z 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
z 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)
z Dacaaproximarea 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

z Functiile quad si quad8 se apeleaza cu sintaxele:


quad(’f’, a, b), quad(’f’, a, b, tol), quad(’f’, a, b, tol, trace)
z 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.
z Functia trapz poate fi apelata cu una dintre cele doua
sintaxe:
Z = trapz(X, Y) sau Z = trapz(Y)
z 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

z Ex.: Sa se calculeze integrala functiei sin(x) pe


intervalul [0, π] cu un pas de integrare de π / 100.
z Solutie: Cu urmatoarea secventa se obtine
rezultatul cerut:
X = 0 : pi / 100 : pi; Y = sin(X);
Z = trapz(X, Y)
z Se obtine rezultatul
Z = 1.9998
70
z Ex. : Utilizând regula lui Simpson si metoda trapezelor sa se calculeze integrala
funcţiei y = sin(x) pe intervalul [0 - π].
z Solutie: Se scrie un fisier – m script cu secvenţa:

z %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
z Intsimp = ((b-a) / (3*length(x)-1)) * sum(y .* w)
z Inttrapz = trapz(x,y)

z Se obtine rezultatul:
– Intsimp = 1.8464
– Inttrapz = 1.9742
71
Functia MATLAB pentru derivare
z 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)
z 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)];
z 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
z 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].
z 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 1
W=
4 -3 2 4 3
73
Derivarea numerica. Exemple
z 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.
z 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
z Dupa rularea fisierului function diffn.m se tasteaza in fereastra de
comanda:
dy = diff(Y) ./ diff(X) sau dY
z si se obtine acelasi rezultat ca in exemplul 34.

74
Derivarea si integrarea ecuatiilor diferentiale
dy
y =
,
= g ( x, y )
z O ecuaţie diferenţiala de ordinul 1 are forma: dx
z Unde x este variabila independenta iar y este functia
necunoscuta.
z Un exemplu de ecuaţie diferenţiala de ordinul 1 este y’=3x2.
Cunoscând condiţia iniţiala y(0) = -7.5 va rezulta soluţia
y’ = x3-7.5.
z Metodele numerice cele mai cunoscute, pentru rezolvarea
ecuaţiilor diferenţiale, sunt metoda Euler si metoda Runge-
Kutta (ode23, ode45).
z Aceste functii se apeleaza cu sintaxa:
[x, y] = ode23(’yprim’,x0, xf, y0, tol, trace)
z 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 rezultatelor75
intermediare.
Integrarea ecuatiilor diferentiale. Exemplu

z 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.
z Soluţie: Se scrie un fişier function cu
următorul conţinut:
function dy = g1(x, y)
dy = 3 * x^2;
z Care se apelează cu următoarea
secvenţa MATLAB, scrisa in fereastra
de comanda sau, mai convenabil, intr-
un 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
z Interpolarea unui set discret de date [xi, yi] presupune determinarea unei
funcţii f(x) a.i. f(xi)=yi.
z 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.
z 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
interpft Interpoleaza datele din tabele unidimensionale
prin metoda transformatei Fourier
spline Interpoleaza datele din tabele unidimensionale
prin metoda Spline
polyfit Aproximeaza un set de date cu un polinom de
gradul n
interp1 Interpoleaza liniar, spline sau cubic date din
tabele unidimensionale 78
Interpolarea functiilor de o singura variabila

z 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.
z 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
la distante egale.
Pentru a sublinia diferenţa dintre cele doua tipuri de interpolări (liniara
si spline) se prezintă exemplul următor cu reprezentare grafica:

z Ex: Sa se reprezinte grafic o


interpolare liniara si una spline
cubica prin 6 puncte.
z 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
z 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.
z Aproximarea datelor printr-o linie dreapta se numeşte regresie liniara iar
aproximarea unor date printr-un polinom se numeşte regresie
polinomiala.
z 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


z Determinarea parametrilor m si n ai dreptei de aproximare y = mx+n se
face utilizând funcţia polyfit.
z 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 mai mici
pătrate. Exemple.
z Exemplu: Sa se aproximeze un set
de date (x, y), utilizând metoda
celor mai mici pătrate.
z Soluţie:Se scrie un fişier MATLAB
cu secvenţa următoare, obţinându-
se 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 mai
mici pătrate. Exemplu.
z Funcţia polyfit returnează coeficienţii (ai)
ai polinomului p(x), care in punctele
precizate de vectorul x are, in sensul celor
mai mici pătrate, valorile date de vectorul
y.
z Ex: Fie polinomul p(x) = x3-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.
z 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 (FFT)
z 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.
z Pentru eşantionarea datelor vectoriale, analiza Fourier
utilizează transformata Fourier discreta (discrete Fourier
transform-DFT).
z Transformata Fourier rapida - FFT (Fast Fourier Transform)
este un algoritm foarte eficient pentru calcularea
transformatei Fourier, sau a transformatei Fourier discrete
(DFT).
z 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
z Daca g(t) este o functie periodica, cu perioada Tp:

g(t) = g(t ±Tp )


z 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:
a0 ∞
g (t ) = + ∑ an ⋅ cos(n ⋅ w0 ⋅ t ) + bn ⋅ sin(n ⋅ w0 ⋅ t )
2 n=1

z 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
z Unealta matematica pentru analiza unui semnal in domeniul frecventei
este Transformata Fourier care poate lua diferite forme in funcţie de
semnalul analizat.
z 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.
z Transformata Fourier face conversia unui semnal din domeniul timp intr-
un semnal discret in domeniul frecventa.
z 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)
−∞ ∑
G ( f ) = g (t ) exp(− j 2πft ) dt
−∞
z Valoarea semnalului g(t) poate fi obţinuta din expresia transformatei
Fourier (ec. 18) utilizând relaţia transformatei Fourier inverse:

g (t ) = ∫ G ( f ) exp(
−∞
j 2 π ft ) df 86
Transformata Fourier
z Daca g(t) este un semnal continuu si periodic:

g (t ) = g (t ± nTp )

z Unde Tp este perioada semnalului, va rezulta transformata


Fourier a functiei g(t) sub forma:
1 ∞ ⎛ ⎞
G( f ) = ∑ c ⋅ δ ⎜ f − 1 ⎟
Tp
n ⎜ Tp ⎟
n = −∞ ⎝ ⎠

z iar cn se poate exprima prin relatia:


1
Tp ∫
cn = g (t ) exp(− j 2 ⋅ π ⋅ n ⋅ f 0 ⋅ t )dt

87
Transformata Fourier rapida (FFT)
z Transformata Fourier rapida (FFT) este o metoda eficienta de
calcul a transformatei Fourier discrete.
z FFT reduce numărul de calcule matematice necesare pentru
calculul transformatei Fourier discreta (DFT).
z FFT poate fi utilizata pentru calculul spectrului puterii unui
semnal, pentru filtrarea digitala a semnalelor sau pentru
obţinerea corelaţiei dintre 2 semnale.
z Functia MATLAB pentru calcularea transformatei Fourie
discrete (DFT) a unui vector x, utilizand algoritmul de calcul al
transformatei Fourier rapide (FFT) este: fft(x).
z Functia fft(x, N) se utilizează pentru a obţine FFT pentru un
vector de lungime N (cu N puncte).
z Daca X este o matrice, functia fft returnează transformata
Fourier a fiecărei coloane.
z 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
Calculează transformata Fourier rapida
fft
fft2 Calculează transformata Fourier rapida (discreta) de ordinul 2
Calculează transformata Fourier rapida (discreta) de ordinul n
fftn
Calculează transformata Fourier discreta inversa
ifft
Calculează modulul (amplitudinea)
abs
Calculează unghiul de faza
angle
Elimina discontinuităţile unghiului de faza si generează un semnal
unwrap in radiani 89
FFT - Exemple
z 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.
z 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
z Ex.: Sa se scrie un fisier function care sa calculeze transformata
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.

z Solutie: Se scrie următorul fişier function cu numele testfft:

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),
subplot(313), plot(f,P*180 / pi) 92
FFT - Exemple

93
5. Analiza circuitelor electrice

z 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.
z 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.
z 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

z 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.
z Calculul unui circuit electric se poate face pe baza
schemei electrice a acestuia in care intervin doar
parametrii elementelor de circuit.
z 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
z Ex. 44: Se da circuitul rezistiv din figura.
Cunoscandu-se parametrii R1 = 100 Ω, R2
= 100 Ω, Us = 5V.

z Sa se calculeze si sa se reprezinte grafic


curentul (I) prin circuit si tensiunea (U) la
bornele rezistentei de sarcina (R2) a
circuitului.
z 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 R2 = (0-50) kΩ, Us =U +U1 =U + R1 ⋅ I
cu pasul de 1 kΩ.
z Solutie: Marimea de intrare este U −U U
tensiunea sursei (Us), iar parametrii de L1 : I = s ; L2 : I = U s ⋅ R2
U =
iesire sunt curentul (I) si tensiunea (U). R1 R R1 + R 2
z Aplicandu-se Teorema lui Kirchoff pentru
tensiuni (teorema a doua) se obtine: U 2
2
U ⋅R
P2 = = s 2

R2 (R 1 + R2 )
2

96
z Se scrie un fisier function cu z Pentru a face legatura intre
numele L1 care conţine urmatoarea parametrii tuturor secventelor
secventa:
function, se utilizeaza functia global:
function I=L1(u)
r1=100; r2=100;us=5; z 2) Se scrie un fisier function cu
I=(us-u)/r1; numele L2, utilizand functia global:
function I = L2(u)
function I=L2(u) global r1 r2
r1=100; r2=100; us=5; us = 5; I = u / r2;
I=u / r2;
function I = L1(u)
z Dupa rularea fisierului L1, se
tasteaza urmatoarea comanda, in global r1 r2
fereastra de comenzi (command us=5; I = (us-u) / r1;
window),
subplot(121), fplot('L1',[0,5]), grid, z De asemenea, se mai scrie un fisier
subplot(122), fplot('L2', [0,5]), grid script cu numele „TestL1”, care
trebuie apelat dupa rularea fisierul
z In fisierul function L1 de mai sus function L2, cu urmatoarea secventa,
trebuie declarate valorile numerice global r1 r2
ale celor doua rezistente in
definirea fiecarei functii. Daca avem r1 = 100; r2 = 100; u=0:0.01:5;
mai mult de doua astfel de functii I1 = L1(u); I2 = L2(u);
programul poate deveni dificil iar
timpul de rulare poate fi suficient de figure, subplot(121), plot(u, I1),
mare. grid,subplot(122), plot(u, I2), grid
97
z b) Puterea disipata pe rezistenta
de sarcina se poate calcula cu
următoarea secvenţa, utilizând
ecuaţia (29):
z %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

z %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:
z Aplicarea teoremelor lui Kirchoff si legea lui Ohm ;
I = inv(Z)*V sau I = Z \ U
z Utilizarea Teoremei curentilor ciclici (de contur). Prin
aceasta metoda se pot calcula curentii din ochiurile
de retea a circuitului respectiv.
z 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
z Ex. 45: Sa se calculeze tensiunile si curentii
pentru circuitul din figura, stiind ca: RL = 2Ω;
z Solutie: Aplicand teoremele lui Kirchoff si
legea lui Ohm putem scrie urmatoarele ecuatii
pentru curentii si tensiunile circuitului electric
din figura:

z U1 = 5, U1-U2 = 50 I1, U2-U3 = 100 I2, U2 =


300 I3, U3 = 2 I2, I1 = I2+I3
z Ansamblul ecuatiilor valorilor necunoscute ale
tensiunilor si curentilor are forma matriciala (A):
z Construim un vector coloana UI, cu primele trei
⎡1 0 0 0 0 0 ⎤
componente reprezentand tensiunea (U1, U2, ⎢1 − 1 0 − 50 ⎥
U3) iar urmatoarele trei componente se refera ⎢ 0 0 ⎥
la curentii din circuit (I1, I2, I3). Dupa care ⎢0 1 − 1 0 − 100 0 ⎥
scriem un fisier script cu urmatoarea secventa: A=⎢ ⎥
⎢0 1 0 0 0 − 300⎥
z A=[1 0 0 0 0 0;1 -1 0 -50 0 0;0 1 -1 0 -100 0;0 1 ⎢0 0 1 0 −2 0 ⎥
0 0 0 -300;0 0 1 0 -2 0;0 0 0 1 -1 -1]; ⎢ ⎥
⎢⎣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
100
0.0101
Rezolvarea circuitelor cu Teorema
curentilor de contur (ciclici)
z 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 Ω:
z Solutie: Utilizând teorema curenţilor ⎧10⋅ (I1 − I2 ) +30⋅ (I1 − I3) −10= 0⎫
de contur si alegând sensurile ⎨ ⎬
acestora ca in figura se poate 40
⎩ 1⋅ I − 10 ⋅ I 2 −30⋅ I3 =10 ⎭
observa ca puterea furnizata de sursa
de tensiune este P = 10 I1 iar ⎧10⋅ (I2 − I1 ) +15⋅ I2 + 5⋅ (I2 − I3 ) = 0⎫
curentul care trece prin rezistenta R4 ⎨ ⎬
⎩−10 ⋅ I1 + 30 ⋅ I 2 − 5⋅ I3 = 0 ⎭
este I = I3 – I2.
z Se scriu ecuaţiile corespunzătoare
fiecărui ochi de reţea: ⎧30⋅ (I3 − I1 ) + 5⋅ (I3 − I2 ) + 30101
⋅ I3 = 0⎫
⎨ ⎬
⎩− 30 ⋅ I1 − 5 ⋅ I 2 + 65⋅ I 3 = 0 ⎭
z In forma matriciala ecuatiile (37) - (39) devin:
⎡ 40 − 10 − 30⎤ ⎡ I1 ⎤ ⎡10⎤
⎢ − 10 30 − 5 ⎥ ⋅ ⎢ I ⎥ = ⎢ 0 ⎥
⎢ ⎥ ⎢ 2⎥ ⎢ ⎥
⎢⎣− 30 − 5 65 ⎥⎦ ⎢⎣ I 3 ⎥⎦ ⎢⎣ 0 ⎥⎦

z 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
z fprintf('Puterea furnizata de o sursa de tensiune de 10V este:
% 8.4 f W \ n ‘ , P)
z MATLABul genereaza urmatorul raspuns:
Curentul prin rezistorul R4 este: 0.037 A
Puterea furnizata de o sursa de tensiune de 10V este: 4.7531 W102
Rezolvarea circuitelor cu Teorema
potentialelor la noduri
z Ex. 47: Pentru circuitul din
figura 38, sa se gaseasca
tensiunea intre nodurile 1, 2
si 3 (U1, U2 si U3).
z Solutie: Utilizand teorema
lui Kirchoff si luand in
considerare regula conform U1 −U2 U1 −U3
+ −5 = 0
careia curentii care ies 10 20
dintr-un nod sunt pozitivi,
U2 −U1 U2 U2 −U3 U3 −U1 U3 −U2
vor rezulta urmatoarele + + =0 + −2=0
10 50 40 20 40
ecuatii pentru fiecare nod:
103
z In forma matriciala ecuatiile 44-46 devin:
⎡ 0.15 − 0 .1 − 0.05 ⎤ ⎡U 1 ⎤ ⎡5 ⎤
⎢ − 0 .1 0 . 145 − 0 . 025 ⎥ ⋅ ⎢U ⎥ = ⎢0 ⎥
⎢ ⎥ ⎢ 2⎥ ⎢ ⎥
⎢⎣− 0.05 − 0.025 0.075 ⎥⎦ ⎢⎣U 3 ⎥⎦ ⎢⎣2⎥⎦

z 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
z 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

z Calculul mărimilor circuitelor electrice in regim


tranzitoriu se refera la circuitele cu caracter capacitiv
si / sau inductiv
z 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
z Pentru analiza circuitelor de curent
continuu in regim tranzitoriu se
considera circuitul RC descris in
figura
z Studiul acestui circuit se poate face
cu ajutorul Teoremei lui Kirchoff
pentru curent;
z Daca condensatorul este initial
neincarcat, u(t) = 0 la t=0 (conditii
initiale), atunci solutia ecuatiei este du(t ) u(t ) − us
data de relatia: C⋅ + =0
dt R
z u(t) reprezinta raspunsul in domeniu
timp a unui circuit RC, sau iesirea
unui circuit care are ca intrare o ⎛ ⎛ t ⎞
−⎜ ⎟ ⎞
u (t ) = us ⋅ ⎜ 1 − e ⎝ RC ⎠ ⎟
tensiune continua constanta, iar RC ⎜



reprezinta constanta de timp a
circuitului.
106
Circuite electrice in regim tranzitoriu - Exemple

z 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Ω.
z 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Ω.

z 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
z 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
z 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.
z 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.
z Necunoscutele circuitului (tensiunea sau curentul)
vor fi calculate in acest caz in domeniul operational
(s).
z 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.

z La t < 0, tensiunea la
bornele condensatorului
este uC(0) = 2 * 10 = 20V si
curentul prin bobina iL = 0;
z La t > 0, comutatorul se
închide si toate cele patru
elemente sunt in paralel.
z Utilizând Teorema lui t
u(t) du(t) 1
Kirchoff va rezulta ecuaţia: Is = +C⋅ + ⋅ ∫ u(τ ) ⋅dτ + iL (0)
R dt L 0
z Aplicând Transformata
Laplace ecuaţiei (57) vom Is U(s) U(s) IL(0)
= +C[s⋅U(s)−Uc(0)] + +
obţine: s R 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
z 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.
z Relaţiile fazoriale tensiune – curent pentru rezistor, bobina si condensator sunt:
I
U R = I ⋅ R ; U L = I ⋅ ( j ω L ); U C =
( jω C )
z 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.
z 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.
z Circuitele trifazate pot fi analizate prin conversia in domeniul frecventa
z 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
z MATLABul conţine doua functii
pentru integrarea numerica, quad
si quad8, a circuitelor electrice.
z Ex. 52: Pentru circuitul din figura
se cunosc valorile instantanee u (t ) = 10 cos( 220πt + 30 0 )
ale tensiunii si curentului. Sa se i (t ) = 6 cos( 220πt + 60 0 )
determine puterea medie, T
1
valoarea efectiva a tensiunii si U ef = U =
T
⋅ ∫u
2
( t ) ⋅ dt
factorul de putere utilizand
0

T
1
I ef = I = ⋅ ∫i ( t ) ⋅ dt
2
– a) metoda analitica T 0

– b) metoda numerica.
T
1 P 114 P
Pmedie = p(t) = ⋅ ∫u(t) ⋅ i(t) ⋅ dt k= =
T 0 S U ⋅I
z Solutie: Se scrie fisierul script cu urmatorul continut, care va apela si un
fisier function („Tensiunea”) creat pentru a defini tensiunea, curentul si
puterea:
z %Acest fisier calculeaza puterea medie si efectiva si factorul de putere
z %utilizand functia MATLAB de integrare numerica quad
z
%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);
115
U_aef = 10 / sqrt(2); k_a = cos(30*pi / 180);
z fprintf('Puterea medie analitica %f \ n Puterea medie numerica:
%f\n',P_amedie,Pmedie)
z fprintf('Tensiunea efectiva analitica % f \ n Tensiunea efectiva numerica:
%f \ n', U_aef, Uef)
z fprintf('Factorul de putere analitic % f \ n Factorul de putere numeric:
%f\n', k_a, k)

z 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

z Rezolvarea circuitelor de curent alternativ (studiul


diferitelor conditii de functionare), cu ajutorul
MATLABului, se poate face prin metode analitice si
prin metode numerice iterative.
z In inginerie electrica se apeleaza de multe ori la
ecuatii diferentiale pentru studiul diferitelor probleme
tehnice, cum ar fi rezolvarea circuitelor electrice.
z 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
(bobine, condensatoare). 117
z 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)).

z Ecuatia diferentiala care descrie dUC


tensiunea pe condensator a circuitului RC⋅ +UC =U(t)
din figura este data de relatia: dt

z Ecuatia (71) poate fi rescrisa sub dy


forma simplificata: a ⋅ + by = sin(2πt);a = RC,b =1
dt
z Solutie: Inlocuind ecuatia (73) in
ecuatia diferentiala (72) a circuitului
RC va rezulta solutia ecuatiei −1
diferentiale de ordinul 1 ⎡2a(k) ⎤ ⎡2a(k)⋅ y(k −1) ⎤
y(k) = ⎢ +b(k)⎥ ⎢ +a(k)⋅ D(k −1) +u(k)⎥
(Tensiunea pe condensator): ⎣ Δt ⎦ ⎣ Δt 118 ⎦
z Considerând a = 1 / 2π, se scrie fişierul script care va calcula si reprezenta grafic
tensiunea pe condensator (uC(t)):

z %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.
z 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.
z Ecuatia care calculeaza tensiunea
pe condensator a circuitului RLC din
figura este: d 2U C dU C
LC + RC + U C = U (t )
z Ecuatia diferentiala de ordinul 2 se dt 2 dt
poate scrie sub forma: d2y dy
– In care a = LC, b = RC si c = 1 sunt a 2 +b + cy = sin( ω t )
dt dt
constantele de timp ale circuitului.
z Solutia ec. diferentiale este data de ⎛ 1 ⎞
D2 (1) = ⎜⎜ ⎟⎟ ⋅ (− b(1) ⋅ D(1) − c(1) ⋅ y(1) + u(1))
relatia: ⎝ a(1) ⎠
121
z Solutie 1: Pentru conditiile initiale y(t=0)=y’(t=0)=0 se scrie un fisier
script cu urmatoarea secventa :
z %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(k-
1)*(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
z 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.

z 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
z 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.
z 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
z 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).

1
H (s) =
s 2 + 10 ⋅ s + 20
126
Locul geometric al radacinilor si
alocarea polilor

z Functia
MATLAB pt.
alocarea
polilor:
pzmap
z Iar pt. locul
geometric al
radacinilor
rlocus;
127
Răspunsul in frecventa
z 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.
z 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.
z Se poate aplica sistemelor de tip SISO sau
MIMO, considerând sistemul respectiv liniar.
z Este utilizat pentru proiectarea sistemelor de
conducere, acordarea parametrilor unor
regulatoare sau pentru proiectarea diferitelor128
filtre electronice/filtre de reţea etc.
Reprezentarea grafica a raspunsului
in domeniul frecventa
z Dacă se doreşte
reprezentarea
grafică a
răspunsului
sistemului în
domeniul
frecvenţă, se
utilizează funcţia
bode(sys), sau
bodemag(sys)
care reprezintă
grafic doar
amplitudinea
diagramei Bode.

129
Funcţii dedicate creării şi conversiei
modelelor liniare
z BibliotecaControl 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
z Funcţia c2d realizează conversia modelelor continue în
modele discrete echivalente, implementate prin tf, zpk şi ss;
z Se poate realiza şi conversia inversă, utilizând funcţia d2c;
z 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.
z Aceste funcţii pot fi apelate cu următoarele sintaxe:

sysd = c2d(sysc, Ts, Metoda)


Sysc = d2c(sysd, Metoda)

z Dacă nu se specifică metoda de discretizare, atunci


MATLABul va realiza conversia, utilizând metoda zoh (zero-
order-hold).
z O funcţie similară, cu cele de mai sus, este d2d, care poate fi
utilizată atunci când se doreşte discretizarea modelului131cu
un alt pas de eşantionare decât cel precedent.
Parametrii si caracteristici de baza pt.
proiectarea SRA
z Eroarea de regim staţionar caracterizează precizia de
funcţionare a SRA în regim staţionar.
z 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.
z 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.
z 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.
z 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 %).
z 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.
z 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
z 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ă.
z Criteriul Nyquist este cel mai important criteriu de apreciere a
stabilităţii SRA, în timp continuu.
z 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.
z 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ţă
z Să se calculeze şi să se
reprezinte grafic răspunsul în
frecvenţă al circuitului RLC
din figura ştiind că:
z R=10 kΩ, C=1,12 µF şi L =
5H
d2UC dU ce se întâmplă dacă
LC 2 + RC C +UC =Ui (t),uc (0) = 0 z
dt dt rezistenţa se modifică la
H (s) =
U 0 (s)
=
R
= 2
sRC
=
valoarea R = 100 Ω în timp
U i (s) R + sL +
1 s LC + sRC + 1 ce L şi C rămân
sC
s
R neschimbate?
= L 137
R 1
s2 + s +
L LC
z Soluţie: Se scrie fişierul script (raspunsulfrecventaRLC.m) cu
următoarea secvenţă:
z L=5; C=1.25e-6; R1=10000; R2=100; %parametrii circuitului
z num1=[R1 / L 0]; den1=[1 R1/L 1/(L*C)];%numărătorul şi numitorul fdt
z w=logspace(1, 4); f=w / (2*pi); h1=freqs(num1, den1,w);
z mag1=abs(h1); phase1=angle(h1)*180 / pi;
z num2=[R2/L 0]; den2=[1 R2/L 1/(L*C)];
z h2=freqs(num2,den2,w);
mag2=abs(h2);phase2=angle(h2)*180/pi;
z subplot(221),loglog(f,mag1,'+'),title('Raspunsul amplitudine pt.
R=10k'),ylabel('Amplitudinea')
z subplot(222),loglog(f,mag2,'--'),title('Raspunsul amplitudine pt.
R=0.1k'),ylabel('Amplitudinea')
z subplot(223),semilogx(f,phase1,'--'),title('Raspunsul faza pt. R =
10k'),
z xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)')
z subplot(224),semilogx(f,phase2),title('Raspunsul faza pt. R =
0.1k'),
z 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)
139
de calitate al circuitului creste.
6. Introducere in Simulink (1)
z 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.
z 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 ).
z 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.
z După realizarea modelului matematic al sistemului, următorul
pas este simularea dinamică utilizând una din metodele de
140
integrare numerică oferită de program (Ode23, Ode45 etc).
6. Introducere in Simulink (2)
z 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.
z 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.
z Utilizarea Simulinkului pentru studiul diferitelor regimuri de
functionare ale sistemelor dinamice permite si vizualizarea mai
multor ferestre grafice în acelaşi timp.
z 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
z Când se doreşte accesarea bibliotecii
Simulink sau deschiderea unui model,
Simulinkul afişează instantaneu fereastra
editorului său.
z 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:


z Menu Bar – conţine comenzile pentru crearea, editarea,
vizualizarea, printarea si simularea modelelor;
z Toolbar – conţine cele mai utilizate comenzi Simulink care
pot fi accesate printr-un simplu click pe butonul respectiv;
z Canvas – afişează diagrama bloc a modelului si implicit
permite editarea acesteia;
z Status Bar – afişează situaţia simulării când aceasta este in
progres. De asemenea, afişează si timpul simulării curente si
numele metodei de integrare numerica selectata. 143
Vizualizarea traiectoriei unui semnal.
Crearea modelelor şi a subsistemelor.
z Vizualizarea traiectoriei unui semnal necesita intr-o
prima etapa crearea unui model matematic,
implementat in Simulink printr-o schema bloc.
z Pasul următor include alegerea metodei de integrare
şi a pasului minim şi maxim, simularea modelului şi
implicit vizualizarea diferitelor forme de unda.
z 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
z 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.
z 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
z 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.
z 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.
z 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ă.
z O alta metodă de vizualizare a semnalelor
este prin setarea parametrilor interni
blocului Scope (ParametersÆData
historyÆSave data to workspace). Prin
aceasta metoda datele pot fi salvate in
fereastra de lucru a MATLABului si apoi
prelucrate cu funcţiile (comenzile) 146
acestuia.
Crearea modelelor
z Crearea modelelor in Simulink
utilizând biblioteca standard
(nucleul de baza).
z 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).
z Diagrama bloc a modelului şi
rezultatul simulării sunt prezentate
in figurile alăturate:
147
Modelarea sistemelor in timp continuu

z 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).
z 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 ) (*)
z 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).
z 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.
z 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.
z Schema bloc a modelului si reprezentarea grafica a mărimii de iesire
x a sistemului continuu sunt prezentate in figura următoare: 149
z 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.
z Ecuaţia (*) poate fi scrisa si cu ajutorul operatorului
Laplace (s): s ⋅ x = −2 x + u

z Care are ca soluţie funcţia de transfer:


u x 1
x= ; =
s+2 u s+2
z 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]).
z Prin utilizarea Transformatei Laplace modelul devine
mai simplu si are forma diagramei bloc din fig. 150
urmat.:
151
Crearea subsistemelor
z 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.
z Prin aceasta facilitate se reduce numărul blocurilor modelului si
se menţine ordinea de conectare a diagramei bloc a sistemului.
z 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
z 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.
z 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.
z Solutie: Modelul matematic al unui oscilator are forma:

d 2 y1 1 dy1 dy 2
= −ω 2
⋅ y1
y2 = ⋅ = −ω ⋅ y1
dt 2
ω dt dt

y 2 = − ω ∫ y 1 ⋅ dt
153
y1 = ω ∫y 2 ⋅ dt
154
Modelarea si simularea sistemelor dinamice
z 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 intr-
un 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)
z 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.
z 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).
z 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.
z 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)
z 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.
z 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.
z Principala caracteristica a blocurilor din biblioteca
Simulink consta in posibilitatea de-a modifica parametrii
acestora. Blocul gain conţine un parametru cu acelaşi
nume care poate fi modificat corespunzător. 157
Simularea sistemelor dinamice
z 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.
z Simularea propriu-zisa a unui sistem include doua faze:
1. Initializarea modelului
2. Executia modelului
z 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).
z 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
furnizate de modelul matematic al sistemului dinamic. 158
z Î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
z 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).
z 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).

z 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).
z Al doilea meniu Workspace I/O din fereastra Simulation Parameters (fig. )
permite afisarea semnalelor de iesire. Acest meniu are trei opţiuni:
z 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”;
z Structure – acest meniu este identic cu primul cu deosebirea ca nu afişează
timpul;
z Array – afiseaza marimile definite in workspace, având pe prima coloana
vectorul timp.
z Meniul Diagnostic ne permite sa urmărim toate evenimentele decurse in timpul
simulării: de atentionare (warning), eroare (error) sau de loc (non).
z 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)

z 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.
z 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.
z 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)

z 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.
z 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.
z 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
modifica parametrii interni (timpul de eşantionare). 162
Simularea sistemelor discrete

163
Discretizarea modelelor
z 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).
z Simulinkul poate discretiza un model existent, utilizând o
fereastră grafică interactivă (GUI), prin accesarea
meniului
toolsÆmodel discretizer.
z Această metodă (GUI) de discretizare permite automat
identificarea blocurilor continue ale modelului existent.
z 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.
z Discretizarea modelelor reprezintă un pas important în
proiectarea regulatoarelor (filtrelor) digitale şi este foarte
utilă pentru simularea sistemelor de control în buclă
deschisă şi cu buclă de reglare (SRA, acţionare electrică 164

etc).
Figura de mai jos ne arată cum se poate discretiza un model liniar
existent prin utilizarea interfeţei grafice interactive GUI – Model
Discretizer. Această metodă de discretizare permite automat identificarea
blocurilor continue ale modelului existent. In cazul nostru există doar un
singur bloc în această situaţie, blocul „Generator de semnal” :

165
Controlul in timp discret al SRA
z Pentru reducerea erorilor şi a timpului de simulare,
regulatoarele / controlerele continue pot fi înlocuite cu
cele discrete.
z 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).
z 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.
2 z −1
s= ⋅ 166
Ts z + 1
Modelarea şi simularea sistemelor neliniare de control
z Sistemele neliniare sunt acele sisteme care nu satisfac
principiul superpoziţiei, adică nu sunt liniare şi omogene ;
z 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ă.
z 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.
z 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
z În sistemele de reglare automată (SRA) elementele
neliniare se întâlnesc ca blocuri intermediare între
regulatoare şi elementele de execuţie.
z 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).
z Un sistem neliniar poate fi modelat printr-o ecuaţie
diferenţială de stare de forma:
dx
= f ( x, t ); x(0) = x0
dt
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:
10( s + 10) ⋅ ( s + 10)
H (s) =
( s + 1) ⋅ ( s + 0.3 + i ) ⋅ ( s + 0.3 − i ) 169
Modelarea şi implementarea elementelor
de circuit neliniare
z 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.
z 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ă.
z Biblioteca SimPowerSystems furnizează o colecţie vastă de
modele neliniare.
170
Modelarea unei inductanţe variabile
z Pentru modelarea unei inductanţe variabile se pleacă
de la ecuaţiile de definiţie:
di dΨ Ψ
u = L⋅ = Ψ = ∫ u ⋅ dt i=
L(Ψ)
dt dt

z 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

z 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
z 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).
z Implementarea circuitelor electrice se poate face şi
prin funcţii de transfer, mărimi de stare sau utilizând
blocurile bibliotecii SimPowerSystems.
z 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.

di
Uca = i ⋅ R + L ⋅ ;i(0) = i0
dt
t
1
i(t ) = ∫ (U ca − i ⋅ R)dt + i(0)
L0

174
Exemplu: Să se implementeze în Simulink prin fdt modelul matematic
(MM) al unui circuit RLC serie şi al unui circuit RLC paralel, iar apoi
să se simuleze răspunsul treaptă aplicat la t=0, dacă R=1.5, L=2 şi C=2.

z Circuitele electrice pot fi implementate în Simulink mult mai


simplu prin reducerea ecuaţiilor matematice la funcţii de
transfer (fdt) sau la MM-ISI. Această metodă de implementare
se poate utiliza doar atunci când parametrii circuitului sunt
constanţi.
z 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 1/ LC
G(s) = 2 G(s) = 2
s + s ⋅ R/ L +1/ LC s +s⋅1/ RC+1/ LC 175
Implementarea in Simulink a unui circuit
RLC serie si paralel prin fdt

176
Biblioteca SimPowerSystems(SPS)
z 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;
z 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
z Modelează şi simulează circuitele electrice şi
electronice utilizând simboluri standard, cum ar fi:
rezistorul, bobina, condensatorul sau dioda, tiristoare,
tranzistoare etc;
z 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);
z Furnizează blocuri pentru modelarea unui sistem
energetic complet de putere (Transport, Distributie);
z Utilizează metoda de discretizare a unui sistem
dinamic pentru a creşte viteza de execuţie a unei
simulări;
z 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 6.5)
conţinea nouă biblioteci cu componente electrice şi
electronice (powerlib):

179
Analiza sistemelor in SimPowerSystems(SPS)
z 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);
z Afişeaza şi modifica valorile iniţiale ale mărimilor de stare;
z Calculeaza circulaţia de putere şi iniţializeaza parametrii unei
maşini electrice;
z Genereaza un raport care include calcularea mărimilor de
regim staţionar.
z 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
z 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.
z 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
Electronics
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
z 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.
z 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
z 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.
z 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).
z 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).
z 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
dIa
Ua = Ia ⋅ RT + La ⋅
dt
+Ue Ue = ka ⋅φ⋅Ω

M em − M R = J ⋅

Mem = ka ⋅φ ⋅ Ia
dt

t
1 1
t

Ia(t) = ⋅ ∫(Ua −Ia ⋅ RT −Ue)⋅dt+Ia(0) Ω(t ) = ∫ (M em − M R ) ⋅ dt + Ω(0)


La 0 J0
191
Implementarea MM al MCC in
Simulink

192
Simularea pornirii in sarcina a unei MCC

193
Implementarea MCC cu excitaţie separata luând in
considerare constantele de timp ale maşinii
z 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.
z 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.:
z 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
Tm=0.3.
di a 1
= ⋅ (u a − i a − Ω ⋅ i E )
dt Ta
La LE J ⋅ Ra
Ta = ;TE = ;Tm = 2 2 di E 1
Ra RE k ⋅φ = ⋅ (u E − i E )
dt TE
dΩ 1
= ⋅ (i a ⋅ i E − M R )
dt Tm

195
196
Modelul matematic al MCC implementat
prin funcţii de transfer
z Modelul matematic al MCC poate fi implementat in
Simulink si prin funcţii de transfer (fdt) utilizând
Transformata Laplace
z 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).
z 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
reglajului prin indus si excitaţie: 197
U a ( s ) = I a ( s ) ⋅ (R a + s ⋅ L a ) + U e ( s )
U e (s) = ke ⋅φ ⋅ Ω (s) ∞

M em ( s ) = k m ⋅ φ ⋅ I a ( s ) = I E ( s ) ⋅ I a ( s ) F ( s ) = ∫ f (t ) ⋅ e − st dt
0
M em ( s ) = M R ( s ) + J ⋅ Ω ( s ) ⋅ s
U E (s) = (RE + s ⋅ LE ) ⋅ I E (s)

Ω(s) kM 1
H1(s) = |MR (s)=0 = =
Ua (s) (
s ⋅ J ⋅ (Ra + s ⋅ La ) + kM ⋅ kE kE ⋅ s2 ⋅Tm ⋅Ta + s ⋅Tm +1 )
Ω(s) Ra + s ⋅ La kM ⋅ (1+ s ⋅Ta )
H2 (s) = |Ua (s)=0 = = 2
MR (s) (
s ⋅ J ⋅ (Ra + s ⋅ La ) + kM ⋅ kE s ⋅Tm ⋅Ta + s ⋅Tm +1 )
Ω(s) k E − k a (1 + s ⋅ T a )
H 3 (s) = |U a ( s ) = 0 =
U e (s) (
(1 + s ⋅ T E ) ⋅ 1 + s ⋅ T m + s 2 ⋅ T m ⋅ T a )
Ω(s) kM
H 4 (s) = | I a ( s )=0 =
U e (s) (1 + s ⋅ T m ) ⋅ (1 + s ⋅ T E ) 198
z Exemplu: Sa se modeleze un servomotor de CC cu
magneti permanenţi prin fdt.
z 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.

kM Ra +sLa
Ω(s) = ⋅Ua (s) − ⋅ MR(s)
(Ra +s⋅ La )⋅ sJ+kM ⋅kE (Ra +s⋅ La )⋅ sJ+kM ⋅kE

199
200
Simularea unei porniri in sarcina si
reversarea brusca a tensiunii la borne

201
Pornirea cu rezistoare si frânarea dinamica
z Pornirea MCC se poate realiza prin:
– conectarea directa la reţea,
– modificarea tensiunii de alimentare (cresterea progresiva prin trepte de
tensiune sau prin alimentarea prin convertoare statice)
– cu rezistoare (rezistenta se modifica in trepte).
z Frânarea MCC poate fi:
– recuperativa,
– dinamica (reostatica)
– in contracurent (conexiuni contrare).
z Exemplul următor va prezenta o pornire a MCC cu excitaţie
separata cu un starter rezistiv si o frânare dinamica.
z La pornirea cu rezistoare rezistenta se va modifica in trei
trepte pana când maşina va ajunge la turaţia nominala.
z Franarea dinamica (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
z O acţionare electrica reversibila trebuie sa asigure
funcţionarea, cel puţin in regim de motor, in ambele
sensuri de rotaţie.
z 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.
z MCC funcţionează ca motor in cadranul 1 al
caracteristicii mecanice (Mem=f(Ω)) iar ca frână
recuperativa in cadranul 4.
z Frânarea recuperativa (generator pe reţea) se
realizează atunci când Ue>Ua si Ia=-Ia iar turaţia este
mai mare decât valoarea nominala de mers in gol. 206
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
z Reglarea vitezei (turaţiei) sau a poziţiei unui
servomotor de curent continuu se poate realiza ca in
figura următoare.
z 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.
z In acest caz maşina de curent continuu este
alimentata printr-un convertor de cc-cc (chopper),
care poate conţine un tiristor GTO in paralel cu o
210
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
Final Conclusion

216

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