Université Du Québec
Université Du Québec
Université Du Québec
MÉMOIRE PRÉSENTÉ À
L'UNIVERSITÉ DU QUÉBEC À TROIS-RIVIÈRES
PAR
SALIM BOUKAKA
SEPTEMBRE 2015
Université du Québec à Trois-Rivières
Service de la bibliothèque
Avertissement
Résumé
généralement des opérations complexes et un long temps de calcul, ce qui rend la tâche
d'intégration très élevée. Ce travail présente l' implémentation sur FPGA de plusieurs
lois de commande à base d' intelligence artificielle d' une machine synchrone à aimant
La machine synchrone à aimant permanent est connue par son modèle complexe et
non linéaire. Les contrôleurs à base d' intelligence artificielle représentent une solution
dans le but d' en avoir un schéma d' implémentation simple et bien structuré. La
que les schémas non seulement conservent les avantages des modélisations en virgule
flottante sur Simulink™lMatlab®, mais aussi donnent des schémas structurels simples
qui consomment peu d' espace lors de l' implémentation, donc ça permet d' implémenter
III
Modulation ) sur la même carte laissant de l' espace pour d' autres fonctions.
IV
Abstract
High performance motor controllers usually require complex operations and long
computation time, which makes the implementation task more complex. FPGA (Field
efficiency, very high significant integration density. This work presents implementation
The permanent magnet synchronous machine is known for its complex and non-
linear mode!. Artificial intelligence based controllers are an effective solution to face
problems associated with the PMSM' s mathematical mode!. The control algorithms
proposed in this work have been revised and restructured in order to have a simple and
ModelSim and Simulink™lMatlab®. The simulation results show that the scheme not
point, but has a simple structural scheme and consumes few resources during
implementation, so it permits to implement the control law on the same board and
Résumé ................................................................................................................................... ii
Table des matières .......... ....... ............. .... ...... ..... .................................. ..... ....... ............ ....... .... v
Liste des tableaux .......... ................ .................... .. .............. ..................................... ... ......... .... x
Liste des figures ........................ ....... ..... .. ....... ....................... .............. ... ........ ....... ... ........ ..... xi
1.1 Problématique ..... .. ............ ..................... ...... .... ........................................... ..... ........ 2
2.2 Définitions ..................... ............. ........................... ..... .... ...... .............................. ... Il
2.3 .1 Opérateur NON ..... ... ........ .. ..................................... ................. ... .. ............. 13
permanent ................................................................................................... 47
5.3 2eme Loi: PMSM control based on adaptivefuzzy logic and sliding
5.4 3eme Loi: Adaptive Fuzzy Logic Control Structure of PMSMs [5.3] ..................... 92
Annexe A - Extraits des codes de simulation ... .... ............ ...................... ........................... 106
Annexe C - Publications et contributions .... . .. . .. . ... .. ... . .. . ......................... ...... ... 144
x
Tableau 4-2 Détection du secteuf.. ..... ....... ....... ............. .... ........... ................. ........... ....... ..... 56
Tableau 4-3 Résumé de l' utilisation des ressources pour l' implémentation de la
SVPWM . .... ....... ....... ....... ....... ........... ....... .... ..... .......... ... .... ..... ....... ............ .. 59
Tableau 4-4 Résumé de l' utilisation des ressources pour l' implémentation de
l' approximation de la SVPWM .................... ... .......................... ........... ..... ... 72
Tableau 5-1 Table des règles d' inférence . ..... ....... ............ ........ ...... ......... ......... ......... ..... ..... 76
Tableau 5-2 Sommaire d' utilisation des ressources pour l' implémentation de la
loi de commande .... ... ........... ......... .... ........ ...... .... ........ ...... ..... ....................... 87
Tableau 5-3 Distribution des ressources . ...................... ........... ................... ........... ..... ......... 87
Tableau 5-4 Comparaison des trois lois en termes de consommation .. .......... ....... .... .... ..... . 95
XI
Figure 2.2 Exemple de réglage de vitesse d'un véhicule selon la logique floue ................. 10
Figure 2.3 Exemple d'une fonction sigmoïde .... .................... .................. ... ... ............ ..... ..... 12
Figure 2.4 Schéma des différentes opérations dans un bloc logique floue .. ........................ 14
Figure 3.2 Exemple d'une simple fonction programmable [3.4]. .......... ..... ............... ....... ... 27
Figure 3.4 Exemple d'une connexion à base d'anti-fusibles [3.4]. ..................... .. .... ... ..... ... 28
Figure 3.5 Cellule principale d' une mémoire à grille flottante et son schéma
symbolique ...... ..... .... ...... ........ ......... ......... ................................ .... ......... .... ... 30
Figure 3.8 Bloc d' addition ........................... ............. ... .......... .......... ............. ...... .............. ... 36
Figure 3.9 Prise en compte du débordement sur VHDL pour un additionneur. ......... ... ...... 37
Figure 3.11 Bloc de Multiplication .... ...... ....................... ...... ............. ............. ........ ... .......... 39
Figure 3.14 Prise en compte du débordement sur VHDL pour un soustracteur. ................. 41
XII
Figure 3.15 Résultats d' un soustracteur à 16 bits . .... ...... ...... .................. .... .. .... .............. ..... 41
Figure 3.16 Bloc de décalage ..... .. .. .. .... .... .... .......... .. .. .. ........ .. ...... .. ...... .... .................... ...... .. 42
Figure 3.17 Résultats d' un registre à 8 bits .... .... .... .... .............. ........ ...... .. .... .. .... .............. .... 43
Figure 3.18 Bloc de troncation ............. .. ............ ........ .. .... ...... .......... .... .. .. .. .. .. .... ...... .... ........ 43
Figure 3.19 Résultats d' un troncateur à 16bits-à-8bits . .. ........ ...... .. ........ .. .. .. .......... .... .. ...... . 44
Figure 4.2 Dispositif d' entrainement électromécanique typique ............................. .. .... .. .... 46
Figure 4.3 Représentation de la machine synchrone à aimants permanents . .. ...... .... .......... . 47
Figure 4.4 Circuit équivalent de la MSAP ........... .... .... ...... .......... ............................ ............ 49
Figure 4.5 Onduleur triphasé à deux niveaux . .. ........ .. .......... .. .. .. .. .... .. ........................ .. ...... . 51
Figure 4.6 Vecteurs d' espace de tension .............................................. .... .. .... ........ .. ...... .. .... 53
Figure 4.7 Forme des Signaux PWM dans le secteur 1. ........................ .... ............ .... .. ........ . 55
Figure 4.8 RTL Schéma fonctionnel de l' onduleur sur Simulink.. .. ........ .... .................... .... 57
Figure 4.10 Schéma du circuit SVPWM réalisé sur FPGA ....... .. ...... ........ .................... ...... 58
Figure 4.11 Tension de sortie Phase A .... .. ........ .. .... .... .... .. .. ........................ .. .. ...... ............ ... 58
Figure 4.12 Signaux PWM pour trois périodes Ts .. .... .... .. .. .............. .. .. .. .. .... ....................... 59
Figure 4.13 Représentation des harmoniques d' une phase ........... .. .... .......... ...................... . 59
Figure 4.14 Méthodologie utilisée pour identifier le modèle approximatif. .. .......... ............ 62
Figure 4.16 Tension de sortie Phase A .......... .................... .............. .... .......................... .. ..... 64
Figure 4.17 Représentation des harmoniques .. .. .. ........................ .......... .................. ........ .... 65
Figure 4.18 Signaux PWM pour trois périodes T s . ............ ............ ............ .... .. .... .. .. .... .. ...... 65
Figure 4.19 Tensions triphasées pour un système déséquilibré ... .... .. .... ...... .. .. .................... 67
XIII
Figure 4.20 Simulation de l' approximation avec une loi de commande .......... ..... ..... ... ...... . 68
Figure 4.21 Schéma du circuit du modèle approximatif réalisé sur FPGA. ........ ....... ......... 69
Figure 4.23 Tension de sortie Phase A ............. ........ .... .......................................... .... ... ....... 70
Figure 4.24 Représentation des harmoniques d'une phase .............. ............ ... .. ................... 70
Figure 5.2 Fonctions d'appartenance ................... ........... .... .... .............. ... ..... ................. ...... 76
Figure 5.5 Schéma du circuit de la partie d'adaptation réalisé sur un FPGA. ..................... 82
Figure 5.6 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA. ................... 82
Figure 5.7 Schéma du circuit FLC adaptatif réalisé sur un FPGA ..... ........ ................. ...... ... 83
Figure 5.8 Entrées/Sorties du circuit Générateur de sin/cos réalisé sur un FPGA. .............. 84
Figure 5.9 Sinus et cosinus à base de la série de Taylor. ................ ...... ........ ....................... 84
Figure 5.l 0 Schéma du circuit Générateur SinCos réalisé sur un FPGA. .............. .............. 85
Figure 5.15 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA. ................. 90
Figure 5.l8 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA ... ... ............ 93
XIV
CG Grille de contrôle
D Drain
FG Grille Flottante
IC Integred Circuit
S Source
J Inertie
R Résistance statorique
() Position du rotor.
_ --i
Couple électromagnétique
1f Couple de frottement
puissance, les lois de commande et surtout dans le domaine des matériaux magnétiques, a
haute résolution, la robotique et les lecteurs de disque dur [1.1 , 1.2, 1.3]. La popularité des
MSAP vient de leurs avantages par rapport aux moteurs à courant continu et aux moteurs
asynchrones, comme: leur faible bruit, faible inertie, rapport couple/courant élevé,
efficacité élevée, robustesse, et leur faible coût de maintenance [1.3, 1.4]. Cependant, les
obstacles pour le contrôle en vitesse d' une MSAP. Afin d'obtenir les performances
Plusieurs techniques de contrôle adaptatif ont été adoptées pour remplacer les méthodes
paramètres de système. Mais pour la plupart de ces nouvelles techniques adaptatives, leurs
algorithmes reposent sur une estimation en ligne des paramètres du moteur. Cette
estimation peut paraitre comme un inconvénient majeur surtout en termes d' implémentation
2
ou il peut être difficile d' intégrer, loi de contrôle, algorithme de la SVPWM et aussi un
algorithme d' estimation sur une seule plateforme. Les algorithmes de contrôle basés sur
neurones sont considérés comme des solutions qui pourraient résoudre les problèmes
associés à la non linéarité et l' incertitude du modèle mathématique du système, sans avoir
concernant la non linéarité et l' incertitude des paramètres [1.6]. La capacité de s' adapter
avec la variation et la non linéarité du modèle et aussi avec les perturbations externes a fait
des contrôleurs intelligents une très bonne option dans le domaine de contrôle des systèmes
1.1 Problématique
linéaires (MSAP) se basent sur un modèle mathématique précis du système et ont tendance
La commande exploitant les outils d' intelligence artificielle, comme les réseaux de
neurones artificiels (RNA) et les systèmes à logique floue (SLF), a le potentiel de répondre
à ces contraintes. Ces outils ont en effet la capacité de générer une approximation robuste
Cependant, les performances élevées sont obtenues avec ces outils au prix de calculs lourds
[1.10]. Il est donc essentiel, pour profiter des avantages apportés par ces outils et pour les
faire accepter par le milieu industriel, d' offrir des solutions pour l'implémentation
d' implémentation des lois de commande des machines électriques. Les microprocesseurs et
les microcontrôleurs ont été les solutions les plus adoptées pour des applications simples
qui n' ont pas besoin d'un algorithme de commande complexe [1.10]. Comme les
demandent plus de ressources et une vitesse de calcul plus élevée. Pour résoudre ce
technologie Very Large Scale Integration (VLSI) qui est plus rapide en termes d' exécution
des opérations [1.13] . Par contre, pas tous les circuits VLSI sont propices à un changement
de paramètres de configuration après l' avoir conçu, et pour cette raison les chercheurs ont
adopté les Field Programmable Gate Array (FPGA) comme technologie rivale [1.14] .
La réalisation des différents circuits de commande sur une seule carte est devenue
possible grâce au développement rapide et la technologie avancée utilisée dans l' industrie
donc à améliorer leur coût. Donc, la technologie FPGA n'est plus juste une technologie de
prototypage rapide mais elle représente dorénavant une solution définitive qui permet de
1.2 Objectifs
d' intelligence artificielle et de démontrer que même après avoir retravaillé ces algorithmes
et les avoir implémentés à virgule fixe par prototypage rapide et sur circuit de commande
programmable (FPGA), ils gardent leurs performances. Ces commandes utilisent des
algorithmes d' apprentissage ou d' adaptation en ligne avec stabilité garantie. Les
algorithmes d' adaptation sont souvent coûteux lors d' une implémentation et nécessitent des
fréquences de calculs très élevées. L' adaptation et l' apprentissage hors ligne sont des
solutions efficaces pour l' implémentation, mais les contraintes liées à la dynamique et aux
Alors les algorithmes à implémenter doivent être de meilleurs compromis entre les
Les objectifs de ce travail portent sur la proposition d' une librairie de schémas de
commande à base d' intelligence artificielle pour le contrôle d' une machine synchrone à
aimant permanent. Ces schémas ont une architecture hautement parallèle, ce qui permet
de l' autre côté d' utiliser la même loi de commande mais pour une autre gamme de
machines, en changeant minimalement le code. Au final on fait une comparaison entre les
différentes lois qui ont été implémentées, en tirant des conclusions sur leurs performances
laquelle des lois est la plus appropriée et efficace pour une implémentation.
5
1.3 Méthodologie
Pour contrôler unw MSAP en temps réel, notre contrôleur doit tenir compte des
plus possible tout en gardant un minimum de précision. Cette étape consiste généralement à
structure parallèle, utilisation de multiples signaux d' horloge (Clock) , approximation des
fonctions complexes, soit par des méthodes mathématiques comme l' interpolation ou
La deuxième étape est de passer du calcul à virgule flottante à la virgule fixe. Le critère
de précision utilisé dans cette étape est pour les opérations de base comme l'addition, la
1bit. Donc le défi ici est de s'assurer que l'erreur ne s'accumule pas. Pour faire face à ce
défi, une méthode de validation très complexe est employée afin de valider des plus petites
parties de l' algorithme à l' assemblage final de ces parties. Le schéma de la figure 1.1 décrit
Écrire ct Simuler
Une opkation en • • • • • • • • • • • • • •
virgule fl<lttante
Descripti on
VHDLde
Mise en Virgule l' op6rati on
Fize à l'aide de Comparaison des
la fonction fichiers .Tzt
fonc _s""f'ling jmc]JdLor;cJ'«l
(huIeXl'.A) cr2~h.r
(AIutBXI' A)
Transfert des
Donn6cs dans
des fichiers .Tzt
jmc_MRldNumh.
r2l!ldJ.ofJc J'cler
(huIea.A)
Le deuxième chapitre contient une étude sur la logique floue, la définition des différents
termes utilisés, les opérateurs et les normes applicables dans la logique floue et les
Le troisième chapitre a pour but d'expliquer les différents pnnCipes des FPGA,
présenter des généralités, les différents éléments électroniques qu ' on peut trouver sur un
FPGA, une étude de quantification, et un survol sur l' implémentation des différente
Le quatrième chapitre présente, une synthèse des connaissances dans le domaine des
Le cinquième chapitre est consacré pour présenter les différentes lois de commande qui
ont été implémentées. Dans ce chapitre la théorie de ces lois de commande est présentée
brièvement afin de consacrer la grande partie pour les détails et les résultats
d'implémentation.
Finalement dans la partie conclusion générale, nous présenterons une discussion des
2.1 Introduction
2. J. J Généralités
l'intelligence artificielle, la logique floue a reçu un immense intérêt par les chercheurs et les
industriels depuis le début de la deuxième moitié du dernier siècle. Avant cette tournure
dans la définition de la logique, tous les algorithmes et les procédés se basaient sur la
logique classique [2.1] . La logique classique n' admet aucun état entre le vrai et faux, ou
ont été les premiers qui présentaient la logique floue comme une méthode de classification
pertinente en ayant établi les principes de bases [2.4]. Initialement, la logique floue a été
désignée comme un algorithme de classification qui a été utilisé pour l' analyse de données,
surtout dans des domaines comme le commerce et la médecine [2.5]. Cependant, son
premier qui a introduit la notion de la logique floue dans le domaine de contrôle en 1974
[2.6,2.7].
Afin de bien comprendre le principe de base de la logique floue , dans cette partie on
expose un exemple simple de régulation [2.7]. Nous prenons l' exemple de régulation de
pourra être estimée soit: basse, moyenne, ou élevée. Si nous nous basons sur la logique
classique pour réguler la vitesse du véhicule à une vitesse désirée moyenne, nous nous
Fonction Fonction
d'appartenance Il d'appartenance Il
If\ Faible Moyenne Élevée
Figure 2.1 Exemple de réglage de vitesse d' un véhicule selon la logique classique.
Nous constatons que ce raisonnement est loin d' être semblable au raisonnement humain
qui est capable d' être plus précis au niveau de classification. Une vitesse de 38 km/h
d'après la logique booléenne appartient à l' intervalle vitesse faible, alors que le cerveau
10
humain voit qu' elle pourrait appartenir autant à l' intervalle vitesse moyenne, qu' à
l' intervalle vitesse faible. C'est de là que le principe de la logique floue a été inspiré, le
degré d' appartenance peut varier entre 0 et 1 d' une façon que la somme de tous donne 1. La
vitesse du véhicule n' est pas toujours soit nettement faible, moyenne ou élevée, elle peut
être par exemple à 80% faible, 20% moyenne et 0% élevée, et dans ce cas la décision ne va
pas être la même qu' avec la logique classique, parce que la logique floue prend en
Pour une vitesse inférieure à 60Km/h et supérieure à 40Km/h, on hésite entre faible
et moyenne;
moyenne et élevée;
Fonction Foncti on
d' appartenance I.l d ' appartenance I.l
Moyenne
Faible Élevée
oL...------'---"---->..----'---~ Vitesse
Décélère ~""""_ _""""_ _"""--~ Accélère
40 80 120 Max -A o
l' expert d'en déduire une correction plus précise et qui tient compte du passage entre les
intervalles. Par exemple, lors du passage de l' intervalle ' Faible' à l' intervalle 'Moyenne',
l' accélération n'est plus constante. L' accélération est une image de la fonction
2.2 Définitions
véhicule est [0, Max[. Il est imposé par les caractéristiques du processus à commander,
dans ce cas, la voiture. L' univers de discours de l' accélération est l' ensemble des trois
valeurs, -A, °et +A. L' univers de discours de la réponse est fixé par l' expert selon la
dynamique qu'il cherche à obtenir [2.8, 2.9].
Chaque univers de discours est divisé en plusieurs sous-ensembles. Une fois que la
valeur est assignée au sous-ensemble auquel elle appartient, elle est représentée par le
variable linguistique. Dans l' exemple introductif : faible, moyenne et élevée sont les
La fonction d' appartenance est l' ensemble de degrés d' appartenance à chaque valeur
S i vitesse ~ 40Kmlh
~(Faible) ={ tlitesse _ !o Si 40Kmlh < vitesse ~ 60Kmlh
(2. 1)
(40 -60) (40 -60)
l' exemple.
Comme le montre l' exemple, il existe plusieurs formes de fonctions d' appartenance.
Fonction
d' appartenance ~
o~-'----------~--~
Dans certain cas, on trouve que la réponse de la logique floue dépend de plus qu' une
condition (deux ou plus). Dans la logique classique il existe des opérations qui permettent
c= NON(a) = ii (2.2)
Dans le cas de la logique floue, cette expression peut être écrite d' une façon plus
générale :
2.3.2 Opérateur ET
de cette opération sur deux fonctions d'appartenances Pa(x) et Pb(X) , donne la fonction pl x)
(2.4)
2.3.3 Opérateur OU
Selon la théorie des ensembles, l' opération OU est utilisée souvent pour exprimer
l'union entre deux ensembles. Dans la logique floue, cette opération est définie par
l' opération maximum. L'application de cette opération sur deux fonctions d'appartenance
Pa(x) et Pb(X) , donne la fonction Pc(x) qui représente l' union des deux fonctions.
14
(2.5)
Un contrôleur logique flou typique est représenté dans la figure 2.4. Basé sur la logique
qui combine les règles actives selon les entrées présentées au contrôleur [2.12, 2.13].
Comme les règles et le système d'inférence agissent sur des sous-ensembles flous, il est
extérieur en valeurs linguistiques qui peuvent être manipulées par les fonctions de la base
connaissances sont en général des valeurs linguistiques qui doivent être converties en
valeurs numériques afin de les appliquer sur le processus à contrôler. De ce fait, un bloc
Figure 2.4 Schéma des différentes opérations dans un bloc logique flou.
15
2.4.1 La fuzzification
La fuzzification est la première étape dans le FLC qui transforme les entrées
fonctions d'appartenance. Parmi eux, les deux plus couramment utilisés dans la pratique
d' appartenance à définir pour chaque variable linguistique est défini à l' aide d' expertise
humaine. Plus l' univers de discours contient de sous-ensembles flous, plus le régulateur
En logique floue, les règles sont souvent formulées en basant sur la connaissance de
entre les ensembles flous d'entrée et les ensembles flous de commande correspondante
[2.15 , 2.17, 2.18] . Une règle prend habituellement la forme d' instruction IF -THEN comme
suit:
IF x is a AND y is b THEN z is c
ensembles défini pour chaque variable d' entrée et de sortie. Si on définit n variables
d' entrée et de sortie X dans notre système, et pour chaque univers de discours de ces
(2.6)
Aussi appelé le moteur d'inférence ou inférence floue, le mécanisme d' inférence est
l'élément clé dans l'algorithme de logique floue qui émule la prise de décision de l'expert
système [2.3].
Après avoir décidé quelles sont les règles à appliquer, maintenant, cette étape consiste
à définir les degrés d'appartenance de la variable de sortie aux ensembles flous [2.6] . Il
existe deux méthodes fondamentales qui permettent de calculer ces degrés d' appartenance.
Les autres méthodes permettant d' y arriver sont nombreuses, la différence entre elles se
définie essentiellement par la façon de réaliser les opérateurs flous (ET, OU et NON).
Pour les moteurs d' inférences basés sur la méthode de Mamdani, les degrés
d' appartenance de la variable de sortie, sont calculés à l' aide des opérateurs ET et OU
Si Xl est A~ et X2 est A ~ et ... et X n est A~ Alors y l est CI et Y 2 est CJ et ... et Y m est C:n
sont les nombres d' entrées et de sorties du bloc logique floue, respectivement.
17
Dans ce cas les degrés d'appartenance correspondant aux variables de sortie sont
2.7
où, RI est la relation floue entre les entrées Xi et les sorties Yi, 1 = 1, ... , r et r est le
Cette méthode utilise la même forme de règles que la méthode de Marndani, Si .....
Alors, où l' antécédent est toujours une variable linguistique, mais le conséquent utilise des
variables numériques. Le conséquent peut être calculé à partir de m'importe quelle formule
Ym =C~(X)
2.4.4 La défuzzification
C'est la dernière étape de la logique floue. Avant que les sorties du moteur d'inférence
soient appliquées sur le processus à contrôler, ces dernières qui sont représentées comme
des degrés d' appartenance aux fonctions de la sortie, doivent être converties [2.19]. Alors
l' étape de la défuzzification consiste à convertir ces valeurs floues en variables réelles qui
du type des fonctions d' appartenance de la sortie, il existe trois méthodes fondamentales de
défuzzification [2.18] .
C'est une des méthodes les plus utilisées grâce à la haute précision qu' elle offre. Cette
méthode calcule la totalité de l'espace actif sous les fonctions d' appartenance. Mais le fait
Cette méthode est connue pour sa simplicité vu qu' elle prend en considération que le
sommet de l' espace actif sous la fonction d' appartenance. Dans le cas où les fonctions
d' appartenance sont de type échelon, la précision de cette méthode est similaire à la
première.
Dans cette méthode, le résultat de sortie correspond à la moyenne entre les maximums
de chaque fonction d' appartenance. Elle est utilisée beaucoup plus dans les cas où la
2.5 Conclusion
Dans ce chapitre, on a présenté les différentes étapes pour la conception d'un régulateur
flou. La difficulté de la conception réside dans la configuration de chaque bloc vu que cela
3.1 Introduction
utilisés pour contrôler n' importe quelle grandeur physique désirée (température, pression,
tension électrique, position mécanique, etc.). Au début de l'ère de contrôle, la plupart des
systèmes physiques et spécialement les systèmes électriques se contrôlèrent à l' aide des
contrôleurs analogiques, mais leur taille, poids, manque de flexibilité et complexité de les
de contrôle est devenue plus faci le ainsi que plus économique [3.1] .
Un autre progrès récent dans les systèmes de traitement informatique, qui a contribué à
l' augmentation de la capacité de traiter et résoudre les problèmes très complexes liés au
contrôle des systèmes électriques, est dans la façon de traitement, où la tâche de calcul est
partagée entre plusieurs processeurs qui peuvent communiquer les uns avec les autres d'une
manière efficace. Les processeurs dits individuels peuvent résoudre les sous-problèmes qui
d' une certaine manière ordonnée, permet à arriver à la solution du problème global. Étant
donné que de nombreux processeurs peuvent être incorporés pour exécuter les calculs, il est
[3.2].
20
Aujourd ' hui avec le développement de la technologie ITGE, les systèmes de contrôle
numérique sont de plus en plus utilisés dans différents domaines d' application en raison de
leur exactitude, précision, haute vitesse. De plus, il est possible de concevoir des circuits
aux avantages qu' offre la technologie ITGE, ce domaine a gagné une énorme popularité au
Les familles les plus connues de la technologie ITGE sont: PLD (Programmable Logic
Circuit) et ASSP (Application Specific Standard Product). Ces différentes familles ont
Les PLD sont des dispositifs dont l'architecture interne est prédéterminée par le
fabricant, mais sont conçus d'une manière telle que les ingénieurs spécialisés peuvent les
configurer pour effectuer une variété de fonctions différentes. L' architecture interne d' un
dispositif FPGA est plus développée que celle des PLD; elle comporte un nombre très élevé
de portes logiques et les fonctions qui peuvent être réalisées par chacune de ces portes
logiques sont beaucoup plus vastes et plus complexes que celles d' un PLD. À l'autre
extrémité du spectre se trouvent les ASIC et ASSP qui peuvent contenir des centaines de
millions de portes logiques et peuvent être utilisés pour créer des fonctions incroyablement
vastes et complexes. ASIC et ASSP sont basés sur les mêmes processus de conception et de
technologies de fabrication. Les deux sont conçus sur mesure pour répondre à une
application spécifique, la seule différence étant que l'ASIC est conçu et construit à l'ordre
pour une utilisation par une entreprise spécifique, tandis qu'un ASSP est commercialisé à
21
plusieurs clients [3.4]. Comme dans plusieurs publications, nous nous permettons dans le
reste du chapitre de croire que les dispositifs ASSP appartiennent à la famille ASIC.
Bien que l' ASIC offre le rapport nombre de transistors/taille le plus élevé, le temps de
calcul le plus rapide, et moins de consommation par rapport aux autres familles d'ITGE, la
technologie des ASIC n' est pas la plus adaptée aux différentes applications, et ce, à cause
silicium" et ne peut être modifiée sauf si le fabriquant crée une nouvelle version du circuit
[3.5]. De son côté l' architecture interne d' un FPGA présente une flexibilité et re-
programmabilité. Une telle architecture peut être utilisée pour exécuter diverses
applications. De même le produit [mal peut être corrigé (s'il y a des erreurs) ou amélioré
(s ' il y a des mises à jour) en reprogrammant simplement le FPGA. Un FPGA permet aussi
une reconfiguration dite partielle, où seulement une partie du FPGA est reconfigurée tandis
s'adapter fréquemment selon les contraintes des différents modes de fonctionnement [3.6].
Par rapport à d'autres technologies tel que les ASIC, les applications à base de FPGA ont
moins de coût de conception par unité et une commercialisation plus rapide. Ainsi, les
FPGA occupent une position intermédiaire entre PLD et ASIC parce que leur fonctionnalité
peut être personnalisée comme avec un PLD, mais ils peuvent contenir des millions de
portes logiques et être utilisés pour mettre en œuvre des fonctions extrêmement importantes
et complexes qui ne pouvaient auparavant être réalisées qu' en utilisant uniquement des
ASIC. Ces avantages font des contrôleurs à base de FPGA des contrôleurs efficaces et
22
cellule ASIC standard, a une performance de vitesse à peu près 3 à 4 fois plus lent qu'un
Au début des années 1980 les FPGA commencèrent à apparaitre sur la scène des IC
(Integred Circuit). Jusqu' à cette époque les FPGA ont été largement utilisés pour mettre en
œuvre les différentes fonctions de la logique binaire et combinatoire, des machines d'état de
début de 1990, comme la taille et la sophistication des FPGA ont commencé à augmenter,
les domaines d' utilisation des FPGA ont connu un élargissement spectaculaire.
supérieurs à 1 milliard de dollars us. Les FPGA ont connu une croissance régulière de plus
de 20 % dans la dernière décennie, dépassant les ASIC de 10%. Cela vient du fait que les
FPGA ont réussi de gagner de nombreuses nouvelles caractéristiques en commun avec les
plus rapide, en gardant les mêmes avantages par rapport aux ASIC [3.7]. Du coup,
aujourd'hui les FPGA sont utilisés dans toutes les applications qui nécessitent une
expliquant les éléments de base qu' on peut trouver sur une carte FPGA . Dans la dernière
23
Les FPGA ont fait leur apparition au début des années 1960 après la publication des
travaux de Gerald Estrin qui ont été connus par ''fixed plus variable structure computer"
[3.8] . A cette époque l' idée de la configurabilité était d' utiliser une régularité structurale et
une flexibilité fonctionnelle. Les réseaux cellulaires étaient généralement constitués d'un
tableau à deux dimensions de cellules logiques simples avec une communication fixe point
à point. La programmation des cellules logiques de ces réseaux, tels que ' Maitra cascades',
'Cutpoint', à la fin des années 1960, la possibilité de modifier la fonction logique d'une
puce après le processus de fabrication a été atteinte. Bien que la communication entre les
différentes cellules logiques fût toujours fixe, la fonctionnalité de chaque cellule logique
dans le réseau peut être déterminée par l' état des fusibles programmables. Ces fusibles
peuvent être programmés grâce à l'utilisation d' une intensité bien définie de courant ou par
En 1970 une nouvelle technologie de conception des FPGA qui se base sur le principe
des ROM (Read-Only Memory) est apparue. Une série de ROM programmables (PROM)
de N-entrées, est capable d' implémenter certaines fonctions logiques complexes. Comme
l'indique leur appellation, cette catégorie de mémoires mortes se caractérise par le fait
qu ' elle est programmable une seule fois après la fabrication. Il existe plusieurs types de
PROM qui se distinguent surtout par la façon de les programmer [3 .5]. Cette technologie
24
basée sur les PROM a été combinée en 1977 avec les technologies utilisées jusqu' à ce
moment pour rajouter aux nombreux avantages la flexibilité vu que les PROM une fois
deux plateformes qui ont profité des progrès spectaculaires dans le domaine des semi-
conducteurs. La première est la famille XC2064TM FPGA de Xilinx, qui était basée sur
SRAM (static Random-access memory). La deuxième, EP1200 d'Altera, avait une très
haute densité (3-,um CMOS) et utilisait des PROM effaçables (EPROM) [3.9]. Ces deux
produits ont été le véritable lancement de la technologie FPGA à l' échelle de prototypage
rapide et de nos jours, elle rivalise avec l' ASIC à l' échelle de produit final. Au courant des
deux dernières décennies plusieurs familles de FPGA ont été commercialisées par les
différents fabricants, Xilinx, Altera, Actel, Lattice, Crosspoint, etc. Pour résumer cette
période, Dr.Steve Trimberger qui est un des célèbres experts de Xilinx, a divisé les étapes
Un FPGA, comme l' indique son nom, se compose d' une matrice de blocs logiques
reprogrammables. La topologie d' interconnexion entre les différents blocs logiques fait
base sur une structure qui relie les blocs logiques d'une façon hiérarchique et récursive. La
deuxième est une structure organisée sur la forme de mailles et les blocs logiques de chaque
ligne sont reliés en cascade. La première topologie offre une taille plus miniature pour la
plateforme, mais en revanche une simplicité critique pour l' opération de routage. C' est pour
cette raison que la plupart des fabricants adoptent la topologie maillée qui est totalement le
contraire. La figure 3.1. montre l'architecture d'un FPGA qui adopte la topologie maillée
[3.6] .
26
Vertical
Routing
Channel
Uü 's
Switch
Bax
CLB
Connection
Horizontal Box
Routing
Channel
Figure 3.1 Architecture traditionnelle d'une plateforme FPGA à base de mailles [3.6].
Un FPGA peut contenir différents blocs logiques entre les blocs d' entrée et les blocs de
sortie, tout dépend des technologies utilisées et à quelle application il est désigné. En plus,
ce que la figure 3.1 montre, un FPGA peut contenir aussi des mémoires, des multiplicateurs
et des additionneurs déjà implémentés. Dans la partie suivante nous présenterons une partie
des composants qui constituent le mécanisme qui nous permet de configurer (programmer)
Pour présenter les différents composants, nous commençons par proposer une simple
Potenrial links
. - Pull-up resistors
AND
NOT
Les inverseurs à l' entrée de la fonction donnent une large plage de fonctionnalités pour
complémentaires, même une fonction simple comme AND peut être dérivée en 22=4
fonctions . Des résistances de sécurité sont reliées sur l' état 1 pour la sécurité du circuit si
Dans cette technologie, les fonctions logiques reprogrammables sont fabriquées avec
fusible électrique utilisé pour sécuriser les montages électriques. L' idée c' est de faire griller
3.3 [3 .7].
28
,----1.-.----,-- Logic 1
Fol
_ Pull·up resistors
'----'-I= ~ y=a& !b
AND
NOT
L'anti-fusible est un dispositif à deux bornes qui a le même principe que le fusible,
mais d'une façon inverse. L'anti-fusible dans son état normal est isolant contrairement au
fusible et il est conducteur lorsqu'il subit une haute tension sur ses deux bornes [3.10].
Programmed
antifuses
' ~-ç=J,
_ Pull.up resistors
NOT / /1 \ \
y= !a&b
,\ l '/
b ~iÎ;' AND
NOT
3.3.4 ROM
façon permanente, c'est à dire qu'elles doivent être conservées même lorsque le système est
hors tension.
29
Depuis une longue période, il y avait deux catégories différentes de mémoires non
effaçable électriquement).
EPROM ont une cellule de mémoire d'un seul transistor donc ils peuvent fournir une
haute densité et rentabilité, cependant leur structure ne permet pas d'effacer les données
stockées.
Toutefois, en raison de la structure complexe d' une cellule de mémoire, leur cout est assez
élevé d' un côté, et de l' autre côté cette technologie offre une densité beaucoup plus faible
qu ' EPROM.
de mémoires non volatiles est devenue la ROM la plus demandée du marché. Cette
technologie qui s' appelle Flash memory est de plus en plus utilisée ces dernières années
sous forme de nouvelles architectures. L'architecture de base est représentée sur la figure
3.5 [3.7].
30
CG~
s
Électrons
Figure 3.5 Cellule principale d'une mémoire à grille flottante et son schéma
symbolique [3.7].
3.3.5 RAM
diodes) d'où vient son appellation. Elles ont toujours joué un rôle essentiel dans la majorité
des systèmes VLSI. Cependant, cette catégorie de RAM présente des faiblesses à basse
échelle de tension; pour remédier à ce problème les mémoires vives dynamiques ont été
proposées. À la base de ces deux catégories, plusieurs variétés ont été proposées au fil du
temps.
[sRAM]
(DRAM]
WL~-hl
r BL
BL
l
Figure 3.6 Exemple d' une mémoire RAM statique et dynamique [3 .7] .
31
Dans cette section, nous expliquons la façon de concevoir les circuits logiques qui
mise en œuvre des opérations algébriques [3.7]. Chacune des deux représentations qui sont
couvrir une plage plus large de nombres décimaux avec une précision supérieure à la
virgule fixe [3.2] . Cependant cette haute performance se paie au prix de consommation
d'espace et le temps de calcul élevé par rapport à une représentation en virgule fixe. Du
coup on a opté pour la représentation la moins couteuse [3.9]. Après avoir choisi la
Dans une représentation numérique à point fixe, la variable est représentée par un
vecteur de données. Chacun des éléments du vecteur est appelé un bit. Le nombre de bits n
arithmétiques sur les nombres à virgule fixe au niveau des algorithmes, une représentation
spécifique de nombre est nécessaire. Les nombres les plus simples à représenter sont les
entiers, alors nous commençons par représenter un nombre entier et positif. Après nous
qu'on connait, où le nombre est représenté par un vecteur qui comporte n chiffres
décimaux. En général un nombre décimal est représenté comme suite [3.12]: D = d n- I dn-
1· · ·· dl do
(3.1)
suivante:
(3.3)
(3.4)
où n est le nombre de bits utilisé, b o est le bit le moins significatif, et b n- l est le plus
significatif.
Il faut noter que la représentation à point fixe peut représenter un intervalle limité de
nombres entiers. Le nombre de bits est l'image de l'intervalle que la représentation peut
couvrir. En général n-bits peuvent représenter les nombres entiers qui appartiennent à
33
l' intervalle [0, 2n _1]. Par exemple, le maxImum qu ' une représentation à 3 bit peut
Le vecteur qui représente un nombre entier négatif est divisé sur deux parties: la
première partie qu' est le bit le plus significatif représente le signe du nombre, et la
deuxième que sont les n-l bits restants représente le module du nombre entier [3 .13]. Alors
B= {L? - Zb
-
' -0
1-
~.:-OZ
~
.
1
i :""
2~
b.1 * 2 i
B> O
8 < 0
(3.5)
Dans ce cas, n-bits peuvent représenter les nombres entiers qui appartiennent à
l' intervalle [_(2n-l_l), (2n-l-l)]. Cette représentation a l' avantage de détecter facilement un
débordement lors d' une opération arithmétique: il suffit de mettre en œuvre un algorithme
qui supervise le signe du résultat. Cependant, cette représentation complique l' exécution
des opérations arithmétiques vu que le bit de signe doit être traité séparément des bits de
magnitude. Par exemple, considérons l'addition des deux nombres + 18 (000 100 la) et -19
(100 100 Il) en utilisant la représentation « entier négatif ». Les deux nombres ont des
signes différents, les résultats alors devrait porter le signe du nombre le plus grand, dans ce
cas le (-19), et être (1000000 1) ce qui n' est pas le cas si on l' applique de cette façon :
34
00010010 10010011
+ 10010011 - 00010010
100100101 100000001
Dans ce cas, on est obligé de modifier l'algorithme de l' addition pour avoir un résultat
logique.
Pour éviter de compliquer les algorithmes des opérations de base, on préfère utiliser une
Cette représentation consiste aussi à représenter le signe par le bit le plus significatif.
Cependant dans le cas où le nombre est négatif on ne change pas seulement le signe, les n-1
Dans ce travail nous essayons de ramener toutes les grandeurs qui sont présentes dans
la loi de commande à varier entre [-1, +1]. En arrivant à faire ça, on évite la complexité de
représenter un nombre réel ; la virgule fictive sera placée juste après le bit du signe.
Toutes les données dépassant cet intervalle seront forcées à la valeur de l' intervalle la
plus proche.
Décimal Binaire
- Max= +1 0111 -
Bit de signe
-- 0
0.5 0100
0000 1
!
0
,1
1 0 1
1111
-0.5 1100 i
Virgule Fictive
Pas de partie
- Min=-1 1000 - - entiere
chercheurs est la méthode la plus appropriée pour l' intégration des lois de commande, pour
représenter les nombre négatifs, on risque toujours d' obtenir des faux résultats lors de
Avant de procéder à modéliser les architectures des différents modules utilisés dans les
lois de commande, on tient à présenter l' architecture détaillée de chacune des opérations de
~ On commence par générer des données aléatoires en virgule flottante à l' aide de
Matlab;
36
~ On transfonne ces données en virgule fixe, ensuite on compare les deux pour
s' assurer que l' erreur maximale est toujours inférieure ou égale à l' erreur
correspondant à un bit;
~ Une fois la transfonnation virgule flottante => virgule fixe vérifiée, on exécute la
~ Les données binaires vont être transférées et après récupérées par le programme
~ Les résultats qu ' on obtient du programme VHDL vont être comparés à la [m avec
les résultats obtenus par l' exécution de la même opération en virgule fixe et
flottante; on essaye toujours de fixer l' erreur résultante d' un bit comme critère.
Les instructions utilisées pour le transfert entre les deux langages amSl que les
instructions qui font la conversion des données sont notées dans les Annexes.
a (15 :0)
....
Additionneur c (15 :0).....
,
b (15 :0)
....
La figure 3.8 représente l' architecture externe d' un additionneur sur une carte FPGA,
où
37
33
34 if C_MSim1 (15)=' l ' and A_MSim ( 15 )=' O' and B_MSim ( 15 )=' O' then
35 C MSim1 :=" 0111111111111111 " ;
36
37
38 elsif C MSiml (1 5)= 'O ' and A MSim (15 )=' l ' and B_MSim (15 )=' l ' then
39 C MSiml : =" 100000000000'0000 " ;
40 end if ;
41 end if ;
Les résultats de simulation d' un additionneur à 16bits, à l' aide du Matlab et ModelSim,
Entrée N° 1 d'additionneuT 16 bits, Flottante vs Fixe Entrée N° 2 d'additionneuT 16 bits, Flottante vs Fixe
1.5
0 1 ~ Flottante -----@ Flottante
0 ~ Fixe ~ Fixe
1.5 ~----+---+-i'----i-----'=r~~==!j
0.5
00 0 n ,c--
l'
0
.
""
=
~ 0
~
00
00rf~ ~
~ ."
0
1
r "
~9
Il
v , 19
1, . ""
.~
ë.
0.5
E
«
-0.5
1 b
" ~
1
". <!
fi , E
« 0
~
-0.5
'"
-1 - -1
0
-1.5 ~
-1.5
o 20 40 60 80 100 0 20 40 60 80 100
Échantillons Échantillons
AdditionneuT 16 bits ~ Sortie ModelSim vs Sortie Matlab x 10.5 AdditionneuT 16 bits - Sortie MatJab - Sortie ModelSim
1 5
1 1 1 Il 1- C modelSim Matlab vii. MOINS ModelSim
0.8 1 1
1
1 l' '1 CMatiab
4.5 1- erreur de 1 bit
.~
0.6 1
1 1:
1 i Il!, ,: 11
1
0.4 3.5
1
1: ' , 1\1 1' ! i
1
~
""=
0.2
1 1 li Ii i 1 '"
! d 1 ,
i 0
1
E filj ! tl l '
1
,1
1
« -0.2 1 1 1 L
l, ' ' ,
1 I~, 1 'II 1 l"',1 ' l, , 1 ;i ;1 1\ i, V
1.5
-0.4 ,
1 , 'j, 11\/
Il,,, l'
"
, \1 il I!
: Il
1 1
-0.6 1
li
-0.8
1 1, '1 1 : l '! Il 1
1
1
0.5
-1
10 20 30 40
1
50 60
1
70 80
1
90 100 20 40 60 80
l
100
Échantillons Échantillons
Sur les deux premières figures on présente les deux entrées d'additionneur, en virgule
fixe et flottante. La transformation des données en virgule fixe ne déforme pas ces données,
sauf les échantillons qui dépassent l'intervalle [-1, 1]. Les deux dernières figures présentent
une comparaison entre les sorties d'additionneur. Sur la dernière, on remarque que l'erreur
entre le modèle sous Matlab celui avec ModelSim n'atteint même pas l'erreur tolérée,
correspondant à un bit.
39
Reset
v
d (7 :0)
,"
Multiplieur 1(15 :0) ,
e (7 :0) "
,"
La figure 3.11 représente l' architecture externe d'un multiplieur sur une carte FPGA, où
Vu que les entrées d et e ( [-1, 1], la sortie f ne risque pas de déborder de cette
intervalle, donc il n' y a aucune utilité d' une prise en compte de débordement comme avec
l'additionneur et le soustracteur.
Multiplieur 8 Bits - Sortie ModelSim et Matlab Multiplieur 8 Bits - Sortie Matlab - Sortie ModelSim
0.8
1
1
F modelSim
F Matlab
Matlab vf", MOINS ModelSim
erreur de 1 bit
Il
1
! 1
3
0.6
0.4
1\ ! ! il '.
2.5 -
1, ! 1 il 1
1: h 1\ l'"
...,~ 0.2 l'i .~ ~ 2
=
:: 0
Iv- /1 ~ 1 Il lin ; :, 1\
1/ Il lM .~
1Il V
Cl.
E
« -0.2
li v' V
\ If 1
II·';
VI
IV' vl
i 1/ \
1
V
\
1
IV \1 V\j
Q.
~ 1.5 1-
j
-0.4
1/
,
"li 1 ~l
1
-0.6 1 1
1
0.5
1 1
-0.8
1 1
-1 -.
10 20 30 40 50 60 70 80 90 100 20 40 60 80 100
Échantillons Échantillons
L'erreur entre la sortie Matlab et la sortie ModelSim est toujours inférieure à l'erreur
tolérée.
Reset
\V
g(l5:0)
,"
i(l5:0)
Soustracteur ,......
h(l5:0)
",
Le figure 3.13 représente l'architecture externe d'un soustracteur sur une carte FPGA,
où
37
38 if templ (15 )= ' O' and Sous l (15 )= ' l ' and Sou s2 (15 )= ' O' then
39 templ := "1000000000000000" ;
'40
41
'42 elsif templ (15 )= ' l ' and Sou s l (15 )= ' O' and Sou s2 (15 )= ' l ' then
'43 templ :=" 0111111111111111" ;
'4'4 end if ;
L'exécution des deux modèles, Matlab et ModelSim, donne les résultats montrés sur la
figure 3.15, où on peut remarquer que l'erreur entre les deux est touj ours moins que l' erreur
Sous tracteur 16 bits ~ Sortie ModelSim Vs Sortie Matlsb Soustracteur 16 bits, Sortie Matlab - Sortie ModelSim
0.8
il
II, 1
il 1 1- Erreur modelSim
Erreur Matlab 4.5 -
Mallab vfix MOINS ModelSim
erreur de 1 bit
1
0.6
1.1
Il
1
1
1 1: :, 1~ 1
Il' !II' Il
1
li
'\
1 il
....ë!.. 0.2
1 l ", I l ,1
1 ! 1\
1
...~ 3
'Ë. 0
1 1
~co. 2.5
e
..: -0.2 · Ii : il i 1 1. il' 1
e
..: 2
.~ '+ l-
1 1 I
11
~
1
-0.4 ~ 1
-I~: t ~ ~1ll
1 1.5
-0.6
1 h; 1
~.:ft Il t -!J-I
Il
~ 1 1 \~R
1 1 y"
i il ': , ~
II
-0.8 O.S
~
1 V 1
10
Il 20 30 40 SO 60 70
1
80
Il ' 90
1
100
0
0 20 40 60 80 100
Échantillons Éc hantillons
Reset
'li
rjn(7 :0)
,"
roul7 :0)
Registre "
,
Clk
,"
La figure 3.16 représente l' architecture externe d' un registre à décalage sur une carte
FPGA, où
Comme il est reconnu, un registre décale la transmission d' une donnée par une période
d' horloge. Donc ri" apparaît en sortie, rour, à chaque front montant de clk comme il est
Reset
\1
La figure 3.18 représente l'architecture externe d'un troncateur sur une carte FPGA, où
Le troncateur a comme rôle de réduire la précision d'une donnée en coupant les NI2 bits
Les résultats VHDL obtenus d' un toncateur 16bits-à-8bits sont représentés sur la figure
3.19.
3.5 Conclusion
Dans ce chapitre, après avoir présenté un survol sur la technologie des FPGA, nous
choisie a été réalisée sur MA TLAB. Al ' aide de ce code, des données numériques ont été
fournies pour les modules de base afin de les valider. Les résultats présentés montrent une
précision moins que l' erreur qui correspond à un seul bit. Cela va nous permettre d' éviter
que l'erreur s' accumule après l' assemblage des modules pour concevoir le module global
de contrôle.
45
4.1 Introduction
Les systèmes d' entrainement électromécanique reçoivent une croissance d' intérêt par
la plupart des applications, que ce soit domestiques ou industrielles [4.1]. Ces applications
ont chacune des exigences particulières de vitesse, de couple ou même de qualité d' énergie.
Pour faire face à ces exigences, une grande variété de solutions a été proposée pour faire
face à ces exigences [4.2]. La croissance du marché des systèmes d' entrainement
7000 ,----------------------------------------
6000 +----------------------------------------
5000 +----------------------
4000
3000
2000
1000
o
2003 2004 2005 2006 2007 2008
permet d' entrainer et de contrôler une charge mécanique ou même un procédé mécanique
46
en transformant l' énergie électrique en une énergie mécanique le plus efficacement possible
[4.4].
Source
continue
Couple
&
Vitesse
Signaux de mesure
enroulements triphasés mais l'enroulement du rotor est remplacé par un aimant permanent.
Donc, les équations électriques peuvent être déduites de la même façon que la machine à
a a
Stator Rotor
A partir de la figure 4.3, qui représente le schéma symbolique des enroulements d' une
(4.2)
T
Vc ] : Vecteur de tension statorique
T
fjJb fjJc ] : Vecteur de flux statorique
48
o
~ : Matrice résistance du stator
o
(4.3)
cos2(8 _ arr)
47r
cos 2(8 - - )
3 cos 2(e-7)1
cos(2e) (4.4)
3
arr
cos(2e) cos2(e--)
3
(4.5)
où
respectivement du vecteur X.
arr
~1
cos(e) cos(e --) cos(8 - - )
-51n<; -7)
3
a -sine 8 _ arr)
[Tg] =- -sin(8) 3
(4.6)
3
1
-1 -
a 2
49
Après l' application de (4.6) qui représente la transformée de Park dans un repère lié au
rotor, on obtient un système d' équations plus simple pour modéliser une MSAP.
id R Ld iq R Lq
wJ..d
(4.7)
(4.8)
(4.9)
~w = ~(T -T - T ) (4.1 0)
dt J f L
où
R Résistance statorique
T Couple électromagnétique
J Inertie
Tf Couple de frottement
TL Couple de charge.
Pour les applications d' entrainement électrique, les onduleurs de source de tension sont
les plus utilisés. Il existe plusieurs topologies d' onduleur triphasé dans la littérature.
Chacune de ces topologies répond aux critères et aux exigences de certaines applications
puissante avec un taux d'harmonique faible, à l'aide d' un onduleur à deux niveaux, est
devenu possible.
Le schéma structurel d'un onduleur triphasé à deux niveaux et de sa charge est illustré
interrupteur bi-commandable.
51
Les trois tensions d' alimentation Va, Vb et Vc sont représentées dans le plan
complexe, par un seul vecteur d' espaces V; défini par la relation (4.11) [4.5] :
---,t
Le vecteur tension ~ est délivré par un onduleur de tension triphasé, dont l' état des
interrupteurs, supposés parfaits, est représenté en théorie par trois grandeurs booléennes de
commande.
retrouver dans huit positions fixes correspondant aux huit configurations possibles des
52
interrupteurs [4.6]. Ces huit états du vecteur d'espace définissent les limites de 6 secteurs
dans le plan complexe. Deux des huit états sont des vecteurs nuls : V; et V; [4.7,4.6].
Sa Sb Sc Va Vp
--+ 0 0 0 0 0
Vo
--+ 1 0 0 2V dJ 3 0
Vi
--+ 1 1 0 Vdc/3
V2 VtJc /..J3
--+ 0 1 0 - Vd J 3
Y3 VtJc /..[3
---'i 0 1 1 -2 Vd J3 0
V..
--+ 0 0 1 - Vdc/3
Vs -vdc/".f3
--+ 1 0 1 Vdc /3
V6 -Vdc /".f3
--+ 1 1 1 0 0
V7
tension de référence pendant une période d'échantillonnage Ts par les vecteurs tensions
On se place par exemple dans le cas où le vecteur de référence est situé dans le secteur 1
(Figure 4.6). Dans ce cas, la tension de référence 11.: est reconstituée en faisant une moyenne
ïï;lIE----- --*--41---='~
v; a
Après, il suffit de déterminer la position du vecteur de référence 11.: dans le repère (a,p)
(4.12)
avec:
54
Dans le cas où (t}+t2 < Ts), on doit compléter par les vecteurs nuls (V; et V;).
Alors:
(4.13)
Après décomposition sur les deux axes du plan complexe (a,p) [4.10]:
. _ .T sm
T1 = -,f3"Ys
Vere s
. - - (fr
3
qJ ) (4.14)
(4.15)
(4.16)
55
-
q> : est l' angle entre les vecteurs V1 et ~
~.
L' équilibrage des commandes nous permet de réduire au mlmmum les pertes par
MU vectorielle.
Afin de diminuer le taux d'harmonique, il faut respecter les deux conditions suivantes:
- Tous les interrupteurs de chaque demi-bras doivent avoir le même état au milieu
Sur la Figure 4.7 on présente la combinaison lorsque le vecteur est situé dans le secteur 1
Vo V1 V2 V7 V7 V2 V1 Vo
1
SA 1
i
1
Sb :
1
1
Sc 1
1 1 1 1 1 1 1
1 to/4 ~/2 1 to/4 1 to/41 ~/2 1 t,./2 1 to/41
'(
t,./2
, , , , ) 1
Ts
Le secteur est généralement déterminé par l' angle a où a = tan -1 (~). Dans ce travail
le secteur est déterminé par une méthode simple basée sur les tensions Va, Vp . La
détermination est faite comme dans le tableau 4.2, où Ao est le signe de Vp , Al égale à 1 si
Ao Al A2 Secteur
0 0 0 5
0 0 1 6
0 1 0 4
1 0 1 1
1 1 0 3
1 1 1 2
L'algorithme de SVPWM a été décrit en VHDL et synthétisé avec le logiciel Xilinx ISE
Design (Suite 13,4) (figures 4.9 et 4.1 0). Le modèle VHDL a été évalué en cosimulation
SVPWM avec une précision de mot égale à 8 bits, de la génération du vecteur de tension de
V~2~
VdCT
t. ~
~~"~ < .
~ ~
Vd&
+
~ ~~
Figure 4.8 RTL Schéma fonctionnel de l' onduleur sur Simulink.
--- ~ ~ Sj
S1 2
52
-
S3
Vc
.... .....
PWM
ClockPWM
0(7:0) 1[\
Secfor(3:0)
Sector
-
Resef i
Figure 4.10 Schéma du circuit SVPWM réalisé sur FPGA.
-400 1 - - - - - l - - + - - I - - _ + _ -
-6000'---O--'
.0'--
02-0--'
. 0~04-0-'
.00
-6-0 .....l
00- 8- 0...L
.0-1 - 0 ....L
OI-2- 0- .0.L1-4 - 0-.0.Lt-'
6
Timelsl
~ °:1
U 4.9
1
5. 1
1
52
1
53
1
54 5.5
1
x 10'"
~ 0:[:
4."
~51
[
52
FR
5.3
[
54
n
x 10-3
5.5
~ 0:[.
4."
EB 5 5.1
[
5.2
1
5.3
a 5.4
.1
.
55
1
"0
~ °:1
~
1
1
1
[
1 1
1 [: 1 1
1
1
1 :
4." 5 5. 1 52 53 54 55
Time Imsl x 10"
FFTanalysis- -- -- - - - - - - - - -
100
S 60
\;
E
~
§ 60
u.
'0
t 40
20
Spartan III
Utilisé Disponible Utilisation
Number of slices 358 23872 1.5%
Number of slices Flip Flops 110 47744 0.2%
Number of input LUTs 666 47744 1.4%
Number ofbonded lOBs 32 469 6.8%
Number GCLKs 2 24 8.3%
Number DSP 48s 11 126 8.7%
60
Les signaux de commande sont représentés sur la figure 4.12 sur laquelle on peut
constater que les contraintes de forme d'onde définies sur la figure 4.7 sont respectées. Du
coup, on peut remarquer sur la figure 4.13 le spectre d' harmonique de la sortie qui est
excellent: l'amplitude de la fréquence fondamentale est égale à 219 .8V, une erreur de 0.1 %
par rapport au signal de référence 220V, ce qui est acceptable étant donné que la commande
serait en boucle fermée, donc elle ne sera pas affectée par une telle petite erreur de 0,1%.
Le spectre harmonique n' a pas été affecté par la précision des données.
La SVPWM est l'algorithme le plus sophistiqué et le plus approprié pour les lois de
avec amplitude variable pour le même bus à courant continu [4.11] et pour sa capacité à
minimiser les harmoniques et les pertes aux niveaux des commutateurs [4.12]. Cependant,
calcul algorithmique. Du coup la majorité des ressources de calcul, sur une carte, est
utilisée pour générer les signaux PWM, laissant moins de ressources pour les boucles de
commande.
Vu que les critères de performance des contrôleurs deviennent plus strictes, les
algorithmes de contrôle sont devenus complexes et en général ils ne sont pas adaptés à la
mise en œuvre directe, ainsi ils ont besoin d'être retravaillés [4.13]. La mise en œuvre des
61
vitesse d' exécution élevée pour exécuter les fonctions complexes en particulier celles de la
SVPWM [4.14]. Il existe plusieurs approches qui intègrent plus qu'une carte pour mettre en
œuvre une loi de contrôle. De l' autre côté, il y a plusieurs chercheurs qui ont opté pour la
Dans [4.15], les auteurs proposent une comparaison entre la performance de la mise en
œuvre des techniques SVPWM et SPWM (sinusoïdales) pour trouver un compromis entre
la qualité du signal et la simplicité de l'algorithme. Dans [4.16], les auteurs ont proposé une
(RNA). Cependant, la conception d'un RNA est un processus itératif, et elle est fondée sur
l'application des non-linéarités et d'un grand nombre d'opérations, qui peuvent toutefois être
évaluées en parallèle.
proposée pour commander un onduleur à deux niveaux triphasé. Les résultats de simulation
utilisant Xilinx ISE, sera présentée et comparée aux résultats obtenus dans la section
consommées.
Pour ce travail, nous avons développé des relations polynomiales directes entre chaque
avons suivi la méthodologie montrée sur la figure 4.14. En utilisant le modèle Simulink™ /
Matlab® développé dans la section précédente, nous générons les temps de commutation
Mode!
TOila
SVPWM
SVPWM approximation
V. TOllb
mode! on TOile mode! on
_~ SimulinkTM/ Simulink™/
Vb ..
_-...~ Matlab e :}lm~~-" Matlab e & VHDL
Les paires de données (Va, Tona), (Vb, Tonb) et (vc, Tonc) sont stockées dans le logiciel de
des données fournies, sont utilisées pour obtenir un modèle qui se rapproche de la relation
où B est une constante qui est la même pour les trois phases et A est une constante dans le
cas où Vdc est constante. Cependant, en faisant varier la tension du bus cc, qui est bien
convertisseur varie également. Du coup, nous avons fait varier la tension Vdc de 400 V à
1200 V, tout en ajustant le coefficient A afin d'avoir le taux d'harmonique le plus bas
possible. Les valeurs (Vdc, A) trouvées sont présentées dans la figure 4.15.
A(Vdc) Interpolation
2.6
- A(Vdc)
2.4 Quadratic Interpolation
rl
=
2 r-\
;;;
>
ë
1.8 r-- 1" ' ",,-
~ 1.6 r - '
o
U 1.4 f-
~
1.2 r- ""'"
.............
r-- ---.........
~
0.8 ' - - -
400 500 600 700 800 900 1000
r-----
1100 1200
Vdc Values
Selon les résultats obtenus par Design-Expert®, la fonction A (Vdc) la plus appropriée
Simulink™ / Matlab®.
Dans un premier temps, le modèle proposé est utilisé pour la génération d'un système
approximatif est la même qui a été imposée dans la section précédente: l' amplitude est
égale à 220 volts, et la fréquence est de 60 Hz. Sur la figure 4.16, on observe que la tension
de sortie de l'onduleur (avec une charge résistive), qui a été contrôlée par le modèle
l'amplitude de la fréquence fondamentale est égale à 219.2V, une erreur par rapport au
signal de référence 220V de 0,4%. En comparant cette erreur à l'erreur obtenue dans la
section précédente, qui est égale à 0,1%, on constate que, compte tenu de la simplicité de
cette approximation, cette erreur est acceptable étant donné que la commande est en boucle
fermée, donc elle ne sera pas affectée par une telle petite erreur.
100 f
~80
CIl
.e
'0
c 60
=
...'"..'
....
Ë40
~20
o0
l
500 1000 F 1500 (Hz) 2000 2500 3000
requency
::;: 1
~ °:1
u 4.9
1
5.1 5.2 53
1
SA 5.5
x 10'"
1
=
<JJ
0.5
1
x 10"
~ 0:[.
' .9
œ 5
1
51 5.2 53 5.'
x 10-3
.1
5.5
~ °:1 3
1
1 1
1
1 i
: 1 1 : [ : 1
1
' .9 5 51 5.2 5.3 5.4 5.5
Time )ms) )( 10"
Les signaux de commande sont indiqués sur la figure 4.18, ce qui démontre que les
contraintes de forme d'onde définies sur la figure 4.7 sont respectées par l' approximation.
asymétrique. Pour cela, nous avons imposé un système de tensions déséquilibrées comme
ondes de référence.
La figure 4.19 montre que, même dans le cas d' un système déséquilibré, les sorties de
l'onduleur sont synchronisées avec la tension de référence, et l'erreur est égale à 0,5% par
Pour tester l'adaptabilité du modèle proposé avec les lois de contrôle, nous avons
remplacé le bloc SVPWM dans le travail [4.17] avec le modèle approximatif. Les résultats
obtenus montrent que l'approximation est efficace et précise, même dans un état transitoire
(Figure 4.20).
67
..
H 0
"0
;>-100 HIfl*ff-t- - + - - t -1H
-3001---+--+---!-
---- __..J.
-4001---+--+--+-- -+--r~;rrM~~rlr~~-~
.-"--_.~----
o0 500 1000 1500 2000 2500 3000
Frequency (Hz)
fr====~=~~="-l~="i'''-'~T=---r-rIFFT 'n'IY·"- - - - -""'F,-
un- d-:-a-me
- n-'ta
:--:I-;(6."O
'"Hz
-:--:-)-- -::2C7t-=-9.-=2- - - - - - -
n,
1
+ 1
1
-
200 u. -
..i 00
~1
0
I---t---++~
"0
;>-100
-200
-300 o. - - f--
1
0 1
o 500 1000 Frequ~~g~ (Hz) 2000 2500 3000
500 r-----.----r==-r-:=::..:....:;..:-:=~:..:....:'-=:.:;.::.-=--.,-----,-., FFT'n'ly.i' ------=F:-u-
Dd..,.a-me
-D-ta-:I-:(.6.,.O:"":H=
z)-=-:2'"'t-:-9-:
.2-------
300 ~~~---~--+--~i---+---~~~
80 R+----~-----+----~------~----+-----~
..
~I OO ~~flW*"~H---+--~i---++H&HMf.riT+H*H~~~,~
J;O l'-""l.IUil.I.JtW-w.!
'0
;>-IOOI - - --f!IHf-lm
-200 1----lilHf'tm
-300 i---t----t+Ht
-5000~-O:-.L
O O-:2--:-
0~.0~
04==~--:-
0.~0~
08==0.L
O-I -~==-L-=~ o0 500 1000 1500 2000 2500 3000
Time Isl FrequeDcy (Hz)
~\
160
140
/
/
.1
\
0.01
0.005 ~
~r-
-l 1
~120 \
~
~
èlOO
/ -
Q.
EË. -0.005 ~
'ü
! \ ~
o
~ 80 ] -0.01 /
60 1 \ -0.015 - / -
40
! \ -0.02
/
20 \ -0.025
~ ~- 1
4
Tinte Isl TirJe Is)
30
Va - la
Yb lb
Ve Je
- 20 f---~lIl'tjl-l!~Il-IIH!loHIIlI-IHlH-tItl~--+---+----I
4.4.3 Implémentation
Le polynôme (4.18) peut être mis en œuvre d'une manière plus optimale à l'aide de
l'équation suivante:
Pour calculer les six périodes de commutation on applique la relation (4.17) trois fois
et (4.19) une fois donc au total cette approximation peut consommer six multiplicateurs et
six additionneurs. Si nous analysons le schéma proposé dans [4.16], nous trouvons que
cette approche consomme beaucoup plus, parce que la structure du réseau de neurones
utilisé se compose de 20 neurones cachés, ce qui implique l' utilisation d'au moins 20
69
de SVPWM en éliminant les calculs d' un bras d' onduleur, mais à partir du tableau 3 de
[4.18] , qui résume quelques calculs à faire pour calculer les durées de commutation. Nous
pouvons voir, dans cette partie seulement, l' utilisation de trois additionneurs et dix
multiplicateurs.
,', ......
,
A(7:0)
1 TON.(7:0) ......
, S11
V a (7:0 3 fust order
Vb(7:0,\
( TOJl<. (7:0) ...... Su
polynomials PWM
Vc(7:0 \ ,~ TONc(7:0) -:: waveforms
, Sn
(17)
1 , generation Sn
S31
S32
ClkAD DToxbnoteModel
':01
,. .....
511
-01 51 2
VcfT.':01 521
VdcfT.':01 5 22
el 531
el 532
.... ....
ApproximateModel
logiciel Xilinx ISE Design (Suite 13,4) (figures 4.21 et 4.22). La méthodologie de
70
simulation et de vérification utilisée est la même que dans la section précédente. Afin
SVPWM, les deux modèles ont été mis en œuvre avec une longueur de mot égale à 8 bits.
L'onduleur est modélisé avec Simulink™ / Matlab® en utilisant la structure représentée sur
la figure 4.8. Le signal de référence désiré est le même que dans la section précédente, avec
400
200
~...., 0
~
0
;>
-200
-400 f-___+--+-_+--j--Itttt
-600 '----'_---'-_-----L_----'---_---'---_-L-_L-------''-'
o 0.002 0.004 0.006 0 .008 0.01 0.012 0.014 0.016
Timels)
- FfTlnalysis- - - - - - - - - - - - - - - -
Fl.I"Idamental (60Hz) '" 219.1 , THO- 108 7O"Ao
110 r-r--,-~--.-----',,.....:...__r_-.__...... -.,____r___,
,OO ~_ _+____+-4__4-_t_-~_+-+__+~
1 ro ~__+____+-4__4-_t_-~_+-+__+~
~ 00
.. 5OH __+____+-4__4-_t_-~_+-+__+~
l!-
l ~ ~-.+-___+-4-~-~-r__r-+__+~
,O ~_ _+____+-4__4-_t_-~_+-+__+~
- = = ~ =
Frequency (Hl )
~ = ~ = =
~ °:1
U 4.9
1
51
1
5.2
i
5.3
1
5.4
x 10~
5.5
~ °:8
4.9
FR
5.1
[
5.2
f=F
5.3
!
5.4
n
x 10-5
5.5
~ 0:[ Et ! 1
[ 1
[
4.9 5 5.1 5.2 5.3 5.4 5.5
x 10.3
~ °:1 : [ i !~
i
1 , 1
,
1
,1 [ 1
1
1
Sur les figures 4.23 et 4.24, on observe que la tension de sortie de l'onduleur (avec une
charge résistive), qui a été contrôlée par le modèle VHDL approximatif, est en phase avec
En termes de mise en œuvre, elle est plus efficace car elle consiste à mettre en œuvre un
polynôme de troisième ordre et trois polynômes de premier ordre, qui ont les mêmes
coefficients. En outre, le calcul du coefficient A peut être effectué à une vitesse inférieure
aux premiers polynômes de premier ordre, dans le cas où la tension de bus est bien filtrée .
Après la synthèse nous avons obtenu le tableau 4.4 qui résume les ressources requises
par les deux modèles (SVPWM et l' approximation proposée) sur une plateforme Spartan3 .
consommé par la SVPWM. Des gains importants sont également observés pour les autres
4.5 Conclusion
Une nouvelle technique pour générer le signal MU pour contrôler les onduleurs a été
et Simulink™ / Matlab®. Cette technique, par ses faibles taux d' harmonique et pertes de
commutation d'une part, et sa simplicité d'autre part, peut remplacer le SVPWM dans les
applications où les ressources d' intégration sont très limitées. Les résultats de synthèse
montrent que la nouvelle technique consomme peu de ressources lors de la mise en œuvre
5.1 Introduction
FPGA pour trois lois de commande adaptative d' une machine synchrone à aimants
permanents à base de logique floue . Les performances des trois lois, en termes de précision
et de fiabilité , en particulier face aux incertitudes internes, ont été validées dans des travaux
antérieurs [5.1 , 5.2, 5.3]. Dans ce travail, nous comparons les trois lois de commande en
les schémas proposés, grâce aux simplifications qui ont été appliquées aux algorithmes de
ces lois, permettent à la fois l' implémentation de la loi de commande, en conservant leurs
laissant libres les ressources suffisantes pour mettre en œuvre des fonctions
supplémentaires. Dans les trois lois de commande, la SVPWM a été implémentée par
l'approximation proposée dans le chapitre précédant. Le premier schéma proposé dans [5.1]
sera très utile pour le prototypage rapide des deux autres lois de contrôle qui sont des
dérivées de cette loi de contrôle à base de logique floue adaptative. Pour cette raison, la
première et la plus grande partie de ce chapitre sera consacrée pour l' implémentation de
cette loi. Ensuite, dans les deuxième et troisième parties, on présente les résultats
une comparaison entre les résultats des trois schémas obtenus et on en tirera un compromis
La stratégie de contrôle à implémenter (Figure 5.1) a été proposée dans [5.1] pour
contrôler une MSAP avec un minimum d'informations sur la machine, tout en garantissant
l' erreur ëw = ew (k)- ew (k-l). La sortie du régulateur est la tension en quadrature désirée Vq*.
La sortie du modèle de référence (dynamique d'erreur du premier ordre) est utilisée pour
référentiel fixe d-q au référentiel rotatif a-fJ. La SVPWM génère les six signaux de
V d = O--.t p
SVPWM INVERTER
6
V·q
: (J
ô) iSw
Reference
Model
5.2.1.1 Fuzzification
Afin d' implémenter une structure parallèle, les univers de discours des deux variables
Les univers de discours sont limités entre -1 et 1, et sont répartis sur cinq fonctions : BN
(Figure 5.2).
NB NS z PS PB
0 .5
NB NS Z PS PB
Cette étape définit la sortie floue pour chaque combinaison d'entrées floues . Ces règles
ensemble de règles de 5x5 . Le tableau 5.1 présente les règles utilisées dans ce travail.
ew
NL NS Z PS PL
NL Z PL PL PL PL
NS NL Z PS PS PL
ew Z NL NS Z PS PL
PS NL NS NS Z PL
PL NL NL NL NL Z
mécanisme d'inférence, proposé par Mamdani, utilise les opérateurs de base minimum et
77
maximum [5 .6]. La méthode MAX-MIN teste les grandeurs de chaque règle et sélectionne
5.2.1.4 Défuzzification
La défuzzification est la dernière étape d'un contrôleur flou; elle effectue la conversion
des valeurs floues en une sortie numérique. C'est l'inverse de l'opération de fuzzification.
deuxième chapitre. La sortie à l' instant k par la méthode de centre de gravité, qui est la
(5.2)
correctement les règles. Cependant, le réglage de ces paramètres peut ne pas être optimal
pour une grande plage de fonctionnement. Basé sur l'adaptabilité du réseau de neurones, les
78
chercheurs ont proposé un régulateur flou adaptatif. Cette technique permet aux contrôleurs
flous adaptatifs d' atteindre un fonctionnement optimal sur une très large gamme [5 .7].
De la structure de logique floue qui est représentée sur la figure 5.3 , les première et
seconde couches donnent la partie antécédente des règles floues ~ , et les troisième et
quatrième couches donnent la partie résultante via une matrice de pondération, de sorte que
la sortie du régulateur à logique floue peut être écrite en tant que [5.1]:
(5.3)
où
~ E R r : est le vecteur de la partie antécédente de la logique floue qui est défini comme
suit:
~= U B1 (Y)
(5.4)
L~=I UB' (Y)
où
Donc, TV E R rx l = [yI' Y2, ... , Y r ] ' où YI est la partie conséquence de la logique floue
(5 .5)
Avec If/' étant une constante positive qui détermine la dynamique d'erreur souhaitée.
x,
X2
\. Layerl y
La er2 ) ~~
La_yer_3_~ Layer4 )
y y
AntecedenTS Consequents
Le vecteur West ajusté à chaque période du Clock en fonction du modèle de l' erreur
proposé dans l' équation (5.5). L' équation de récurrence sur le vecteur de poids West
(5.6)
entrées, sorties, et les mémoires. La seconde, Clock_PWM, est utilisée pour générer les
signaux PWM. Seules les instructions primitives et un code modulaire ont été utilisés pour
décrire les différentes fonctions. La division a été remplacée par un ensemble d'ajouts, des
synthétisé avec le logiciel Xilinx ISE Design (Suite 13,4) (Figures 5.4, 5.5, 5.6 et 5.7 qui
seront expliquées ci-après). Le modèle VHDL a été évalué par la co simulation de ModelSim
et SimulinllM / Matlab®. L' onduleur et la MSAP ont été modélisés en utilisant Simulink™ /
Matlab® .
• FLC
Les entrées du contrôleur flou, l'erreur et la variation de l'erreur sont calculées à partir
et une mémoire de 24 bits; le choix de la longueur de mot se justifie par les très faibles
de règles et de la défuzzification ont été réalisées avec une longueur de mot égale à 16 bits.
Le calcul du pourcentage d' appartenance des 10 variables linguistiques est contrôlé par
un multiplexeur (Figure 5.4). A chaque front montant de l'horloge, nous calculons le degré
d' appartenance à une fonction. S'appuyer sur l' autocorrection de la logique floue,
81
représentée par son adaptabilité qui va corriger une éventuelle erreur, permet d'économiser
90% de l'espace réservé pour le calcul des dix degrés d' appartenance au même temps.
till
/a2
- ~' B'
l,
P"lZIIl:t P
-
-
~
~
oi, _ III
- ~
t'i' _ ~_il
11011
- ~
19 _ RaoiPrd
S1III~.i5N -~~
IJ _
Prctg -
PI -
l'IIœlll - ~
PS _
- ~
S1IIId!a1S••1
- ~
Z_
RM la!
PII~_il
RaoiDsui
- ~
Demuffip~xeur
Mu ffip~xeur
Le même principe utilisé dans la mise en œuvre de la fuzzification a été utilisé pour le
bloc d'adaptation (Figure 5.5), où nous avons 5 poids à mettre à jour. A chaque front
montant de la même horloge un des poids est mis à jour. Il permet d'économiser encore
80% des ressources qui pouvaient être réservées pour mettre à jour les 5 poids en même
temps.
82
SWlchiloSlmal
-~
, ,. , WOOlV
G1 G Weàis Weci1I3
G2 ~ Wedll~
G4 Ood UW
G5 Resu UW Demultiplexeur
s.t!tmSmal ~ J
Resu 1AIx2 UpdateWeight
Muttiplexeur
La figure 5.5 montre le schéma proposé pour l' implémentation de l' algorithme
d' adaptation. Les entrées GI a G5 sur le schéma sont les signaux qui représentent les
variables /LB' qui sont définies dans l'équation (5.1) et dans la figure 5.7 sont représentés
par les signaux V NB% V NS % V z % VPS% V PB % Le reste des opérations de la logique floue ont
Le schéma global du contrôleur flou sur une carte FPGA est représenté sur la figure 5.6.
MeasVelocity(23:0 511
RetVelocity(23:0 512
Theta(11 :0 521
Oock 522
ClockPWM 531
Reset 532
CQrk .iF
~:4.'~TO
l{,i!l\"S' ô,Ll5 0, .. 1\'B.Ô,J)501 ..
;;:
l-7 l{,el.\-s<oèiJ.15·01 < FUL.; >:\11',1:.1.15'01 Ç.
~
16 ;lt. Fu::) 'L.!'r ~.
~ J\-s .. h.115Oi ~
V.l/iO/ ......
~
lf,èl:o.ô,J15.0,
Fu:.:.rjl~atl!J IJa:..
,IF WE, i/JZlIll
BIU
,
(eeIFS'. "x05:01 J:\1l·d~J.I501
~ ~4è1t3;O
Je él.t.
~ (J{[X .IL..\'i
1\11" l?:.f) 5' 01 ~
,e.elps',2x1l5:01 ~
\1
w 123:01 )
ej <3. 0/ " 1",. smol 'l' t 1' 1\
,
wI23·0! "-
E""" &
C~iO!
E,..·
ej2301
..,. R€ference.llode.
WUl l' î
S,,/Cclllng Signa (,Ni!
Figure 5.7 Schéma du circuit FLC adaptatif réalisé sur un FPGA (Détails dans
l' annexe -B).
• Transformation de PARK
quatre premiers termes de la série et avec une taille de mot égale à 12 bits (Figure 5.8).
.
sm(e) = e - -
e7+e-9
e3 + -e5 - -
3! 5! 7! 9!
(5 .9)
cos(e) = 1- e2 e4 e6
-+- - -+-
es
2! 4! 6! 8!
Le choix du nombre de termes à prendre en considération est justifié par les résultats de
simulation présentés dans la Figure 5.9. Notons que, dans le cas de quatre termes, l'erreur
relative peut atteindre 7%. Par exemple dans le cas d'une amplitude de tension égale à 100
84
volts, il Y aura une erreur de 7 volts, qui peut affecter la précision du contrôleur. L'erreur
peut être réduite par la prise en considération de plus de termes dans la série ou bien en
exploitant la symétrie des sinus et des cosinus, ce qui est la solution qu'on a choisi dans ce
travail.
,.. "'IIIIl
Anale Coslvlale
1 Theta
Reset Sin Sinlvlgle
1 Reset Par1<>- - -
... .011IIII
SinCosGenerator
Figure 5.8 Entrées/Sorties du circuit Générateur de sin/cos réalisé sur un FPGA.
Sin and Cos Generator Error between ge ne rator based on the Taylor expansion
Sinus with S Terms "/ "",.--,-- and perleet generator
0.8 Sinus with 4 Terms 1\ 0.08 Si nus wi th 5 tums
Sinus with 4 ferrus
0.6
Cos inus with S Term s
Cosinus with 4 Terms X \ 0.06 Cos inus with S ferms
1
0.4
f
/ \ 0.04
Cos inus with 4 'nms
"!"C> 0.2
f
/
/ \ \ 0.02
1
- /
U
." 0 / \ h\ ~
/
..,t:
C>
C
co
~ -0.2
! / \ //
Vi
1\ 1
1
/ \ ·0.02
-0.4
-0.6
\ / 1\ -0.04
1
·0.8
X / -0.06
V ":- -. /
-1
-3 -2 -1
Angle (radl
0
"'" - -0 .08
-3 ·2 -1 0
Ang le Ira dl
La variation de l' angle e est traduite par une variation entre -1 et 1. Cela a impliqué une
normalisation des équations (5.9). Lors de l' implémentation, des nouveaux coefficients
différents AI ...... As et BI .... , Bs, sont calculés et stockés sur 16 bits. A l' aide d' une série de
multiplications à 16 bits, on calcule les termes AI *ê, BI *ê 2 .... As *ê'9 qui vont être
accumulés pour formuler le sinus et cosinus selon les équations (5.1 0) et (5.11).
sin(e) = a (5.10)
(5.11)
où :
La constante a est choisie de façon que toute les constante A J •••• A5 et B J ••• •. B5 ( [-1 , 1]
Constantes
normalisés stockés
At .. .. A 5 et B t . . .• BS
,v
Remise à Cos (1 5 :0)
Addition à ~ ~
16bits L'échelle
• SVPWM
Les sorties de la transformée de PARK sur 8 bits donnent les tensions de référence pour
su
$12
521
Vc -
.....
--i.--
PWM
~
~
è / \ .. /
' (j
..5l 100
...
j
..
f -1
/
;;.
50 1 \ "" -2
/
!
1
J :~
-3
-4
" ,
2 3 4 5 6 7 8 0 2 3 4 5 6 7 8
Time Isl Time 15)
Voltages on d-q axes Filtered voltages on a-Ire axes
250 200 r--~-=~~~~~-~r--~r=~==~
- - Ya
I - Vd
/ - - Vq ,\--+---+----1 - - Yb
200 Yc
1
E' 150 1\
\
C>
~
~ 100 1
/
bD
!i
ô
;;. 50
/ \
o / ~
_200 L_L--=::'~~~~~-~-~_---.l._--1
2 3 4 5 6 7 8 0234567 8
Time 151 Time IsJ
Currents on a-b-e axes Torque
30 ,- --.--- -rc= 50
- - i8
- - ib /'
- ,
40
ic
30
! fI
~ ë 1
1
~
.l!/ ... 20 1 1 \
~ =
E" 1
\,
=
U - 10
C>
10 \
""' \\,
-20 f-----'iI:::tlllH'f 0
-30 '----<-----LC=== - 10
0 4 5 6 7 8 o 2 3 4 5 6 7 8
Time 151 Time Isi
Les Figures 5.12 montrent que la vitesse mesurée suit parfaitement sa référence malgré
l'erreur qui s' accumule en raison de la quantification et la troncature des données. Les
résultats de synthèse montrent que la mise en œuvre de l'algorithme consomme très peu de
ressources dans un FPGA Spartan III (tableaux.5.2 et 5.3). Désormais, d'autres fonctions
peuvent être mises en œuvre sur le même FPGA , en particulier une autre boucle de contrôle
ou d'estimation de vitesse.
Tableau 5-2 Sommaire d' utilisation des ressources pour l' implémentation de la loi
de commande.
5.3 2 eme Loi: PMSM control based on adaptive fuzzy logic and sliding
mode {5.2J
Dans le schéma proposé dans la section précédente, la tension directe Vd a été forcée à
zéro, ce qui a donné une structure de contrôle simple d'un côté, et robuste envers les
incertitudes internes et externes de l' autre côté. Cependant, cela a causé une réduction de la
plage de fonctionnement du moteur. Une des solutions qui a été proposée par notre
88
laboratoire, est au lieu de forcer la tension Vd à zéro, à l' aide d' un contrôleur mode glissant
moteur.
Reference
model
w· +
--+-
1NYERTER
w 6
8
abc/dq
id trOl'sfOTIII
Le régulateur mode glissant a pour rôle de fournir une tension Vd de référence de sorte
surface de glissement.
89
Les détails de la conception du régulateur sont présentés dans le travail [5.2]. Dans
notre travail nous présenteront seulement les expressions finales obtenues et qu' on va
implémenter.
Les deux expressions utilisées pour la conception du régulateur mode glissant sont [5.2] :
5i 153 1 ::; E
(5.12)
5i 155 1 > E
(5.13)
Comme on l' avait précisé dans le premier chapitre, un des principaux objectifs de notre
travail, est de modéliser un seul schéma qui soit parallèle et qui permet de passer d' une loi
Le régulateur mode glissant a pour rôle de maintenir le courant id à zéro, ce qui donne
des valeurs trop petites pour les calculs du régulateur et cela nous a obligé d' augmenter la
précision sur VHDL et d' utiliser une longueur de mot à 24 bits comme il est montré sur la
90
figure 5.14 qui représente le schéma bloc sur FPGA du régulateur mode glissant avec les
entrées et les sorties; toutes les grandeurs sont représentées sur 24 bits.
MeaSld(23~
: 0~+-_ _ -+-...;.V.;;.>d 23:0)
Measlq(23_:0___+-_
Measvelocity(23-;.;.;:0:.l.-+-_
Refld(23-;.;.;:0:.l.-+-_
Reset_SlidingMo:..::d-=-.e-+-_ _
II"" ""lIlIIII
Measld(23 :0) 511
Measlq(23 :0)
51 2
MeasVelocity(23 :O}
Refld(23 :0) 52
RefVelocity(23 :OJ
52 2
Theta(11 :0)
CI ock 53
-
ClockPWM
53 2
Re set
.... .....
Figure 5.15 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA.
91
1
Reference i ~r---
600
f - - Measured 1\
500
Il
1 \\ 1.5 ~
/
f'.:- .
\
~ ~
Q.
~
~ 300
,::;
0
400
/
1
\ \
\
~ 0.5
~
1:"
e
0
1
,
,1
., ,
'il / 1 ~ -0.5
;;. 200 \ 1
! \ -1
100 f
\
\
V
-1.5 -
0
-2 \ /
·100
(
o 3 6 3 4
Timelsl Timelsl
Filtered Currenls on d-q axes Filtered Currenls on a-b-c axes
12 -, 10
10
1
1
1
\
J--ii~ql 6
I - - ia
1
ib
ie
8
J \ 4 r-I
1 \
~ 6
: <' r-:L
t~ iiY ---- _.
\ /1
c
!: 1 ~
!: 0
.... ....
=
U
4 1
\
= -2
1\ 1
U
t
1
L r--- 1--- -4
! -6
o- \
-2
o 4
\)
7
-8
L ==c 3 4
.
Timelsl Timelsl
Voltages on a-Ire axes Voltages on d-q axes
400 600
~
VA
300 r- 1
YB
500
I 1
200 f-----,
VC
400 - 1/ \ "1
ë 100
ë i \
è.
..
:1 !~ ~ ....
è.
~
300
200
/ \
~ ·100
ë
;;.
/ \
100
·200
·300
~'
0
V~
/ \
·400 ·100
'-- / 1
0 o 4
Timelsl Timelsl
Torque
160
140 ~
!
\
120 \
/
100
\
E 80 1 \
.
~
= 60 1 \
\
~
Q 40
f-
/
20
\
·20 J --
·40 - - - -
o 5
Timelsl
5.4 3erne Loi: Adaptive Fuzzy Logic Control Structure of PMSMs [5.3J
Malgré son efficacité, le régulateur à mode glissant présente une faible robustesse
(5.13). Donc le même auteur a proposé de remplacer le régulateur à mode glissant par un
Mode.
J S<u
e~
V·q
+
w SVPWM
INVERTER
V;;
fi
",
1 S id
Mode.
id Dbc/dq
Transformation
Dans cette partie la difficulté était de configurer les deux régulateurs flous d' une façon
même façon l' univers discours, etc. On a réussi à implémenter un régulateur flou normalisé
dans un bloc en VHDL qui a été utilisé pour les deux régulateurs, régulateurs de vitesse et
de courant. Donc le schéma du circuit du régulateur de courant sur FPGA est le même
Measld(23 :0)
".. "liliiii
S11
Measlq(23 :0)
S1 2
MeasVelocity(23 :0)
Refld(23 :0) S2
RefVelocity(23 :0..1
S2 2
Theta(1 1 :0)
CI ock S3
-
ClockPWM
S3 2
Re set
... --0lIlIIII
'"
o
300
i
1
\
~
E
0 r---- -4 1
\ !
Il Il
1
1
/ \
\
/
100 -1
1
o1/ \ - -. -1.5
\
/
· 100 -2
o 2 3 4 5 6 7 8 0 3 4 5 6 8
Timelsl Timelsl
Filtered Currenls on d-q axes Filtered Currenls on a-b-c axes
12
1
10
10
"\
-
id
iq
8
ln J-
i- a
b
L------'-' 1 111
8 / \
6
r-- It '1
\
~f ~
J
~
ê
;
6
4
1
- r-
I. -..ê
= -2
0
1'\ 1 .11
r\ ~I't
~ ~JIV'
U 1 \ U
1 -4 l -
2
Ii
o
/
\ ·6
il
-2
o 2 3 4 5
\LJ 6 7 8
·8
· 10
0
l~
3
-
Timels] Timels]
400
ri
Voltages on a-b-c axes
, 1 VA
600
Voltages on d-q axes
I - Vd
"'1 I-
300 VB 500 f - - /' Vq
vc 1 \
11
200 1 li
400
;- 100
~ '0 \
~
.s
0
I~ ti~
-~ ~
.
;, 300
.s
'0 200
J
1,
~ -100
-200 ~I
" ,'1
1 -
;,
100
1
J
,
\
-300 J
0 / \
..
, ~/ -" " //
3 4 5 6 7
Timelsl 3 TiJelsl 5 6 7 8
Torque
150 ,- - --_. .---r - -
/ "\
100 / \ 1
Ë
~
..= 1 \
50
E'
0
/
1-
0
1 \ ~/
1
-50 1
o 3 4 5 6 8
Timelsl
Les trois systèmes de contrôle ont été évalués lors de deux modes de fonctionnement,
en accélération et freinage. Les trois schémas proposés montrent des bonnes performances
au niveau de l'erreur de vitesse. Les performances du premier schéma sont limitées au-delà
Cependant la figure 5.12 montre l'efficacité de ce schéma lorsque la vitesse est en bas de
200 tr/min, malgré toutes les simplifications qui ont été faites sur l'algorithme original. Les
figures 5.16 et 5.19 présentent les résultats des deuxième et troisième schémas. Ces
dernières montrent que les lois implémentées peuvent assurer des performances très élevées
même avec une vitesse de référence égale à la vitesse nominale. Les résultats au-dessous
95
prouvent que les modifications apportées et la représentation numérique utilisée n' ont pas
s.s Conclusion
En terme de précision, la loi à base de deux régulateurs flous donne une erreur de
vitesse inférieure à celle de la loi à base du mode glissant; même le courant id réglé par le
régulateur flou est plus proche de zéro que celui réglé par le régulateur mode glissant.
Cependant en se référant aux résultats de synthèse du code VHDL des deux lois, résumés
dans le tableau 5.4, on peut remarquer un rapport de plus de 160% entre l' espace utilisé
pour l' implémentation de la loi à base de deux régulateurs flous et celle à base du mode
glissant.
Une combinaison entre les résultats de cosimulation et de synthèse nous laisse conclure que
la loi à base du régulateur flou et mode glissant est un compromis entre la précision et la
consommation de ressources.
96
L' industrie a connu une importante hausse de demande des systèmes d' entrainement
électromécanique dans la dernière décennie. Cela est le fruit des avancées dans le domaine
de développement des algorithmes de contrôle d'un côté, et surtout le progrès dans la micro
et nanoélectronique. Ces deux points ont rendu exploitable l' implémentation de certaines
fonction Matlab qui transforme les données d'une variable à virgule flottante en une
variable à virgule fixe, ensuite à une variable numérique. Ici, une fonction déjà existante a
été adoptée.
correspondant.
Dans la troisième étape, il a fallu développer et approuver les codes en VHDL qui
exécutent les opérations arithmétiques de base et de s' assurer que l' erreur est la plus faible
possible afin d' éviter qu' elle ne s' accumule après la combinaison des différents modules.
La quatrième étape, l' étape la plus importante, consistait à simplifier et raffiner les
Après comme avant dernière étape, on a séparé l' algorithme en modules qui ont été
avec des modules accessibles pour être modifiés et même pour être remplacés.
Dans la dernière étape, on a assemblé l' ensemble des modules développés et on les
a remodifiés dans la plupart des cas afin que ça donne des résultats les plus proches de ceux
à virgule flottante .
Une nouvelle technique pour générer les signaux PWM et contrôler les onduleurs a
été proposée dans le quatrième chapitre et a été validée à l'aide Simulink™ / Matlab® dans
plusieurs modes de fonctionnement. Cette technique, par son faible taux d' harmoniques et
faibles pertes de commutation, d'une part, et sa simplicité d'autre part, peut remplacer le
SVPWM dans les applications où les ressources sont très limitées. Les résultats de synthèse
structures est la complexité de l'algorithme de commande, comme dans [6.19, 6.20, 6.21]
[6.22, 6.23 , 6.24] où les auteurs mettent en œuvre une SVPWM à plusieurs niveaux.
Dans le reste du travail nous avons proposé une librairie de schémas de commande à
base de logique floue principalement pour le contrôle d' une machine synchrone à aimant
permanent. Les schémas ont été développés d'une façon qu' ils aient des architectures
hautement parallèles, ce qui permet un accès rapide et facile pour changer au minimum le
98
code pour adapter la loi pour une nouvelle gamme de machines ou même de passer d'une
loi à une autre en activant ou désactivant juste le bloc voulu via l' entrée Reset. Cela
permettra de passer d' une loi de commande à une autre selon la plage de fonctionnement
Références
[1.1] H.H. Choi" J.W. Jung. "Discrete-Time Fuzzy Speed Regulator Design for PM
Synchronous Motor," IEEE Transactions on Industrial Electronics, Vol. 60, 600-607,
(2013).
[1.2] Y. Mingming, W. Feng, C. Gang, Y. Ke, F. Jun. "A Compound Control for PMSM
Based on Fuzzy Sliding-mode and Neural Network," 3rd International Conference on
Digital Manufacturing & Automation. 2012.
[1.3] A. Mishra, 1. Makwana, P. Agarwal, S.P. Srivastava. "Mathematical Modeling and
Fuzzy Based Speed Control of Permanent Magnet Synchronous Motor Drive," i h
IEEE Conference on Industrial Electronics and Applications (ICIEA), 2012.
[1.4] Z. Liu, Y. Wang, J. Du. "Fuzzy Model Predictive Control of a Permanent Magnet
Synchronous Motor in Electric Vehicles," 1oth IEEE International Conference on
Control and Automation (ICCA) Hangzhou, 2013.
[1.5] Y.S. Kung, M.S. Wang, c.c. Huang. "Digital Hardware Implementation of
Adaptive Fuzzy Controller for AC Motor Drive," 33th IEEE Industrial Electronics
Society Conference (IECON), 2007.
[1.6] Y.S. Kung, T.W. Tsui, N.H. Shieh. "Design and Implementation of a Motion
Controller for XYZ Table based on Multiprocessor SoPC," Control and Decision
Conference. CCDC. Chinese, 9th. 2009.
[1.7] K. Hakiki, A. Meroufel, V. Cocquempot, M. Chenafa. "A New Adaptive Fuzzy
Vector Control for Permanent Magnet Synchronous Motor Drive," 18 th Mediterranean
Conference on Control & Automation Congress Palace Hotel, Marrakech, Morocco,
2010.
[1.8] H. Teiar, H. Chaoui, and P. Sicard, "PMSM control based on adaptive fuzzy logic
and sliding mode," in Industrial Electronics Society, IECON 2013 - 39th Annual
Conference of the IEEE, 2013 , pp. 3048-3053 .
[1 .9] H. Chaoui, P. Sicard. "Adaptive Fuzzy Logic Control of Permanent Magnet
Synchronous Machines with Nonlinear Friction", IEEE Transactions on Industrial
Electronics, Vol. 59.2012.
[1.10] O. Lopez, J. Alvarez, J. Doval-Gandoy, and F.D. Freijedo, "Multilevel Multiphase
Space Vector PWM Algorithrn," Industrial Electronics, IEEE Transactions on, vol. 55,
pp. 1933-1942, 2008.
100
[2.10] Z. Li, Fuzzy Chaotic Systems: Modeling, Control, and Applications (Studies in
Fuzziness and Soft Computing): Springer-Verlag New York, Inc., 2006.
[2.11] M. Hanss, Applied fuzzy arithmetic: Springer, 2005 .
[2.12] E.P. Dadios, "Fuzzy Logic - Emerging Technologies and Applications," 2012.
[2.13] K. Ying-Shieh, T. Tai-Wei, and S. Nan-Hui, "Design and implementation of a
motion controller for XYZ table based on multiprocessor SoPC," in Control and
Decision Conference, 2009. CCDC '09. Chinese, 2009, pp. 241-246.
[2.14] M. Jothi, N.B. Balamurugan, and R. Harikumar, "Fuzzy processor based on VLSI -
A review," in Automation, Computing, Communication, Control and Compressed
Sensing (iMac4s), 2013 International Multi-Conference on, 2013 , pp. 216-222.
[2.15] S. Singh and K.S. Rattan, "Implementation of a fuzzy logic controller on an FPGA
using VHDL," in Fuzzy Information Processing Society, 2003 . NAFIPS 2003 . 22nd
International Conference of the North American, 2003 , pp. 110-115 .
[2.16] S.P l Vasantha Rani, P. Kanagasabapathy, and A. Sathish Kumar, "Digital Fuzzy
Logic Controller using VHDL," in INDICON, 2005 Annual IEEE, 2005, pp. 463-466.
[2.17] P.T. Vuong, A.M. Madni, and lB. Vuong, "VHDL Implementation for a Fuzzy
Logic Controller," in Automation Congress, 2006. WAC '06. World, 2006, pp. 1-8.
[2.18] A. Abu-Khudhair, R. Muresan, and S.X. Yang, "FPGA based real-time adaptive
fuzzy logic controller," in Automation and Logistics (ICAL), 2010 IEEE International
Conference on, 2010, pp. 539-544.
[2.19] D.N. Oliveira, G.A. de Lima Henn, and O. da Mota Almeida, "Design and
implementation of a Mamdani Fuzzy Inference System on an FPGA using VHDL," in
Fuzzy Information Processing Society (NAFIPS), 2010 Annual Meeting of the North
American, 2010, pp. 1-6.
[3.1] A. D. M.N. Cirstea, J.G. Khor, M. McCormick, Neural and Fuzzy Logic Control of
Drives and Power Systems: Elsevier Science, 2002.
[3.2] H. Chaoui, "Implantation sur FPGA d' une loi de commande adaptative neuronale
supervisée pour une articulation flexible," Mémoire de maîtrise, Département
d' informatique et d' ingénierie, Université du Québec en Outaouais, 2004.
[3 .3] V. A. Chandrasetty, VLSI Design: A Practical Guide for FPGA and ASIC
Implementations: Springer New York Dordrecht Heidelberg London, 2011 .
[3.4] C. Maxfield, FPGAs: Instant Access: Elsevier Ltd, 2008.
[3 .5] R. T. Ian Kuon, Jonathan Rose, FPGA Architecture: Survey and Challenges: now
Publishers Inc., 2008.
102
[4.4] R. De Doncker, D.W. Pulle, André Veltman, Advanced Electrical Drives Analysis,
Modeling, Control: Springer Dordrecht Heidelberg London New York, 2011.
[4.5] N. Mohan, P. Jose, T. Brekken, K. Mohapatra, W. Sulkowski, T. Uneland,
"Explaining syntheses of three-phase sinusoidal voltages using SV -PWM in the first
power electronics course," IEEE Workshop on Power Electronics Education, pp. 40-
44, 2005 .
[4.6] T. Lifanf, "Study of the SVPWM Converter Based on TMS320F24X," Third
international Conference on Intelligent System Design and Engineering Applications,
pp. 1316-1319, 2013.
[4.7] R. Cordero, J. Pinto and 1. De Soares, "New Simplification of SV-PWM based on
conditional of the reference vector," IEEE International Power Electronics Conference,
pp. 2992- 2999, 2010.
103
[4.8] A.O. Rait and P. Bhosale, "FPGA implementation of space vector PWM for speed
control of 3-phase induction motor," International conference on Recent advancements
in Electrical, Electronics and control engineering, pp. 221-225, 2011.
[4.9] M. Lami ch, J. Balcells and D. Gonzalez, "New method for obtaining SV -PWM
patterns following an arbitrary reference," IEEE 28th Annual Conference Industrial
electronics Society, Vol. 1, pp. 18-22, 2002.
[4.10] Zhou Yuan, Xu Fei-peng and Zhou Zhao-yong "Realization of an FPGA-Based
Space-Vector PWM Controller," Power Electronics and motion Control Conference,
IPEMC ' 06, Vol. 1, pp. 1-5, 2006.
[4.11] R. Rajendran and N. Devarajan, "Intelligent Control Fuzzy Logic Applications,"
Second international Conference on Computer and Electrical Engineering, Vol. 2,
pp.422-426, 2009.
[4.12] Zhou Yuan, Xu Fei-peng and Zhou Zhao-yong "Realization of an FPGA-Based
Space-Vector PWM Controller," Power Electronics and motion Control Conference,
IPEMC' 06, Vol. 1, pp. 1-5, 2006.
[4.13] Z. Zhou, T. Li, T. Takahashi, and E. Ho "Design of a Universal Space Vector PWM
Controller Based on FPGA," Nineteenth Annual IEEE Applied Power Electronics
Conference and Exposition, APEC '04, Vol. 3, pp. 1698-1702,2004.
[4.14] S. Boukaka, H. Chaoui, P. Sicard "FPGA Implementation of SVPWM", 1lth IEEE
International New Circuits and Systems Conference (NEWCAS), 2013.
[4.15] A.O. Rait and P. Bhosale, "FPGA implementation of space vector PWM for speed
control of 3-phase induction motor," International conference on Recent advancements
in Electrical, Electronics and control engineering, pp. 221-225, 2011.
[4.16] J. Osorio, P. Ponce, A. Molina "FPGA-based space vector PWM with Artificial
Neural Networks," Nineteenth International Conference on Electrical Engineering,
Computing Science and Automatic Control, CCE '09, pp. 1-6, 2012.
[4.17] H. Chaoui, P. Sicard. "Adaptive Fuzzy Logic Control of Permanent Magnet
Synchronous Machines with Nonlinear Friction", IEEE Transactions on Industrial
Electronics, Vol. 59. 2012.
[4.18] S. Tole, W.J. Hwa, A. Jidin, and N.R.N. Idris. "A Simple Approach ofSpace-Vector
Pulse Width Modulation Realization Based on Field Programmable Gate Array."
Electric Power Components and Systems 38, no. 14 (2010): 1546-1557.
[5.1] H. Chaoui, P. Sicard. "Adaptive Fuzzy Logic Control of Permanent Magnet
Synchronous Machines with Nonlinear Friction", IEEE Transactions on Industrial
Electronics, Vol. 59, No. 2, 1123-1133,2012.
104
[5.2] H. Teiar, H. Chaoui, P. Sicard, "PMSM control based on adaptive fuzzy logic and
sliding mode," Industrial Electronics Society, IECON 2013 - 39th Annual Conference
of the IEEE , pp.3048,3053, 10-13 Nov. 2013 .
[5.3] H. Teiar, S. Boukaka, H. Chaoui, P. Sicard, "Adaptive fuzzy logic control structure
of PMSMs," Industrial Electronics (ISlE), 2014 IEEE 23rd International Symposium
on, pp.745 ,750, 1-4 June 2014.
[5.4] S. Singh, K.S . Rattan. "Implementation of a Fuzzy Logic Controller on an FPGA
using VHDL", 22nd International Conference of the North American Fuzzy
Information Processing Society, 2003 .
[5.5] S.P. Joy, V. Rani, P. Kanagasabapathy, A.S. Kumar. "Digital Fuzzy Logic
Controller using VHDL", IEEE Indicon Conference, Chennai, India. 2005.
[5.6] J.L.G. Vazquez, O. Castillo, L.T.A. Bustos. "A Generic Approach to Fuzzy Logic
Controller Synthesis on FPGA", IEEE International Conference on Fuzzy Systems,
Vancouver, BC, Canada. 2006.
[5.7] N.J. Patil, R.H. Chile, L.M. Waghmare, "Implementation of Model Reference
Adaptive Fuzzy Controller", IET-UK International Conference on Information and
Communication Technology in Electrical Sciences. 2007.
[6.1] G. Renukadevi and K. Rajambal "FPGA implementation of SVPWM technique for
asymmetrical six-phase VSI," International Conference on Emerging Trends in
Electrical Engineering and Energy Management, ICETEEEM, pp. 333 - 338, 2012.
[6.2] 1. Alvarez, O. Lopez, F.D. Freijedo, 1. Doval-Gandoy "Digital Parameterizable
VHDL Module for Multilevel Multiphase Space Vector PWM," IEEE Transactions on
Industrial Electronics, Vol. 58, pp. 3946-3957, 2011.
[6.3] P. Sandulescu, L. Idkhajine, S. Cense, F. Colas, X. Kestelyn, E. Semail, A. Bruyere
"FPGA implementation of a general Space Vector approach on a 6-leg voltage source
inverter," 37th Annual Conference on IEEE Industrial Electronics Society Digital,
IECON '37, pp. 3482-3487, 2011.
[6.4] A. Moreno Garzon, J.M. Garzon Rey, G. Ramos, F. Segura-Quijano "Hardware and
software performance assessment of a multilevel inverter control," 2013 Workshop on
Power Electronics and Power Quality Applications, PEPQA, 2013 .
[6.5] Yaofei Han, Xiaohong Fan, Zhangfei Zhao "The study and realization ofthree-Ievel
SVPWM algorithm for high power inverter," International Conference on Electrical
and Control Engineering, ICECE, pp. 6177-6180, 20 Il.
[6.6] P. Thirumurugan, P.S. Manoharan, M. Valanrajkumar "VLSI based space vector
pulse width modulation switching control," IEEE International Conference on
105
Dans cette annexe on présente des schémas qui montrent des parties du code utilisé
dans ce travail.
107
.
32
33-
.,.
31
n--------·
-->
, Addl.t1.onneu-r ---------------------
VlRGULl.: FI.Xf: (précision 11JUtée par le rob. de bl.t)
3.
.,- , Membre de bl.t con:nderee pour representer le,:, dotme:es -> &ddl.tl.on
(0
(1 \--> OUant.lticatl. on des sl.gnaux A et B -----------------------
42-
l
t"or 0-1: Nseq
H- ~..a.0~(n.l) -tU!lc_s&Jtpl1.n;_M1 (ACn, 1) ,"_Bit);
u-
..
5,..B.0:nz.(D, l) - fune_,sazpllnQ_M7 lB (n, 1) ,N_SH);
(S- end
...
(1 - 11 1:or n-l :N5e:q
- L C•• ~ixe (n, l)-A_nor1lt(n,l) +S_Dorm(n,l);
- end
50
51 ,--> Quantification dlJ 31.;-041 C_vfX ---------------------- ----
52 - rr 1:or n-l :Naeq
53- l C_ no~ln.l'-func_,sllllPli..nQ_K7 (C_1:.1xe:(n,l) ,N_IUt);
54-
55
5.
57
5.
..
end
59- tiqure;
60 - .ste. (A) ;
ti1 - bold on ;
62- .stca(A_nont, 'r' );
" - bold off :
.
ti4 - tltle( 'Entr~ A de addl.tionneur -> flottante va Tl.xe' )
'S - leQend( 'rlottante' , 'rixe.' )
fil - tiqure:
ft - stem(B );
fi' - hold on ;
70 - 5t.es (!_no:r:., 'r" :
11 - hold ott ;
12 - tltle( '[ntrée B de addiu.onneur -> tlott.ant.e V3 l"l.xe ' )
'3 - leQend( ' rlottante' , 'Fl.xe' )
"
1S' - tiqu.re;
16 - .stex: (C);
" - bold on ;
71!!- att!BIIC_noX'Bi, 'r' l:
19 - hold ott:
eo - elele l ' Sortie C de add..l.tl.onnll!!ur -> flottante V5 Fl.xe' )
el - leqend( ' nottante' , 'Fixe' )
.2
.3
..••
, - Tran;!!lfert de do:u:.éea
•5 , --- ENrALE: A._DOr- coct:ructlon du fl.chl.e.r.s de eeat
-
..
fld-tope.n ( ' A_Dlatla.b. txt' , 'W1: ' ):
07 - for 1-1 :Nseq
.9 -
90-
-
l end
fpr intf (rld, func_1'1..xedN~r2StdLoglcVector_K7I A_nona(l,l) ,"_Bit»):
fpr ~ tf ( f l d , '\n' );
.
Il- fc lo.e (f1d) ;
92
t - - ~: B_nonl cont.r1Jct1on du flchl.e:r3 de te3t
9( - fld-topell( 'B_uoatlab. txt' , 'we' );
OS - tor 1-1 :Nseq
...,- l
,.- f princf ttid, func_Fi x edNwù:ter2StdLoQ1eveecor_ M7 (B_ nOm(l, 1), "_Slt»:
91- fprinc f(t1d, '\n' );
- end
feloae (tid);
100
101 ,--- SORII[: C_va _nor:. controlct.1cn du f ichl.e:r.s de te;:st
102 - fid-top~e 'C_&atlab. txt' , 'vt ' );
l
103 - for 1-1 :N:seq
104 - tprint.! (lid, fune_'U e dNUKber2StdLo;l cVe ct.or_K7 (C_ norme1, 1) , K_Ble)):
lOS' - fprinU (Ud., '\n' );
lOti - eDd
107 - fe lollle (hd):
10.
10.
108
16- cIe; , Et'fac~ent:. des cotat.and~~ precede~nr; eappee:s dan,:, la Command Windo'W
17
If! , - - Initlall.~at:ion - - - - - - - - - - - - - - - - - - - - ,
19 - N_81t.-16:
20
21 \ - Chenu.n de:s fichiers l~re
22 - pa th (paCh,pwd.) ;
23
24 , - Nom des fichiers - - - - - - -
25 - nOJll_tlchl. e r_modelSiIII- 'C_M.5l.lI;. txt' :
26 - noa._tlCl'l.1 e r_lIlAt.l.ab- 'C_mAtlab . txt.· :
21
28 , - Leceure du fl.chl.er HodeS.l.D. - - - - - - - - - - - - - - ,
29 -
.0 - l - 1;
.
31- Vlu1e 1
.2 - Ilne b - l"getllpld yb ) ;
- 1f "ischa r (IUle_b ), break , end
3(-
35 -
36- 1 ecd
f...A0%!l_~.§.1.m•. b1.n(1,:
1-1+1;
) - 11ne_b;
..
37 - t clo.se (pld_yb):
38
- ~ for 1 - 1: s ! ze le norm aode lSÏJl bin.l)
40 - L C_ Dora ~e!-S~2 (1. 1) - func_StdLogicVector2P-l.xedNumber_H7 (C_ noDri_ modelSim_bin (l, :) ,N_Bit)
.
(1- ~d
42
,-- Lec~ure du flch.1.~r maclab v.1rqul~ t1x~
53
5(- lf for i-1:s1ze(C nora &a~l.ab bin,l)
55 - L C_ nora~t_lab__b1n_ ~2 (i, 1) - func_StdLo0.1cVector2F1 xedNumber_H7 (C_ oorm_JM:tlah_bin (1,:) ,N_B.1t.)
56 - end
57
58
S9 .. Courbes de cOr"..paral.sons virgules f'lottant:e5~ Vl..rQlllf!s f.1xe.s et McdelS:un.
60 ,-
61
62 ,- Compar41~on de~ résult.at.~ VP..DL et: HlLl'LAB - - - - - ,
63 - f.1qur e ;
64 - plot tC_ no:r:m_ modelSilD._p2, 'b' }
65 - hold 00
66 - plot. te _ nODrl_mat.lab_ bin_p2, 1 r' )
67 - hold otf
6! - leoend( 'C modc:lSu' , 'C Katlab' )
69 - xlabelt 'tchantl.llons' )
70 - yla.bel( 'Jucp11tude,s' )
71 - t.lt.le( 'Addl.tionneur - Sort.1e HodelSl.B et Hat.lab' )
12 - axia«(l le.nqch(C_ DOI1l_JUtlab_biny2) -1 1)
e3 - xlabel ( 'tchancl.llon.s' )
et - y'labe l( 'Amplitudes ' )
es - tit.lc:( 'Add~t.1onneu.r - Sort I.e Matlab HOUIS HodelS.1JIl' )
86 ,
109
1S ,,------------------------------------------------------------------------
16 - tunct.ion IDaea_d.ec_Norm)-tunc_s amplin g_H1 (Da t.a _dec,NDlt)
17
le
19 - if Daea _d.e:c>-1 - 2 " - (Nblt.-l)
20 - Oat.&_Clec_No~1-2"'- (Nblt.-l):
21 - elself Dat.a_dec<-1+2 "'- (Nbit.-l)
22 - Daea_dec_No:nr.--l:
23 - e:lse
24 - teçO-abs (Daea_de c):
25 - te:rtp-te:rq;:lO:
26 - ee:p2-o:
21 - use_c--zero5 (l,Nblt);
2e - tor n-l: (Nblt.-l)
29 - if eeç>- 2 "" (-n)
30 - u.se_n(l,n+l)-l:
31 - t.enp-t:emp-2 '" (-n,;
32 -
33 - .nd
34 - end
3S
36 - t.e:p3~ea;p2+2"'- (Nhlt -l) ;
37 - il abs (t.e:çO-eezr.p3) <abs (eempO-eemp2)
3e - eeJrp_fln-t.esp3:
li - cIse
40 - tea:p _ tln-t.~2;
41 - end
42
U - .lf Data_dec>-O
44 - DatB_dec_Nonr.-ceql_f in:
45 - else
46 - Data_ dec_No.ra::--l .. t~_fl.n;
47 - end
te - end
49
50 ,\:------------------------------------------------------------------------
110
13 u -- ---- -- - ---- - --- ----- -- ----- --- ---- -- - - --- -- -- - --- ------ -- -- -- ----- ----
14 - fu ..-" .ction (Data_ dec_ conv]-func_ StdLoQicVector2FlxedNumber_M7 (Data_bl.n,Nbit)
15
16 - conv_ de:c-bin2dec(Dae&_ bin);
11 - neq-O;
HI \- - NQrr.bre~ negat~f ~ -------------------------------------
19 - 1.f conv_ dec-2'" (Nblt-l)
20 - Oata _dec_ conv-- l;
21 - el.!!'!
22 - l f conv_ dec>2 A (Nblt-l)
23 - neq-l;
24 - conv_dec-conv_ dec-2" (Nbit-l';
25 - tett.pl-conv_dee:
26 - u.8f!_ n-Zero:l (l,Nbit) ;
27 - fo:r n-2:Nblt
22 - l.f teçl-2 .... (Nbl.t-n) >-()
29 - use_ nU,n)-I;
30 - templ-teftlPl-2 .... (NbJ. e-n) ;
31 -
32 -
33 - .nd
34 - ond
35 \ -- - love::s1on des b i ts - - --
3E - t.etr.p2~.l!Je_n:
63 - out._trt-z.eros Il,Nbit.);
64 - for n-2 :Nblt
6S - if eeu:p3-2 '" (Nb1t-n)>-0
66 - out_t.rt.ll,n)-l;
67 - t.ettp3-teJq)3-2 "'I Nbit. - n) ;
68 - e:l!le:
69 - out._ trt(l,n)-O:
70 - end
11 - end
72 - end
73 \: - - Conve:r!li o n bJJl41.re - > de:c.l.D41 - - - ---- - ------- - --------
74 - Oac4_ d e:c _ conv-O;
7S - :for n - l:Nbit.-l
76 - if out._crt(n+l)-l
77 - Dat&_dec_ conv-Dat4_de:c_conv+2 .... - (n):
7e - end
79 - ..",
80 - 1.f ne:g-l
81 - Da t 4_de c_conv-Da t ll_de:c _ conv· (-1);
82 - end
83 - end
84 ,,\:------ ------- - ----------- - - - ------ -- ------ - -- ----- ------ - - ----- - - --- - - --
112
,.
15 eRt.lty ADD ~ 16 15
port (- A}iSill.. 5_MS1.J:r. : i.n ~td_lo91c_VeCtor(15 downto 0) :
,.,.
17
C_KSiJL
) :
ln sed_loQl.c:
20 ~d ADD_e.x_16:
21
22 -- declaration de l ' architecture
23 architecture Md.1t.loR_16 ot ADD_ I!X_16 18
2.
25 beqil'1
26 process (A_:KSim. 8_H5ia, Re:!ll!!t )
27 van.able C UI!P : scd loqlc vector (15 dOWDtO 0) :
Z! begin - --
29 if lteset.- ' 1 , ehen
30 C_tJq) :-"OOOOOOOOOOOOOOOO" ;
31 e15t::
33 1t A. HS1z ( 15 )· ' O· and 8 MS1.a (15)· · O· and C_tJr;> ( lS )· ' l ' then
31 ë_arp : ··Ollll 11111111111 " ;
35 el".!! A MSlJl (l5)· ' l ' and 8 KSi. IlS)· ' 1 ' and C_Utp l lS) · ' O· t:hen
36 C_ cÇ :·- IOOOOOOOOOOOOOOO " ;
37 end if ;
3a I!!nd i f :
39 C_MSa <- C_Ul:p;
40 ~ preees!! :
41 end lu1dlt:1on_16:
42 ---- ------- ----- ------- ------ ------ -- --- - ---
,.
15
17
use
--~e:
.!Itd . t~io. a11 :
vort.ADD_e.x_16: --Appel d e l' a ddl. t l.onneur cDÇl.é
16
19 -- déclaration de l'entité
20 eutity e.e5t_1lDJl_eJt_16 i .
21 end teat ADD ex 16 ;
22 -- décla;a.tiQ:l: de l' a rchl.tecture du tel!lt.Becch
23 architecture st1ll:nll Dt test_ADD_ f!.X_16 15
21 -- lecture t'l.c.."uer t.xt.
25 t'ile l ile 1..n Anona : te.xt. open r ead lIIOde io5
215 ·C: \ Docëm;ots acd SettiDOo5\labo\ Bureau\ADD_l6bl t:s\A_JN!l;t.lab. t:Xt" :
27 file t'ile in B DOr. : t.ext. open reed. mode io5
28 ·C: \Do~nts and sett:inQ'S\labO\BunaU\ADD_16bl.tS\B_lntItl&b. txt" ;
29 -- éc:n.ture t1chier txt
3D tile lile crut C HS1e : te.xt open vr1te .ode i8
li "C: \Do~-;;t.s and 5et~inQa\labo\B;:;reo!llu\ADD 16bl.ts\C M:u.m.txt" :
32 - déclaration du ca:zpoaa.nt teat~ - -
33 component ADO ex 16 i3
31 port ( Ajisa. B_KSi" l n std_loQ1c_vect.orfl5 downto 0 ) .
35 in std_loQ'1c :
••
37
38 end ceq:KInent. :
'9 - déclar ation des S1Ç":laUX d u composant
10 sione! A_KSl.Jt., B_KSl.JI., C_MS1.Ja : !ltd_loQ'l.c_v~e'torfl5 dovnto 0) :
11 signal re.sC!t : std_loQl.c :
12 conatan.t PERIOD_test : t.1JX.e :-50 na:
13 beQln
H ADD1 : ADD_e.Jt_16 port.ap (A_HS1Jr.,B_HSim.re.set.C_ MSu) ;
15 procellIJ
16 variable L 11. KSa. L B KSIm, L C KSIm : lice :
1" variable .;lue_A_MSi.~value_S)GIa. ve.lue_C_HSIm !ltd_IoQ'l. c_vector ilS dovnto 0) :
18 begin
l' reaet<- ' O';
50 -- Lecture de A
51 re:.adJ.1ne (tile in 11. nOnll, L 11. MSIa) :
52 re:.a d (L_A_H.5tm. value_A_HSIDI) :
53 A_HSI&<-valge_A_MSlm:
51 -- Lecture de B
55 readl1ne (!l.le in B no:::, L B KSIa) :
56 reacS ( L B HSIi, value B HSÏ..") :
57 8 KSIa<;";lue 8 HSlm: -
sa wa lt tor nRIOO=te.sc:
59 -- lc:r1t\:re de C
60 valill! C KSI. : -C MS.1m:
n .nite IL-
C HSt.. ;a!ue C KSIm) ;
U writel~eïtlle_out_C)tSu..L_C_MSI.I :
63 end preeeao5 :
,.. end at1Jr:uli:
113
14 -- declaraCl.on de l'entlt:~
15 entl.tV soustrllc_16 13
16 port 1 Sousl , Sou:s2 : 1n .!lied 10q1e vec't.or(l5 4oWnto 0 ) ;
17 reset sous -;- in 5t"d_lOQ'1C :
le Erreur OUt 5tct_lOQ'l.c_vectcr l lS dDWnto 0 )
19 );
20 end 50U5trac_Ui:
2'
22 - - declaration de l'architecture
23 architecture s ou5 tra ctitur_ 16 of aou5tra c _ lfi 15
24 beQln
25 proceas ISoual, Soua2, re.et eoua )
26 variable teJ!Pl 5td_lOQ'lc_veëto::f15 dovnto 0) ;
"
20
2•
bcgin
•0
31 t e ç l :- Sousl - SOlu2:
32
33 sou s · ' ! ' th~
if r e s e t
34 te.çl :.-;0000000000000000" :
35 end 1.f ;
.,,.••
If teJtpl (l5)· ' O· anc:1 Sou.l US)- · ~ ' and. 30u.s2 (l5)· ' O' thelll
••• 0 tcçl :--1000000000000000 " ;
il
....
i2
il
el.i! teçl (lS)- ' 1 ' and Sou.l (ISI- ' O' and Sou.2 1IS) · ' l ' thM
teçl :·" 0111111111111111" ;
end 1! :
1~ - - d é c la:ratl.on de l'entl.té
15 entity Mul. Hib1ts 1.05
1~ port (- D_K!Um. E_K!lua : in :!td_loQic_vector(15 downtc 0) ;
ln !!Cd loOl.c ;
out !!td_lOQ'lc_vectOr(31 downto 0)
21
22 -- ctéclara t1.o:..., de l' arc hite cture
23 architecture lClltlplica tlon of Kul_l6blta lI!!
24 beqin
23 pIace:!a I D HSim, [ HSia, Re.lle t )
2E variable !'_cç :!!tcl_loOlc_vector(31 downto 0) :
2'1 beOin
2e i! Resec .. ' l ' cben
29 F_ tJIp : .. " 00000000000000000000000000000000" ;
30 el:!e
.
31
32
li
35
il
D KSilI. • "1000000000000000" and [ KSi. - "1000000000000000" tben
r=eç :- " 01l1l1l11111111111111111 1111111P ;
el!!lt
••
37
D HSi.Jr! -
F:=cç :'"
" 0111111111111111" and [ KSla - "Ollllllllllll1l1" then
"Ollllllllllllllllllllllïllll1111" :
le
39 el!!l.!
...
i2
il
el$U
F_
elae
D K!l1.a ... "0111111111111111" and E HSm .. "1000000000000000 · the.n
taP :- " 100000000000000000000000000'00000· :
50 end i f ;
Sl end process :
.52 end au.l.t1pllcatlon;
53 --------------------------------------------
114
17
18 -- lU'chl.te~ure ------------ - - - - - - - ----
19 arehiteccure Sas_D_beh ot Bas_D is
20 .signal Roue tJql : .std loQ'l.c vecco:: 10 to 7) :
21 M01n - --
22 proce.ss (RSI, eut)
23 bt!Q'1.n
H
25 1f RST- ' l ' then
26 Rout_tç< _·OOOOOO(\O· ; -- o n peu t; aU:S:Jl. é:erl.r e
27
2! elait CLk'eyent. and C1Jt- ' l ' then
2.
30 1f Rl.n-·XXXXXXXX· then
31 Rout _ tap<-"OOOQOOOO· ;
32 elu:
33 Rout. cap<- Rin;
31 end if ;
36 end .if :
31 end process ;
!8
39 R.ou't<-Rout_Qq);
10
H end 8&s_D_beh:
12 - - ------------------------- - - - - --- - - -
Library I eee :
U3e i eee .sed. loOlc 116'1. a11 :
u:se l eee .8ed.- 1ogic-a rleh. al1 ;
use l eee .st.d.:IOOie:"ione d. all ;
10
11 en~1ty tranca t.e ur la
12 port (trane in : ln std IOQic vectcr(lS dovnto 0) ;
15 trane:out : "td_I 09 îc_veceorP downto 0) ;
14 end tra ncate ur :
15
Dans Cette annexe on expose les résultats de synthèse des trois lois de contrôle avec le
L18RARY l e •• :1
use leee .•t4_10;lC_116i . all ;
t:NTITY PH!H_Adapt1ftn.c la
Genexlc INalJr!Ut,,: Integer :- 1:;) .
PORT 1 J.eLVelocity, MelJsVelocitv . itelId , Keesld . Heoslq : .ln std_lcOic_ vector ( (2 - ND.br8its ) - 1 downto 0) :
Tbetet : in -'td_loQlc_veCtor (( NBlbr8its - 1) downto 01 ;
aeset , Clock , ClockP'ifH : in "cd 10Q'ic ;
511 . S12 , S2l , 522 , 531 , 532 : out Std_lCQ'l.C
10 ):
11 !.SD PKSM Ad.aptinFLC;
Il ARCHln:ciuu: Archl. _ PMSM_ ).4&ptl".f'1,C of FK5M_ Ad.pu v e CLC 1S
"
l! Conponent lula.pt!.,e f a.zzy 1/1
Hi PORT ( [1:Z0l: . DotErr or : le std_1OQl.c_ vector 1 (Z'"Mabr!Uta ' - 1 downto 0) ;
11 R.eaer A.r , Cloct: Al' : in std 100:..c ;
le Vq : o ut !ltd_lc9.l.c_vector ,ï2*NJâ:lrS1ts , - 1 dovnto 0 )
19 ):
20 end Coq:Ionellt ;
21
2i port ( Mea,Veloc:l1:V. Measlq , aefld , He •• Id ; in :n;d. 1001e veetor (12" NJlbrSlt.a-1) downt.o QI ;
25 Reset Sljc11Jl:~e : ln std lCQic; - -
26 Vd : - out 5t.d_loglc_vect.or II2*'NlrIbrll1t.s- ll downt.o 0 1
21 );
2~ end Ca.pollen.t ;
2.
'0 Coaponent Pa.rlrTra.:-•.sfon:.e.t10n 1.s
31 port C Tbet._ , Vd . Vq : ln 5t.d l09ic vector 1 (N&b:dlit.-l) downto 0) ;
52 Ruet. FuJI: : ln .st.d 10;::';;;
53 valpha. Vbet.. ~ out. 5t.d=lo O:l~_ve::t.o:, (t Nab:r3.1t.- ::') downto 01
54 ):
'3 end ~nent. ;
56
'1
38
CQIIPC)nent. ",,"PtOl 1.5
PORT I veS , VQ : 1n .5td_logic_veceorl( NabrSlt.5- 1 ) do.nto 0) ;
" R.e.set SVPNH. CLI( SVPNK : in std lQ.:Jl.c ;
10 511 , S12 . 521 , 522' . S31 , 532 : Out
st.d_1001.c
11 );
12 end Coa;ponent ;
..
53
50
: in .t.eS loql.c :
: DUt. St.d_lOQic_veccor CC2 " Habr31t. I - 1 downto 01
116
56 END c:ot{P()fŒNr :
57
5! CClKPOHENT MDIORY 2n1!lu 1;1
S9 port l Itin : l.n n d log1c vecwrl(2 " Nab:z:81ta ) - 1 downto 0) ,
10 RST , CL.J.: : 111 seCS lO;l.C I
n Rout : out atd. 10;1.C ve:ctor (t2 · Nd:l::Bl.t. ) - 1 downto 0 » 1
.."
62
'5
tUS
DD CatPOflŒNT ;
s ignal
81gnal
- -
V'Lt~ l . Vd_ tq:tl , Valpba eep , Vb e ta tllP : ate!. loql.c vector 1 ( Nlrbr81ta-l) d01mto 0) :
vq_tllP . Vd_tJlp , r:rro r , Error_l . Dotf:r;or , l:rrorÏ d , !rr Or_ltd . Oot[rrorId : 5td_l09l.C_vf'ct.or 112 · Nzr.br8its ) ' : d01olllto 0, ;
.7
U BEGIN
.9
10 --III/II Régu16tc'.I.% de la fen.ion Vg 11/111--
71
73
14 Oot!:rror_c.~cul.&tlonl : MDIORY_2nBlt. port -.ap I Rl.n -> Error, Rn -> Reaet, CU: -> Cloclt, Roae .., !:rror_ll;
75
'U DotErro%_C41ClÛatiOl'.2 : 5t1!l.!iTRACTOR_2~itlll pert _p 1 Sous l -> Error, 5oWl2 -) !:rror_l. reset _ s cus -, ileset , !rreu.r -> DotError ) ;
1! Vct..RequJ.at10n : Iulaptl.'Ye_tuzzy PORI -Il l E:rror -> Error, Ootlrror -) Doarror, Re.ct_A,. -, Reaet, CI o clt_ J.f' -> Cloc:II:, Vq -> \i~taIp ) ;
7i
80
..
.,
92
•5
-- Rt:qulateur Hode Gll.s:tarJt
•• T1I.ONClJOil nBit. port &ap ( tranc 1.%\ -> Vq tap, Re.et tran c -> Re.et,
.S
97 :
- tra n e _ou t. ;> V~aqll } ;
••
100
tru::1catlo~ : 11WIIClUOR nB.U:. per t .ap (tranc l.n -> Vd tlqI. Re!lt:t. t.ratlc -> ~e!let.,
- tra n c_out.- -> Vd_tÇ1):
101
102 -- llIpOa1t.!.on de 1. T~lon Vd • :t~r o
10.
104 --Vd_ tac <- · 000000000000· :
105
106 --111111 Tr&n:l!o:aat10n full: 111111--
107
10e
ltJ1
110
111 --111111 SVPWM 111111--
H2
11.
11.
"'
11.
,,.
l17 !NO Arehi_fK5tt_MçtJ.ftfLC:
117
li' fë'
0:;
SV-"WM
SUBSTRACTOR)nBÊ
LIBRAII.'r iue;
~e ieee.setS loglc 116L a11 :
ENlITY eELONGIHG FOOi.CENTJo.Gl! i:s
Genedc INlIbr-Blt.;; l.nte;er :- 12 ) :
PORT I De.u,l , De.ta2 : in stti lOQ1C vec 'to r I 12'" Nr:brBlta- l ) dovnto 0 ) ;
Rent 8elonGP : in .std 109 1~ ;
SYit:chinqSiqnal : in ~ëd l oqic vector ( 3 downto OJ ;
PIl , P12 . P13 , PH , PIS , - -
PZI , P22 , P23 , Pl'! , P2~ : OUt std_1 OVl.c_vec tor ((Z-NJl!.brBl.t:,s- l) c1ownto 0 )
10 ,:
11 DIO StLOffGLNG POURCtHTAG!:S:
12 ARCBtT!:CTOR.! Arch.1 8!.LONGtNG POORCDfl'J.GtS ot Sl:t.OtfGING POURCENTAGES 13
13 -- CœpoS&l1t8 :lu aÊLOH!;IN:i_f'ÔoacDrrAGU- - -
l<
1$ Companeltt Poureent&Qe
part ( Data, Bi , 80 , Bl! : J..n stc1 lOQl.c v ector (I2 - Nlrbr!lit.- l ) dovnt.o 0 ) ;
"
17
10
Reset_Prct
Pou.ccentage
in nct:l oqic;
out lI t c1_1oc;J lc_vectQ:r 112"'*brlUt.- l ) dawnto 0 )
"
20
21
"
end Ca.-.ponent :
22 Ca.ponent Hu.1
23 port ( 1 ntl.nl , NB , N S , Z, PS , PB , tn.fl.Q.l. , 4eta l , data2 : .Ln stct loCl.c v ecta r«(2 '" Nabr!J1tlll ) - l downto iJ l ,
24 S;nr,c:u.nQ'S1gnaï : 111 ~td lcO::l..c vector (3 doVnto 0 ) : --
25 Reset Huxl : 1n 5t::l 1001.;;: -
26 Pte.ge:lnl , Pte.Q'e_ln.2", Pt4ge_In3 , ciata : out "td_loQ'l.c_vec tc r (( Z - lŒbrBlt.tJ j - J dowtlto 0 )
2'7 II
28 end. Coçonent :
20
10 CCJq)Qnent Deauxl
11 port C P : 11:1 !!It::! l 09l. C;: v e c t c r (t2 '"N!cbrIUt. I - 1. dC'lfllte 0 ) :
~2 ~w1t.c.hin951qI1.. 1 7 in std lCQIl.C v e cter ( :!J downto 01 ;
,., Reset Deauxl in "td l oQl.c : -
~4 Pl _l , Pl _ 2 . Pl_ 3 . Pl_4 , Pl_S ,
'5 P2 _1 . P2 _ 2 , P2 _ 1 . '2_ 4 , P2 _ 5 : out std_1 OO l.c_ve c t or lC2" NIrJ:,rBl.t,, ) - 1 dOlol'Dto 0,
....
'fi
,,.
•0
);
end CoIIIpone nt ;
41 -- Sl.rpl.al.:.Jl de 11..130n--
..
.. 1 .1qnal l:ltl , int2 , 1..nt3 , int" , lnt5 , l.nt6 , Ulti , inte , :t.nt5l , Ult.lO , Ptage loI ,
.. , Ptaqe_In2 , Pt.aqe_In3 , œta , PourcentaQ'e.s : std_loQ' lc_v ect.or Cl l - Nzb;Blt.- l ) dovnto :1) :
lJtd_1 09lc:_ ve c t or IIZ " lfu,br!llt.- l ) dawnto 0) ;- 10 111 1111C'lCl1100C·OHllOtil>:J " ; --"n111 1l010l:'lOO.l";
"
il
censtut
constant
P_MS
P_K5 "td l~ lc ve c t or (IZ .. HB:tIdUt.- l ) doVDto 0) :- " 11l1111l0 1 ~1110aOû10l{)(Jl· ; --:'111:':'11 0 1011101
..
<7
••
50
51
con. tant
con.t.a.nt.
conet.ant
con .. tant
conetant
P t
P-P'
P- PB
I~inl
1 nfin1
sta-lDQ1C- v ecto r
5t:S-lOQl.c-vec-eor
"tel-1 OO lc - .-ec t o r
5t.:S -109~c-VeCt or
lIt.d-l09l.C- y ector
((2 " KEbr!lit.- l )
I(Z - Hlr.br!!lt.- ll
1(2 *Hlrbr91t,,- 1 )
((2 *H'!IbrBits- l )
(IZ - Nl!brBit.JllI- 1 )
doWnto
downto
downto
dovnto
downto
0) ;- " OOOOC'OOOOtiCOO~OOC~OO()OOO · ;
0 1 :- "OOOOO~()OlCl()OO ll l l ()l(ll:n" ; --OOOOOOOO!OlOOO':'l
0 ) : - " 000CO(011)1(1C:0111 10101110 · ; --000000 010:00 0111
0 ) :- · 011111111111111111111111" ;
0 ) : - " 100COOCQOOOCOCCOOOOrlQrlOO- ;
..
52
53
55
conetant
con.tant
conetant
constant
V:NB
V_NS
V Z
v: PS
5td: 1C19,iC:.-ector
5td_l oql.c_vector
lItc1_1oo:.c_vector
!lt.d_ loql C_Yector
1 (2 · Nl:br!lita- l)
1 (Z " NEbr.BltJlll- l )
IIZ · KàlrlUtll- l )
((Z · iœbrBit..s- l)
downto
downto
downto
dOWDto
0 ) :- " 1111111010111000Q1010010 · ;
0 ) :- " 1l11l1l10lQ1110CCOIOI001":
0 , ;- " OOOOQOQOIJC;OCOCOOl1~OO>:)OOQ " ;
0 ) ;'" "(01)0000l1 1 010<;'Oll11010111 " ;
5.
59 8I:GDf
60
61
6Z Multiplexeur ; Huxl port _P 1 1 n l ini -> 1 nlini, Na - > P Ne, N S -> PliS, Z -> P Z. PS "'> F ~. PfI -> P PfI,
" lÎÏU.n1 -) In:1.ni, data I -> D..tal , -data2 -;,. Dae..l, Swltc:birlJ;Sl.~;1 -> SW1tCMnO'iqn .. l,
,.. Reset Hu.x l -> Reliee. klonGP, Pt.oe I n l -,. Ptaqe IDI, Pt .. oe 1112 -> Ptaoe 102,
,.
65 PteQe:tn3 -) Ptoge_Ïr:3. d6ta. -> caita ) : - - -
,.,.
67 rO".lrcentaçe port _p ( Data -> data, Bi -> Pt.ge_lel, !!O .. > Ptage_Ie!. BJI -> Ptage_ln2. Rl!:set_ prct -> Reaet_!elo!l.GP.
Pourcetttage -) Pourcentagell ) :
70 DeIlultiple.~ur ; Deawcl port mail ( P - > Pourc e nt ages , SvitchlngSignal - > SVltch1.ngSl;nal , Rellet I>o:uxl - > Re5et BelonGP
71 , P l I -> PlI, PI '2 ..> PI2 . P I 3 -, Pl!, P l .. - , PH. Pl 5 -> 1>15:-P2 l -> P11. P2 2" -> P22,
72 PZ: ) -> Pl3 , Pl: 4 - , P2 .. , P2: 5 -> P15 ) ; - - - -
70
7<
7.
119
-- clèc1aratlen de l'f!ntl.tê
entlty POUfCenea'le 1.
Genetic INlmt !U.t l : U:.tl!Ql!r : .. 12) :
,.
U
port 1 Da t a , ~l . Bo . 8 .
ae3t t_Prc r
Pourcent.age : out.
: ln .t.d lOQ1C ve ct.OT Il ' · ...,rl!l.lt..- l l doomt.o 0) ;
: in , teS-l~lC:
et.I1_10Q"1.c_vect.or 117 - lIwbr81t..- 1) dOWlto 01
0,
SOUlt
"
SI COHPOlŒlCt ~ 2~lu
S9 PQ1:t 1 A l'CSUl, 8- H3ll1 : in e tc1 10",1C vn:t.or l(2 - M!abrlh,.t.- ll dovnt.o :.) :
tO - rnet A : - iD .lItd loç1e ;
'Il C H!a :
OUt et.d 10Q"1.c we eto:I (2 " *brlllt.- ll dO\mUl C·)
42 . :- - -
"
ft
COn:Jt.llnt. ZeroHl.llt. : nd 109.1.<: v-e,ct.or 112 · ...,t8l.t.- 1I dovnto 0) :. " O!l('O:"00000000011010001P : -- - 011001000000000000000000 · ;-- 0 1 1001!001!00110 --0.71 11 5
CO"nata.!'lt Zeres,.. : nd_loQ'1ë_vector i (IIIs:br..S1 t.- l) ~to 0) :- · 0101000000000 00000000000 ·; - - 0100110011001100
50 beOi.n
.,"
pree..... (o.ea,l!h,IkI,a.. )
"arlabllf Mt-.l tJIp, Uua1 t.Ç : .steS loql.e ~ct:or (U · a.t:Irlll.t,- I) downto 0) :
..attable o...cœ_ t.p : . t.d. 1OQl.c : - -
54 .ariable Cl uaP
: .n d l001e "ector ll(2 - tt.brlll.t.w I - 2) dovnto 0 1 lothen .., ' 0 ' ) :
55 varlabllt C2- a:p :,tc1-1OO1c-"ector l((2 " Nasbr81t. ) - 2) dOWllto 01 : - (ot.her. -> ' 1 ' 1 :
~Q~ - --
51' J.t (Data , !11 ) and IDa t a < 8. ) then
se
59 if CDat.a <- ~ ) and (o..ta , 8i ) tben
40 lltal <- Dat.a;
61 )1..-2 <- !51;
"
fit Den\a <- ' :" ;
'5 eh ...
'6 o..n.... <-
' 0 ';
6i end H : 1
61 el. 1t ( Data <- Sa ) anc1 (Data ' 80 1 then
" lIual <- lb:
1'0 )I\lIIl2 <... o..ta;
"
1'5 Denta <- ' l ';
it elae
15 o.c.... <- ' 0 ';
'6 end 1f:
1'1' el..,e
1e
19
"u.l
NIa2
<- lether. -, ' 0 ' ) ;
<- l other, - , ' 0 ' ) ;
10 Denua ('- ' l ';
III end i f :
'8 -- Le deu.aJ.eDe: e.st plWl triquent, le dUUllertat.eur eQ'alll a 0.005 Ile quart de l'wuve:-. c11l d..uc:.cl.lrt.1
,t Int2 <- l.ntl (J · Nàlr51t.- l) , lnt.l If2 - HdJrl!1t..-9) clovnto 0 ) ~ " e·ooGOoo · ; -- la on re-.pla e e 1 .. d l"1. lon pa r une 1W1t.1pl1eat1ofl par 200 .
100 - - et cet.te. QJ:6r.t.lon ellt r~l.cée par Utl dècal a.",e de e Rat..
101 1nt! C:" Zerohult;
102 enc1 i~ :
IDS end procea. :
H\llU.pUcaU.on : KOLTIPLIER 2nl1ita port _p ID KS i • .., 10t2, II!: KSlS .., int ' , Ra n t M "'> Re ••-c. Pret , T KSi • .., Ultt ) ,
105 Truncatlon : TRDlfCJ.roa lnllit. port _p (t; ranc ln '"') ln-c.t, Rea e t tt a ne -> ReHt- Prer., t t w out. ->- lnt5 ) 1
Ac141t1.oft : ADŒR 2nB1ta port ...p lA HSUI"", ";:tS. Il KSu.-> l.Dt~. - Re ae t A - , .e.;t Pret , C Hi1W' > 1..ftt6 1 t
101' Pcureenteqe c:- l!'1t6: - - - - - -
10! end Pourctnta",_ 1:
120
LIBRAR.Y leee;
use 1eee . !I't-d 1001 e 11 Ei 1 . 811 ;
ENTITY RUle!lTable i !l
Ge.nerl..C (Rtt.èrBit!l: 1ntege:r ;- 1 2 ) ;
PORT ( Pl1 ~ Pl:!' , Pl3 , Pl .. , PIS ,
P2! , P22 , P23 , P2i , P25 : .ln !I ~d_loQl.c_ve c t: or { ( Z · Nlt.br!bts- l ) downto 0 ) ;
Re!let CS ; in ;!! c d 1001.c;
NPWl , -Npv2 , Npw3 , - Npwi,NPW5 : out !ltd_loQ1.c_ veccor « 2 .. NttbrBit!l- 1 ) downto 0 )
) :
10 Dm ltulesTable ;
11 ARCHITECTUR.!: lu'cb1_lWlesTable ot RuluTabll! l.l!!l
12 - - Ccnc:po!lAnt8 d u Ro le.sT4bl e --
13
,.
16
17
19
Reset_M1nMa.x : ln !l td_lo;1c ;
20
21
22 -- S lqnaUll: d.e 11&.1.8 0::'--
23 sl.gnal maltNB . u.a.x.NBl , ma.xNB2 , maxNB3 , .IIIUlXNB1 , max."ŒS , maxNB6 ,
24 aa.xNS . masNSl , JM.XNS2 , .ma.xNS3 , maxNS1 , maxNSS , ma.xNS6 ,
25 &&XZ , 1I4XZl , &aJr.Z2 , maxZ3 . sa.xZ1 , JU.xZ5 . maxZ6 ,
2. EaltPS . lLIUlPSl , rLlUtPS2 . ma.xPS3 , œa.xPS1 , maxPSS , maxPS6 ,
27 ca..xPB , IUUl:PBl , a,alCPS2 , maxPB3 , maxPB1 , ~PB5 . maxPB6
2. !lt.d._l t101.c_v~tcr (( 2 '"' NIIb:r81ts- l ) downto 0 ) ;
2.
30
31
32 BEGIN
.
12
13
15
16
bt!OUl -
5.
57
5. PUnKaX_KB2
.,"
60
62
.3
••
•S
66 lt1rJliax HB6 lUnxa.a port IUP 1 Entree l .. > Pl 4, [l'ltree2 .. > P21, Entree3 '"'> -...a.xlœ6, lte.set_Hl.nJotu '"'> Re"et_CS, Hu -> ll.axNB ) ~
61 ---- cilcul de a.uNS
••••
70
71
72
73
,.
SO Ki.nHax_Z3
Sl
.2
53
.••
S4 KinH6x %5 Hi.roHu port aop 1 Entree l -> PIS, rntree2 -> P2 1. [ntree3 -> IUJCZS , Re"et_ HinHa.x -> Re.set_CS, Kax -> &axl ) ;
55 ---- Ca lCUl de a.uPS
,
••••
90
91
il lU.nKax l'S. tu..cKax port . .p C Efttr~e l -> PIS, En.tr~el -> P22, En:tree3 -> It&xPS4, Jleset _JU.n.Max -> Re.et_CS, Hal[ -> :saxPS ) :
90S - - -- Wcul de _ lCN!!
91. H.i.r.Ka.z_fBl lU.nHaJr port _p C EDtree l -> P12. !:ntree2 - > PI S, Entree3 -> mAxPB L, Rellet HinMlllC .. > R,e.set CS, MIllC -> lI&XPB2 )
95 K1nHax_ P!52 K.1l'lHaJl port. sap 1 E.Dtree l -> Pl3, Encree2 -> Pl5, Ent.ree3 -> x.aJCP82 , Reset:H.1nHa.x -> Re .et:CS , Malt -> a<PB3 j
91S ltinXaJr: PB3 M.l.œt.a.x port. .ap ( t'ntreel -> Pl4, Entreel -> P2 ~, EntreeS -> zaxP1U, ReJ,et MinMax -> a.e.et CS , Max -> . ."PB4 )
97 H.1.nK&:.::PSi lU.aHe.. port IUP C Entreel -> PlS, Entree2 -> Pl! , Entree3 -> maxP!U, Re.set- H.1.nH&Jt -> Re.set-C5. Hall -> Jl&JCP'BS )
9! ~x F!5S lUnKaJi part. up ( ~tree l -> PIS , Entree2 -> Pl4 , Entree 3 -> &a.JlPSS , Reeet- HinHax -> R.e:tet-CS , Kax -> . .xPB6 )
99 Kl.nxa.x=P86 )U.c)tax port up C Entreel -> PlS, Entree2 -> P2S, Entree 3 -> _xPB6 , Rellet::::H.1.nMaJC -> Reset=C5. Malt -> &a.Jl:PB ) :
100 --------------------
101 Npwl <- lfAxN3 ;
102 Npw2 <- x..d5t
103 lIPW3 <- &a.XZ:
101 Npw1 c- ....xPS :
105 HpVS <- &a.xPB;
lOIS DIO Arctu._Rule.'Iable:
\2\
"
1.
1.5
- - décl a r a tion de l' e ntl. t e
en!:1!:y KinKa.x 1s
16 Generlc (a.b:rBit.,: 1.:'\ l:.l!o e : : - 12) ;
17 port 1 Encreel, ElItree2. Entree3 : in Std_log'lc_veCtor ( (2 " Nxb.rBlt.a- l) downto 0 ) ;
l! R.eaet. K1.nHAll : 10 st.e! 109.10 :
"
20
21 ecd KiDKlo.x ;
Kax
l:
- : out !!It.d_loolc_VeCtor ( (' '" KJrbr51ta- l j downt.o 0 )
22
23 -- d ê cla r a ti,otl d e l 'archiu: c'ture
24 architecture Arch.1_KinK.ul of M.i.nKax ia
2S
26 beoln
27
ze proces5 (Ent.r •• l. Ent.ree2 , Entree' )
29 variable Kin tB!p . Hax c!p : 5td_JOQic_vect.or (f ' . Nn:br81ts- l) downt.o 0 ) :
'0 bcoln - -
31 if L"ltr.el >- Entre.2 then
..
"
35
H.i..c._UlP :- Entree2;
el!!!!
..
39
.0
end i f ;
.
4~ elae
ParkTran!lOITNlJOn S\'PWU
L-:]
S\'-"wu
-~
~
TlUr.."onl
Vq-'leçuaoon
122
Lq·p (23
iq (23 :0)
:0)
Multiplieur H Troncateur :
Multiplieur ~
w (23 :0)
Soustracteur
& --+ id (2 3 :0)
Troncateur
Surface de
id (23 :0) glissement (5 .12)
Multiplieur f--
k d (23 :0) -
TRUNCATOR_nBb
~.Jleoullban
123
Boukaka, S.; Chaoui, H.; Sicard, P., "FPGA implementation of SVPWM," New
Circuits and Systems Conference (NEWCAS), 20 J3 IEEE JJ th International , vol., no. ,
pp.l ,4, 16-19 June 20 13/NEWCAS.20 13.
Boukaka, S.; Teiar, H.; Chaoui, H.; Sicard, P., "FPGA implementation of an
adaptive fuzzy logic controller for PMSM," Power Electronics, Machines and
Drives (PEMD 2014), 7th lET International Conference on , vol., no., pp.1,6, 8-
10 April 2014.2014.
Boukaka, S.; Teiar, H.; Sicard, P., "FPGA implementation of a laws library of
adaptive control for PMSM," DCIS, 2015.
Boukaka, S.; Massicotte, D.; Sicard, P., "FPGA Implementation of SVPWM
Approximation," DCIS, 2015.
Boukaka, S.; Sicard, P., "Polynomial Approximation of SVPWM," Power
Electronic Letter. Soumis.
Teiar, H.; Boukaka, S.; Chaoui, H.; Sicard, P., "Adaptive fuzzy logic control
structure of PMSMs," Industrial Electronics (ISlE), 2014 IEEE 23rd
International Symposium on , vol., no., pp.745,750, 1-4 June 2014.