Sunteți pe pagina 1din 7

Universitatea POLITEHNICA din București

Facultatea de Inginerie Electrică

Referat #1
L1: Utilizarea blocurilor DLL programabile în C pentru implementarea
comenzilor numerice în cadrul programului de simulare PSIM

L2: Comanda numerică DPWM a unui convertor 2/3 – implementare PSIM


utilizând blocuri DLL programabile în C
la
Modelarea şi Comanda
Convertoarelor Statice

Student: Gheorghe FLOREA


Grupa: EPA I

2017
Introducere

În cadrul acestor două lucrări au fost folosite blocuri DLL programabile în limbajul
de programare C pentru implementarea comenzilor numerice în programul de simulare
PSIM.
Prima parte (L1) presupune elaborarea unui proiect în mediul de simulare Visual
C++ și implementarea comenzii PWM sinusoidală cu eșantionare regulată simetrică pentru
invertorul trifazat de tensiune cu funcționare continuă doar în zona 1 de liniaritate.
A doua parte (L2) presupune implementarea comenzii numerice PWM cu
funcționare discontinuă pe 3 sectoare cu funcționare continuă în zonele de liniaritate
extinsă 1+2.
Structura laboratorului este următoarea:
• elaborarea unui proiect în mediul de simulare Visual C++ în vederea obținerii unui
bloc programabil DLL. Studiul variabilelor specifice t, delt, in şi out.
• implementarea strategiei PWM sinusoidală cu eșantionare regulată simetrică
pentru invertorul trifazat de tensiune.
• elaborarea modelului PSIM al invertorului trifazat de tensiune care să conțină
modulul DLL specific comenzii numerice PWM sinusoidală cu eșantionare regulată
simetrică. Studiul rapoartelor de conducție şi a valorii efective a tensiunii de fază.
• implementarea strategiei numerice DPWM (Discontinuous Pulse Width
Modulation) pe 3 sectoare. Studiul rapoartelor de conducție şi a valorii efective a tensiunii
de fază.

Modul de experimentare

În programul de simulare Visual C++ a fost implementat programul de mai jos, din
care a rezultat modului DLL folosit în continuare.
După implementarea acestuia a fost studiată strategia PWM sinusoidală cu
eșantionare regulată simetrică.

De unde rezultă rapoartele de conducție pentru cele trei faze:

-2-
#include<math.h>
_declspec(dllexport) void simuser (t, delt, in, out)
double t, delt;
double *in, *out;
{
// numara pasii de calcul delt
static int count=100;
// numarul total de pasi de calcul ce se efectuiaza intr'o perioada de comutatie
static double Ncount=100;
// rapoartele de conductie pentru intreruptoarele supeioare ale bratele A, B si C
static double con_A,con_B, con_C;
// tensiunile sinusoidale de referinta
static double ref_A, ref_B, ref_C;
// timpul curent intr-o perioada de comutatie
double Eps;
// comenzile PWM pentru cele trei brate ('on' = '1', 'of' = '0')
int PWM_A, PWM_B, PWM_C;
// momentul de comutatie
static double FC[3], FD[3];
if(count==Ncount)
{
// initializare counter
count = 0;
// initializare tensiuni referinta
ref_A = in[0];
ref_B = in[4];
ref_C = in[8];

// deffinarea rapoartelor de conductie


con_A = ref_A / 100 + 0.5;
con_B = ref_B / 100 + 0.5;
con_C = ref_C / 100 + 0.5;

// limitarea raportului de conductie inferior la 0.05


if(con_A<0.05){con_A = 0.05;}
// limitarea raprotului de conductie superior la 0.95
if(con_A>0.95){con_A = 0.95;}

FC[0] = (1.0 - con_A) / 2.0;


FD[0] = con_A + FC[0];

if(con_B<0.05){con_B = 0.05;}
if(con_B>0.95){con_B = 0.95;}

FC[1] = (1.0 - con_B) / 2.0;


FD[1] = con_B + FC[1];

if(con_C<0.05){con_C = 0.05;}
if(con_C>0.95){con_C = 0.95;}

FC[2] = (1.0 - con_C) / 2.0;


FD[2] = con_C + FC[2];
}
count = count+1;
// se calculeaza timpul curent in cadrul perioadei de comutatie curent
Eps = t / 1e-3 - floor(t / 1e-3);
// se calculeaza comenzile PWM la fiecare pas de timp
if((Eps>=FC[0])&&(Eps<=FD[0])) {PWM_A = 1;}
else {PWM_A = 0;}

if((Eps>=FC[1])&&(Eps<=FD[1])) {PWM_B = 1;}


else {PWM_B = 0;}

if((Eps>=FC[2])&&(Eps<=FD[2])) {PWM_C = 1;}


else {PWM_C = 0;}

// iesiri DLL
out[0] = PWM_A;
out[2] = PWM_B;
out[4] = PWM_C;
out[6] = con_A;
out[8] = con_B;
out[10] = ref_A;
}

-3-
În continuare a fost implementat modelul în programul de simulare PSIM,
reprezentat în figura de mai jos.

Figură 1 - Modelul PSIM implementat

Rezultatele obținute în urma simulării modelului sunt prezentate în continuare

Figură 2 - Formele de undă ale sistemului de curenți trifazat

-4-
Figură 3 - Forma de undă a tensiunii de fază

Figură 4 - Forma de undă a tensiunii de linie

Figură 5 - Analiza Fourier Rapidă a tensiunii de fază

-5-
În continuare a fost implementată strategia de comandă DPWM (Discontinuous
Puise Width Modulation) pe 3 sectoare. Pentru calculul rapoartelor de conducție se
consideră 3 sectoare de câte 120°el., iar pentru fiecare sector se obține un set de ecuații.
Sectoarele determină faza folosită ca referință. Astfel, pe sectorul pe care o anumită fază
este mai negativă decât celelalte două, faza respectivă este folosită ca referință.
Sectorul 1 – referință faza A

Sectorul 2 – referință faza B

Sectorul 3 – referință faza C

Figură 6 - Comutațiile pe cele trei brațe

-6-
Figură 7 - Sistemul trifazat de referințe și funcțiile generatoare de comutații

Figură 8 - Formele de undă ale tensiunii de fază, tensiunii de linie și a curentului prin faza A

Figură 9 - Analiza Fourier Rapidă a tensiunii de fază

-7-

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