Lab1 AdvancedPowerElectronics

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 8

Université Mohamed Boudiaf - M'sila

Faculté de Technologie
Département de Génie Electrique
Master Académique : CE+RE+ERE
TP : Electronique de puissance avancée

TP. N° : 01

Modélisation et simulation d’un


onduleur triphasé à l’aide de Simulink
M-file S-Functions
(SPWM)
Objectif

Ce TP a comme objectif d’apprendre la programmation dans l’environnement Simulink en utilisant l’outil S-Function. Une
application sur la commande SPWM de l’onduleur de tension triphasé est considérée.

Présentation de l'environnement MATLAB/SIMULINK

Matlab est un logiciel destiné principalement au calcul scientifique, à la modélisation et à la simulation. Le noyau de calcul
est associé à l'environnement Simulink, permettant une modélisation basée sur des schémas-blocs.
Des bibliothèques spécialisées sont disponibles (les "Toolboxes") pour la plupart des domaines scientifiques nécessitant
des moyens de calcul importants : automatique, traitement de signal, mathématiques appliquées, télécommunications,
etc.
Des modules temps réel, développés autour des produits dSPACE (Real Time Interface, TRACE, COCKPIT) sont également
proposés et rendent l'environnement de travail particulièrement attractif. L'utilisateur dispose en effet de tous les outils
nécessaires à l'élaboration d'une application sur procédé réel, de la simulation à la supervision.

Introduction aux S-Functions

L'élaboration d'un algorithme sous Simulink est basée sur une description arborescente par schémas-blocs. Chaque bloc
fonctionnel peut être décrit de deux manières :

• graphiquement. C'est la méthode la plus courante et la plus facile à utiliser ;


• par une S-function (fonction système).

Une S-Function est un langage de programmation d’un bloc Simulink. Les S-Functions permettent d’ajouter nos propres
blocs aux modèles proposés par Simulink. Par des règles simples et préalablement établies, il est possible de mettre en
application nos propres algorithmes. Les S-Functions peuvent être écrites en langage Matlab, C++, C, ADA ou Fortran. Les
S-Functions emploient une syntaxe spéciale d’appel qui permet d’interagir avec Simulink. La forme d’une S-Function est
très générale et peut s’adapter aux systèmes continus, discrets et hybrides.

Fonctionnement d'une S-Function

Tout bloc S-function contenu dans un schéma Simulink possède les caractéristiques suivantes :

- un vecteur d'entrée u,
- un vecteur de sortie y,
- un vecteur d'état x.

Le vecteur d'état peut être discret, continu ou une combinaison des deux. Les vecteurs u, x et y sont définis de la manière
suivante :

Page 1
y  f o (x, t, u) ( calcul de la sortie)
x d  f d (x, t, u) (mise à jour des états discrets)
x c  f c (x, t, u) (calcul des dérivées)
x 
où x   c 
 xd 

Conventions d’appel des S-functions

Au cours de la simulation, Simulink appelle à chaque itération les blocs S-functions et demande un calcul des sorties, une
mise à jour des états discrets ou un calcul des dérivées. Des routines complémentaires assurent une initialisation et une
sortie correctes des différentes tâches. Dans le cas d'une S-function écrite en langage MATLAB (M-file), ces appels sont
gérés par le contenu du paramètre flag dans la fonction appelante comme suit :

En utilisant la fonction ‘if’ En utilisant la fonction ‘switch’


if flag == 0 switch flag
Tâches;
elseif flag==1 case 0
Tâches; Tâches;
elseif flag==2 case 1
Tâches; Tâches;
elseif flag== 3 case 2
Tâches; Tâches;
else otherwise

Sys=[]; Tâches;

end end

Cet algorithme peut être explicité comme suit :

Case 0: Initialisation

Premièrement, quand Simulink envoi flag=0, il vise à recevoir une déclaration des variables (x, t, y, u) et une initialisation
du vecteur x:

La fonction doit retourner la variable standard ‘sys’, contenant les informations suivantes:

