Lab1 AdvancedPowerElectronics
Lab1 AdvancedPowerElectronics
Lab1 AdvancedPowerElectronics
Faculté de Technologie
Département de Génie Electrique
Master Académique : CE+RE+ERE
TP : Electronique de puissance avancée
TP. N° : 01
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.
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.
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 :
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.
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
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 :
Sys=[]; Tâches;
end end
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]
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 :
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 :
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 :
Tout dépend du nombre des sorties, la variable ‘sys’ peut être un vecteur ou un scalaire, elle est définie comme :
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).
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
function [sys,x0,str,ts]=SinglePhase180(t,x,u,flag,Ts)
%-------------------------------------------------------------------------
if flag==0
sys=[NumContStates,NumDiscStates,NumOutputs,NumInputs,0,DirectFeedthrough,NumSampTimes];
x0=[];
str=[];
ts=[Ts 0];
elseif flag==3
% Commande 180
tt=mod(t,T);
% Commandes complémentaires
Sa2=1-Sa1;
Sb2=1-Sb1;
% Sorties
Page 4
sys=[Sa1;Sa2;Sb1;Sb2];
else
sys=[];
end
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
Nous pouvons remplacer chaque bras de l'onduleur par un interrupteur à deux positions modélisé par une fonction
logique de connexion comme suit:
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
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 :
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 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]
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 :
Les trois tensions de référence forment un système triphasé équilibré donné par l’équation suivante :
v dc
varef r sin(2f r t)
2
v 2
v bref r dc sin(2f r t )
2 3
v dc 2
vcref r sin(2f 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 .
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.
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
vkref vkref a sin(6f 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