sys= [nombre des états continues, nombre des états discrets, nombre des sorties, nombre des entrées, 0, direct
feedthrough, nombre des périodes d’échantillonnages]

De plus, il attend dans x0 le vecteur d´état initial.

Case 1: Calcul des dérivées

Quand Simulink envoi flag=1, il s'attend à ce que la fonction rende les dérivées en fonction du temps. Admettant que le
système d’équations différentielles est défini par l’équation suivante :

 fc (x, u)  f c1  x 1 , x  2  ,  f c2  x 1 , x  2  , 


dx

dt

Les dérivées sans retournées dans le vecteur ‘sys’ comme suit :

sys  fc1 , fc2 , 

Page 2
Case 2: Mise à jour des états discrets

Quand Simulink envoi flag=2, il s'attend à ce que la fonction rende la mise à jour des états discrets. Admettant que le
système d’équations aux déférences est défini par l’équation suivante :

x  k  1  fd (x, u)  fd1  x 1 , x  2 ,  fd2  x 1 , x  2 ,  

Les dérivées sans retournées dans le vecteur ‘sys’ comme suit :

sys  fd1 , fd2 , 

Case 3: Calcul des sorties

Quand Simulink envoi flag=3, il s'attend à ce que la fonction rende les valeurs des sorties. Admettant que les sorties sont
calculées par l’équation suivante :

y  fo (x, u)  fo1  x 1 , x  2  ,  f o2  x 1 , x  2  ,  

Tout dépend du nombre des sorties, la variable ‘sys’ peut être un vecteur ou un scalaire, elle est définie comme :

sys  fo1 , fo2 , 

Case 4: Calcul du temps nécessaire pour la mise à jour de la variable discrète suivante.

Case 9: Exécution de toute tache que vous voulez accomplir à la fin de la simulation.

Cases 5-8: Ne sont pas utilisés; en conséquence, la tâche "otherwise" est attribué à ces arguments (une erreur est à
signaler si l’un de ses cas est choisi).

Utilisation d'un bloc S-Function

Pour utiliser une S-Function on ouvre la Simulink Library Browser, on sélectionne Simulink puis User-Defined-Functions.
On place une S-Function dans un nouveau modèle. On ouvre ce bloc et on renseigne le nom de la S-Function que l'on a
créé. Généralement le même nom que le fichier écrit dans le langage choisit sans l'extension. Il est possible de passer des
paramètres à la S-Functions.

Figure (1) : Démarches nécessaires pour introduction une s-function dans l’environnement simulink

Exemple

Le schéma de commande symétrique (pleine onde) de l’onduleur monophasé en pont est donné par la figure suivante :

Page 3
Discrete,
Ts = 1e-007 s.
pow ergui

[Sa1] [Sb1]

g
C

C
T a1 T b1

E
i [i ]
+
-

R=50Ohm
+ [v]
Vdc=100V v
-
L=0.01H

[Sb2]
[Sa2]

C
g

C
T a2 T b2

E
E

[Sa1]
[Sa1]
[v]

[Sa2] [Sa2]

Si ngl ePhase180
[i ]
[Sb1] [Sb1]
S-Functi on

[Sb2]
[Sb2]

Figure (2) : Schéma block de simulation d’un onduleur monophasé à commande symétrique

La fonction générant la commande est programmée comme suit:

function [sys,x0,str,ts]=SinglePhase180(t,x,u,flag,Ts)

% Commande pleine onde (commande 180) d'un onduleur de tension monophasé

f=50; % la fréquence de la tension de sortie


T=1/f; % la période de la tension de sortie

%-------------------------------------------------------------------------
if flag==0

NumContStates = 0; % Nombre des variables d'état continues


NumDiscStates = 0; % Nombre des variables d'état discrètes
NumOutputs = 4; % Nombre des sorties
NumInputs = 0; % Nombre des entrées
DirectFeedthrough=0; % Valeur du Direct Feedthrough
NumSampTimes=1; % Nombre des périodes d'échantillonnages

sys=[NumContStates,NumDiscStates,NumOutputs,NumInputs,0,DirectFeedthrough,NumSampTimes];

x0=[];
str=[];
ts=[Ts 0];

elseif flag==3

% Commande 180

tt=mod(t,T);

if tt > 0 && tt <= T/2, Sa1=1; else Sa1=0; end


if tt > 0 && tt <= T/2, Sb1=0; else Sb1=1; end

% Commandes complémentaires

Sa2=1-Sa1;
Sb2=1-Sb1;

% Sorties

Page 4
sys=[Sa1;Sa2;Sb1;Sb2];

else

sys=[];

end

Présentation de l’onduleur de tension triphasé

L’onduleur de la figure (3) est composé de trois bras identiques, chacun est constitué de deux interrupteurs
bidirectionnels. Un interrupteur bidirectionnel est constitué d'un transistor et d'une diode en antiparallèle. Les différents
interrupteurs sont supposés parfaits, c'est à dire, les phénomènes dus à la commutation sont négligés ainsi que les chutes
de tension aux bornes des interrupteurs actifs.

𝑉𝑑𝑐
2

𝑅𝐿
𝑎
Vdc 𝑜 𝑏 n
𝑐

𝑉𝑑𝑐
2

Figure (3) : Schéma de l’onduleur triphasé

Modélisation de l’onduleur de tension triphasé

Nous pouvons remplacer chaque bras de l'onduleur par un interrupteur à deux positions modélisé par une fonction
logique de connexion comme suit:

1 si Ti1 est fermé et Ti2 est ouvert


Si   , i  a, b, c
0 si Ti1 est ouvert et Ti2 est fermé

Les trois tensions vao, vbo et vco par rapport au point milieu «o» en fonction des signaux de commande (Sa, Sb et Sc) et la
tension continue Vdc sont exprimées par :

 Vdc
 v ao  2 (2Sa  1)

 Vdc
 v bo  (2Sb  1)
 2
 Vdc
 v co  2 (2Sc  1)

Les tensions composées sont obtenues à partir des relations suivantes:

 Vdc Vdc
 u ab  v ao  v bo  2 (2Sa  1)  2 (2Sb  1)  Vdc (Sa  Sb )

 Vdc V
 u bc  v bo  v co  (2Sb  1)  dc (2Sc  1)  Vdc (Sb  Sc )
 2 2
 Vdc Vdc
 u ca  v co  v ao  2 (2Sc  1)  2 (2Sa  1)  Vdc (Sc  Sa )

Soit « n » le point neutre du coté alternatif de la charge, alors on a :

Page 5
 v ao  v an  v no

 v bo  v bn  v no
v v v
 co c no

La charge est considérée équilibrer, il l’en résulte que :

v an  v bn  v cn  0

La somme des tensions vao, vbo et vco conduit, en utilisant l’équation précédente, à l’expression de la tension v no
donnée par :

1
v no  (v ao  v bo  v co )
3
Les trois tensions simples de sortie de l'onduleur en fonction des tensions v ao, vbo et vco sont calculées donc par :

 1 2 1 1
 v an  v ao  v no  v ao  3 (v ao  v bo  v co )  3 v ao  3 v bo  3 v co

 1 1 2 1
 v bn  v bo  v no  v bo  (v ao  v bo  v co )   v ao  v bo  v co
 3 3 3 3
 1 1 1 2
 v cn  v co  v no  v co  3 (v ao  v bo  v co )   3 v ao  3 v bo  3 v co

Les trois tensions simples de sortie de l'onduleur en fonction des signaux de commande (S a, Sb, Sc) sont données par :

 2 Vdc 1 Vdc 1 Vdc


 v an  3 2 (2Sa  1)  3 2 (2Sb  1)  3 2 (2Sc  1)

 1 Vdc 2 Vdc 1 Vdc
 v bn   (2Sb  1)  (2Sb  1)  (2Sc  1)
 3 2 3 2 3 2
 1 Vdc 1 Vdc 2 Vdc
 v cn   3 2 (2Sc  1)  3 2 (2Sb  1)  3 2 (2Sc  1)

Ce qui donne :

 Vdc
 v a  3 (2Sa  Sb  Sc )

 Vdc
vb  (2Sb  Sa  Sc )
 3
 Vdc
 v c  3 (2Sc  Sa  Sb )

Finalement, les tensions simples, pour un système triphasé équilibré, s'expriment en fonction des fonctions logiques par la
relation matricielle suivante:

 va   2 1 1  Sa 
  Vdc   
 v b   3  1 2 1  Sb 
v   1 1 2   S 
 c   c 

Le courant i dc à l'entrée de l'onduleur est donné par:

idc  Sa ia  Sbib  Scic

Simulation de l’onduleur triphasé

Le schéma de simulation d’un onduleur PWM triphasé connecté à une charge ( R  10, L  0.01H ) triphasée couplée en
étoile est donné par la figure (4). L’onduleur est alimenté par une source de tension continue Vdc  600V .
Page 6
Discrete,
Ts = 1e-006 s. [Sa] [Sb] [Sc]
pow ergui

g
C

C
[va] +
v
-
Ta1 Tb1 Tc1
[Sa]

E
i [ia]
+
-
Sabc [Sb]
RL1

+
-
[Sc] Vdc

v
RL2
ref erecces-porteuse [uab]

PWM sinusoidale NOT NOT NOT RL3

C
g

g
C

C
Ta2 Tb2 Tc2

E
[va] [uab] [ia]

E
Figure (4) : Schéma block de simulation d’un onduleur triphasé contrôlé par la modulation SPWM

La technique PWM sinusoïdale (SPWM) peut être réalisée en utilisant les blocks Similink comme suit :

Figure (4) : Schéma de réalisation de la modulation SPWM sous Simulink

Les trois tensions de référence forment un système triphasé équilibré donné par l’équation suivante :

v dc
varef  r sin(2f r t)
2
v 2
v bref  r dc sin(2f r t  )
2 3
v dc 2
vcref r sin(2f r t  )
2 3

Où r  0 1 est le taux de modulation et f r est la fréquence de la référence fixée dans notre cas à 50Hz. La porteuse est
générée par le block « repeating table » de fréquence f p  mf r où m est l’indice de modulation et d’amplitude
vp max  Vdc 2 .

- Simulation de la commande par modulation de largeurs d’impulsions sinusoïdale (SPWM)

Les simulations sont réalisées en adoptant les paramètres suivants : r  0.85 et m  9 .


1°) Tracer les signaux des trois références ainsi que la porteuse.
2°) Tracer les formes de la tension simple, la tension composée et le courant de la première phase.
3°) Tracer le spectre harmonique de la tension de la première phase pour les 100 premières harmoniques.
4°) Remplir le tableau suivant :

r 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5
THD
Va1
Page 7
Tracer les variations du taux de distorsion harmonique et le fondamentale de la tension de la première phase en fonction
du taux de modulation. Commenter les résultats.

- Simulation de la commande SPWM avec injection de l’harmonique trois

Il est possible d’améliorer la qualité de réglage en injectant la troisième harmonique dans les tensions de référence. Il faut
noter que cette injection n’affecte pas la qualité de la tension simple ou composée du fait que la tension de sortie de
l’onduleur triphasé ne contient pas des harmoniques multiples de trois. Les nouvelles tensions de référence seront donc :

Vdc
vkref  vkref  a sin(6f r t), k  a, b, c
2

1°) Quel est l’objectif de l’injection de l’harmonique trois dans les tensions de référence ?
2°) Montrer que le taux optimal d’injection est : a  1 6 .
3°) Refaire le travail demandé dans le paragraphe précédent. Conclusions ?

- Programmation en s-function

Remplacer le block SPWM sinusoïdale par un bloc s-function jouant le même rôle.

Page 8

Vous aimerez peut-être aussi