Vous êtes sur la page 1sur 143

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/282613570

Implantation d’algorithmes de commande sur FPGA : une méthodologie pour


les systèmes électriques

Thesis · December 2005


DOI: 10.13140/RG.2.1.2401.8642

CITATION READS

1 2,437

2 authors:

Zoheir Boulbair Francois Auger


Lrtt University of Nantes
6 PUBLICATIONS   16 CITATIONS    187 PUBLICATIONS   3,694 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Analysis of Three-phase signals View project

ASTRES View project

All content following this page was uploaded by Francois Auger on 06 October 2015.

The user has requested enhancement of the downloaded file.


UNIVERSITE DE NANTES

ECOLE DOCTORALE

SCIENCES ET TECHNOLOGIES

DE L’INFORMATION ET DES MATÉRIAUX

Année 2005

Thèse de Doctorat de l’Université de Nantes


Spécialité : Electronique et Génie Electrique

Présentée et soutenue publiquement par

Zoheir BOULBAIR
Ingénieur de l’Institut d’Electronique de l’Université de Constantine (Algérie)

le 14 décembre 2005

Au Centre de Recherches et de Transfert de Technologie de Saint-Nazaire

Implantation d’algorithmes de commande sur FPGA :


une méthodologie pour les systèmes électriques
Jury :

Rapporteurs : M. Jean-Philippe DIGUET, Chargé de recherche CNRS HDR – LESTER–UBS – Lorient


M. Eric MONMASSON Professeur – SATIE, Cergy Pontoise

Examinateurs : M. René AUBREE Société ATMEL Nantes, membre invité


M. François AUGER Maître de Conférences, IREENA– Saint-Nazaire
M. Jean-François DIOURIS Professeur – Polytech’Nantes – IREENA – Nantes
M. Luc LORON Professeur – Polytech’Nantes – IREENA – Saint-Nazaire
M. Olivier SENTIEYS Professeur – ENSSAT – IRISA – Lannion

Directeurs de thèse : Pr. Luc LORON, IREENA – 37, Bd de l’Université – BP 406 – 44602 Saint-Nazaire Cedex
Pr. Jean-François DIOURIS, IREENA – rue C. Pauc, BP 50609, 44306 Nantes cedex 03

Co-encadrant : François AUGER, IREENA – 37, Bd de l’Université – BP 406 – 44602 Saint-Nazaire Cedex
Composante de rattachement des directeurs de thèse : Ecole Polytechnique de l’Université de Nantes
N° ED 0366-235
Remerciements

Les travaux présentés dans ce mémoire ont été effectués à l’institut de Recherches en
Electrotechnique et Electronique de Nantes-Atlantique (IREENA). Ils ont été financés par le
Conseil Général de la Loire Atlantique.
Je tiens à remercier tous ceux qui m’ont aidé en contribuant à l’aboutissement de cette thèse, et
tout particulièrement :
Monsieur Olivier SENTIEYS, Professeur des Universités à l’ENSSAT Université de Rennes 1,
pour l’honneur qu’il m’a fait en acceptant de présider le jury de soutenance.
Je remercie Monsieur Eric MONMASSON, Professeur des Universités à l’Université de Cergy-
Pontoise, et Monsieur Jean Philipe DIGUET, chargé de recherches au CNRS, LESTER Lorient,
qui ont accepté de juger ce travail et d'en être les rapporteurs.
Je suis très sensible à la présence dans ce jury de Monsieur René AUBREE, Ingénieur de
recherche et développement de la société ATMEL Nantes, pour avoir apporté lors de ma
soutenance de thèse un regard industriel sur le travail présenté.
Je remercie Mr Luc LORON et Monsieur Jean-François DIOURIS Professeurs des Universités à
l’Ecole Polytechnique de l’Université de Nantes d’avoir accepté la direction de ma thèse.
Je souhaite enfin adresser mes plus sincères remerciements à Monsieur François AUGER, Maître
de conférences à l’Institut Universitaire et Technologique de Saint-Nazaire, pour ses qualités
scientifiques et humaines, pour sa rigueur scientifique et ses idées.
Un grand merci également à tous les membres du laboratoire IREENA et aux membres du
laboratoire GEM. En particulier Cédric, Madani, Samir, Toufik, Tarek, Abdellah.
Enfin au-delà du laboratoire, il y a les miens, qui ont tous, sans en être conscients, joué à leur
échelle un rôle important en m’apportant conseils et soutiens pendant les périodes d’incertitude.
Merci à mes parents à qui je dédie aujourd’hui ce travail ainsi qu’à tous mes frères et sœurs. Une
pensée toute particulière à mon épouse Fouzia qui m’a apporté une aide inestimable pour finaliser
ce travail de thèse.
Table des Matières

TABLE DES MATIERES --------------------------------------------------------------------------------------------- 5


LISTE DES FIGURES ------------------------------------------------------------------------------------------------- 8
LISTE DES TABLEAUX --------------------------------------------------------------------------------------------- 11
LISTE DES TABLEAUX --------------------------------------------------------------------------------------------- 11
INTRODUCTION GENERALE -------------------------------------------------------------------------------------- 13
CHAPITRE 1 : HISTORIQUE ET ETAT DE L'ART DE LA VARIATION DE VITESSE ----------------------------- 15
1.1. Brève histoire de la variation de vitesse des machines électriques-------------------15
1.1.1. Les solutions électromécaniques muti-machines ---------------------------------15
1.1.2. Les convertisseurs statiques à tubes------------------------------------------------16
1.1.3. La montée en puissance du silicium------------------------------------------------17
1.1.4. Les technologies de commande-----------------------------------------------------18
1.1.5. Automatique et principes de commande des machines --------------------------19
1.1.6. Variateurs de vitesse industriels et applications typiques -----------------------21
1.2. Principales caractéristiques d'un variateur industriel moderne -----------------------25
1.2.1. Principales fonctions -----------------------------------------------------------------25
1.2.2. Performances typiques ---------------------------------------------------------------26
1.3. Implémentation des lois de commande --------------------------------------------------27
1.3.1. Implémentation analogique ---------------------------------------------------------27
1.3.2. Implémentation numérique----------------------------------------------------------28
1.3.2.1. Implantation logicielle ---------------------------------------------------------29
1.3.2.2. Implantation matérielle --------------------------------------------------------30
1.3.2.3. Implantation mixte -------------------------------------------------------------31
1.3.3. Description sommaire des FPGAs.-------------------------------------------------31
1.3.4. Choix de la cible d’implantation----------------------------------------------------34
1.4. Conclusion-----------------------------------------------------------------------------------37
CHAPITRE 2 : METHODOLOGIE DE MISE EN ŒUVRE DES ALGORITHMES DE COMMANDE NUMERIQUE
SUR FPGA ---------------------------------------------------------------------------------------------------------- 39

2.1. Introduction ---------------------------------------------------------------------------------39


2.2. Présentation de la méthodologie----------------------------------------------------------40
2.2.1. Cahier des charges--------------------------------------------------------------------41
2.2.2. Conception fonctionnelle ------------------------------------------------------------42

5
2.2.2.1. Modélisation du processus et synthèse des correcteurs--------------------42
2.2.2.2. Discrétisation et choix de la période d’échantillonnage -------------------45
2.2.2.3. Développement des calculs----------------------------------------------------49
2.2.2.4. Mise en œuvre d’un partage de ressources ----------------------------------51
2.2.2.5. Mesure des extremums et normalisation des signaux----------------------52
2.2.2.6. Quantification et choix de la largeur des bus -------------------------------59
2.2.2.7. Quantification et codage des constantes -------------------------------------64
2.2.3. Conception architecturale -----------------------------------------------------------66
2.2.3.1. Codage en VHDL et test des codes ------------------------------------------66
2.2.3.2. Détermination automatique de la largeur des bus d’une architecture à
virgule fixe ------------------------------------------------------------------------------------66
2.2.3.3. Détermination de la fonction objectif ----------------------------------------71
2.2.3.4. Validation du modèle HDL ---------------------------------------------------74
2.2.4. Validation expérimentale ------------------------------------------------------------75
2.3. Conclusion-----------------------------------------------------------------------------------76
CHAPITRE 3 : IMPLANTATION DE LOIS DE COMMANDE DE MACHINES ELECTRIQUES SUR FPGA ------ 79
3.1. Introduction ---------------------------------------------------------------------------------79
3.2. Présentation du banc d’essais -------------------------------------------------------------79
3.2.1. Les machines --------------------------------------------------------------------------80
3.2.2. Le convertisseur statique ------------------------------------------------------------80
3.2.3. Le matériel de mesure----------------------------------------------------------------80
3.2.4. Le matériel informatique ------------------------------------------------------------80
3.2.5. Les interfaces--------------------------------------------------------------------------82
3.2.5.1. Interface codeur incrémental --------------------------------------------------82
3.2.5.2. Interface génératrice tachymétrique CAN-----------------------------------82
3.2.5.3. Interface capteur de courant CAN--------------------------------------------83
3.2.5.4. Interface carte FPGA commande rapprochée du convertisseur ----------83
3.3. Asservissement de vitesse et de courant d’un moteur à courant continu ------------83
3.3.1. Cahier des charges--------------------------------------------------------------------83
3.3.2. Conception fonctionnelle ------------------------------------------------------------84
3.3.2.1. Modélisation du processus ----------------------------------------------------84
3.3.2.2. Synthèse des régulateurs-------------------------------------------------------86
3.3.2.3. Discrétisation et choix de la période d’échantillonnage -------------------89

6
3.3.2.4. Développement des calculs----------------------------------------------------91
3.3.2.5. Mesures des extremums et normalisation des signaux---------------------91
3.3.2.6. Quantification et choix de la largeur des bus -------------------------------97
3.3.3. Conception architecturale -----------------------------------------------------------98
3.3.3.1. Codage VHDL et Test des codes ---------------------------------------------98
3.3.3.2. Choix de la largeur optimale des bus ----------------------------------------98
3.3.3.3. Validation du modèle HDL ------------------------------------------------- 101
3.3.4. Validation expérimentale ---------------------------------------------------------- 101
3.3.5. Conclusion--------------------------------------------------------------------------- 103
3.4. Contrôle scalaire d’un moteur asynchrone -------------------------------------------- 104
3.4.1. Cahier des charges------------------------------------------------------------------ 104
3.4.2. Conception fonctionnelle ---------------------------------------------------------- 104
3.4.2.1. Modélisation du processus -------------------------------------------------- 105
3.4.2.2. Synthèse du régulateur ------------------------------------------------------- 117
3.4.2.3. Discrétisation et choix de la période d’échantillonnage ----------------- 117
3.4.2.4. Développement des calculs-------------------------------------------------- 118
3.4.2.5. Mesures des extremums et normalisation des signaux------------------- 119
3.4.2.6. Quantification et choix de la largeur des bus ----------------------------- 121
3.4.3. Conception architecturale --------------------------------------------------------- 121
3.4.3.1. Conception architecturale en vue d’une implantation sur FPGA------- 122
3.4.3.2. Conception architecturale pour un microcontrôleur---------------------- 124
3.4.4. Validation expérimentale ---------------------------------------------------------- 124
3.4.5. Conclusion--------------------------------------------------------------------------- 128
3.5. Problèmes souvent rencontrés lors de la validation expérimentale ---------------- 128
3.5.1. Problèmes provenant de la machine---------------------------------------------- 128
3.5.2. Problèmes provenant de l’onduleur ---------------------------------------------- 129
3.5.3. Problèmes provenant de l’interface entre la machine et la carte numérique 129
3.5.4. Problèmes provenant de l’interface entre la commande et l’onduleur ------- 129
3.5.5. Problèmes provenant de la structure de la commande ------------------------- 130
3.6. Conclusion--------------------------------------------------------------------------------- 130
CONCLUSION GENERALE --------------------------------------------------------------------------------------- 132
BIBLIOGRAPHIE -------------------------------------------------------------------------------------------------- 135

7
Liste des figures

Figure 1.1 : Deux thyratrons. -------------------------------------------------------------------------17


Figure 1.2 : Le variateur VNTV de CEGELEC ----------------------------------------------------23
Figure 1.3 : Le TGV atlantique -----------------------------------------------------------------------23
Figure 1.4 :.Chronologie des événements. ----------------------------------------------------------24
Figure 1.5 : Architecture générale d’un FPGA. Source : [Thoma 05] ---------------------------32
Figure 1.6 : Cellules logiques (CLB). Source : [Thoma 05] --------------------------------------33
Figure 1.7 : Schéma d’interconnexions. Source : [Thoma 05] -----------------------------------34
Figure 2.1 : Schéma global de la méthodologie de conception proposée -----------------------41
Figure 2.2 : Structure générale du système commandé, montage --------------------------------44
Figure 2.3 : (a) boucle de régulation, (b) structure interne du régulateur PI --------------------45
Figure 2.4 Structure du correcteur discret + processus --------------------------------------------48
Figure 2.5 : Réponse du système lors d’une séquence d’échelons de courant. -----------------49
Figure 2.6 : Décomposition du produit d’un vecteur par une matrice ---------------------------50
Figure 2.7 : Structure de réalisation la plus adaptée, suivant les valeurs de K p et K i Te -----51

Figure 2.8 : Factorisation de calculs -----------------------------------------------------------------52


Figure 2.9 : Méthode analytique de normalisation des signaux ----------------------------------53
Figure 2.10 : (a) système asservi. - (b) système asservi après normalisation -------------------54
Figure 2.11 : Schéma fonctionnel d’un intégrateur ------------------------------------------------56
Figure 2.12 : Structure de l’intégrateur après normalisation--------------------------------------56
Figure 2.13 : Désignation des signaux ---------------------------------------------------------------57
Figure 2.14 : Structure générale après l’insertion des gains d’entrée et de sorite --------------58
Figure 2.15 : Addition en arithmétique virgule fixe (c= a + b). ----------------------------------59
Figure 2.16 : Multiplication en arithmétique virgule fixe ( d = a × b ). ---------------------------60
Figure. 2.17 : Règles de l’arithmétique en virgule fixe--------------------------------------------60
Figure 2.18 : Caractéristique de la loi de dépassement --------------------------------------------61
Figure 2.19 Modélisation du processus de quantification -----------------------------------------62
Figure 2.20 : Quantification des sorties des multiplieurs (a), de la sortie de l’additionneur (b)
et des sorties des multiplieurs et de l’additionneur (c)---------------------------------------63
Figure 2.21 : Structure du régulateur avec insertion des blocs de quantification --------------64
Figure 2.22 : Deux réalisations possibles d’une multiplication par 93 --------------------------65

8
Figure 2.23 : Modèle architectural du régulateur---------------------------------------------------66
Figure 2.24 : Méthodologie d’optimisation de la largeur des bus --------------------------------67
Figure 2.25 : Evaluation du rapport signal sur bruit de quantification --------------------------68
Figure 2.26 : Affectation des variables aux signaux de l’architecture ---------------------------71
Figure 2.27 : Variation du RSBq en fonction de la largeur de bus-------------------------------72
Figure 2.28 : Variation du nombre de cellules en fonction de la largeur de bus ---------------72
Figure 2.29 : Solution optimale-----------------------------------------------------------------------74
Figure 2.30 : Résultats de simulation du modèle en virgule flottante et du modèle en virgule
fixe dans le cas de la configuration optimale : courants obtenus dans les deux cas (en
haut) et différences entre les deux courants (en bas)-----------------------------------------74
Figure 3.1: Structure générale du banc d’essais, configuré pour la régulation de vitesse d’une
MCC.-----------------------------------------------------------------------------------------------79
Figure 3.2 : Carte mère de système de commande à FPGA. Source : [Warnes 04]------------81
Figure 3.3 : Structure général du module Heron-IO2. Source : [Warnes 04] -------------------82
Figure 3.4 : Modélisation par blocs fonctionnels du moteur à courant continu à aimants
permanents ----------------------------------------------------------------------------------------85
Figure 3.5: Schéma bloc de régulation d’une MCC------------------------------------------------86
Figure 3.6 : Schéma bloc du régulateur IP continu-------------------------------------------------87
Figure 3.7 : Schéma bloc des deux boucle de régulation------------------------------------------87
Figure 3.8: Structure du régulateur IP discret-------------------------------------------------------89
Figure 3.9: Régulateur IP avec l’action anti-saturation de l’action intégrale. ------------------90
Figure 3.10 : Réponses de vitesse et de courant avec et sans limitation-------------------------91
Figure 3.11 : Numérotation des signaux du régulateur de vitesse--------------------------------92
Figure 3.12 : Numérotation des signaux du régulateur de courant -------------------------------92
Figure 3.13 : Augmentation de la résolution du codeur incrémental, reconstitution de la
position---------------------------------------------------------------------------------------------93
Figure 3.14 : Normalisation des signaux du régulateur de vitesse -------------------------------95
Figure 3.15 : Normalisation de la structure du régulateur de courant
Ke 1 K ii 1 K pi 1
K1 = × , K2= × , K3= × ---------------96
Gmes ω Gsortie Gmes court G sortie Gmes court Gsortie

Figure 3.16 : Mise en place des blocs de quantification (régulateur de vitesse)----------------97


Figure 3.17 : Mise en place des blocs de quantification (régulateur de courant)---------------97
Figure 3.18 : Structure du modèle architectural ----------------------------------------------------98

9
Figure 3.19.a : Réponse de vitesse ----------------------------------------------------------------- 100
Figure 3.20 : Validation du régulateur de courant------------------------------------------------ 102
Figure 3.21 : Résultats expérimentaux pour un asservissement de vitesse-------------------- 102
Figure 3.22 : Structure générale de la chaîne d’entraînement ---------------------------------- 105
Figure 3.23 : Variation de la tension statorique en fonction la fréquence à flux constant -- 108
Figure 3.24 : Schéma global d’un asservissement de vitesse de la machine asynchrone --- 109
Figure 3.25 : Structure général d’un onduleur ---------------------------------------------------- 110
Figure 3.26 : Vecteurs de tension statorique dans le plan (α , β ) ------------------------------ 111
Figure 3.27 : Détermination de l’angle θ ′ -------------------------------------------------------- 114
Figure 3.28 : Séquence d’application des vecteurs de tensions--------------------------------- 115
Figure 3.29 : Détermination des seuils de comparaisons---------------------------------------- 116
Figure 3.30 : Réponse de vitesse, couple de charge---------------------------------------------- 118
Figure 3.31 : Partage de ressources dans le cas de la MLI naturelle -------------------------- 118
Figure 3.32 : Partage de ressources dans le cas de la MLI vectorielle------------------------- 119
Figure 3.33 : Structure d’inversion de sens de rotation du moteur----------------------------- 122
Figure 3.34 : Réponse de la vitesse (algorithmes en virgule fixe et en virgule flottante) --- 123
Figure 3.35 : Résultats expérimentaux dans le cas d’une implantation sur FPGA - stratégie de
MLI vectorielle --------------------------------------------------------------------------------- 126
Figure 3.36 : Résultats expérimentaux dans le cas d’une implantation sur microcontrôleur –
stratégie de MLI vectorielle ------------------------------------------------------------------- 126
Figure 3.37 : Résultats expérimentaux obtenus sur une FPGA par une MLI vectorielle (a) et
par une MLI naturelle (b). --------------------------------------------------------------------- 127
Figure 3.38 : Résultats expérimentaux obtenus sur un microcontrôleur par une MLI avec
injection d’un harmonique 3 (a) et par une MLI naturelle (b) ---------------------------- 127

10
Liste des tableaux

Tableau 1.1 : Performances des commandes de machines triphasées avec capteur mécanique.
------------------------------------------------------------------------------------------------------27
Tableau 1.2 : Performances des régulations de vitesse de machines asynchrones sans capteur
mécanique. ----------------------------------------------------------------------------------------27
Tableau 1.3 : Comparaison des différents solutions technologiques-----------------------------36
Tableau 2.1 : Règles de détermination du domaine de définition, avec
z = (min( x) min( y ) , min( x) max( y ) , max( x) min( y ) , max( x) max( y ) ) .---------------------53
Tableau 2.2 : Mesure des extremums des signaux -------------------------------------------------57
Tableau 2.3 : Mesure des extremums après insertion des gains d’entrée et de sortie----------58
Tableau 2.4 : Codage des différentes constantes du régulateur de courant ---------------------65
Tableau 3.1 : Valeurs extrêmes des différents signaux du régulateur de vitesse ---------------92
Tableau 3.2 : Valeurs extrêmes des différents signaux du régulateur de courant --------------92
Tableau 3.3 Relevé des extremums des signaux du régulateur de vitesse après normalisation
------------------------------------------------------------------------------------------------------96
Tableau 3.4 : Relevé des extremums des signaux du régulateur de courant après
normalisation--------------------------------------------------------------------------------------96
Tableau 3.5 : Combinaisons de vecteurs de tension d’un onduleur trois bras idéal, moteur
branché en étoile (0 : interrupteur ouvert, 1 : interrupteur fermé)------------------------ 112
Tableau 3.6 : Détermination des rapports cyclique ---------------------------------------------- 113
Tableau 3.7 : Calcul des seuils de comparaison -------------------------------------------------- 116
Tableau 3.8 : Relevé des extremums du régulateur de vitesse---------------------------------- 119
Tableau 3.9 : Relevé des extremums (régulateur de vitesse) après normalisation ----------- 121
Tableau 3.10 : Ressources du FPGA utilisées par le dispositif de commande --------------- 125
Tableau 3.11 : Ressources du microcontrôleur utilisées par le dispositif de commande --- 125

11
Introduction générale

Introduction Générale

La thématique de recherche de ce travail de thèse s’inscrit dans le cadre des actions transversales
entre le pôle systèmes et le pôle énergie de l’Institut de Recherche en Electronique et
Electrotechnique de Nantes Atlantique (IREENA), et présente un caractère pluridisciplinaire,
alliant des compétences en génie électrique, en électronique numérique et en automatique.

Pour les premières réalisations de dispositifs numériques de commande de systèmes électriques,


les microcontrôleurs et les DSP se sont naturellement imposés. Basées sur de la programmation,
ces solutions sont peu coûteuses en temps de développement et sont familières pour les
concepteurs [Monmasson 02]. L’apparition ces dernières années de nouveaux composants FPGA,
possédant des capacités fortement accrues et proposés à des prix très compétitifs, a fait de ces
composants une alternative très sérieuse aux solutions logicielles. L’intérêt d’utilisation de ces
composants est lié principalement à la réduction du temps d’exécution des algorithmes de
commande et donc la possibilité d’atteindre des performances élevées.

Toutefois, si l’implémentation sur des cibles logicielles est abondamment documentée, que ce soit
dans des travaux scientifiques ou des notes d’application de constructeurs, l’implémentation
matérielle l’est beaucoup moins. Afin de tirer le meilleur parti de ces circuits, le concepteur doit
donc être aidé par une démarche rationnelle pour développer son application.

Le but recherché dans notre travail est donc de proposer aux concepteurs de commandes des
systèmes électriques une méthodologie d’intégration qui tient compte des différentes contraintes de
mise en œuvre. Cette méthodologie est ensuite validée à travers la réalisation de quelques
exemples typiques de commande des machines électriques.

La nature de ce travail nous a amené à adopter le plan suivant :

Dans le premier chapitre nous présenterons un bref historique sur les principaux événements qui
ont marqué l’histoire des machines électriques à vitesse variable. Un accent particulier sera mis sur
les principales fonctionnalités et sur les performances des variateurs de vitesse récents ainsi que
sur les différentes solutions technologiques utilisées pour leur mise en œuvre. Nous y définirons
les différents critères de choix des cibles d’implantation.
Dans le chapitre suivant, nous présenterons ce qui nous semble être l’une des principales
contributions de ce travail, et qui correspond à une méthodologie d’implantation des algorithmes
de commande des systèmes électriques sur FPGA. Cette méthodologie, visant à simplifier le travail

13
Introduction générale

d’un concepteur, comporte différentes étapes, que nous détaillerons dans ce chapitre et que nous
illustrerons sur un exemple concret. La première étape correspond à l’analyse ou à la participation
à l’établissement d’un cahier des charges qui spécifie le système à concevoir. L’étape suivante, qui
correspond à la conception des différents blocs fonctionnels du système, est validée par la
simulation du système dans les cas de fonctionnement les plus extrêmes définis par le cahier des
charges. L’étape suivante correspond à la réalisation de l’architecture du dispositif de commande,
qui est également validée par des simulations qui tiennent compte du codage en virgule fixe, sur un
nombre de bits limité et sur une cible matérielle donnée du dispositif de commande. Nous
montrerons qu’il est possible de réduire la durée de conception par un algorithme de détermination
de la largeur optimale des signaux de l’architecture à implanter. La dernière étape de la
méthodologie proposée est la validation expérimentale du dispositif sur un banc d’essai
comprenant le processus réel.

Le troisième chapitre sera consacré à la validation de notre méthodologie au moyen de deux études
de cas complètes. La première correspond à une régulation de vitesse et de courant d’une machine
à courant continu. La seconde correspond à la commande scalaire d’une machine asynchrone, que
nous avons implantée sur un FPGA et sur un microcontrôleur dédié à la commande des machines
électriques, afin de pouvoir faire des comparaisons. Un accent particulier sera également mis sur
les différentes contraintes susceptibles d’être rencontrées lors de la phase des tests expérimentaux.

14
Historique et état de l'art de la variation de vitesse

Chapitre 1 : Historique et état de l'art de la variation de vitesse

Ce chapitre présente un état de l’art des technologies utilisées pour la commande des
systèmes électriques et plus particulièrement des machines triphasées. Il comporte trois
parties. La première rappelle la chronologie des principaux événements qui ont contribué au
développement de la variation de vitesse des machines électriques. La seconde présente les
principales fonctionnalités et les performances des variateurs de vitesse récents. Enfin, la
dernière partie aborde la comparaison des différentes techniques d’implémentation de lois de
commande, afin de situer les solutions dites « matérielles » (à base de circuits logiques
programmables), par rapport aux solutions logicielles utilisant des microcontrôleurs ou des
processeurs de signaux.

1.1. Brève histoire de la variation de vitesse des machines électriques


Les techniques de variation de vitesse des machines électriques ont aujourd’hui un peu plus
d’un siècle. Le développement des technologies d’alimentation est passé par les grandes
étapes suivantes :
- les solutions électromécaniques multi-machines ;
- les convertisseurs statiques à tubes ;
- les convertisseurs statiques utilisant des composants de puissance en silicium.
Parallèlement, les technologies et les principes de commande ont également évolué. Les
modèles dynamiques des machines alternatives se sont affinés pour autoriser leur
exploitation dans les applications à vitesse variable et haute dynamique qui étaient
jusqu’alors réservées à la machine à courant continu. Progressivement, les techniques
numériques se sont développées au détriment des techniques analogiques. Enfin, tout ceci a
été permis grâce aux progrès de l’automatique qui a fourni les outils nécessaires à la
conception et au réglage des structures de commande des systèmes asservis.
Nous allons brièvement rappeler la chronologie et les dates des principaux événements qui
ont marqué l’histoire de la vitesse variable.

1.1.1. Les solutions électromécaniques muti-machines


Au 19ème siècle, les machines électriques étaient déjà bien implantées dans l’industrie. Les
machines alternatives étaient connectées directement au réseau et fonctionnaient donc à
vitesse constante. Une variation par paliers pouvait être obtenue à l’aide d’un bobinage
spécial permettant le changement du nombre de paires de pôles. On pouvait également

15
Historique et état de l'art de la variation de vitesse

utiliser un rhéostat placé en série avec l’induit d’une machine à courant continu ou connecté
aux bagues rotoriques d’une machine asynchrone. Mais ces solutions étaient d’autant moins
efficaces que l’on désirait une grande plage de variation de vitesse.

1896. Le 18 novembre 1896, Ward Leonard présente le groupe qui porte son nom à la 110ème
conférence de l’American Institute of Electrical Engineers à New York. Ce groupe
comporte deux machines (une machine alternative qui entraîne une génératrice à
excitation contrôlée) pour réaliser la source continue variable qui alimente une 3ème
machine dont on fait varier la vitesse.

Malgré sa complexité, le groupe Ward Leonard a été très employé et certaines installations
sont encore en service. Le principal défaut de cette solution est de nécessiter deux machines
supplémentaires, de puissance égale à celle de la machine à alimenter. En outre, deux des
trois machines sont des machines à collecteur. Au début du 20ème siècle, différentes solutions
basées sur des machines asynchrones à bagues ont été proposées. Le contrôle de la vitesse ou
du couple de la machine est alors réalisé à partir du contrôle de la puissance rotorique. Pour
ne pas gaspiller cette puissance, des machines auxiliaires permettent de la réinjecter sous
forme mécanique sur l’arbre de la machine principale ou sous forme électrique au réseau.

1904. Krämer propose d'utiliser deux MCC auxiliaires : une MCC particulière, utilisée
comme redresseur, et une seconde qui reçoit la puissance délivrée par la première et qui
est accouplée à la MAS.

1907. La solution présentée par Scherbius contrôle la puissance rotorique à l’aide d’une
machine spéciale à collecteur qui entraîne un alternateur relié au réseau d’alimentation.

1911. Le Moteur Schrage est une machine asynchrone modifiée pour intégrer les machines
auxiliaires qui réalisent la réinjection d’énergie. La puissance est contrôlée par la
position mécanique des balais (ce moteur est aussi appelé moteur à décalage de balais).

1.1.2. Les convertisseurs statiques à tubes


Au début du 20ème siècle, les solutions électromécaniques vont être concurrencées par les
redresseurs commandés utilisant des tubes à gaz [Lilen 03].

1896. John Ambrose Fleming invente le tube diode. Ce redresseur permet la transformation
du courant alternatif en continu.

16
Historique et état de l'art de la variation de vitesse

1908. Lee De Forest crée le tube triode en ajoutant une grille entre les deux électrodes du
tube diode. L’utilité de ce tube amplificateur ne sera reconnue qu’après 1912.

1928. Le Thyratron mis au point par Hull (General Electric) permet de réaliser les premiers
redresseurs commandés de forte puissance [Jahns 01]. Le thyratron est une triode
contenant un gaz (vapeurs de mercure, xenon, hydrogène…). Son comportement est
similaire à celui du thyristor.

Début des années 30. On voit apparaître les premiers onduleurs utilisant un bus continu et
les premiers cycloconvertisseurs pour le contrôle des machines triphasées. On imagine
l'autopilotage de la machine synchrone.

1938. Les machines auxiliaires des systèmes Krämer et Scherbius commencent à être
remplacés par des redresseurs à tubes.

Figure 1.1 : Deux thyratrons.

1.1.3. La montée en puissance du silicium


En fait, en raison de leur encombrement et de leur fragilité, les tubes de puissance n'auront
pas le succès industriel escompté et il faudra attendre l'arrivée du thyristor et des autres
composants de puissance à base de silicium pour que les convertisseurs statiques se
développent réellement et remplacent les solutions électromécaniques.

1947. John Bardeen, Walter Brattain et William Shockley (du Bell Laboratories) inventent le
transistor à pointes.

17
Historique et état de l'art de la variation de vitesse

1956. C’est également au Bell Laboratories qu’est inventé le thyristor. Rapidement, le


thyristor remplace les redresseurs à tubes pour réaliser des redresseurs commandés et
des cycloconvertisseurs.

1959. Steven Hofstein et Frederic Heiman (RCA) parviennent à réaliser le premier transistor
MOSFET qui avait été imaginé par Lilienfeld en 1925 [Lilen 03].

Années 70. Le thyristor de puissance blocable par inversion de la tension de gâchette (le
thyristor GTO) devient opérationnel (auparavant, il était très limité en puissance).

1984. Le transistor bipolaire à grille isolée (IGBT) fait son apparition. Combinant la facilité
de commande d'un transistor MOSFET et la faible chute de tension d'un transistor
bipolaire, l'IGBT deviendra rapidement la solution privilégiée des convertisseurs
statiques de puissance moyenne.

1990. Mitsubishi développe des modules de puissance « intelligents » qui intègrent les
drivers et les protections des interrupteurs de puissance.

1.1.4. Les technologies de commande


Les premiers variateurs de vitesse industriels s’appuieront sur des commandes analogiques
utilisant d’abord des composants discrets, puis des amplificateurs opérationnels. Dès qu’elles
seront maîtrisées, les technologies numériques seront également exploitées. Dans de
nombreuses applications, elles remplaceront les solutions analogiques.

1944. Howard Aiken et Georges Stibitz construisent l’Eniac, première calculatrice


électronique à base de tubes (18000 tubes, 30 tonnes). Une addition prend 0.2 ms.

1959. Jack Kilby (Texas Instruments) et Robert Noyce (Fairchild Semiconductors) inventent
le circuit intégré.

1962. Burr-Brown et Philbrick Researches Inc. réalisent les premiers amplificateurs


opérationnels intégrés. Le µA702 de Faichild Semiconductors apparaîtra en 1963.

1971. Ted Hoff (Intel) réalise le premier microprocesseur : le 4004, qui est en fait un
microcontrôleur 4 bits de 2300 transistors MOS cadencé à 108 kHz.

1972. Intel commercialise le premier microprocesseur 8 bits : le 8008, qui compte 3500
transistors et utilise une horloge à 200 kHz.

18
Historique et état de l'art de la variation de vitesse

Début des années 1970. Les premiers circuits intégrés bipolaires configurables par
l’utilisateur apparaissent. Parmi ceux-ci, le Programmable Logic Array (PLA) a été
inventé par Monolithic Memories. Viendront ensuite le Programmable Logic Device
(PLD), puis ses versions plus complexes dont le CPLD.

1976. Intel présente le 8748, premier microcontrôleur 8 bits intégrant notamment une
EPROM.

1978. Intel réalise le 2920 qui intègre un processeur, un convertisseur analogique-numérique


et un convertisseur numérique analogique. Ce composant baptisé "Analog signal
processor" aura peu de succès (il lui manquait un multiplieur rapide).

1979. Bell Labs propose le premier processeur de signal performant qui intègre un
multiplieur câblé.

1982. Intel lance le 8096, microcontrôleur 16 bits qui sera très utilisé dans le monde
industriel.

1983. Texas Instruments présente son premier DSP : le TMS32010.

1985. Xilinx met le premier FPGA (le XC2064) sur le marché.

Début des années 2000. On observe le développement des composants hybrides associant la
puissance de calcul des DSP et les fonctionnalités d’interfaçage des microcontrôleurs.
Certains de ces composants, (proposés notamment par Texas Instruments, Microchip,
Analog Devices et Motorola), sont dédiés à la commande des machines électriques.

1.1.5. Automatique et principes de commande des machines


Nous limiterons ce bref historique de l'automatique à l'approche fréquentielle qui est
exploitée dans la grande majorité des variateurs industriels. Au début du 20ème siècle, les
deux principaux moteurs de la recherche scientifique furent les conflits mondiaux et le
développement du téléphone. Ceci explique l'importante contribution du laboratoire Bell. Par
ailleurs, il est surprenant de constater que Maxwell, célèbre pour sa "Théorie dynamique du
champ électromagnétique" (publié en 1865), est également à l’origine des bases scientifiques
de l'automatique.

19
Historique et état de l'art de la variation de vitesse

1868. En étudiant la stabilité du régulateur à boules de Watt, James Clerk Maxwell pose les
fondations de la commande des systèmes. Il montre qu'un système linéaire est stable si
les racines de son équation caractéristique sont à partie réelle négative [Maxwell 1868].

1877. Quelques années plus tard, E.J. Routh établit le critère qui permet de déterminer si les
racines d'une équation caractéristique sont stables [Routh 1877].

1922. N. Minorsky imagine le correcteur PID afin de réaliser un pilote automatique de


navire. Jusqu'à la fin des années 50, la grande majorité des correcteurs PID seront des
systèmes pneumatiques [Bennett 01]. Le correcteur PID reste aujourd'hui le principe de
contrôle le plus utilisé dans la commande des systèmes industriels et notamment dans
les variateurs de vitesse.

1927. Harold S. Black (Bell Telephone Lab.) découvre l'intérêt de la contre-réaction négative
en cherchant à améliorer les performances des amplificateurs utilisés en téléphonie
[Black 1934].

1932. Harry Nyquist (Bell Telephone Lab.) définit son critère de stabilité, basé sur le lieu de
la boucle ouverte dans le plan complexe [Nyquist 32].

1938. Hendrik Bode (Bell Telephone Lab.) propose une nouvelle approche basée sur les
diagrammes de gain et de phase et introduit la notion de marges de stabilité [Bode 40].

Années 50. La théorie des systèmes échantillonnés est établie à l'Université de Columbia.
Les premières commandes numériques sont envisagées. Les travaux de C.E. Shannon
(Bell Telephone Lab.) révèlent les problèmes posés par l'échantillonnage des signaux.

1969. K. Hasse propose un nouveau principe de commande basée sur une modélisation
vectorielle de la machine asynchrone. Il propose un principe de commande qui repose
sur un changement de repère nécessitant un résolveur [Hasse 69].

1972. F. Blaschke généralise l’approche de Hasse aux machines alternatives et en déduit une
méthode de découplage du flux et du couple [Blaschke 72].

A partir de la fin des années 70. Werner Leonard contribue activement au développement
industriel de la commande vectorielle des machines triphasées [Leonhard 85],
[Leonhard 96].

20
Historique et état de l'art de la variation de vitesse

1.1.6. Variateurs de vitesse industriels et applications typiques


Les premiers variateurs électroniques de vitesse étaient destinés à la machine à courant
continu, bien plus simple à contrôler que les machines alternatives. Ces variateurs reposaient
sur des commandes analogiques. Les premières commandes de machines synchrones
autopilotées furent également analogiques. Par contre, la commande vectorielle de la
machine asynchrone était trop délicate pour être réalisée par une solution analogique.

Années 30. Les tubes à gaz permettent de réaliser les premiers convertisseurs statiques :
redresseurs commandés, onduleurs, cycloconvertisseurs. La fragilité, l’encombrement
et la faible efficacité des tubes ont fortement limité leur développement.

Fin des années 50. Les composants de puissance à base de silicium commencent à remplacer
avantageusement les tubes dans les convertisseurs statiques. Les circuits de commande
sont évidemment analogiques. Seule la machine à courant continu bénéficie d’une
commande de plus en plus performante (augmentation de la dynamique et de la plage
de variation de vitesse), en raison de sa simplicité d’alimentation et de contrôle.

Années 70. Grâce à l’autopilotage, la variation de vitesse performante concerne aussi la


machine synchrone qui remplacera progressivement la machine à courant continu dans
de nombreuses applications.

1974. ASEA présente l'IRB6 : le premier robot entraîné exclusivement par des actionneurs
électriques. Sa commande numérique utilise un microprocesseur 8 bits (le 8008 d'Intel
qui n'a que deux ans).

1980. Le premier prototype de commande numérique de commande vectorielle pour machine


asynchrone est présenté à l’INTERKAMA de Düsseldorf. Il s'écoulera encore 9 ans
avant l'apparition du premier variateur vectoriel industriel [Leonhard 91a].

1981. Le TGV Sud-Est est mis en service. Il utilise 12 machines à courant continu de
500 kW.

1986. Control Techniques lance le premier variateur industriel à commande numérique.

1987. Télémécanique lance la gamme MASAP associant une machine synchrone à aimant à
un autopilotage par commande analogique (les changements de repère s'appuyaient sur

21
Historique et état de l'art de la variation de vitesse

les signaux en quadrature générés par un résolveur). Bien que le variateur intègre un
microcontrôleur, celui-ci est avant tout dédié aux fonctions de communication.

1988. Control Techniques et General Electric proposent la même année le premier variateur à
IGBT.

1989. Les premiers variateurs industriels basés sur le contrôle vectoriel de flux apparaissent
enfin. En France, ce type de variateur sera distribué par CEGELEC au début des années
90, sous la référence VNTV (voir figure 1.2). Il exploite le 8096 d’Intel
(microcontrôleur 16 bits) et des transistors IGBT.

1989. Le TGV Atlantique est propulsé par 8 machines synchrones autopilotées de 1.1 MW.
La partie puissance se compose d'un redresseur commandé et d'un onduleur de courant,
tous deux à thyristors. La commande est numérique.

Années 90. On assiste au développement des commandes sans capteurs mécaniques pour les
machines triphasées et notamment pour les machines asynchrones.

1993. La technologie du TGV évolue encore : cette fois, l'Eurostar utilise 12 machines
asynchrones de 1 MW, des onduleurs de tension à GTO et une commande vectorielle.

1996. Les premiers variateurs universels pour machines triphasées apparaissent. Ces
variateurs réalisent aussi bien les commandes scalaires et vectorielles de la machine
asynchrone que l'autopilotage de la machine synchrone.

22
Historique et état de l'art de la variation de vitesse

Figure 1.2 : Le variateur VNTV de CEGELEC

Figure 1.3 : Le TGV atlantique

23
Historique et état de l'art de la variation de vitesse

Figure 1.4 :.Chronologie des événements.

24
Historique et état de l'art de la variation de vitesse

1.2. Principales caractéristiques d'un variateur industriel moderne

1.2.1. Principales fonctions


La première fonction du variateur est de maîtriser l'énergie électrique fournie à la
machine. Pour cela, il doit analyser diverses informations électriques et, éventuellement,
mécaniques provenant de la machine. Initialement, ces informations étaient exploitées
exclusivement par la commande, en faisant parfois intervenir des observateurs pour réduire le
nombre de capteurs. Grâce à leur conception robuste, les systèmes industriels tolèrent des
données de mesure et des modèles relativement peu précis. Ceci permet d'employer des
capteurs et des convertisseurs analogiques-numériques économiques. Dans certains cas, on
peut se passer de capteur en remplaçant une grandeur mesurée par sa référence : la
compensation des temps morts permet par exemple de remplacer la mesure des tensions par
les signaux de commande de la MLI (Modulation de la Largeur d’Impulsion). Le réglage de
la commande est également facilitée : les variateurs qui fonctionnent convenablement avec le
réglage par défaut du constructeur ne sont pas rares. La tendance actuelle consiste à tirer un
meilleur profit des informations disponibles, soit pour réaliser une commande adaptative (en
tenant compte par exemple des dérives thermiques), soit pour surveiller le fonctionnement de
la machine, du convertisseur statique ou de la charge mécanique. Certains systèmes sont
capables de détecter en temps réel un défaut sur la charge. Dans cette catégorie, on peut citer
les dispositifs de surveillance des outils de coupe de machines-outils ou des pompes
immergées pour les plates-formes offshore.

Par ailleurs, les objectifs de réduction de consommation énergétique et les normes sur les
perturbations et la compatibilité électromagnétique tendent à ce que le variateur gère mieux
l'énergie qu'il échange avec le réseau. Un variateur comporte usuellement un simple
redresseur à diodes qui présente de multiples inconvénients : il est non réversible, il injecte
des perturbations harmoniques sur le réseau et son facteur de puissance n'est pas optimal.
Malheureusement, si l'atténuation des harmoniques peut être obtenue par un simple filtrage
passif, la réversibilité demande un redresseur actif, beaucoup plus coûteux qu'un redresseur à
diodes.

Enfin, le variateur doit également assurer des fonctions de protection qui concernent aussi
bien ses propres composants (étage de puissance) que la machine ou la charge entraînée. La
protection des composants électroniques demande une grande rapidité d'intervention. Cette

25
Historique et état de l'art de la variation de vitesse

tâche est donc confiée à des systèmes analogiques et certains modules de puissance, dits
"intelligents", intègrent leur propre protection. Les machines performantes sont souvent
équipées de sondes de température, afin d'assurer leur protection thermique, mais ceci
demande un câblage supplémentaire. Certains variateurs offrent une protection basée sur un
modèle thermique, souvent très simplifié, de la machine. Sur le plan mécanique, tous les
variateurs permettent de définir les accélérations et décélérations maximales. Il est
généralement possible d'interdire certaines plages de vitesse, pour éviter des points de
fonctionnement préjudiciable pour l'entraînement : vitesse critique, résonance mécanique…

Pour les faibles et moyennes puissances, les variateurs de vitesse destinés aux machines
triphasées sont de plus en plus souvent des systèmes polyvalents : ils acceptent
indifféremment de piloter une machine synchrone ou asynchrone. Ils autorisent différentes
commandes : en couple ou en vitesse, scalaire ou vectorielle, avec ou sans capteur
mécanique. Ils proposent une connectique souple, par des entrées-sorties programmables et
des interfaces optionnelles (codeur ou résolveur, bus de terrain, liaison par câble ou fibre
optique…). Ils intègrent généralement une boucle externe supplémentaire qui permet de
piloter la vitesse de la machine pour diverses applications : asservissement de position,
contrôle de température par ventilation, régulation de niveau de liquide par pompage… Dans
un variateur industriel, ces fonctionnalités complémentaires requièrent en fait plus de
ressources, notamment en termes de mémoire, que la commande de la machine elle même.

1.2.2. Performances typiques

Les tableaux 1.1 et 1.2 présentent les ordres de grandeur des principales caractéristiques
des variateurs de vitesse récents pour machines triphasées. Le tableau 1.1 indique les
performances pouvant être obtenues avec un capteur mécanique [Bonnal 98]. On obtient
alors des plages de vitesse très étendues, ce qui permet de réaliser des asservissements de
position très performants. Néanmoins, la machine synchrone à aimants est mieux à même de
répondre aux exigences extrêmes des machines-outils et de la robotique [Wyss 89]. Le
tableau 1.2 indique les performances des commandes de machine asynchrone sans capteur
[Vas 98]. Pour ces applications, la principale difficulté est de garantir une maîtrise
satisfaisante du couple aux très basses vitesses avec une charge entraînante : si la fréquence
des courants statoriques est nulle, la vitesse n'est plus observable et le variateur "décroche".
La précision en vitesse dépend fortement du glissement nominal de la machine. La pulsation

26
Historique et état de l'art de la variation de vitesse

statorique étant précisément connue, l'erreur d'estimation de la vitesse provient de l'erreur


d'estimation du glissement. Le couple nominal est généralement obtenu à partir d'une
fréquence statorique de 1 Hz. Cette valeur peut être réduite à 0.5 Hz, par un réglage précis du
variateur et, notamment, par une définition précise de la résistance stator à la température de
fonctionnement. En ce qui concerne la réponse en couple, les commandes vectorielles ont des
temps de réponse inférieurs à 10 ms. Cette valeur dépend de la fréquence de découpage du
convertisseur statique. ABB indique que le temps de réponse d'une commande directe de
couple est de l'ordre de la ms [ABB 1]. Il faut noter que la commande DTC utilise un pas de
calcul de 25 µs et requiert un processeur de signal performant et un ASIC dédié [Vas 98,
ABB 1], alors qu'une commande vectorielle standard utilise un pas de l'ordre de la ms
[Leonard 96].

MAS et contrôle vectoriel MS à aimants autopilotée

Plage de vitesse 1 à 1000 1 à 10000

Bande passante en vitesse Quelques dizaines de Hz > 100 Hz

Précision en vitesse 0.01 % 0.01 %

Temps de réponse en couple Quelques ms 1 ms

Tableau 1.1 : Performances des commandes de machines triphasées avec capteur mécanique.

Commande scalaire Contrôle vectoriel DTC

Plage de vitesse 1 à 10 1 à 100 1 à 100

Précision en vitesse 1% De 0.1 à 0.5 % De 0.1à 0.5 %

Temps de réponse en couple ≥ 100 ms Quelques ms ≈ 1 ms

Tableau 1.2 : Performances des régulations de vitesse de machines asynchrones sans capteur mécanique.

1.3. Implémentation des lois de commande

1.3.1. Implémentation analogique


Le bref historique qui débute ce chapitre a rappelé que l’implémentation des lois de
commande a d'abord été réalisée à l’aide de composants analogiques tels que des
amplificateurs opérationnels, des résistances et des condensateurs. Ces composants sont
utilisés pour réaliser différentes opérations : filtrage, amplification, addition... Bien qu’il soit

27
Historique et état de l'art de la variation de vitesse

également possible d’implémenter des multiplications, le coût élevé de ces opérateurs réduit
fortement leur utilisation. Une grande partie des régulateurs analogiques est basée sur les
actions proportionnelle, intégrale et dérivée de l’erreur. Même avec des structures
relativement simples, les régulateurs analogiques permettent d’atteindre de très bonnes
performances.
Cependant, le vieillissement et les contraintes thermiques inhérentes à ce type de réalisation
sont à l’origine des variations comportementales des composants analogiques. Cette
contrainte physique peut nécessiter un réajustement régulier des paramètres du régulateur. En
outre, la fiabilité d’un système électronique décroît avec l’augmentation du nombre de
composants, et sa réalisation peut s’avérer délicate compte tenu des contraintes liée aux
tolérances des composants. En conclusion, les problèmes décrits ci-dessus et le coût de
maintenance pour un système totalement câblé deviennent vite un handicap. De plus, la
complexité croissante des algorithmes de commande des systèmes électriques impose des
calculs de plus en plus difficiles à gérer par une technologie purement analogique. La
commande vectorielle de la machine asynchrone en est un exemple typique. La mise en
œuvre de ces algorithmes entraîne progressivement l’abandon pur et simple de cette voie
d’implantation. L’orientation vers d’autres solutions s’impose donc naturellement.

1.3.2. Implémentation numérique


L’avènement au cours de ces deux dernières décades sur le marché international de nouveaux
composants numériques, de plus en plus puissants et moins coûteux, a joué en faveur de la
vulgarisation de l’électronique numérique dans domaine de la commande des systèmes
électriques. Les avantages apportés par l’utilisation des régulateurs numériques sont
nombreux. Ainsi, l’utilisation de ces derniers ne se limite pas à la possibilité d’implémenter
des algorithmes complexes, mais aussi au fait qu’ils sont moins sensibles aux contraintes
thermiques et au vieillissement. Lors de la mise sur le marché de nouveaux composants, la
mise à disposition de documentations techniques abondantes et notamment de notes
d’applications, contribue en grande partie à la diffusion rapide du savoir faire et à une
meilleure exploitation de ces composants. Néanmoins, ces solutions ne sont pas sans
contraintes. Différents problèmes pratiques peuvent être rencontrés. Il y a, tout d’abord, les
difficultés dues au fait que le passage entre l’électronique analogique et l’électronique
numérique est souvent réalisé par des Convertisseurs Analogique-Numérique (CAN) et des
Convertisseurs Numériques-Analogiques (CNA). Ces derniers ont un format binaire fixe et

28
Historique et état de l'art de la variation de vitesse

une vitesse de conversion propre. Ils ne restituent donc pas parfaitement l’information
analogique d’origine et génèrent des imprécisions (erreur de quantification). De plus,
l’implantation de certains algorithmes ne peut être réalisée que par l’utilisation d’outils de
calcul puissants et souvent très coûteux.
Suivant la nature de la cible utilisée, l’implémentation des lois de commandes peut être
scindée en trois catégories : implémentation logicielle, implémentation matérielle et
implémentation conjointe.

1.3.2.1. Implantation logicielle

Lorsque l’on fait appel au remplacement d’un régulateur analogique par un régulateur
numérique, les DSP et les microcontrôleurs dédiés s’imposent comme cibles privilégiées
pour la plupart des concepteurs. Basées sur de la programmation, ces solutions effraient
moins les concepteurs et nécessitent peu de temps de développement [Monmasson 02]. Le
terme dédié indique ici que ces cibles ont été conçues pour des applications bien précises.
Malgré une unité de calculs simplifiée, l’ajout de périphériques internes aux microcontrôleurs
fait d’eux des circuits adaptés à la commande de processus. Ces périphériques sont
principalement : des mémoires ROM (Read Only Memory), EPROM (Erasable
Progammable Read Only Memory), des compteurs, des générateurs programmables de
modulation de largeur d’impulsion (MLI), des convertisseurs analogiques-numériques et,
plus rarement, des convertisseurs numériques-analogiques. Un exemple de microcontrôleur
mis récemment sur le marché des composants dédiés à la commande machines est
l’AT90PWM3 de la société ATMEL [Atmel 05]. Il s’agit d’un processeur 8 bits à
architecture RISC muni d’un multiplieur câblé. Il comporte un bloc mémoire de 8 koctets de
mémoire flash, 512 octets de mémoire EEPROM, 3 sorties MLI, un compteur 16 bits, un
compteur 8 bits, un convertisseur analogique-numérique 10 bits à 11 canaux d’entrée et un
convertisseur numérique-analogique 10 bits monocanal. La programmation de ce type de
microcontrôleur s’effectue en assembleur ou en langage C. Dans les deux cas, un compilateur
approprié traduit le programme en code exécutable qui est stocké dans l’EEPROM.
Les DSP intègrent en général une unité de calcul plus performante que les microcontrôleurs.
Ils permettent ainsi le calcul en temps réel d’algorithmes souvent fort complexes. Ils
possèdent une mémoire de données séparée de la mémoire du programme (architecture
Harvard). Les DSP dédiés à la commande des machines électriques possèdent les mêmes
périphériques internes que ceux intégrés dans les microcontrôleurs (générateur de signaux

29
Historique et état de l'art de la variation de vitesse

MLI, CAN,…). La série TMS320C24x est l’une des familles DSP les plus utilisées dans le
domaine de la commande des machines électriques [Ahmed 95, Toliyat t 04]. Ces DPS
travaillent sur des données de 16 bits, en virgule fixe, à 20 millions d'instructions par
seconde.

1.3.2.2. Implantation matérielle

En raison de leur capacité initiale limitée, les cibles matérielles n’ont été utilisées pour
l’implémentation des algorithmes de commande numérique des systèmes électriques qu’au
début des années 90. On entend par cibles matérielles, les cibles de type FPGA ou ASIC.
Deux tendances se démarquent des derniers travaux de recherche sur l’intégration de la
commande. Nous les définissons par « l’intégration partagée » et « l’intégration unique ». Il
s’agit respectivement de techniques d’intégration sur plusieurs ou un seul circuit intégré.
Intégration partagée : face au manque de ressources pour la mise en œuvre d’une loi de
commande complète dans un même circuit, la solution multi circuits a été adoptée. Cette
dernière consiste à associer plusieurs circuits (intégrant chacun une partie des fonctions de
l’algorithme) pour construire le dispositif global de commande. Cette solution permet, non
seulement, l’implantation matérielle mais également elle offre à l’architecture un aspect
modulaire. Les qualités d’un tel système sont principalement liées la souplesse de conception
et de test. Son handicap réside dans le besoin d’établir la gestion de la communication entre
les différents circuits et de l’augmentation du coût global de l’architecture.
Implantation sur un circuit unique : la possibilité, d’acquérir aujourd’hui des FPGA
possédant des capacités qui frôlent le 20 millions de portes logiques permet l’implémentation
entière de la plupart des algorithmes de commande sur le même circuit. Le prix a
dramatiquement baissé (2$ pour 100 000 portes logiques pour le SPARTAN-3E [Xilinx]).
Les avantages de cette solution ne sont pas à démontrer : elle permet de réduire le coût global
de l’application, de réduire l’encombrement du système global notamment pour les systèmes
embarqués, et de réduire l’effet des perturbations électromagnétiques sur les signaux
d’interconnexion. Nous reviendrons, plus en détail, dans ce qui suit sur la description des
FPGA, afin de montrer le besoin d’une adéquation entre l’algorithme et l’architecture de la
cible dans le cas de l’implémentation des algorithmes de commande numérique des systèmes
électriques sur FPGA.

30
Historique et état de l'art de la variation de vitesse

1.3.2.3. Implantation mixte

L’implémentation mixte (appelée aussi conception concurrente ou « codesign » en anglais)


consiste à allouer à chaque cible une ou plusieurs fonctionnalités de l’algorithme que l’on
souhaite implanter. Cette solution, bien qu’intéressante, reste difficile à mettre en œuvre, car
il ne s’agit pas seulement de développer le matériel et le logiciel, mais surtout de les
développer ensemble et donc de faire interagir la conception de l’un et de l’autre [Aubépart
98]. Cette solution nécessite donc une double compétence sur les cibles matérielles et
logicielles. Elle soufre pour l’instant de l’inexistence d’une méthode qui gère le partage des
tâches (la partie du dispositif qui doit être en cible matérielle et celle qui doit être
implémentée sur la cible logicielle). Dans le domaine de la commande des machines
électrique, ce partage des tâches se fait généralement de la manière suivante : les cibles
matérielles assurent les tâches qui nécessitent un temps de calcul critique (génération des
signaux MLI, décodage des signaux en quadrature, régulation des courants), tandis que les
cibles logicielles assurent les autres tâches (surveillance, régulation de position et de vitesse).
Il est important de souligner que jusqu’à présent il n’existe pas de méthode universelle qui
permette le choix automatique des solutions (matérielles et logicielles) afin de satisfaire à la
fois les spécifications de performances et les contraintes économiques du système. Ce dernier
point est crucial dans le domaine des applications orientées vers le grand public, où les
aspects liés au prix de revient et à la satisfaction du client sont essentiels.

1.3.3. Description sommaire des FPGAs.


Au début des années 80, les développeurs disposaient de circuits de type PLD (Réseaux
logiques programmables), facilement configurables, mais ne pouvant contenir des
expressions trop complexes. Les ASIC, quant à eux, supportaient des systèmes complexes,
mais n’avaient pas les propriétés de configuration des PLD. Il manquait donc un type de
circuits permettant la réalisation des systèmes complexes, tout en offrant une reconfiguration
rapide et peu onéreuse. C’est pourquoi Robert Hartmann, Michael Magranet, Paul
Newhagen, et Jim Sansbury fondent la société Altera en 1983, tandis que Ross Freeman,
Bernie Vonderschmitt et Jim Barnett fondent la compagnie Xilinx en 1984. En 1985, ils
introduisent sur marché les premiers FPGA, le XC2064 pour Xilinx et l’EP300 pour Altera,
et offrent ainsi une alternative aux précédentes approches [Altera, Xilinx].
Les circuits FPGA permettent d'implémenter des systèmes numériques aussi complexes que
ceux réalisés jusqu'alors grâce aux ASIC, tout en ayant le grand avantage de pouvoir être

31
Historique et état de l'art de la variation de vitesse

programmés électriquement. Ils sont principalement composés d'une matrice d'éléments plus
ou moins complexes pouvant être configurés, ainsi que d'un réseau complexe de connexions
également configurables. Bien qu'il existe actuellement plusieurs fabricants de circuits FPGA
dont Xilinx et Altera sont les plus connus, nous illustrerons ce concept à partir des circuits
Xilinx que nous avons employés. L'architecture, retenue par Xilinx, se présente sous forme
de deux couches [Bajard 04, Thoma 05] :
• une couche appelée circuit configurable,
• une couche réseau mémoire SRAM.
La couche dite "circuit configurable" est constituée d'une matrice de blocs logiques
configurables (CLB) permettant de réaliser des fonctions combinatoires et des fonctions
séquentielles. Autour de ces blocs logiques configurables, nous trouvons des blocs
d'entrées/sorties (IOB) dont le rôle est de gérer les entrées-sorties réalisant l'interface avec les
modules extérieurs (voir Figure 1.5). La programmation du circuit consistera, par le biais de
l'application d'un potentiel adéquat sur la grille de certains transistors à effet de champ, à
interconnecter les éléments des CLB et des IOB afin de réaliser les fonctions souhaitées et
d'assurer la propagation des signaux. Ces potentiels sont tout simplement mémorisés dans le
réseau mémoire SRAM.

Figure 1.5 : Architecture générale d’un FPGA. Source : [Thoma 05]

La configuration du circuit est mémorisée sur la couche réseau SRAM et stockée dans une
ROM externe. Un dispositif interne permet à chaque mise sous tension de charger la SRAM
interne à partir de la ROM.
La mise au point d'une configuration s'effectue en deux temps : une première étape, purement
logicielle, consiste à établir une description de l’architecture à implanter (en langage VHDL

32
Historique et état de l'art de la variation de vitesse

ou Verilog) puis simuler logiquement le circuit obtenu avec un simulateur dédié. La


deuxième étape est matérielle. Elle consiste à télécharger le fichier de configuration sur le
FPGA et à réaliser les différents tests qui permettent de vérifier que ce qui a été implémenté
correspond bien aux attentes du concepteur.
Les CLB (configurable logic block)
Les blocs logiques configurables sont les éléments déterminants des performances du FPGA.
Chaque bloc comporte une bascule et une table de look-up (LUT) de quatre entrées. Cette
même configuration peut être doublée, voire quadruplée au sein de d’un même bloc. Il est
possible d’utiliser les tables de look-up comme des blocs mémoire (ce qui correspond à une
fonction logique combinatoire à quatre entrées) ou comme de la RAM double accès [Bajard
04, Monmasson 02].

Figure 1.6 : Cellules logiques (CLB). Source : [Thoma 05]

Les IOB (input output block)


Ces blocs entrée/sortie permettent l'interface entre les broches du composant FPGA et la
logique interne développée à l'intérieur du composant. Ils sont présents sur toute la périphérie
du circuit FPGA. Chaque bloc IOB contrôle une broche du composant et peut être défini en
entrée, en sortie, en signal bidirectionnel ou être inutilisé (haute impédance).
Réseau d’interconnexions programmables
Les interconnexions des différents blocs du FPGA sont réalisées au travers de matrices
d’interconnexions programmables. Chaque matrice est connectée à quatre autres matrices,
comme le montre la Figure 1.7. Le rôle de ces interconnexions est de relier avec un
maximum d'efficacité les blocs logiques et les entrées/sorties, afin que le taux d'utilisation
dans un circuit donné soit le plus élevé possible. L’effort est donc mis par les fabricants sur
les algorithmes de placement / routage sans cesse plus performants et plus rapides.

33
Historique et état de l'art de la variation de vitesse

Figure 1.7 : Schéma d’interconnexions. Source : [Thoma 05]

En plus des blocs logiques, la plupart des FPGA à l’heure actuelle comprennent différents
blocs additionnels : des blocs mémoires, des multiplieurs, voire des cœurs de DSP. Un FPGA
Virtex 4FX de Xilinx comporte 192 multiplieurs 18x18 bits et 9936 kbits de mémoire ainsi
que deux cœurs PowerPC. Une des applications principales des blocs mémoires dans le
domaine de la commande des machines à courant alternatif est l’implémentation de la
fonction sinus [Tzou 97].

Programmation des FPGA


La programmation du FPGA commence par la traduction de l’algorithme à implémenter, soit
dans un langage de description matérielle de type VHDL ou Verilog, soit à partir d'un éditeur
de schémas (souvent fourni avec l’outil de développement). Puis, à l’aide d’un logiciel de
synthèse, le modèle HDL établi est transformé en une liste de composants de base et de leurs
interconnexions. Une fois l’étape de synthèse terminée, il est possible de passer à l’étape de
placement-routage. Cela consiste à placer les différents composants dans les éléments de
base du FPGA, puis à créer le routage nécessaire au transfert des signaux entre ces
composants. Cette tâche est relativement simple pour des petits projets, mais très longue si
l’application occupe presque entièrement le circuit. A l’issue de l’étape de placement-
routage, il est possible de générer le fichier de configuration qui sera téléchargé sur le FPGA.

1.3.4. Choix de la cible d’implantation


Face à un marché international inondé chaque jour par de nouveaux composants possédant
plus de fonctionnalités et plus de performances, les concepteurs sont confrontés à la
problématique de mettre en adéquation les contraintes liées à leur application et les solutions
disponibles. Citons parmi les contraintes les importantes : le coût, les performances requises,

34
Historique et état de l'art de la variation de vitesse

la puissance consommée, le temps de mise sur le marché et la facilité de développement


[Adams 02].
Temps de mise sur le marché (time to market) : Le temps de mise sur le marché d’un produit
est l’un des critères les plus critiques dans le cycle de développement. En effet, le marché
international évolue chaque jour de façon rapide. Afin de pouvoir détenir une bonne part du
marché, il est nécessaire de devancer les autres concurrents. De ce fait, dans la plupart des
cas, cette contrainte prend la plus haute priorité chez les concepteurs.
Performances : Les performances déterminent souvent les potentialités d’un produit et les
possibilités d’intégrer de nouvelles fonctionnalités. Elle peuvent être mesurées de différentes
manières : dans le cas de cibles logicielles, celles-ci peuvent s’exprimer par le nombre de
millions d’opérations par seconde (MIPS) ou par la fréquence maximale d’horloge pour les
cibles matérielles.
Prix : Il est évident que le facteur prix est souvent prioritaire, mais il vient derrière le temps
de mise sur le marché et les performances dans la plupart des cas. En effet, le prix d’un
produit dépend principalement de sa popularité et du taux d’investissement au départ de la
conception de ce produit.
Facilité de développement : Il est clair que plus les outils de développement sont efficaces et
faciles à exploiter, plus le concepteur pourra concentrer sur sa propre réalisation ce qui
permettra d’avoir un temps de mise sur le marché plus court. Aussi, la simplicité des outils de
développement épargne au concepteur de consacrer du temps à l’apprentissage de ces outils
[Adams 02] Par conséquent, elle peut contribuer à obtenir des produits finaux plus
performants.
Flexibilité : La flexibilité d’une cible est déterminée par la possibilité de modifier ou
d’ajouter de nouvelles fonctionnalités pour répondre à de nouvelles exigences. Si, après la
mise sur le marché d’un produit, vient une nouvelle norme qui impose certaines régles de
fonctionnement des dispositifs, il est très important que les produits déjà commercialisés
acceptent les mises à jour.

Jusqu’à l’heure actuelle, il n’existe pas de règle universelle permettant de déterminer vers
quelle cible la migration d’un algorithme doit être réalisée. Cependant, à partir des avantages
et des inconvénients des différentes cibles et de la nature de l’algorithme à implémenter, il est
possible d’apprécier l'adéquation entre une cible et un algorithme. Nous présentons au

35
Historique et état de l'art de la variation de vitesse

tableau 1.3 quelques avantages et inconvénients des principaux composants utilisées dans le
domaine du génie électrique.

Facilité de
Temps de mise
Technologie Performances Prix Flexibilité l’outil de
sur le marché
développement
DSP Très bon Bonnes Bon* Très bonne Bonne
Microcontrôleur Très bon Faibles Excellent Très bonne Bonne
FPGA Bon Très bonnes Moyen* Bonne Moyen
ASIC Très long Excellentes Excellent Nulle Pauvre
Tableau 1.3 : Comparaison des différents solutions technologiques

Ce tableau appelle quelques commentaires :


- Les DSP sont des processeurs séquentiels basés sur de la programmation. Lorsque
celle-ci est réalisée avec des langages de haut niveau tels que le langage C, cela la
rend peu coûteuse en termes de temps de développement et par conséquent cela réduit
le temps de mise sur le marché. Les fournisseurs proposent aujourd’hui des versions
d’évaluation gratuites des outils de développement de leurs composants et une
assistance technique au travers de notes d’applications et d'une documentation
abondante. Tout cela contribue à faciliter l’utilisation des outils de développement et
incite les concepteurs à adopter cette solution. Les DSP sont jugés flexibles, car pour
changer ou ajouter une fonctionnalité, il suffit de changer le contenu de la mémoire
programme. Pour les mêmes raisons, cette solution offre l’avantage d’un temps de
mise sur le marché assez faible. Ce type de cible est parfaitement adapté aux
algorithmes qui nécessitent un traitement séquentiel des données. Toutefois, lors
d’une contrainte sévère sur le temps de calcul, généralement le gain sur DSP ne
s’obtient que par une optimisation du code au plus bas niveau [Monmasson 02]. Une
telle recherche du code optimal ne peut être réalisée que par le codage de l’algorithme
dans un langage de bas niveau (langage assembleur par exemple).
- Les ASIC sont jugés pauvres en termes de flexibilité, car l’implémentation des
algorithmes sur ce type de cibles est réalisée au niveau du silicium. Aucune mise à
jour n’est donc possible. Cependant, si l’implémentation au niveau du silicium est la
source de certains handicaps, elle est aussi à l’origine de leurs très bonnes
performances. Pour une production de masse les ASIC bénéficient du plus bas prix.
Toutefois, l’investissement initial est assez élevé.

36
Historique et état de l'art de la variation de vitesse

- Les microcontrôleurs offrent de faibles puissances de calcul. Pour des tâches qui
nécessitent de fortes densités de calcul, ces derniers se révèlent insuffisants. Bien que
les processeurs Pentium soient très largement médiatisés de par leurs positions
dominantes dans le marché des PC ou les stations de travail, les microcontrôleurs
dominent toujours le marché du point de vue du volume de vente [Adams 02]. C’est
cette grande popularité qui contribue en grande partie à les rendre imbattables par
rapport aux prix d’autres composants. Etant une cible logicielle, les microcontrôleurs
bénéficient d’une flexibilité comparable à celle des DSP.
- Les FPGA sont des cibles matérielles. Ils permettent donc un calcul structurellement
parallèle ce qui leur permet dans ce cas d’atteindre des performances très élevées.
Leurs caractéristiques de reconfiguration permettent de faire la mise à jour des
architectures à implémenter par le simple téléchargement du fichier de configuration.
Ils offrent, par conséquent, un temps de mise sur le marché faible. Toutefois, la mise
en oeuvre d’un algorithme sur une cible de type FPGA nécessite une double
compétence. Car il ne suffit pas d’avoir des compétences en développement logiciel
mais aussi il faut avoir des compétences en développement matériel et notamment la
connaissance de l’électronique numérique (au niveau matériel). Un autre handicap qui
peut freiner l’utilisation des FPGA est que les outils de conception standard pour
FPGA ne sont pas adaptés pour réaliser des applications complexes. C’est au
concepteur de réaliser ces fonctions à partir des outils de base du FPGA ou de les
acquérir auprès des fournisseurs de blocs IP (Intellectual property).

Il ne nous semble pas possible d’opter définitivement pour une solution ou autre. En
effet, les données du marché international des composants électroniques changent à une
vitesse assez élevée. Néanmoins, en nous basant sur les données actuelles, il semblerait que
l’avenir proche soit favorable aux FPGA. En effet, les principales limitations dont ce type de
composants soufrait, il y a peu de temps encore, ont disparu (ressources insuffisantes et prix
élevés).

1.4. Conclusion
Ce chapitre nous a permis de resituer chronologiquement les principales étapes de
l’évolution des commandes de machines électriques. Nous avons également présenté un bref

37
Historique et état de l'art de la variation de vitesse

état de l’art des variateurs industriels pour machines triphasées. Enfin, nous avons comparé
les différentes solutions technologiques utilisées pour l’implémentation des lois de
commande des systèmes électriques. Cette comparaison montre que chaque solution présente
des avantages et des inconvénients. Pour chaque application à réaliser, il sera donc nécessaire
de réaliser le meilleur compromis entre les contraintes des performances et le coût du
dispositif.
A l’heure actuelle, il nous semble que les FPGA sont devenus des concurrents de taille
pour les microcontrôleurs et les DSP, que se soit sur le plan des performances ou du prix : la
tendance actuelle du marché montre qu’il y a une rude concurrence causée par la baisse
spectaculaire des prix des FPGA.

38
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Chapitre 2 : Méthodologie de mise en œuvre des algorithmes de commande


numérique sur FPGA

2.1. Introduction
Les concepteurs de dispositifs de commande de systèmes électriques ont très rapidement
pris la mesure de l’apport des techniques VLSI (Very Large Scale Integration) dans leurs
problématiques d’implantation. En effet, les composants du type ASIC ou FPGA offrent à
ces derniers des solutions efficaces. On prendra par exemple l’algorithme de la MLI qui est
très souvent intégré sous forme matérielle, le reste de la commande étant alors implémenté
sur cible logicielle [Foussier 98]. Le nombre de portes logiques disponibles et le prix des
FPGA constituaient il y a encore quelques années les principaux obstacles pour l’intégration
complète des lois de commande sur une seule puce FPGA. Cependant l’avènement récent de
nouveaux FPGA avec des capacités qui dépassent les 20 millions portes logiques et qui sont
proposés à des prix sans cesse décroissants (2$ pour 100k portes logiques pour le Spartan-
3E) [Xilinx] a fait évoluer cette situation en faveur des FPGA.
Aujourd’hui, les concepteurs de dispositifs de commande numérique sont amenés à
relever le défi sur différents aspects. Ils doivent faire face à un marché très exigeant aussi
bien au niveau des performances qu’au niveau des coûts. Ils sont également confrontés à un
marché de la micro électronique et de l’électronique de puissance, submergé chaque jour par
de nouveaux composants avec de nouvelles performances et de nouveaux prix. Enfin, ils
doivent faire face à une complexité sans cesse croissante des algorithmes. Relever tous ces
défis sans la disposition d’une méthode rationnelle de conception parait à nos yeux une tâche
fastidieuse.
Toutefois, aussi bien au niveau industriel que dans la littérature scientifique, peu de
personnes font état de l’implémentation de la commande entière sur un seul circuit FPGA. En
effet, cette démarche nécessite une parfaite maîtrise des processus et des outils de
développement. C’est ce savoir faire méthodologique que l’on retrouve chez les concepteurs
évoluant dans des secteurs d’activités comme les télécommunications et l’informatique
[Meyer-Baese 01, Kum 01, Kotteri 04].
Pour mener à bien nos objectifs de recherche, nous allons consacrer ce chapitre à la
présentation d’une méthodologie de conception de dispositifs de commande numérique des
systèmes électriques sur FPGA que nous avons établie et pratiquée. En effet, celle-ci est le
résultat d’une expérience acquise dans le domaine à travers différentes réalisations [Guibert
03, Boulbair 05a, Boulbair 05b]. Cette méthodologie est structurée en neuf étapes, qui sont
présentées en détail au paragraphe suivant, et illustrées sur un exemple choisi pour sa
simplicité.

39
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

2.2. Présentation de la méthodologie


Dans un contexte de développement, où les critères prédominants sont la rapidité de
développement, les performances et la maîtrise des coûts, il est capital de disposer d’une
méthodologie de travail permettant de guider toutes les phases de conception. De part le
niveau de complexité de la mise en ouvre des dispositifs de commande numérique des
systèmes électriques sur des cibles de type FPGA ou ASIC, il nous semble plus adéquat
d’adopter la méthodologie descendante « top-down ». Car, en effet, celle-ci consiste à
résoudre progressivement les difficultés de l’implémentation en passant par des niveaux de
description de plus en plus détaillés.
Cette méthodologie a eu la faveur de la plupart des concepteurs évoluant dans ce domaine.
Sans être exhaustif on peut citer les travaux de [Monmasson 93, Foussier 98, Aubépart 99,
Fathallah 01] : dans [Monmasson 93], l’auteur nous présente un travail assez complet sur
l’étude de l’intégration d’une commande de machine synchrone. Il étudie d’une part
l’architecture du système mais également l’influence de l’intégration sur la chaîne
d’entraînement. Notamment celle de la réduction du temps de calcul et du pas
d’échantillonnage. Un autre point intéressant abordé par certains travaux [Aubépart 99,
Ménard 02] est l’étude de l’influence de l’arithmétique binaire sur l’architecture ainsi que sur
les performances de la chaîne d’entraînement. Dans [Foussier 98, Fathallah 01], les auteurs
présentent une méthodologie de conception conjointe basée la description complète de la
commande en un modèle en Grafcet qui sera par la suite traduit en un langage simulable
(Matlab Simulink) et enfin en un modèle architectural (modèle HDL). Cependant, bien qu’il
présente des caractéristiques intéressantes, le Grafcet est plus particulièrement adapté au
traitement des processus séquentiels, et correspond moins bien aux besoins en commande des
machines.
En s’inspirant de ces travaux, nous avons donc développé une méthodologie de conception
descendante adaptée à la mise en œuvre des algorithmes de commande numérique sur un seul
circuit FPGA. La représentation schématique de cette méthodologie est présentée dans la
Figure 2.1. Ayant presque la même démarche, les travaux de [Bednara 03] viennent à coté de
nos différentes validations expérimentales pour renforcer la validité de la méthodologie
proposée.

40
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.1 : Schéma global de la méthodologie de conception proposée

2.2.1. Cahier des charges


Le cahier des charges fixe les objectifs et les contraintes du projet à réaliser. Il détaille tous
les éléments à prendre en compte pour le mener à bien. Ce document ne doit pas être figé car
il peut être modifié et complété en cours de réalisation. Le concepteur apporte souvent des
solutions auxquelles le client n'avait pas pensé : de nouveaux algorithmes, de nouvelles
cibles d’implémentation, de nouvelles méthodes de miniaturisation des circuits, voire un
autre type de produit exploitant mieux les capacités de l'entreprise ou du marché. C'est

41
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

pourquoi le client, tout en restant maître de ses choix, peut avoir intérêt à associer le
concepteur à la rédaction, ou du moins à la finalisation, du cahier des charges
[placeaudesign].
Dans les applications de commande de machines électriques, le cahier des charges comporte
essentiellement une liste de contraintes : contraintes de définition, contraintes dynamiques,
contraintes d’environnement et des contraintes économiques [Grellet 97]. Les contraintes de
définition déterminent les grandeurs nominales nécessaires pour satisfaire les besoins de
l’application (puissance utile, vitesse, couple). Les contraintes dynamiques fixent les
performances désirées aux régimes transitoires (accélération maximale, temps de réponse,
dépassements …). Les contraintes d’environnement imposent parfois des limitations sur la
masse ou le volume de l’actionneur ou de l’ensemble de la chaîne, l’ambiance de travail
(température, pression, humidité, bruit électromagnétique…). Les contraintes économiques
portent sur le coût de l’application.
Exemple d’illustration
Pour illustrer chaque étape de la méthodologie présentée, nous allons nous intéresser au
problème de la régulation du courant d’alimentation d’une charge (R, L) alimentée par un
onduleur de tension. Cet exemple peut paraître excessivement simple, mais il correspond
pourtant à des problématiques industrielles réelles, comme par exemple une torche de
soudage. La réalisation de cet exemple doit répondre aux contraintes suivantes:
- mette en œuvre une régulation permettant d’imposer des consignes de courants aussi bien
positives que négatives ;
- avoir un temps de réponse du système en boucle fermée inférieur à 30 ms ;
- atteindre un niveau de précision suffisant (inférieure à 5%) ;
- réduire le coût de l’application pour l’intégration de cette fonction sur un FPGA de petite
capacité.

2.2.2. Conception fonctionnelle


A partir des exigences du cahier des charges, il est possible de définir d’abord le type
d’actionneur à utiliser, le type de la commande à employer, et les performances qu’il est
possible d’atteindre (temps de réponse, dépassement…).
2.2.2.1. Modélisation du processus et synthèse des correcteurs

La connaissance du modèle mathématique d’un processus est nécessaire dans la réalisation


de la plupart des lois de commande. Aussi, elle permet d’une part de restituer une image de
ce que l’on peut observer expérimentalement et d’autre part de prévoir le comportement du
système vis-à-vis de l’application des commandes spécifiques à son entrée. En conséquence,
l’étape qui s’impose d’elle-même en premier lieu dans le cycle de conception fonctionnelle
est donc la modélisation du processus [Ahmed 95]. L’obtention du modèle mathématique se
fait par la traduction de l’évolution des grandeurs physiques du processus en équations

42
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

mathématiques et par la détermination de ses différents paramètres. La modélisation des


ensembles convertisseurs machines électriques est aujourd’hui bien connue et a fait l’objet
d’une littérature abondante [Grellet 97, Pinard 04, Leonhard 96…].
La fonction attendue des régulateurs utilisés dans le domaine de la commande des machines
est souvent la régulation des grandeurs électriques (courants), magnétiques (flux, courant
magnétisant) et mécaniques (couple, vitesse, position). Ces régulateurs permettent de
stabiliser les systèmes en boucle fermée, d’assurer le suivi des consignes et d’atténuer la
variation des sorties en présence des perturbations lorsque les consignes sont constantes. Les
régulateurs de type PI ou IP font partie des régulateurs les plus répandus dans le domaine de
la commande des machines électriques.
L’ajustage des correcteurs de type proportionnel intégral peut être accompli par différentes
méthodes. Elle peut se faire par des méthodes empiriques, par la méthode de Ziegler et
Nichols ou par une synthèse basée sur la réponse fréquentielle déduite d’un modèle
mathématique [de Larminat 00]. Dans le cas de la dernière méthode (méthode adoptée), il
faut traduire les spécifications fonctionnelles (temps de réponse, dépassement…) sous forme
d’un objectif exprimé en termes de recherche de stabilité et de performances de régulation
(rejet de perturbations).
En vue de valider le modèle fonctionnel établi d’une part et d’obtenir une idée préalable
concernant le comportement du système en boucle fermée d’autre part, il est important
d’étudier le système global en simulation et de voir sa réaction vis-à-vis de l’application de
différents stimuli à son entrée. Le choix des consignes doit être réalisé en tenant compte des
différents modes de fonctionnement dictés par le cahier des charges.

Exemple d’illustration
Pour satisfaire les besoins du cahier des charges de l’exemple d’illustration, nous proposons
d’opter pour le dispositif dont la structure générale est présentée dans la Figure 2.2. Notre
choix d’utiliser un onduleur en montage en pont est justifié par le besoin d’appliquer des
consignes de courant aussi bien positives que négatives. La mesure du courant est fournie par
un capteur de courant à effet Hall, dont le signal de sortie est filtré puis conditionné à l’aide
d’un circuit de changement d’échelle. Enfin, il est converti en un signal numérique à l’aide
d’un convertisseur analogique numérique. Le calcul de la commande va être implémentée sur
un FPGA dont des sorties logiques piloteront les interrupteurs de l’onduleur par modulation
de largeur d’impulsion (PWM).

43
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.2 : Structure générale du système commandé, montage

Le modèle mathématique de la charge (R, L) peut être exprimé par la fonction de transfert
d’admittance suivante
I ( s) 1/ R
G ( s) = = (2.1)
U ( s) L
s +1
R

où L et R sont l’inductance et la résistance de la charge.


Dans la mesure où la charge est fortement inductive, il est possible de négliger la chute de
tension ohmique devant le terme inductif. La fonction de transfert du processus devient un
intégrateur pur
K 1
G(s) = K = = 5 A / (V s).
s L
Pour imposer un courant à la charge et assurer ainsi un suivi d’une consigne même en
présence de perturbations, on fait appel à l’utilisation d’un régulateur de courant de type PI
dont la fonction transfert est donnée par

U (s) K
Gc ( s ) = = K p (1 + i ) (2.2)
I ref ( s) − I ( s) s

La structure de la boucle de commande est donnée par la Figure 2.3.a

44
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.3 : (a) boucle de régulation, (b) structure interne du régulateur PI

La fonction de transfert en boucle fermée est donnée par

Gc G K K p (s + K i )
G BF ( s ) = = 2 (2.3)
1 + Gc G s + K K p s + K K p K i

En traduisant les spécifications fonctionnelles (dépassement et dynamique) en un polynôme


caractéristique ( s 2 + 2 ξ ω n s + ω n2 ) il est possible d’évaluer les paramètres du correcteur en
identifiant ce polynôme avec celui du système en boucle fermée. Pour un facteur
d’amortissement ξ = 0.707 et une dynamique ω n = 100 π rad/s , les paramètres du régulateur

PI sont : K p = 88,84 Ω et K i = 222,17 s −1 .

2.2.2.2. Discrétisation et choix de la période d’échantillonnage

Un système de commande ne peut être implémenté sur une cible numérique que si il est
conçu dans le domaine des signaux à temps discret. Car en effet, dans une cible numérique,
l’information ne circule pas d’une façon continue dans le temps.
Classiquement, la commande d’un système est réalisée d’abord dans le domaine des signaux
à temps continu. Ensuite, à l’aide d’un processus de discrétisation, cette commande est
transformée dans le domaine des signaux à temps discret. Toutefois, il est possible d’établir
le modèle de la commande directement dans le domaine des signaux à temps discret, après
avoir effectué la discrétisation du modèle mathématique de processus. Cependant, l’intérêt du
passage par l’étape de conception dans le domaine des signaux à temps continu est la
possibilité d’avoir une interprétation physique directe des différentes grandeurs (temps de
montée, temps de premier dépassement, marge de gain, marge de phase, etc.) [Santina 98a,
Prodic 01].
Parmi les méthodes les plus couramment utilisées pour la transformation du modèle à temps
continu d’une fonction de transfert H (s ) au modèle à temps discret H (z ) on peut citer les
suivantes [Santina 98a, Ahmed 95]:
¾ approximation numérique des équations différentielles du modèle
¾ méthode de l’invariance impulsionnelle
¾ méthode de l’invariance des pôles et des zéros (Pole-zero matching)

45
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

A titre indicatif, la méthode d’approximation numérique des équations différentielles consiste


à remplacer t par kTe ( Te étant la période d’échantillonnage) et de trouver une approximation
de l’intégrale ou de la dérivée par des équations aux différences [Santina 98a].

Même si ils sont présentés dans différents travaux, il parait à nos yeux très utile de rappeler
les principaux critères à prendre en compte lors du choix de la fréquence d’échantillonnage.
Car c’est un élément qui influe à la fois sur le choix de la cible d’implémentation et sur la
qualité du signal de sortie du système. Lors du choix de la fréquence d’échantillonnage il faut
tenir compte des critères suivants:
a) Selon le théorème de Shannon, le choix de la fréquence d’échantillonnage f e doit satisfaire
la condition

f e ≥ 2 f max (2.4)

Avec f max fréquence maximale du signal à discrétiser. Toutefois, cette condition est
applicable seulement si le spectre du signal à échantillonner est nul à l’extérieur de la bande
[− f max , + f max ] ( X ( f max ) = 0 ) [Egon 01]. Cette condition pourrait être utilisée à condition
de disposer d’un filtre anti-repliement idéal, qui est malheureusement irréalisable. Il faut
donc se contenter d’une solution de compromis, visant à remplacer le filtre idéal par un filtre
causal d’ordre raisonnable (inférieur à 10). Ceci implique un choix de la fréquence
d’échantillonnage légèrement supérieure à celle préconisée par le théorème de Shannon
b) Il ne faut pas que la période d’échantillonnage soit plus petite que le temps global
nécessaire à l’exécution de l’algorithme à implémenter.
c) Même si l’augmentation de la fréquence d’échantillonnage à l’avantage de réduire
l’influence des perturbations sur les régulations de courants et d’améliorer la qualité des
signaux (un échantillonnage plus fréquent permet d’avoir une résolution plus fin), elle a tout
de même l’inconvénient d’augmenter les grandeurs de commande lors des transitoires
[Monmasson 93] et d’amplifier les bruits lors des opérations de dérivations.
d) Un autre problème lié à la réduction de la période d’échantillonnage est que lorsque
Te → 0 , le modèle discret du processus tend vers un modèle trivial. Pour un modèle d’état
[de Larminat 00], les matrices de transition et de commande à temps discret deviennent en
effet :
Te
Ad = e ATe ≈ I et Bd =

0
e A t B dt ≈ 0

Le processus tend vers un gain et ses dynamiques deviennent difficilement perceptibles.

Un autre critère pouvant être utilisé pour déterminer la fréquence d’échantillonnage est celui
basé sur la connaissance du temps de réponse du système en boucle fermée. Une méthode

46
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

générale de choix de la fréquence d’échantillonnage des systèmes du premier et du second


ordre est présentée dans [Santina 98b] :
- Système du premier ordre

0,095 Tr < Te < 0,57 Tr (2.5)

- Système du second ordre

0,06 Tr < Te < 0,4 Tr (2.6)

Tr étant le temps de réponse du système (temps de monté entre 5 et 95%) et Te période


d’échantillonnage.
Exemple d’illustration
1 − z −1
Moyennant le changement de l’opérateur s par l’approximation (méthode d’Euler ou
Te
de différence arrière) le modèle discret du régulateur PI peut s’écrire sous la forme

 Te 
Gc ( z ) = K p  1 + K i  (2.7)
 1 − z −1 

La fonction de transfert du système en boucle fermée possède la forme d’un système du


second ordre. D’après [Santina 98b], l’obtention de la fréquence d’échantillonnage peut se
faire par la résolution de l’inéquation (2.6). Le temps de réponse d’un système du second
ordre possédant un facteur d’amortissement ξ = 0.707 est donnée par [Santina 98b] :
3,33
Tr =
ωn
où ωn est la pulsation propre du système. Pour ω n = 100 π rad/s (soit Tr = 10 ms ), la
fréquence d’échantillonnage doit être comprise entre 235 et 1572 Hz. Il donc possible de
prendre f e = 512 Hz .
La régulation de courant du système doit tenir compte, outre les performances dynamiques,
des contraintes physiques de l’ensemble constitué de l’onduleur et de la charge. Le courant et
la tension de la charge sont limités par les valeurs maximales précisées par le constructeur, de
même que les courants dans les semi-conducteurs du convertisseur. Le fonctionnement à des
dynamiques assez élevées nécessite des commandes qui dépassent parfois les grandeurs
nominales. Seule une saturation de la commande peut assurer la sécurité du système.

U sat pour U > U sat



D(U ) = U pour −U sat < U < U sat (2.8)
− U U < −U sat
 sat pour

47
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

avec Usat = 155 V .


Cette solution n’est pas sans contraintes. En effet, si le régulateur génère une commande qui
dépasse une valeur maximale, la sortie du bloc de saturation n’excède pas cette dernière. En
revanche, si la sortie du système est différente de la consigne, l’intégrateur continu à intégrer
tant que l’erreur est différente de zéro et peut provoquer une instabilité du système. Une des
méthodes utilisées pour palier ce type de problèmes consiste à figer l’intégrale si le signal de
commande est saturé (voir Figure 2.4) [Åström 95].

Figure 2.4 Structure du correcteur discret + processus

On signale ici que le choix de la fréquence d’échantillonnage établie précédemment ne tient


pas compte du changement de performance provoqué par l’insertion des blocs de saturation.
De ce fait on a choisi une dynamique plus rapide que celle imposée dans le cahier des
charges.

A ce stade de conception, il est important de simuler le comportement du système


commandé, en choisissant une consigne de courant qui varie entre − I max et I max . Afin de
simuler des chutes de tension du bus continu de l’onduleur, une perturbation a été ajoutée à
l’entrée du processus. Cette perturbation varie en échelon de 0 à 50 V à t = 0,5 s et de 50 à 0
V à t = 0,17 s. La Figure 2.5 montre la réponse du système obtenue notamment pour un
échelon de consigne de +10 A à -10 A. A partir des résultats de simulation obtenus, on peut
retenir les constations suivantes :
- le temps de réponse du système en boucle fermée Tr = 23 ms (temps de montée entre 5% et
95% du régime permanent) est conforme aux exigences du cahier des charges ( Tr ≤ 30 ms ).
- lors de l’application des échelons de perturbation à l’entrée du système, la réponse du
courant présente des creux d’une amplitude de l’ordre de 0,2 A. Cette valeur reste toujours
dans le domaine de précision imposé par le cahier des charges ( ± 5% du régime permanent).
- quel que soit le régime de fonctionnement, la tension de commande ne dépasse pas la
tension d’alimentation de l’onduleur. La saturation de l’onduleur est donc évitée.

48
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

En se basant sur ces différentes constatations, il est donc possible d’approuver le dispositif de
commande développé.

Figure 2.5 : Réponse du système lors d’une séquence d’échelons de courant.

2.2.2.3. Développement des calculs

De part la spécifité de la réalisation des opérations sur des cibles de type FPGA ou ASIC, il
est nécessaire de simplifier l’algorithme à implémenter le plus possible ainsi que de trouver
la meilleure adéquation entre algorithme et architecture. Cela peut se faire par :
- la simplification des calculs jusqu’à ne plus avoir que des opérations élémentaires à deux
ou trois opérandes ;
- la recherche de la forme la moins coûteuse en nombre d’opérations ;
- la recherche du chemin optimal des données ainsi que la bonne position des gains.

2.2.2.3.1. Simplification des calculs


Dans la réalisation de certaines lois de commande, il est courant de faire appel à des calculs
matriciels (addition de matrices, multiplication d’un vecteur par une matrice ou de deux
matrices). Cependant, la réalisation de ce type de calculs sur des cibles matérielles n’est pas

49
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

directement synthétisable. Il est donc nécessaire de décomposer l’algorithme en opérations


implantables (c'est-à-dire pour lesquelles on dispose d’opérateurs).
La multiplication d’une matrice A(n, m) par un vecteur X (m) peut se décomposer en
m sommes de n produits (voir Figure 2.6).

Figure 2.6 : Décomposition du produit d’un vecteur par une matrice

2.2.2.3.2. Choix de la position des gains et détermination du chemin optimal des données
Dans les chaînes de traitement d’information en électronique analogique, si le signal doit
subir plusieurs amplifications en cascade, il faut placer le quadripôle ayant le plus grand
rapport signal sur bruit et le plus grand gain en tête de chaîne, afin que le bruit du signal de
sortie soit le plus faible possible. De même, si dans la même chaîne de traitement, il est
nécessaire de réaliser à la fois des opérations d’amplification et d’atténuation, il est important
de placer d’abord les circuits amplificateurs puis les circuits atténuateurs. Une telle
configuration permet d’avoir le plus grand rapport signal sur bruit.
Dans les dispositifs de commande numérique, il est fréquent de faire appel à des opérations
de multiplication de signaux par des constantes. En arithmétique en virgule fixe, ce type de
processus est souvent source de bruits (voir § 2.2.2.6). Le rapport signal sur bruit du signal de
sortie (résultat de la multiplication) dépend principalement de la valeur du signal à l’entrée
du multiplieur, de la largeur de bus du signal de sortie et de la valeur du gain. Afin de réduire
l’incidence du bruit généré sur le signal de sortie du dispositif de commande, il est important
de repousser dans la mesure du possible les blocs de multiplication par les gains inférieurs à
1 vers la sortie du système. La multiplication d’un signal faible par un gain inférieur à 1
engendre en effet un bruit plus important que celui d’une multiplication par un gain supérieur
à 1.
Considérant la réalisation du transfert d’un régulateur PI suivant:

U ( z)  K Te 
= K p 1 + i −1  (2.9)
E( z)  1− z 

Puisque l’opération de multiplication est commutative, il est possible de faire plusieurs


réalisations de l’équation (8). L’application des raisonnements précédents nous a permis de

50
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

déterminer la structure la plus performante, suivant les valeurs des constantes K p et K i Te .


Les résultats de cette étude sont présentés dans la Figure 2.7.

(a) : K p <1 et K i Te < 1 (c) : K p >1 et K i Te > 1

(b) : K p >1 et K i Te < 1 (d) : K p <1 et K i Te >1

Figure 2.7 : Structure de réalisation la plus adaptée, suivant les valeurs de K p et K i Te

2.2.2.4. Mise en œuvre d’un partage de ressources

La recherche du chemin optimal des données d’une architecture consiste d’abord à construire
son graphe de dépendance de données (graphe flot de données GFD) à partir des équations
mathématiques de l’algorithme, puis à réaliser la factorisation des motifs répétitifs de calcul
de l’algorithme [Monmasson 02]. L’avantage principal de cette démarche est la minimisation
des ressources physiques. Cependant, son inconvénient est l’augmentation du temps global
de l’exécution de l’algorithme. Si on considère par exemple l’algorithme qui réalise les
calculs suivants :

Va* = Vsm sin(θ )

 * 2π
Vb = Vsm sin(θ − )
 3
 * 4π
Vc = Vsm sin(θ − 3 )

A première vue, il semble que le calcul des tensions Va* ,Vb* ,Vc* fait appel à trois
multiplications et trois calculs du sinus d’un angle. Cependant, si on utilise le procédé qui
consiste à factoriser les motifs répétitifs, il sera possible de n’utiliser qu’un seul multiplieur
et un seul système de calcul de sinus. Le schéma du système envisagé est représenté dans la
Figure 2.8. Il est clair ici que la fréquence maximale à laquelle le calcul de trois tensions peut
se faire va être divisée par trois.

51
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.8 : Factorisation de calculs

Exemple d’illustration
Puisque la valeur du gain K p est supérieure à 1 et que la valeur de K i Te est inférieure à 1 il
est préférable de choisir la structure présenté dans la Figure 2.7.b afin d’avoir une bonne
précision. La seule ressource qui pourrait être partagée serait un additionneur et la mise en
œuvre du partage de cette ressource ne ferait qu’augmenter la complexité de l’architecture.
Aucun partage de ressources ne va donc être effectué dans cet exemple.
2.2.2.5. Mesure des extremums et normalisation des signaux

Les formats courants de représentation des nombres dans un circuit numérique sont le codage
en virgule fixe et le codage en virgule flottante. Généralement les nombres implémentés dans
les FPGA sont codés en virgule fixe, car la synthèse d’opérateurs en virgule flottante est une
opération compliquée et consomme un nombre important de circuits élémentaires du FPGA.
Le codage d’algorithmes en virgule fixe a l’avantage d’être facile à implémenter sur une
cible numérique. Mais il a aussi l’inconvénient de présenter certains défauts, en particulier
lors des opérations de multiplication où le problème de dépassement de capacité est souvent
rencontré. Pour remédier à cet handicap, différentes méthodes peuvent être présentées. La
plus utilisée consiste à normaliser les signaux de sorte que leur amplitude soit ramenée dans
l’intervalle [-1, 1[ [Bomar 98, Istepanian 01]. La multiplication de deux nombres inférieurs à
1 donne toujours un nombre inférieur à 1. Pour normaliser un signal il faut suivre les étapes
suivantes :
 D’abord, il faut déterminer la valeur absolue maximale et donc la dynamique de chaque
signal à normaliser. Deux techniques peuvent être utilisées pour déterminer les valeurs
absolues maximales d’une architecture :
• l’une basée sur des simulations et l’autre basée sur des calculs analytiques [Ménard
02a]. Cette méthode consiste à déterminer les domaines de définition (valeurs
extrêmes) des différents signaux d’une architecture à partir de la connaissance des
domaines de définition des signaux en entrée de cette dernière [Coors 02]. Le domaine
de définition d’un signal de sortie d’un opérateur est déterminé à partir du domaine de
définition de ses opérandes. Les règles utilisées pour la détermination des domaines de
définitions des différents signaux au sein d’une architecture sont illustrées sur le
Tableau 2.1. Considérant par exemple l’algorithme qui réalise les opérations :

52
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

C = A + B; D =1.5; E =C* D , avec A∈[−0.25 , 0.75]; B ∈[−1.25 , 0.5] . La


détermination des extremums des différents signaux est représentée sur la Figure 2.9.

Figure 2.9 : Méthode analytique de normalisation des signaux

s min (s) max (s)


s=x+y min (x) + min (y) max (x) + max (y)
s=x-y min (x) - max(y) max (x) - min (y)
s=x* y min (z) max (z)
n n
s = 2n + x 2 min (x) 2 max (x)

Tableau 2.1 : Règles de détermination du domaine de définition, avec


z = (min( x) min( y ) , min( x) max( y ) , max( x) min( y ) , max( x) max( y ) ) .

Cette méthode permet d’avoir de bons résultats si on a une parfaite connaissance des
domaines de définition des signaux en entrées de l’algorithme. Son inconvénient vient
du fait qu’elle n’est pas facilement applicable aux processus non linéaires, car la
détermination du minimum et du maximum devient difficile.

• Une deuxième méthode consiste à établir la simulation de l’ensemble du processus et


de sa commande en virgule flottante et de prendre la valeur maximale de la valeur
absolue de chaque signal [Kim 98]. Le choix des stimuli d’entrée se fait en prenant en
compte les cas les plus défavorables définis dans le cahier des charges. L’avantage de
cette méthode est qu’elle permet la détermination des extremums de signaux même
pour des processus non linéaires. Cette méthode gagne en fiabilité si le modèle du
processus permet de reproduire fidèlement le comportement réel et si les stimuli
correspondent aux besoins réels. De ce fait, on a choisi d’adopter cette deuxième
approche pour l’évaluation des extremums des signaux.
 La deuxième étape du processus de normalisation consiste à ramener l’amplitude des
différents signaux de l’architecture de commande dans l’intervalle [-1,1[. Cela peut se faire
en insérant des gains avant et après les opérateurs. Afin de bien illustrer cette démarche on
considère la normalisation du système asservi présenté dans la Figure 2.10.a. Pour normaliser
les signaux et assurer qu’il n’y aura pas de dépassement de capacité on fait intervenir des
gains au niveau des convertisseurs analogique-numérique (CAN) et numérique-analogique
(CNA) notés respectivement K y et K u [Ahmed 84]. On note ici que le gain K y est composé
d’une part par le gain propre du convertisseur analogique-numérique et du circuit de

53
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

changement d’échelle qui doit être placé en amont du CAN d’autre part. Le gain K u quant à
lui, est formé par le gain propre du convertisseur numérique analogique est de l’interface de
puissance qui doit être placée en aval de ce dernier (gain de l’onduleur).

Figure 2.10 : (a) système asservi. - (b) système asservi après normalisation

Pour préserver la même transmittance de E à U, il est nécessaire que

Gc
Gc′ = (2.10)
K y Ku

Si par exemple la fonction de transfert du correcteur Gc donnée par

U ( z ) b0 + b1 z −1 + ... + bn z − n
Gc ( z ) = = (2.11)
E ( z ) 1 + a1 z −1 + ... + a n z −n

On peut alors poser :

 1
 X ( z) = E( z)
 1 + a1 z −1 + ... + a n z −n (2.12)
U ( z ) = B( z ) X ( z )

Gc′ est alors réalisé par les équations suivantes :

 X ′[k ] = E ′[k ] − a1 ⋅ X ′[k − 1] − L − a n ⋅ X ′[k − n]


 (2.13)
U ′[k ] = b0′ ⋅ X ′[k ] + b1′ ⋅ X ′[k − 1] + L + bn′ ⋅ X ′[k − n]

1
avec b′j = b j
K y Ku
On déduit de la Figure 2.10 et des équations 2.13 les relations suivantes :

54
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

E ′ = K y E

 1
U ′ = U ( 2.14)
 Ku
X ′= K y X

Pour évaluer K y et K u on simule d’abord le modèle fonctionnel afin d’avoir E max et U max
ensuite on résout le système d’inéquations suivant :

 K y E max <1  1
 K y <
 1 ⇒  E max (2.15)
K U max < 1 K >U
 u  u max

Il est préférable de laisser une plage de sécurité lors du choix des paramètres de
normalisation, car en effet, il suffit qu’il y ait une perturbation qui vienne se superposer sur la
mesure pour provoquer le dépassement de capacité (overflow).
L’introduction des gains en entrée permet de normaliser le signal E mais elle ne conduit pas
forcément à la normalisation de tous les signaux internes du système. Dans ce cas, il est
nécessaire de faire intervenir des gains internes afin de normaliser tous les signaux qui ont
des amplitudes qui n’appartiennent pas à l’intervalle [-1, 1[. Pour ce faire, il est recommandé
d’utiliser des gains en puissance de 2, car sur une cible numérique la multiplication ou la
division par une puissance de 2 revient à faire un décalage arithmétique à gauche ou à droite.
Sur une cible de type PFGA, il n’est pas nécessaire de faire appel à des registres de décalage
pour effectuer des opérations de multiplication ou de division par des puissances de deux, il
suffit de mettre les signaux qui correspondent aux bits de poids fort/faible au niveau logique
bas.
Un autre aspect de la normalisation qui peut être abordé ici est son incidence sur
l’augmentation de la précision des calculs. Si on veut effectuer des opérations sur des
signaux qui ont des amplitudes très faibles, le résultat peut se noyer dans le bruit généré par
le processus de quantification. Afin de remédier à ce genre de problèmes, il est souhaitable
de rehausser les niveaux des signaux en entrée des opérateurs, d’effectuer l’opération et de
diviser par le même gain en sortie du processus ensuite. Pour mettre en lumière cette
technique on considère l’exemple suivant : on veut calculer la position du rotor d’un moteur
électrique θ [k ] à partir de la connaissance de sa vitesse de rotation ω[k ] . Si on considère que
le moteur tourne à une vitesse constante ω =100 π rad/s et que les mesures de vitesse sont
prélevées à des intervalles de temps réguliers Te =10 −4 s, la position peut être ainsi calculée
par :

θ [k ] =θ [k − 1] + ω[k ]Te (2.16)

55
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Sa réalisation est donnée par le schéma de la Figure 2.11.

Figure 2.11 : Schéma fonctionnel d’un intégrateur

Sachant que la position est une fonction périodique de période 2 π , la valeur maximale que
peut prendre θ [k ] est doncθ max = 2π . La normalisation de l’équation (13) se fait ainsi :

 θ [k ] θ [k − 1] ω[k ]Te
 = +
θ max θ max θ max (2.17)
θ ′[k ] = θ ′[k − 1] + ω ′[k ]T
 e

ω[k ]Te
pour ω = 100 π et Te =10 −4 ⇒ ω ′[k ]Te = = 0,005 = (0,00000000101) 2
θ max
La représentation binaire sur 7 bits du terme ω ′[k ]Te sera donc nulle et la position n’évoluera

jamais. Pour résoudre ce problème, on va rehausser la valeur du signal ω ′[k ]Te par un gain
interne de façon à avoir un calcul plus précis. Cela peut être réalisé de la manière suivante

( )
θ ′[k ] = 2 n θ ′[k − 1] + 2 n ω ′[k ]Te 2 − n (2.18)

La réalisation de cette équation est donnée par le schéma de la Figure 2.12.

Figure 2.12 : Structure de l’intégrateur après normalisation

Certes, la multiplication du signal d’entrée ω ′[k ]Te par un gain va augmenter la résolution,
mais elle nécessite d’augmenter la largeur de bus des signaux. Pour une multiplication par 8,
il faut ajouter trois bits pour la représentation des signaux
0 , 005 × 2 3 = ( 0 , 0000101 ) 2
Le choix du gain (la puissance n ) dépendra de la réalisation d’un compromis entre la
précision de calcul souhaitée et de la surface de silicium allouée à cette application. Ce
compromis sera étudié ultérieurement de façon plus approfondie (§ 2.2.3.2).

56
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Exemple d’illustration
Afin de normaliser les différents signaux du système de commande, nous commençons
d’abord par l’évaluation des extremums de chaque signal. Pour cela nous appliquons une
consigne de courant variant entre − I max et I max avec I max = 10 A. Pour la numérotation
des signaux présentée dans la Figure 2.13, le prélèvement des extremums des signaux (S1..S9)
est donné par le Tableau 2.2.

Figure 2.13 : Désignation des signaux

Signal Extremum
S1 9.9
S2 10,95
S3 19,8
S4 1799
S5 361.4
S6 153.4
S7 1845
S8 155
S9 1690
S10 1690
Tableau 2.2 : Mesure des extremums des signaux

Pour connaître la valeur des gains qu’il faut insérer afin de normaliser les différents signaux
de la structure de commande, il faut d’abord évaluer les différents gains de l’interface
d’entrée (chaîne d’acquisition de la mesure) et de l’interface de sortie (interface de
puissance : onduleur).
Dans le cadre de cet exemple, l’information sur la mesure de courant est d’abord prise par un
capteur à effet Hall de gain 1/10. Afin de réduire les effets des perturbations
électromagnétiques et éviter le problème de repliement dû à l’échantillonnage, cette mesure
de courant est par la suite filtrée avec un filtre passe-bas de fréquence de coupure égale à 1
kHz. Enfin, puisque l’entrée du CAN est une tension comprise entre -1 et +1 V, il est
nécessaire de multiplier le signal de sortie du filtre par un gain afin de le normaliser. Le
calcul de celui-ci se fait en fonction du gain du capteur et de la valeur max du courant. Dans
le cas présent, le courant maximal est de 10 A et le gain du capteur est de 0.1 V/A. Afin

57
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

d’avoir une marge de sécurité, il est nécessaire d’insérer un gain de 1/2 par exemple à la
sortie du filtre. Ce qui vient à un gain global de 1/20.
Le signal de sortie du régulateur sert de tension de référence pour l’onduleur. Le gain
introduit par celui-ci est égal à la moitié de la tension du bus continu (155 volts).
L’insertion d’un gain à l’entrée d’un bloc doit être suivie par l’insertion du gain inverse à la
sortie du même bloc. La division des entrées du régulateur par 20 impose la division des
niveaux de saturation par 20 également. Puisque le signal de sortie est multiplié par un gain
de 155, on va insérer un gain de 1/155 au niveau du gain K p ce qui permet d’avoir
directement une structure normalisée sans l’ajout de gains internes. Dans ce cas aussi, il ne
faut pas oublier de diviser le niveau de saturation par 155. La nouvelle structure est celle
présentée dans la Figure 2.14.
En toute rigueur, la division du gain proportionnel K p par 155 conduit à une valeur
inférieure à 1, donc à un changement de la topologie de réalisation par celle de la Figure
2.7.a. Ce changement ne va pas être présenté ici, afin de ne pas alourdir cette présentation.

Figure 2.14 : Structure générale après l’insertion des gains d’entrée et de sorite

La mesure des nouveaux extremums est donnée par le Tableau 2.3.


Signal Extremum
S1 0,495
S2 0,546
S3 0,990
S4 0,580
S5 0,115
S6 0,049
S7 0,595
S8 0,049
S9 0,545
S10 0,545
S11 0,993
Tableau 2.3 : Mesure des extremums après insertion des gains d’entrée et de sortie

58
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Comme il est montré sur le Tableau 2.3, l’insertion des gains d’entrée et de sortie a permis la
normalisation de tous les signaux de la structure.
2.2.2.6. Quantification et choix de la largeur des bus

L’utilisation des FPGA comme cible d’implémentation de l’algorithme de commande a un


grand effet sur le choix du format des variables du fait de la taille croissante des opérandes,
en particulier à la sortie des multiplieurs. En effet, malgré une échelle d’intégration de plus
en plus grande, ces composant offre une capacité logique limitée. Réduire la largeur des bus
au fur et à mesure est donc le seul moyen qui permet de réduire la surface globale nécessaire
à l’implémentation de l’architecture.
De part l’importance de cette phase de conception, il nous semble utile de rappeler d’abord
les règles de codage en arithmétique virgule fixe. Ensuite, pour mieux connaître la position
des différents quantificateurs au sein d’une architecture, nous allons présenter la modélisation
du processus de quantification et leur influence sur les signaux de sortie.

2.2.2.6.1. Règles de l’arithmétique en virgule fixe


L’exécution des opérations en arithmétique virgule fixe impose certaines règles sur le format
des données. En particulier lors des opérations d’addition et de multiplication [Ménard 02a].
Addition
La réalisation des opérations d’addition en arithmétique virgule fixe nécessite :
- L’utilisation d’un même type de représentation des données (signé, non signé).
- L’alignement de la virgule de telle sorte que tous les opérandes aient la même longueur
de la partie entière et de la partie fractionnaire.
- L’utilisation du bit de signe pour étendre la partie fractionnaire ou entière.
La Figure 2.15 montre le choix de format de l’addition de deux signaux A et B codés en
virgule fixe.

Figure 2.15 : Addition en arithmétique virgule fixe (c= a + b).

Multiplication
Pour une multiplication, les deux opérandes doivent posséder la même représentation mais le
nombre de bits réservés pour la chaque partie peut être différent (voir Figure 2.16).

59
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

L’opération de multiplication est une des opérations les plus gourmandes en ressources
physiques.

Figure 2.16 : Multiplication en arithmétique virgule fixe ( d = a × b ).

Multiplexage, retard
Le signal de sortie d’un multiplexeur ou d’un bloc de retard doit garder le même type et le
même format que les signaux d’entrée [Kum 01] (voir Figure. 2.17).

Figure. 2.17 : Règles de l’arithmétique en virgule fixe

2.2.2.6.2. Lois de codage en arithmétique virgule fixe


Deux types de lois pouvant être utilisées lors du processus de codage en arithmétique virgule
fixe, lois de dépassements et lois de quantification
Lois de dépassement
Le codage en arithmétique virgule fixe d’un signal consiste à n’utiliser qu’un nombre fixe de
bits pour la représentation de ce signal. Par ailleurs, si le signal est codé sur un nombre fixe
de bits, il ne faut pas que ses valeurs dépassent les valeurs limites définies par le nombre de
bits. Par exemple, l’amplitude d’un signal codé sur n bits signés doit être toujours situé dans
l’intervalle [−2 n−1 , 2 n−1 −1] . Cependant, si la valeur réelle du signal dépasse les valeurs
extrêmes de l’intervalle de codage, la représentation binaire de ce signal va être
obligatoirement erronée et peut mettre le système en oscillation notamment dans le cas des
systèmes de commande en boucle fermée. Trouver un moyen pour pallier à ce type de
problème s’avère ainsi indispensable. Parmi les solutions possibles, il est envisageable
d’utiliser la loi de débordement D( x) , déjà évoqué page 45, définie par le système
d’équations suivant:

60
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

 X min pour x < X min



D( x) =  x pour X min < x < X max (2.19)
X
 max pour x > X max

Si la valeur du signal à représenter dépasse les valeurs extrêmes du domaine de définition, il


faut figer le signal à une des valeurs limites. Par contre s’il est inférieur aux deux extrémités
la valeur du signal reprend le signal d’entrée. Le graphe de la fonction de dépassement est
montré dans la Figure 2.18.

Figure 2.18 : Caractéristique de la loi de dépassement

Lois de quantification
Un signal représenté en arithmétique en virgule fixe ne peut prendre que des valeurs
quantifiées dont la plus petite valeur strictement positive est égale au pas de quantification
(résolution). Le pas de quantification d’un signal signé codé sur n bits est égale à q = 2 −( n −1) .
Si un signal a une valeur qui situe entre deux niveaux de quantification, son codage en
arithmétique en virgule fixe impose de ramener sa valeur à un multiple du pas de
quantification. Le passage vers le niveau supérieur de quantification ou vers le niveau
inférieur dépendra de la loi de quantification utilisée. Les trois lois de quantification utilisées
classiquement [Bomar 98] sont la loi de quantification par arrondi, la loi de quantification par
troncature et la de quantification par troncature de la norme. Dans le premier cas, l’erreur de
quantification eq = Q ( x) − x , où Q(x) est la valeur quantifiée du signal, elle est comprise
q q
entre − et + . Dans le deuxième cas, elle est comprise entre − q et zéro. La différence
2 2
entre la quantification par arrondi et la quantification par troncature est que la quantification
par arrondi permet d’avoir une meilleure précision d’approximation mais elle présente
l’inconvénient d’être plus coûteuse en termes de ressources. La quantification par troncature,
quant à elle, est moins précise mais elle plus simple à implémenter.
Dans le cas où l’on suppose que le bruit généré par le processus de quantification est
stationnaire, blanc et non corrélé avec l’entrée, sa modélisation peut être faite par un système
linéaire où le signal quantifié est égal à la somme du signal d’origine et d’un bruit
uniformément distribué [Bomar 98, Santina 98c].

61
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.19 Modélisation du processus de quantification

Si on considère que la quantification par arrondi Q( x) du signal x (codé sur n bits est égale à
la somme du signal d’entrée avec une variable aléatoire e, appelée bruit de quantification,
 q q
dont la densité de probabilité est uniforme sur l’intervalle − ,  , ( q = 2 − ( n −1) étant le pas
 2 2
de quantification), le moment du premier et du second ordre de l’erreur de quantification sont
données par :

µ e = 0

 2 q2 (2.20)
σ e =
 12

De même, les expressions des moments du premier et du second ordre lors d’utilisation d’une
loi de quantification par troncature sont données par [Bomar 98, Santina 98c, Ménard 02]:

 q
µ e = − 2
 2
(2.21)
σ 2 = q
 e 12

La modélisation des quantificateurs nous permet de connaître leurs influences sur les signaux
et donc de mieux choisir leurs emplacements. On considère le calcul du signal y tel que :
y = K1 x1 + K 2 x2
avec K1 et K2 deux constantes signées codées sur n bits et x1 et x2 deux signaux signés codés
en n bits également. Afin de réduire la taille de silicium nécessaire à la réalisation de ce
calcul, il est possible d’adopter une des trois topologies suivantes : quantification de chaque
sortie des multiplieurs (voir Figure 2.20.a), quantification de la sortie de l’additionneur
uniquement (voir Figure 2.20.b) ou quantification des sorties des multiplieurs et de
l’additionneur au même temps (voir Figure 2.20.c). On considère que chaque processus de
quantification introduit un bruit de quantification de variance σ 2 (bruit ajouté au signal de
sortie de chaque quantificateur). A partir du schéma présenté dans la Figure 2.20, il est
possible de constater que la première approche génère une erreur de quantification totale
de 2 σ 2 , tandis que la deuxième ne conduit qu’à une erreur de quantification de σ 2 .
Toutefois, si l’additionneur utilisé dans la deuxième configuration travaille sur des signaux

62
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

de ( 2 n -1) bits, l’additionneur de la première structure lui, ne travaille que sur des signaux de
n bits. Il nécessitera donc moins de ressources logiques et prendra moins de temps pour
l’exécution d’une opération d’addition. La troisième approche, quant à elle, peut être
considérée comme une combinaison des deux premières configurations. Si on arrive à
trouver les valeurs adéquates de n et m, on peut réaliser ainsi un compromis entre la précision
de calcul et la surface de silicium.

Figure 2.20 : Quantification des sorties des multiplieurs (a), de la sortie de l’additionneur (b) et des
sorties des multiplieurs et de l’additionneur (c)

Exemple d’application
Puisque chaque multiplication d’un signal par une constante conduit à une augmentation de
la largeur de bus, il est nécessaire de quantifier chaque sortie des multiplieurs de la structure.
Le choix de la largeur de bus des signaux d’entrée ( I ref et I ) dépend du nombre de bits du
CAN (12 bits signé). La largeur de bus du signal de sortie dépend de la largeur de bus du
système de génération des signaux PWM (système de génération de la porteuse). En ce qui
concerne le choix de la largeur des autres signaux, il est possible de se contenter dans un
premier temps d’un choix arbitraire tout en respectant les règles du codage en arithmétique

63
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

virgule fixe ( n( S1 ) = n( S 2 ) = n( S 3 ) , n( S 4 ) = n( S 5 ) = n( S10 ) = n( S 6 ) = n( S 7 ) = n( S 8 ) = n( S 9 ) ).


En effet, le choix arbitraire de la largeur de bus du signal S 4 ne sert que d’initialisation à une
procédure d’optimisation qui intervient par la suite. Pour réduire la largeur des signaux de
sorties des multiplieurs, il est nécessaire de placer un bloc de quantification après chaque
multiplieur. Un format de 12 bits signés est choisi pour la représentation de toutes les
constantes utilisées dans la structure.

Figure 2.21 : Structure du régulateur avec insertion des blocs de quantification

2.2.2.7. Quantification et codage des constantes

Le processus de normalisation permet de résoudre les problèmes de débordement lors des


opérations de multiplication, mais aussi d’utiliser des multiplieurs qui ne travaillent que sur
la partie fractionnaire des nombres. Cependant, si tous les signaux sont normalisés, les
coefficients ne le sont pas. Il est donc nécessaire de ramener la valeur de toutes les constantes
dans l’intervalle ] − 1,+1[ . Suivant la valeur de la constante on peut distinguer deux cas : si la
constante est supérieure à 1 il faut la diviser par une puissance de deux et si elle est déjà
inférieure à 1 mais elle est d’une très faible valeur, il faut la rehausser pour qu’elle soit
comprise entre 0.5 et 1. En effet, cela permettra d’avoir une meilleure précision.
Il est communément admis que le principal goulet d’étranglement de la plupart des
algorithmes de traitement de signal numérique se situe au niveau de l’opération de
multiplication [Helie 05]. La réalisation d’un multiplieur est sans aucun doute l’opération la
plus gourmande en termes de ressources physiques par rapport aux opérations d’addition et
de décalage. L’utilisation d’un multiplieur pour exécuter une opération de multiplication
n’est pas toujours la solution la plus adéquate. En effet, il est possible de réaliser une
multiplication d’un signal par une constante seulement avec une série d’additions et de
décalages [Meyer-Bease 01, Kum 98]. Pour ce faire, il est possible de suivre les étapes
suivantes :

64
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

- Après avoir fixé le nombre de bits sur lequel cette constante va être codée, on commence
d’abord par la quantification de la constante réelle. Le maximum de précision est obtenu
dans le cas de la quantification par arrondi.
- On cherche ensuite la suite de sommes ou de différences de nombres en puissance de 2 la
plus courte qui réalise la valeur de cette constante. La Figure 2.22 illustre l’utilisation de
deux manières différentes pour coder la multiplication d’un signal x par une constante
k = 93 [Meyer-Bease 01].

Figure 2.22 : Deux réalisations possibles d’une multiplication par 93

Comme il est montré sur la Figure 2.22.a, la réalisation d’une multiplication requiert trois
additionneurs et trois registres à décalage, alors que celle de la Figure 2.22.b ne nécessite que
deux additionneurs et deux registres à décalage. Tant du point de vue du nombre de
ressources utilisées que du retard de propagation du circuit, il semble que la deuxième
structure soit plus intéressante. Dans certains cas, il est nécessaire de faire un compromis
entre les performances temporelles et le nombre de ressources globales consommées.

Exemple d’application

Le codage des différentes constantes de la structure de commande est présenté dans le


Tableau 2.4.
Constante K p / 155 K i Te
Valeur réelle 0,5861 0,4245
Normalisation et augmentation
Aucune opération n’est nécessaire ( K i Te × 2) 2 −1 = (0.8491) 2 −1
de la précision
Format 12 bits, signé 12 bits, signé

round (0,5861 × 211 ) 1200 round (0.8491× 211 ) 1738


Représentation en virgule fixe
11
= 11 11
2 −1 ≈ 11
2 −1
2 2 2 2
−11 −1
décomposition (1024 + 256 − 64 − 16) 2 (2048 − 256 − 64 + 8 + 2) 2 2 −11
Erreur relative à la valeur réelle 0,03% 0,06%

Tableau 2.4 : Codage des différentes constantes du régulateur de courant

65
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

2.2.3. Conception architecturale


2.2.3.1. Codage en VHDL et test des codes

Après la réalisation des différents blocs fonctionnels constituant le dispositif de commande,


la synthèse sur FPGA nécessite de traduire l’algorithme à implémenter dans un langage de
description matérielle HDL (Hardware Description Language). Faisant partie des langages
de programmation les plus populaires, le VHDL permet de réaliser la description matérielle
de l’algorithme à implémenter à deux niveaux : le niveau comportemental et niveau transfert
registre [Chang 99, Monmasson 02]. Bien que la deuxième approche permette d’avoir le
modèle le plus optimisé, la description comportementale est la plus adéquate dans le cas de
modification d’architecture par des outils de conception assistée par ordinateur (on fait appel
à ces outils lors de la détermination automatique de la largeur des bus). L’objectif de ce
paragraphe n’est pas de faire une présentation de langage de programmation VHDL que l’on
pourra trouver par exemple dans [Chang 99, Airiau 98]. Nous ne ferons que souligner ici
l’aspect modulaire de ce langage, qui permet de découper les différents éléments d’une
architecture en couples entité-architecture indépendants, regroupés ensuite dans un plan
d’ensemble. Ce découpage permet de tester séparément et aisément chaque bloc avant de
vérifier le bon fonctionnement de l’ensemble.

Exemple d’illustration
Le diagramme fonctionnel du régulateur (Figure 2.21) peut être décomposé en six couples
entité-architecture, trois multiplications par des gains, trois additionneurs/soustracteurs, un
intégrateur et une fonction de saturation. Le plan d’ensemble est présenté Figure 2.23.

Figure 2.23 : Modèle architectural du régulateur

2.2.3.2. Détermination automatique de la largeur des bus d’une architecture à virgule


fixe

Comme il a été déjà signalé précédemment, l’implémentation des algorithmes au sein d’une
architecture en virgule fixe nécessite de réaliser une conversion de la description de
l’algorithme en virgule flottante en une réalisation en virgule fixe. Cette conversion est une

66
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

tâche fastidieuse, longue et source d’erreurs, si elle est effectuée manuellement. A nos yeux,
elle correspond à la phase la plus coûteuse en temps de développement. Car en effet, la
conversion de l’algorithme en virgule fixe nécessite de déterminer le format de chaque
donnée et de vérifier si la réalisation en virgule fixe obtenue permet toujours de satisfaire les
niveaux de performance requis par l’application.
La réduction du temps de mise sur le marché des applications exigeant l’utilisation d’outils
de développement de haut niveau afin d’automatiser certaines tâches, des méthodologies de
codage automatique des données en virgule fixe ont été proposées. Dans [Kum 01,
Constantinidès 00] les auteurs nous présentent une méthodologie de conversion en virgule
fixe sans prendre en considération l’architecture. La prise en compte des contraintes de
surface lors de la phase de conversion montre l’influence de celles-ci sur la précision des
calculs [Boulbair 05c]. Ainsi, nous présentons dans cette section, la démarche que nous
avons adopté pour la détermination de la largeur optimale des différents signaux d’une
architecture.
Partant du souhait de concevoir un dispositif de commande assurant à la fois un niveau de
précision et une occupation minimale de la surface silicium du FPGA, l’algorithme évalue,
pour une configuration donnée, la précision des calculs par simulation du modèle fonctionnel
et la surface silicium par compilation du modèle HDL. Puis, à l’aide d’une méthode de
recherche heuristique, il détermine la configuration qui satisfait au mieux les deux critères au
même temps (voir la Figure 2.24).

Figure 2.24 : Méthodologie d’optimisation de la largeur des bus

2.2.3.2.1. Evaluation de la qualité du signal de mesure


Dans le domaine du traitement du signal, la métrique la plus utilisée pour évaluer la précision
d’une architecture en virgule fixe est le rapport signal sur bruit de quantification (RSBq). Elle
correspond au rapport entre la puissance du signal non quantifié et la puissance du bruit de
quantification [Ménard1 02].

67
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Py
RSBq(dB) = 10 log( ) (2.22)
Pb

où Py est la puissance du signal de mesure non bruité (signal non quantifié) et Pb la puissance
du bruit de quantification. Pour apprécier l’incidence des quantificateurs sur la qualité de la
régulation, nous avons choisi d’évaluer le rapport signal sur bruit de quantification du signal
de mesure. Deux approches peuvent être utilisées pour évaluer la précision d’un système en
virgule fixe : la méthode analytique ou la méthode basée sur la simulation [Ménard1 02] :
- L’approche analytique consiste à déterminer l’expression analytique de la puissance du
bruit de quantification en sortie d’un système. Son avantage réside dans le fait que, une fois
l’expression analytique déterminée, elle nécessite un temps de calcul très réduit.
- L’approche basée sur la simulation consiste à calculer la puissance du bruit de
quantification à partir de la différence entre la mesure du signal en virgule flottante et la
mesure du signal en virgule fixe. Dans ce cas, l’implémentation en virgule flottante est
utilisée comme référence car pour l’erreur liée à l’utilisation de l’arithmétique à virgule
flottante est négligeable par rapport à celle due à l’arithmétique à virgule fixe (voir Figure
2.25).

Figure 2.25 : Evaluation du rapport signal sur bruit de quantification

Le calcul de la puissance moyenne d’un signal discret de N points peut être donné par
N

∑ ( y [k ])
1 2
Py = i (2.23)
N
i =1

Le nombre N dépend du temps de simulation et de la période d’échantillonnage. Il est


important de prendre les mesures aussi bien lors de régimes transitoires que lors de régimes
permanents.

2.2.3.2.2. Evaluation des ressources

68
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

L’évaluation des ressources se fait par la synthèse du modèle VHDL établi à partir du modèle
fonctionnel codé en arithmétique en virgule fixe. A l’issue d’une opération de synthèse,
l’outil de développement génère un rapport contenant, entre autres, le nombre de cellules
logiques et la cadence maximale à laquelle les opérations peuvent être exécutées. Par
conséquent, il suffit d’une simple lecture automatique du rapport généré par le compilateur
pour connaître le nombre de cellules logiques nécessaires à la réalisation de l’algorithme.

2.2.3.2.3. Algorithme d’optimisation


L’objectif attendu de tous les algorithmes d’optimisation est de pouvoir trouver la meilleure
solution parmi l’ensemble des solutions envisageables d’un problème. Le choix de
l’algorithme d’optimisation dépend essentiellement de la nature du problème à traiter.
Notamment, la largeur de l’espace d’exploration (nombre de variables), la nature des
variables à optimiser, la nature de l’espace d’exploration (existence d’optimum locaux et
globaux) et bien sur le temps d’exécution de l’algorithme.
Le but recherché ici est d’utiliser un algorithme d’optimisation capable de repérer parmi les
différentes configurations possibles, celle qui réalise le bon compromis entre la précision de
calcul et l’occupation de la surface de silicium. Cet objectif peut se traduire donc par la liste
des spécifications suivantes :
- trouver la solution optimale d’un problème multivariable. Le nombre de variables à
traiter est égal au nombre de bus dont il faut évaluer la largeur.
- utiliser un algorithme d’optimisation capable de travailler sur des variables discrètes.
- utiliser un algorithme peu gourmand en temps de calcul. Car l’évaluation de la fonction
objectif nécessite un temps de calcul important (simulation modèle fonctionnel et HDL)
- Optimiser l’espace d’exploration

Pour répondre aux exigences présentées précédemment, nous avons opté pour la méthode de
recherche Tabou. Cette dernière permet en effet de travailler sur des variables discrètes, de
détecter un optimum global et d’avoir un temps de convergence convenable par rapport à
d’autres algorithmes tels que les algorithmes génétiques par exemple. Les différentes étapes
de la méthode de recherche Tabou sont les suivantes [Berthiau 02]:

69
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

1) Choisir, aléatoirement, une solution initiale X 0 du système à optimiser


et évaluer la valeur de la fonction objectif f = f ( X 0 ) ;
2) Faire n fois
Perturber la solution X 0 pour obtenir une nouvelle solution X ′
(Si le mouvement de X 0 à X ′∈ « liste Tabou »
Alors effectuer une autre perturbation de X 0 )
Evaluer f ( X ′)
Fin Faire ;
3) Chercher parmi les n X ′ le point X optm
′ pour lequel la fonction objectif
est la plus petite ;
4) Mettre X 0 et tous les autres points X ′ dans la liste tabou, afin qu’ils ne
soient pas utilisés par la suite ;

5) Faire X 0 ← X optm ;
6) Si pas amélioration depuis m itérations
Alors aller à l’étape 7
Sinon aller en 2;
7) Solution = meilleur point trouvé ; Arrêt du programme ;

Il est inutile d’affecter à chaque signal de l’architecture une variable indépendante (une
largeur de bus). Car en effet, les règles du codage en virgule fixe eux mêmes imposent un
certain choix des variables à respecter. Une affectation explicite des variables doit être donc
réalisée en premier lieu. Parmi ces différentes affectations on retient les suivantes : tous les
signaux d’entrée d’un même additionneur doivent avoir la même largeur de bus (la même
variable). Les multiplexeurs, démultiplexeurs et retards gardent la même largeur de bus en
entrée qu’en sortie. La largeur de bus du signal de sortie d’un multiplieur est égale à la
somme des variables d’entrée.

Exemple d’application

Si on considère que les deux constantes K p et K i Te possèdent le même format (signé, N


bits), l’affectation des variables aux différentes largeurs de bus peut être celui présenté dans
la Figure 2.26.

70
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.26 : Affectation des variables aux signaux de l’architecture

On constate que malgré l’existence de plusieurs signaux, le nombre de variables à optimiser


pour la configuration présentée dans la Figure 2.26 n’est que de trois. Cela permettra, en
effet, de réduire la largeur du champ d’exploration de l’algorithme d’optimisation et de
réduire ainsi son temps d’exécution.
2.2.3.3. Détermination de la fonction objectif

Il semble, à première vue, que le problème à résoudre ici est un problème multi objectifs. A
vrai dire, même si on a deux fonctions à optimiser, il ne s’agit pas d’un problème multi
objectifs. On cherche à maximiser la fonction f1 qui décrit le rapport signal sur bruit de
quantification et de minimiser celle qui décrit le nombre de ressources utilisées f 2 .
Sachant que le calcul minimum d’une fonction peut être remplacé par le calcul du maximum
de la même fonction en signe opposé ( min( f ( x)) = max(− f ( x)) ), le problème de
maximisation de f1 et de minimisation de f 2 peut se réduire donc à un problème de
maximisation d’une seule fonction F qui sera la somme des deux fonctions f1 et f 2

F = ( f1norm − r f 2 norm ) (2.24)

où r est un coefficient de pondération et f1norm et f 2norm sont les versions normalisées des
fonctions f1 et f 2 . La normalisation des deux fonctions f1 et f 2 se fait par rapport à une
configuration extrême de l’architecture à optimiser (largeur maximale des bus).
Le choix du coefficient r dépend principalement des exigences du cahier des charges. Si les
exigences imposées sont plus sévères sur la précision que sur le coût, il est donc nécessaire
de choisir r < 1 . Par contre si les contraintes sur le coût sont plus rigoureuses, il faut
prendre r > 1 . Le cas intermédiaire correspond au choix r = 1 .

Exemple d’application

71
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Afin de trouver les valeurs extrêmes permettant de normaliser les fonctions f1 ( RSBq ) et f 2
(nombre de cellules logiques) nous commençons d’abord par une simulation du modèle
fonctionnel et une compilation du modèle VHDL en choisissant un format unique pour toute
l’architecture (même largeur de bus). Pour une variation de la largeur de bus entre 6 et 20
bits, le tracé de la variation du rapport signal sur bruit de quantification est donné par la
Figure 2.27. D’après cette figure, on constate qu’à partir d’une largeur de bus de 12 bits le
RSBq est presque constant. La variation du nombre de cellules logiques, quant à elle, est
présentée dans la Figure 2.28. Les résultats de synthèse présentés dans cette figure, obtenues
par le logiciel MAX+plus II d’Altera, sont exprimés en cellules logiques
.

Figure 2.27 : Variation du RSBq en fonction de Figure 2.28 : Variation du nombre de cellules en
la largeur de bus fonction de la largeur de bus

La recherche de la solution optimale nécessite l’exécution automatique des tâches suivantes :


◊ Génération d’une solution arbitraire (afin de limiter l’espace d’exploration, une
limitation sur la largeur des bus est appliquée dans le processus de génération aléatoire de
vecteurs solution) ;
◊ Mise à jour de la largeur des bus dans le modèle fonctionnel ainsi que dans le modèle
HDL (Changement automatique des paramètres des différentes largeurs de bus dans le
modèle Simulink ainsi que dans le modèle VHDL) ;
◊ Simulation du modèle fonctionnel et évaluation la fonction objectif f1 ( RSBq ) ;
◊ Synthèse du modèle HDL et évaluation de la fonction objectif f 2 (nombre de
cellules logiques) ;
◊ Evaluation de la fonction objectif F ;
◊ Extraction de la configuration qui réalise le coût le plus élevé de la fonction
objectif F et la sauvegarde dans une liste Tabou ;
◊ Extraction de la meilleure solution parmi celles sauvegardées dans la liste Tabou ;

72
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Une fois la solution optimale trouvée, il importe d’effectuer une dernière simulation du
modèle fonctionnel pour avoir une idée de l’allure du signal de sortie du système et
d’apprécier ainsi la précision et le nombre de cellules logiques utilisées.

Exemple d’application
En fixant la largeur de bus du signal de sortie du régulateur à 12 bits (cette largeur dépend du
nombre de bits du compteur-décompteur du système de génération de la PWM), l’emploi de
l’algorithme de d’optimisation se restreint à la détermination de deux variables N1 et
N 2 seulement. La valeur maximale de N1 est donnée par le nombre bits du convertisseur
analogique numérique utilisé pour faire la conversion du courant, mais rien n’empêche de
prendre une valeur plus petite.
β
Pour un rapport = 1 , l’exécution de cet algorithme nous a permis d’obtenir une solution qui
α
correspond à N1 =12 et N 2 =14 (voir Figure 2.29). Afin de tester la reproductibilité des
résultats obtenus, nous avons procédé à la réexécution de l’algorithme plusieurs fois en
choisissant des solutions initiales différentes. Il est clair qu’il est possible de trouver le bon
choix sans l’utilisation de cet algorithme, mais il cela nécessite beaucoup plus de temps que
si on utilise l’algorithme de détermination automatique (temps d’exécution de l’ordre de 15
minutes).
L’intérêt de cette procédure d’optimisation serait mis d’avantage en évidence sur un
algorithme plus complexe que celui qui a été utilisé pour illustrer les étapes précédentes.

Pour la solution optimale trouvée, les résultats de simulation du modèle fonctionnel sont
montrés sur Figure 2.30. D’après cette figure, on peut constater que les contraintes de
précision sont toujours garanties. Le rejet de perturbation montre bien le bon fonctionnement
de la fonction de régulation. La différence entre les résultats de l’algorithme en virgule fixe et
ceux de l’algorithme en virgule flottante est inférieure à 6 mA en valeur absolue. Les
exigences en terme de performances (temps de réponse) sont toujours garanties (inférieur à
30 ms).
La synthèse du modèle VDHL par le logiciel MAX+plusII nous montre que le nombre de
cellules logiques nécessaires à la réalisation de ce régulateur est de 337.

73
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Figure 2.29 : Solution optimale

Figure 2.30 : Résultats de simulation du modèle en virgule flottante et du modèle en virgule fixe dans le
cas de la configuration optimale : courants obtenus dans les deux cas (en haut) et différences entre les
deux courants (en bas)

2.2.3.4. Validation du modèle HDL

Avant de passer à l’étape de l’intégration physique de l’algorithme, il faut d’abord vérifier


que ce qui a été développé correspond bien à ce qu’on voulait intégrer. La solution
communément employée aujourd’hui est la simulation. En effet, cette technique permet de
remonter rapidement à la source de l’erreur. Car l’analyse des résultats de simulation est plus
facile que celle de mesures expérimentales. Elle permet également un test sans risque de

74
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

détérioration des équipements. Toutefois, plus le système devient complexe, plus cette
approche montre ces limites avec une très forte augmentation des temps de simulation.

Pour vérifier le bon fonctionnement du modèle VHDL établi, nous avons opté pour une
stratégie qui repose sur les deux principes suivants:

- Nous vérifions le système par morceaux c'est-à-dire que nous vérifions d’abord chaque
composant du système, puis le système global.
- Nous optons pour la stratégie de comparaison de modèle, c'est-à-dire que nous prenons le
modèle fonctionnel comme référence et comparons les résultats de simulation des
modèles VHDL et fonctionnel. Les mêmes stimuli doivent être utilisés dans les deux
simulations.

Exemple d’application

La validation du modèle VHDL commence d’abord par l’enregistrement de la mesure de


courant sur un intervalle de temps. Ensuite en reproduisant la même consigne et le même
enregistrement sur les signaux d’entrée du régulateur, on simule le modèle VHDL de ce
dernier sous Max+PlusII. La validation du modèle VHDL est conditionnée par l’obtention de
résultats similaires entre ce que on obtient par le simulateur de Max+PlusII et par
Matlab/Simulink.

2.2.4. Validation expérimentale


La dernière étape du cycle de développement est bien entendu l’étape de validation
expérimentale. Cette dernière consiste à configurer le FPGA et à réaliser ainsi les différents
tests expérimentaux sur le système réel.
La configuration du FPGA (ou compilation silicium) nécessite d’abord la génération du
fichier binaire de configuration appelé Bitstream (généré à la fin de la synthèse du modèle
VHDL). Ensuite, le téléchargement de celui-ci sur le FPGA.
Provoquer, involontairement, un court-circuit dans un système électrique peut être fatal aussi
bien pour les équipements que pour les personnes. Pour cette raison il est très important de
mener l’étape de validation expérimentale avec le maximum de précautions possibles. Un
certain nombre de consignes doit être suivi afin de réaliser la fonction de validation
expérimentale avec sûreté. Parmi les consignes que nous jugeons utile de prendre en compte,
citons notamment:
- il est vivement conseillé de commencer la validation du système de commande toujours
par une validation partielle. C’est-à-dire, commencer toujours par la validation de chaque
bloc séparément ;
- dans le cas de systèmes possédant plusieurs boucles de régulation imbriquées, il est
nécessaire de procéder d’abord à la validation des boucles internes puis à celle des
boucles externes ;

75
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

- le choix des stimuli ne doit jamais commencer par des cas de fonctionnement extrêmes.
Les tests aux régimes nominaux doivent être effectués en dernier lieu.
La validité du dispositif de commande global se mesure par la satisfaction des exigences
énumérées dans le cahier des charges.

2.3. Conclusion
L’intégration complète d’un dispositif de commande sur FPGA nécessite d’étudier puis
d’intégrer sur la même puce de silicium tous les blocs constituant le dispositif de commande.
Ce travail long et pointu justifie le besoin d’une méthodologie rationnelle capable de guider
le concepteur durant toutes les phases de conception.
Afin d’atteindre cet objectif, nous avons élaboré une méthodologie de conception
descendante que nous avons adapté à nos travaux de recherches. Les différentes phases de
conception ont alors été détaillées et illustrées chaque fois par un exemple. La nécessité d’un
temps de développement conséquent pour trouver la configuration (largeur de bus) qui réalise
à la fois une bonne précision et une faible occupation de la surface silicium nous a incité à
développer un algorithme permettant d’automatisation de cette tâche.
Partant de l’ensemble des exigences imposées dans le cahier des charges qui sont bien
souvent une commande et un type de contrôle [Pinard 04], le concepteur détermine les
spécifications du système à réaliser. Notamment le type d’actionneur, le type de commande à
utiliser et bien entendue la cible d’implémentation.
Ensuite, à partir des spécifications système il établit les spécifications fonctionnelles en
commençant par le développement du modèle mathématique du processus à commander, la
synthèse des correcteurs utiliser dans la chaîne de régulations et bien évidemment le choix de
la cadence sur laquelle le système numérique va travailler. A ce stade de conception, il est
important d’étudier en simulation le comportement du système commandé et de voir sa
réaction envers des éventuelles perturbations.
De part la spécifité de l’implémentation des algorithmes sur FPGA, il est nécessaire
de prendre garde à certaines contraintes. Notamment, celles du codage en arithmétique
virgule fixe où le problème de dépassements de capacités (Overflow) est souvent rencontré.
Afin de palier ce type de problèmes, une des méthodes couramment utilisée consiste
normaliser les signaux de l’architecture de telle sorte que leurs amplitudes soient comprises
entre -1 et 1, d’où l’étape de normalisation des signaux. Afin de réduire la surface silicium
nécessaire à l’implémentation de l’algorithme, il est important de réduire la taille des bus de
l’architecture à implémenter. Une quantification des signaux est donc nécessaire.
Une fois l’étape de conception fonctionnelle achevée, il est possible d’entamer la phase de
conception architecturale. Celle-ci commence d’abord par la traduction de l’algorithme
développé en un langage de description haut niveau (VHDL par exemple). Ensuite, en
utilisant un des outils de développement, il faut vérifier l’intégrité du code VHDL élaboré.

76
Méthodologie de mise en œuvre des algorithmes de commande numérique sur FPGA

Puisque la précision de calcul d’un algorithme en virgule fixe est compromise par la taille
des bus, seul un choix optimal permet l’obtention à la fois d’une bonne précision de calculs
et d’une faible occupation de la surface silicium sur le FPGA.

La dernière étape du processus de conception consiste à valider par simulation le modèle


VHDL, à configurer le FPGA et à réaliser enfin les tests expérimentaux.

Puisque la commande des machines est un thème central et particulièrement représentatif des
besoins rencontrés en génie électrique, nous allons nous intéresser au chapitre suivant à
l’implantation de dispositifs de commande de machines électriques sur des FPGA, afin de
montrer la pertinence de la méthodologie proposée dans ce contexte.

77
Implantation des lois de commande des machines électriques sur FPGA

Chapitre 3 : Implantation des lois de commande des machines électriques


sur FPGA

3.1. Introduction
Dans le chapitre précédent, nous avons présenté les différentes étapes de la méthodologie
d’implantation des commandes numériques sur FPGA. Pour montrer l’adéquation de cette
méthodologie avec des problèmes concrets, en particulier dans le domaine de la commande
des machines électriques, nous allons consacrer ce troisième chapitre à la réalisation et à la
validation expérimentale d’un dispositif de commande de deux types de machines
couramment utilisées en génie électrique. Nous allons nous intéresser tout particulièrement à
l’asservissement de vitesse et de courant d’une machine à courant continu et à la commande
scalaire d’une machine asynchrone. Pour la machine asynchrone, nous comparons cette
implantation avec une implantation sur microcontrôleur. Un accent particulier sera mis sur
les différentes difficultés et contraintes susceptibles d’être rencontrées lors de la phase de
validation expérimentale.

3.2. Présentation du banc d’essais


Avant d’entamer la présentation des aspects de l’implémentation des différents algorithmes
de commande, nous allons tout d’abord commencer par la présentation du banc d’essais
utilisé pour la réalisation des différents tests expérimentaux. La structure générale de ce
dernier est donnée par la Figure 3.1.

Figure 3.1: Structure générale du banc d’essais, configuré pour la régulation de vitesse d’une MCC.

79
Implantation des lois de commande des machines électriques sur FPGA

3.2.1. Les machines


Deux machines sont utilisées : une machine à courant continu et une machine à courant
alternatif. Les deux machines sont posées sur un support en acier permettant de les aligner et
de les positionner à la même hauteur. Un accouplement mécanique assure la liaison entre
elles. La première machine (machine à courant continu) est une machine à excitation par
aimant permanent. Elle développe une puissance nominale de 750 W sous une tension
nominale de 180 volts et un courant nominale de 5 A, sa vitesse nominale est de 3000
tours/min. La deuxième machine, quant à elle, est une machine asynchrone à cage. Elle
possède une puissance de 750 W, une vitesse nominale de 2825 tours/min, une tension
nominale de 400 volts (tensions composées) et un courant nominal de 1,72 A.

3.2.2. Le convertisseur statique


Le convertisseur utilisé est un hacheur ou un onduleur (suivant le type de machine
commandée) de la société SEMIKRON. Il est constitué de trois bras, chaque bras comportant
deux transistors de puissance type MOS. Le convertisseur est équipé d’un système de
protection et d’isolation galvanique ainsi que d’une carte de commande. La tension du bus
continu peut être produite par un redresseur à thyristors interne ou par un bus externe. Sa
valeur nominale est de 750 volts. Les interrupteurs peuvent travailler à une fréquence de 20
kHz et supporter un courant de 30 A. Cependant, un temps mort d’au moins 3,5 µs doit être
gardé entre les instants d’ouverture et de fermeture des interrupteurs d’un même bras.

3.2.3. Le matériel de mesure


Afin de pouvoir implémenter les différentes fonctions de régulation (régulation de courant et
de vitesse), il est nécessaire de disposer de la mesure de ces grandeurs. Dans le cadre de ce
travail, la mesure de courant est assurée par un capteur à effet Hall. La mesure de vitesse
quant à elle, est assurée par un codeur incrémental ou par la sortie machine à courant continu
utilisée comme génératrice tachymétrique (cas de la commande de la machine à courant
alternatif).

3.2.4. Le matériel informatique


L’ensemble des acquisitions et l’implémentation des algorithmes de commande sont gérés à
partir d’un système informatique composé d’un PC et d’une carte de commande à FPGA.

Développé par la société Hunt Engineering Ltd [Warnes 04], la carte de commande à FPGA
que nous avons utilisée est composée d’une carte mère HPEC9 (voir Figure 3.2) qui peut
supporter jusqu’à 4 modules à FPGA. Possédant un bus de type PCI, celle-ci s’enfiche
directement sur le port PCI de l’ordinateur. En sus de la possibilité d’établir la
communication avec le PC, la carte mère permet également l’interconnexion et la
communication entre les différents modules qui peuvent être installés là-dessus.

80
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.2 : Carte mère de système de commande à FPGA. Source : [Warnes 04]

Notre carte mère comporte deux modules Heron-IO2V et un module Heron-IO2S. Dans notre
application, seul un des deux premiers modules est utilisé pour l’implémentation des
différents algorithmes.
Le module Heron-IO2V supporte un FPGA Virtex 2 de chez Xilinx qui possède une capacité
de 1 million portes logiques, deux convertisseurs analogique-numérique 12 bits avec une
vitesse de conversion de 125 M échantillons/s, deux convertisseurs numérique-analogique 14
bits avec une vitesse de conversion de 125 M échantillons/s, 8 connexions d’entrée/sortie et
trois entrées pour les signaux d’horloge externes. La structure générale de ce module est
donnée par la Figure 3.3.

81
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.3 : Structure général du module Heron-IO2. Source : [Warnes 04]

Puisque le module Heron-IO2V possède déjà une horloge interne de 100 MHz, il ne sera pas
nécessaire d’utiliser une horloge externe. Seul des diviseurs de fréquence sont utilisés pour
obtenir la fréquence voulue.
Pour configurer le FPGA une interface est utilisée (Hunt Engineering FPGA configuration).
Cette dernière peut être installée sous l’environnement Windows. L’outil de développement
utilisé est le logiciel ISE (version 6.2) de Xilinx.

3.2.5. Les interfaces


Le FPGA utilisé dans le cadre de ce travail n’admet que des niveaux de tension entre 0 et 3,3
volts. Puisque tous les composants constituant la chaîne de commande ne travaille pas à cette
tension, il va falloir donc interfacer depuis et vers le FPGA.
3.2.5.1. Interface codeur incrémental

Le codeur incrémental est alimenté en 5 volts (par une source extérieure). Les signaux des
voies A, B et C sont d’amplitude 5 volts, il faut donc les adapter pour qu’ils puissent être
supportés par les entrées logiques du FPGA (0-3,3 volts). Donc la carte d’interface réalise
l’adaptation de tension (5 volts Æ 3,3 volts). La solution que nous avons adoptée consiste à
utiliser des diodes Zener rapides.
3.2.5.2. Interface génératrice tachymétrique CAN

Etant donné que la tension de sortie maximale de la génératrice tachymétrique est de 180
volts et que le convertisseur analogique-numérique n’accepte que des tensions entre -1 et +1
volts avec un offset de 3 volts, il faut obligatoirement interfacer la sortie de la génératrice et
l’entrée du CAN. Utilisant un simple diviseur de tension (pont diviseur à résistance) il est
possible de ramener la valeur de la tension maximale de la sortie de la génératrice
tachymétrique à 1 volts.

82
Implantation des lois de commande des machines électriques sur FPGA

Pour parvenir à une impédance infinie à la sortie du pont diviseur il est nécessaire d’utiliser
un montage d’adaptation d’impédance (un montage suiveur à amplificateur opérationnel par
exemple). L’ajout de l’offset de 3 volts est réalisé par un montage sommateur à amplificateur
opérationnel.
Enfin, pour éviter les problèmes de repliement créés par l’échantillonnage et éliminer les
perturbations causées par le collecteur de la machine à courant continu, un filtre passe-bas
d’ordre 4 et de fréquence de coupure 1 kHz est utilisé.
3.2.5.3. Interface capteur de courant CAN

Pour les même raisons que celles présentées pour l’interface génératrice tachymétrique CAN,
la sortie du capteur de courant est d’abord adaptée en impédance ensuite filtrée par un filtre
passe-bas d’ordre 4 (fréquence de coupure égale à 4 kHz) et enfin additionnée à un offset de
3 volts.
3.2.5.4. Interface carte FPGA commande rapprochée du convertisseur

La commande rapprochée du convertisseur utilisé travaille avec des tensions de commande


entre 0 et 5 volts, alors que les sorties logiques du FPGA n’ont que deux niveaux de tension
de 0 et 3,3 volts. Il a donc fallu élaborer un circuit qui permette l’adaptation de tensions de
3,3 volts vers 5 volts. Un moyen simple pour le faire consiste utiliser des portes suiveuses
alimentées en 5 volts.

3.3. Asservissement de vitesse et de courant d’un moteur à courant continu


De même que la machine à courant continu a été utilisée il y a quelques années pour tester de
nouvelles approches de commande, du fait de la simplicité de sa commande, nous avons
souhaité commencer par cette machine pour montrer l’adéquation de la méthodologie
proposée à l’implantation de lois de commande de machines électriques.

3.3.1. Cahier des charges


Le cahier des charges que nous avons défini, pour illustrer notre approche d’implémentation,
porte sur la mise en œuvre sur FPGA d’un asservissement de courant et de vitesse d’un
moteur à courant continu. Pour cela une liste des spécifications fonctionnelles est établie :
- commander une machine à courant continu qui peut développer un couple nominal de 2.4
Nm à une vitesse de vitesse nominale 3000 tours/min (puissance nominale de 750 W) ;
- assurer un fonctionnement à vitesse variable dans les deux sens de rotation ;
- assurer un fonctionnement à couple variable ;
- garder les mêmes performances même en présence de perturbations extérieures ;
- assurer une réponse de vitesse d’au moins 0,3 s ;

83
Implantation des lois de commande des machines électriques sur FPGA

- ne pas dépasser une erreur 7 % sur la réponse de vitesse ;


- réduire au minimum la surface totale de silicium nécessaire pour permettre l’implantation
de l’algorithme de commande sur un FPGA de taille réduite ;
- protéger la machine envers des appels de courant et de tension qui dépassent le régime
nominal.

3.3.2. Conception fonctionnelle


Pour répondre aux besoins du fonctionnement à vitesse et à couple variables et assurer le
rejet des perturbations du moteur à courant continu, nous optons pour une structure de
commande comportant deux boucles de régulation : une boucle vitesse et une boucle de
courant. La structure générale du système commandé est présentée Figure 3.1. Puisqu’il est
question d’une régulation de courant et d’une régulation de vitesse, deux types de mesure
sont nécessaires : une mesure de la vitesse et une mesure du courant. La première est assurée
par un codeur incrémental et la seconde par un capteur de courant à effet Hall. La mesure de
courant n’est utilisable dans le FPGA qu’après son filtrage, son changement d’échelle et sa
conversion en signal numérique par le biais d’un CAN. La mesure de la vitesse est
directement reconstituée dans le FPGA à partir des signaux de sortie du codeur incrémental.
Le pilotage des interrupteurs du Pont H qui alimente le moteur est assuré par les signaux
PWM générés par le système de commande.

3.3.2.1. Modélisation du processus

Le modèle mathématique d’une machine à courant continu à excitation par aimant permanent
est décrit par le système d’équations [Pinard 04]:

 dI
U = R I + L dt + K e Ω
 (3.1)
 K I = J dΩ + f Ω + T
 e dt
v ch

E = Ke Ω Te = K e I Ke = k φ

où U est la tension d’alimentation du moteur, I le courant absorbé par le moteur, R la


résistance des enroulements d’induit, L l’inductance de l’induit, k une constante de
proportionnalité, φ le flux magnétique crée par les aimants permanents, Ω la vitesse
mécanique du moteur, f v le coefficient de frottement visqueux, Tch le couple de charge
considéré constant (considéré comme une variable de perturbation). E est la force
électromotrice (f.é.m) et Te le couple électromagnétique. K e est appelé constante de f.é.m ou

84
Implantation des lois de commande des machines électriques sur FPGA

constante de couple. Dans le domaine de Laplace, le système précédent peut se mettre sous la
forme

K e I ( s ) − Tch ( s ) U ( s ) − K e Ω( s )
Ω( s ) = I ( s) = (3.2)
J s + fv Ls+R

La représentation du modèle d’une machine à courant continu par des blocs fonctionnels peut
être donnée par la Figure 3.4. Cette figure nous montre qu’il s’agit ici d’un système en boucle
fermée où une force électromotrice proportionnelle à la vitesse mécanique du moteur
s’oppose à la tension d’alimentation du moteur.

Figure 3.4 : Modélisation par blocs fonctionnels du moteur à courant continu à aimants permanents

Pour simuler le comportement de la machine ou établir les lois de commande à partir du


modèle, il faut connaître les paramètres R, L, K e , f et J . Pour cela, on détermine d’abord le
point de fonctionnement nominal de la machine à partir de sa plaque signalétique, ensuite on
identifie les différents paramètres par des méthodes de mesure [Pinard 04] :
- On mesure la résistance d’induit R en continu, à chaud et à rotor bloqué, par une méthode
volt-ampèremétrique, l’intensité du courant étant voisine du courant nominal.
- La mesure de l’inductance L peut être réalisée par la détermination de la constante de temps
L
électrique ( τ e = ) à partir du tracé de la réponse en courant lors de l’application d’un
R
échelon de tension à l’entrée du moteur, tout en gardant le rotor bloqué.
- On calcule la constante K e à partir des valeurs nominales du courant, de la tension et de la
vitesse

U −RI
Ke = (3.3)

- La mesure du coefficient de frottement visqueux se fait à partir de la mesure des pertes à


vide. Pour cela, on fait varier la tension d’alimentation. Une fois que le moteur a atteint le
régime permanent, on relève la vitesse et le courant absorbé. On trace la courbe du couple

85
Implantation des lois de commande des machines électriques sur FPGA

Te = K e I = f (Ω) et on cherche une approximation linéaire de cette courbe. On obtient ainsi

Te = f v Ω . (à vitesse constante, le couple d’inertie est nul).


- Le calcul du moment d’inertie peut se faire par la sommation des différents moments
d’inertie propres de toutes les parties qui sont montées sur le même axe (inertie du moteur
asynchrone, de l’accouplement et de la machine à courant continu)
J = J MCC + J MAS + J accouplement . Ces différents paramètres peuvent être trouvés dans la

documentation technique de chaque élément. Une deuxième méthode consiste à mesurer la


constante de temps mécanique à partir du tracé de la réponse de vitesse. Pour cela, on laisse
tourner le moteur à vide à une vitesse voisine de la vitesse nominale, ensuite en coupe
l’alimentation de l’induit et on trace ainsi la réponse de vitesse. L’équation mécanique du
dΩ
ralentissement est donnée par J + f v Ω = 0 , donc la constante de temps mécanique est
dt
J
τm = .
fv
Les différents paramètres de la machine utilisée obtenus de cette façon sont :

R = 3,8 Ohms, L = 24,3 mHenry, J =10 −3 kg.m2, f v = 6.8 10 −4 Nm/(rad/s), τ e = 6,47 ms ,

τ m =1.47 s.

3.3.2.2. Synthèse des régulateurs

Dans la mesure où la constante de temps mécanique est largement supérieure à la constante


de temps électrique, il est possible d’effectuer une régulation en cascade du courant et de la
vitesse, en décomposant le modèle d’ordre deux (modèle de la machine) en deux modèles
d’ordre un [Sicot 97]. La structure en cascade consiste à réguler indépendamment les deux
grandeurs (I et Ω ). Par ailleurs, cette stratégie rend la synthèse des régulateurs plus aisée. La
structure de commande envisagée est présentée dans la Figure 3.5

Figure 3.5: Schéma bloc de régulation d’une MCC

86
Implantation des lois de commande des machines électriques sur FPGA

Etant donné que les régulateurs IP font partie des régulateurs couramment utilisés dans le
domaine du génie électrique, il est possible de confier la régulation de courant et de la vitesse
à ce type de régulateurs. En effet, les régulateurs IP présentent l’avantage d’avoir une
architecture simple mais aussi ils permettent d’annuler le zéro introduit dans la chaîne de
commande lors de l’utilisation d’un régulateur de type PI. Ce type de régulateur schématisé à
la Figure 3.6 utilise une action proportionnelle sur la mesure et une action intégrale sur
l’erreur pour l’annulation de l’erreur statique (erreur en régime permanent).

Figure 3.6 : Schéma bloc du régulateur IP continu

La synthèse des correcteurs d’une chaîne de régulation en cascade se fait par étapes
successives traitées séparément. Pour cela, il faut commencer d’abord par la boucle la plus
rapide et passer ensuite à la boucle la plus lente.

¾ Synthèse du régulateur de courant


La synthèse du régulateur de courant est basée sur la connaissance de la fonction de transfert
liant le courant de l’induit à la tension d’entrée (modèle électrique).
Dans l’expression de l’équation de tension on voit apparaître un terme qui dépend de la
vitesse. Ce terme peut être considéré comme une perturbation que l’on peut omettre du
modèle lors de la synthèse (la dynamique du courant étant plus grande que celle de la
vitesse). Une fois la commande établie, on ajoute un terme de compensation afin d’améliorer
la dynamique de la chaîne de contrôle de vitesse. On aboutit dans le cas d’une compensation
parfaite aux schémas blocs de deux systèmes monovariables d’ordre 1 représentés Figure 3.7.

Figure 3.7 : Schéma bloc des deux boucles de régulation

La fonction de transfert liant le courant d’induit à la tension d’alimentation dans ce cas est :

1 1/ R
G I , BO ( s ) = = (3.4)
R + L s 1+τ e s

87
Implantation des lois de commande des machines électriques sur FPGA

avec τ e la constante de temps électrique. La fonction de transfert en boucle fermée est ainsi :

K i,I
Rτ e ω n2, I
G I , BF ( s ) = = (3.5)
2 K p,I + R K i,I s 2 + 2 ξ I ω n, I s + ω n2, I
s + s+
Rτ e Rτ e

Les gains du régulateur sont obtenus par analogie entre les deux fonctions de transfert en
imposant le coefficient d’amortissement ξ I et la pulsation naturelle ω n, I . Ceci conduit aux
expressions suivantes :

 K i , I = L ω n2, I

 (3.6)
 K p, I = 2 ξ I L ω n, I − R

Pour respecter le bon fonctionnement de la régulation en cascade, la dynamique de la boucle


de courant est imposée dix fois plus rapide que celle de la boucle de vitesse.

¾ Synthèse du régulateur de vitesse


De la même manière, la synthèse du régulateur de vitesse est basée sur la connaissance de la
fonction de transfert liant la vitesse mécanique Ω au courant d’induit. Celle-ci est donnée
par :

Ke 1/ fv
GΩ, BO ( s ) = = (.3.7)
f v + J s 1+τ m s

avec τ m la constante de temps mécanique, donnant ainsi une fonction de transfert en boucle
fermée du second degré, comme dans le cas précédent :

K e K i ,Ω
fv τ m ω n2,Ω
GΩ, BF ( s ) = = (3.8)
2 K e K p ,Ω + f v K i ,Ω s 2 + 2 ξ Ω ω n,Ω s + ω n2,Ω
s + s+
fv τ m fv τ e

Les gains du régulateur IP sont obtenus par l’analogie entre les deux fonctions de transfert en
imposant le coefficient d’amortissement ξ Ω et la pulsation naturelle ω n,Ω . Cela conduit aux
expressions définies ci-dessous :

88
Implantation des lois de commande des machines électriques sur FPGA

 K i ,Ω = J ω n2,Ω / K e

 (3.9)
 K p,Ω = (2 ξ Ω J ω n, I − f v ) / K e

La pulsation ω n,Ω est choisie en fonction du temps de réponse souhaité en boucle fermée
(contraintes imposées dans le cahier des charges).
3.3.2.3. Discrétisation et choix de la période d’échantillonnage

La discrétisation du modèle d’un régulateur est relativement simple. Il suffit en effet de


remplacer l’opérateur s par une approximation en z en utilisant une des méthodes de
transformation. Parmi celles-ci, il est possible d’utiliser la méthode de différence arrière
1 − z −1
(approximation d’Euler) qui consiste à remplacer s par . La structure du régulateur IP
Te
discrétisée est présentée sur la Figure 3.8.

Figure 3.8: Structure du régulateur IP discret

Dans le cas d’un système possédant plusieurs boucles de régulation (avec différentes
dynamiques), il est possible d’utiliser la même fréquence d’échantillonnage pour tout le
système comme il est possible de travailler avec des fréquences différentes. Dans le cas de
l’utilisation d’une même fréquence d’échantillonnage, seule la dynamique la plus rapide
contribue au choix de celle-ci. Dans le cadre de cet exemple, on a choisi d’utiliser la même
fréquence d’échantillonnage pour les deux boucles afin de n’utiliser qu’une seule horloge.
Comme préconisé par [Santina 98b], le choix de la période d’échantillonnage d’un système
du second ordre peut être réalisé par la résolution de l’inéquation:
0.06 Tr ≤ Te ≤ 0.4Tr

3.33
Pour ξ = 0.707 , Tr = , où Tr est le temps de montée du système en boucle fermée entre 5
ωn
et 95 % du régime permanent. La résolution de cette inéquation nous a permis de définir la
fréquence d’échantillonnage f e = 1024 Hz.

89
Implantation des lois de commande des machines électriques sur FPGA

¾ Limitation de courant et de tension


Pour répondre aux besoins du cahier des charges en matière de protection des équipements,
nous avons opté pour la solution qui consiste à garantir cette fonctionnalité au sein de
l’algorithme de commande même. En effet, il faut tenir compte des contraintes physiques du
système à commander, notamment, la tension, le courant nominal de la machine et la tension
nominale du bus continu du convertisseur. Puisque la structure de commande permet un
calcul séparé du courant de référence et de la tension, il est donc possible de garantir le non
dépassement du courant et de la tension nominaux par l’insertion de blocs de limitation à la
sortie du régulateur de vitesse et du régulateur de courant).
Certes, l’insertion au niveau des sorties des régulateurs de blocs de saturation assure le non
dépassement des grandeurs nominales, mais il a l’inconvénient d’affecter les performances
dynamiques du système si la commande calculée dépasse le seuil de saturation. Il est donc
nécessaire d’ajouter une fonction d’anti-saturation (anti-windup) qui permet de ramener le
système dans la zone linéaire à chaque fois que la commande dépasse le seuil de saturation.
Parmi l’ensemble des actions d’anti-saturation disponibles nous avons opté pour la limitation
de l’action intégrale. Lorsque la commande dépasse le seuil de saturation, la valeur de
l’action intégrale est calculée de manière à ce que la somme de l’action proportionnelle et de
l’action intégrale soit inférieure au seuil de saturation. La Figure 3.9 présente le régulateur IP
discret avec l’action d’anti-saturation de l’action intégrale [Åström 87].

Figure 3.9: Régulateur IP avec l’action anti-saturation de l’action intégrale.

Enfin, pour valider la structure de commande et avoir une idée du comportement du système
en boucle fermée, notamment après l’insertion de blocs de saturation, il est important
d’effectuer des simulations en appliquant des consignes qui correspondent à des cas de
fonctionnement extrêmes (fonctionnement en régime nominal). La Figure 3.10 représente les
réponses de vitesse et de courant dans le cas de régulateurs avec et sans saturation. Cette
figure permet de constater que le temps de réponse de la boucle de vitesse est inférieur à 0,3
ms. Les contraintes du cahier des charges en matière de performances sont donc respectées.
Lors de l’application d’une perturbation de couple (couple de charge), on peut voir que la
réponse de vitesse présente une erreur de l’ordre de 200 tours/min. Cela montre bien que le

90
Implantation des lois de commande des machines électriques sur FPGA

dispositif garantit une précision de 7% et un rejet des perturbations (contraintes imposées


dans le cahier des charges). A partir de la réponse du courant, on peut constater que la valeur
du courant reste toujours inférieure ou égale 5A lorsqu’une saturation est mise en place. En
revanche le courant peut atteindre 15A sans saturation. Ceci montre donc clairement que le
dispositif de saturation joue un rôle capital pour la protection du système. A la lumière de
toutes ces constatations, il est possible d’approuver la validité du modèle fonctionnel de la
commande établie.

Figure 3.10 : Réponses de vitesse et de courant avec et sans limitation

3.3.2.4. Développement des calculs

Etant donné que la structure d’un régulateur IP est simple et développée, aucune
simplification n’est nécessaire. De plus, contrairement à un régulateur PI, la structure d’un
régulateur IP avec saturation ne permet pas de modifier les emplacements des gains. Pour les
deux régulateurs, seul un additionneur peut être partagé. Toutefois la mise en œuvre d’un tel
partage ne ferait qu’augmenter la complexité du système.
3.3.2.5. Mesures des extremums et normalisation des signaux

Dans le but de travailler qu’avec des signaux possédant des amplitudes comprises entre -1 et
1 et d’éviter ainsi les problèmes de dépassement de capacité lors du codage en arithmétique

91
Implantation des lois de commande des machines électriques sur FPGA

en virgule fixe, on procède à la normalisation des tous les signaux de l’architecture. Pour
cela, il est nécessaire tout d’abord de connaître les valeurs extrêmes de chaque signal.

Figure 3.11 : Numérotation des signaux du régulateur de vitesse

Figure 3.12 : Numérotation des signaux du régulateur de courant

Signal Extremum Signal Extremum


S1 314,2 S1 5
S2 343,9 S2 5,016
S3 628,3 S3 4,222
S4 2,301 S4 18,03
S5 43,44 S5 74,19
S6 7,072 S6 169,8
S7 5 S7 169,8
S8 42,5 S8 54,08
S9 43,44 S9 74,19
S10 74,19
Tableau 3.1 : Valeurs extrêmes des différents
S11 343,9
signaux du régulateur de vitesse
S12 165,1

Tableau 3.2 : Valeurs extrêmes des différents


signaux du régulateur de courant

92
Implantation des lois de commande des machines électriques sur FPGA

Parmi les méthodes de détection des extremums, nous avons utilisé la technique de
simulation. La mise en œuvre d’un système de détection des valeurs extrêmes d’un signal
nous a permis de prélever les mesures présentées Tableau 3.1 et Tableau 3.2. La désignation
des différents signaux des deux régulateurs est présentée Figure 3.11 et Figure 3.12. Comme
il est possible de le constater sur les deux tableaux, tous les signaux ont des valeurs
supérieures à 1.

Une fois la phase de détermination des extremums achevée, on passe à l’étape de


normalisation. Puisque il n’est pas possible de réaliser cette opération sans le passage par
l’étape de détermination des gains, nous allons d’abord montrer les différents gains introduits
par la chaîne de mesures et l’interface de puissance.

Détermination des gains introduits par la chaîne de mesure


La chaîne de mesure utilisée dans le cadre de cet exemple comporte deux types de mesures :
la mesure de la position et la mesure de courant.
 La mesure de la position est assurée par un codeur incrémental qui délivre deux signaux
en quadrature à une fréquence de 1024 impulsions/tour (donc une résolution de
360
= 0,35 degré). Une augmentation de la résolution par un facteur de 4 peut être obtenue
210
en connectant les deux sorties du codeur incrémental à une porte ou exclusif, puis à l’aide
d’un détecteur de front (front montant et front descendant) et une porte OU. Le nombre
d’impulsions sera ainsi quadruplé (voir Figure 3.13).

Figure 3.13 : Augmentation de la résolution du codeur incrémental, reconstitution de la position

La mesure de la vitesse est construite à partir du calcul de la dérivée de la position. Pour


évaluer la dérivée d’un signal numérique, on peut employer des filtres à réponse
impulsionnelle finie, des observateurs d’état (notamment le filtrage de Kalman), etc [Auger

93
Implantation des lois de commande des machines électriques sur FPGA

03]. Dans le présent exemple, la première approche est adoptée. La vitesse est considérée
constante entre deux périodes d’échantillonnage, et est donc calculée de la manière suivante :
θ [k ] − θ [k − 1] θ [k ] − θ [k − 1] 30
ω= , N=
Te Te π
Pour ne pas effectuer une opération de division par Te , il est préférable d’évaluer ω Te au lieu
de ω . Sans calcul, ω Te peut être obtenue à la sortie du compteur à condition de faire la
remise à zéro du contenu de ce compteur à chaque front montant (ou descendant) de
l’horloge d’échantillonnage.
En tenant compte du nombre d’impulsions par tour du codeur incrémental, de la
multiplication de la résolution par 4 et du fait qu’on évalue ω Te , le gain total introduit par le
4 × 1024
système de reconstruction de la vitesse sera donc Gcodeur = Te . Puisque ce système

est directement implémenté sur le FPGA il est nécessaire d’évaluer la largeur de bus
minimale N min qui assure une représentation du signal sans perte d’information. La
détermination de N min peut se faire en résolvant l’inéquation suivante :
4 × 1024
2 N min −1 < ω max × Te ≤ 2 N min

Pour que la valeur de Gcodeur ω soit égale à 1 quand ω = ω max , il faut diviser ce signal par

Gbus = 2 N min .
En conclusion, le gain global introduit sur la chaîne de mesure de vitesse est
4 × 1024 1
Gmesω = Te ×
2π Gbus

Puisque l’insertion du gain Gmesω au niveau des entrées du régulateur de vitesse requiert la
multiplication de sa sortie par son inverse, il est préférable de faire la multiplication au
1
niveau des deux gains K pv et K iv par plutôt que de la faire en sortie du régulateur
Gmesω
sortie afin de réduire la surface de silicium allouée à l’application.

 La chaîne de mesure de courant est constituée d’un capteur à effet Hall possédant un gain
Gcapteur , d’un filtre anti-repliement de gain unitaire (filtre passe-bas d’ordre 4 et de
fréquence de coupure égale à la moitié de la fréquence d’échantillonnage) et d’un circuit de
changement d’échelle. Le rôle attendu du circuit de changement d’échelle est de faire
correspondre la valeur maximale du signal mesuré et filtré à la valeur maximale de la tension
d’entrée admissible du convertisseur analogique-numérique (dans le cadre de cet exemple
c’est une tension entre -1 V et +1 V). Donc, le calcul du gain de ce circuit ( Gchang _ échelle )

94
Implantation des lois de commande des machines électriques sur FPGA

dépend principalement de la valeur maximale du signal mesuré et du gain du capteur ainsi


que de la tension d’entrée du CAN.
Le gain total introduit sur la mesure de courant est donc
Gmes _ court = Gcapteur × Gchang _ échelle

On multiplie par le même gain l’entrée de référence et par le gain inverse le gain
proportionnel et intégral.

Détermination des gains introduits par l’interface de puissance


Pour interfacer le dispositif de commande et la machine, un onduleur de tension est utilisé.
Ce dernier alimente la machine par une tension dont la valeur moyenne est égale au produit
de la tension du bus continu E par le rapport cyclique du signal PWM. Pour que la machine
travaille en toute sécurité, il faut que la valeur de sa tension d’alimentation n’excède pas sa
tension nominale (tension de saturation de la commande). Le rapport cyclique du signal
PWM est calculé à partir du résultat de comparaison entre le signal de sortie du régulateur de
courant et du signal triangulaire (porteuse). Pour un rapport cyclique égal à 1, la valeur
moyenne de la tension de sortie de l’onduleur égale à E. On constate donc que le gain
introduit par l’interface de puissance est égale à la valeur de la tension du bus continu.
Puisque le signal de sortie du régulateur de courant est multiplié par un gain Gsortie = E (gain
introduit par l’interface de puissance), il est nécessaire de multiplier les signaux internes de
celui-ci par le gain inverse ( 1 / E ).

Une fois les différents gains définis, il nous reste à les intégrer dans structure de commande
et on prélève de nouveau les extremums. Les nouvelles structures des deux régulateurs sont
montrées dans la Figure 3.14 et Figure 3.15.

Figure 3.14 : Normalisation des signaux du régulateur de vitesse

On considère ici que la mesure de vitesse est déjà multipliée par le gain Gmesω .

95
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.15 : Normalisation de la structure du régulateur de courant


Ke 1 K ii 1 K pi 1
K1 = × , K2= × , K3= ×
Gmes ω Gsortie Gmes court G sortie Gmes court Gsortie

Le prélèvement des extremums des différents signaux du régulateur de vitesse Tableau 3.3
nous apprend que pour une consigne de vitesse allant de − ω max à + ω max et un couple de
charge nominal, l’amplitude du signal S 4 du régulateur de vitesse possède une très faible
valeur. Ce qui, dans ce cas, conduit forcément à des imprécisions sur le calcul de la partie
intégrale lors d’une implémentation en arithmétique virgule fixe. Pour pallier ce problème,
une des solutions envisagées consiste à rehausser l’amplitude du signal d’entrée de
l’intégrateur en le multipliant par un gain en puissance de 2 ( Gbinaire ) et de diviser ensuite la
sortie de l’intégrateur par le même gain. Pour avoir plus de précision, il est judicieux de
1
placer le gain après la réinjection de la sortie du bloc de saturation vers le bloc de
Gbinaire
calcul de la partie intégrale.

Signal Extremum Signal Extremum

S1 0.3906 S1 0.6366
S2 0.4276 S2 0.6387
S3 0.7813 S3 0.5375
S4 0.0457 S4 0.1002
S5 0.8641 S5 0.4122
S6 0.1407 S6 0.9435
S7 0.0062 S7 0.9435
S8 0.8456 S8 0.3004
S9 0.8641 S9 0.4122
S10 0.4122
Tableau 3.3 Relevé des extremums des signaux
S11 0.2138
du régulateur de vitesse après normalisation
S12 0.9171

Tableau 3.4 : Relevé des extremums des signaux


du régulateur de courant après normalisation

96
Implantation des lois de commande des machines électriques sur FPGA

3.3.2.6. Quantification et choix de la largeur des bus

Afin de limiter la taille des bus et optimiser ainsi la surface de silicium, il est nécessaire de
quantifier au fur et à mesure les différents signaux de l’architecture à implémenter, en
particulier après les opérations de multiplication. Pour cela, un bloc de quantification doit
être placé après chaque multiplieur (voir Figure 3.16 et Figure 3.17).
De part la nature des éléments constituant la chaîne de commande, une quantification
naturelle s’impose d’elle-même. D’une part, l’acquisition de la mesure de courant est réalisée
par un convertisseur analogique-numérique, ce qui conduit donc forcément à une
quantification de la mesure. D’autre part, la mesure de vitesse est reconstituée à partir des
signaux de sortie du codeur incrémental qui impose à leur tour une quantification sur la
position et par voie de conséquence une quantification de la vitesse.
La présence d’un bloc de saturation dans la structure des deux régulateurs (courant, vitesse)
permet de limiter les grandeurs de sortie de chaque régulateur. Toutefois, l’insertion de blocs
de quantification en amont ou en aval du bloc de saturation n’affecte pas la précision du
signal de sortie (S7) tant que la valeur de signal S6 reste au dessus du seuil de saturation
(amplitude (S7) = Vmax ). Par contre, si le signal S6 est en dessous du seuil de saturation,
l’insertion d’une quantification après le bloc de saturation permet d’avoir plus de précision
sur le calcul de la partie intégrale.

Figure 3.16 : Mise en place des blocs de quantification (régulateur de vitesse)

Figure 3.17 : Mise en place des blocs de quantification (régulateur de courant)

97
Implantation des lois de commande des machines électriques sur FPGA

L’application des lois de codage en virgule fixe nous permet d’effectuer le choix déductif de
certaines largeurs de bus
Régulateur de vitesse
n ( S1 ) = n ( S 3 ) = n ( S 3 ) , n ( S 4 ) = n ( S 5 ) = n ( S10 ) = n ( S 8 ) , n ( S 6 ) = n ( S 7 ) .
Régulateur de courant
n ( S1 ) = n ( S 3 ) = n ( S 3 ) , n ( S12 ) = n ( S 4 ) = n ( S 5 ) = n ( S10 ) = n ( S 8 ) , n ( S 6 ) = n ( S 7 ) .
Le nombre de bits du signal S13 du régulateur de courant dépend du nombre de bits du
compteur qui sert à la génération du signal PWM.

3.3.3. Conception architecturale


3.3.3.1. Codage VHDL et Test des codes

La structure de la commande à implanter comporte deux régulateurs qui ont presque la même
structure. Il est donc utile d’établir un modèle générique, dont l’utilisation ne nécessite que
de changer les noms des ports d’entrée-sortie et les valeurs des constantes. En effet, cette
généricité permet de réduire le temps de développement et de tests des codes. La structure
globale du modèle architectural (Figure 3.18) comporte cinq blocs : les deux blocs du
régulateur de courant et de vitesse, un bloc de génération de consigne de vitesse, un bloc de
codeur incrémental et un bloc de génération du signal PWM.

Figure 3.18 : Structure du modèle architectural

3.3.3.2. Choix de la largeur optimale des bus

Après avoir effectué un choix préliminaire de la largeur des différents bus de l’architecture,
nous allons nous intéresser maintenant à la recherche de la configuration optimale qui réalise
à la fois une bonne précision de calcul en un minimum de ressources physiques. Pour cela, on
utilise l’algorithme d’optimisation présenté au chapitre précédent.

98
Implantation des lois de commande des machines électriques sur FPGA

En effet, la recherche de la largeur optimale des bus d’une architecture comportant plusieurs
blocs en cascade n’est pas sans contraintes. Plus le nombre de bus (nombre de variables) est
élevé plus le temps d’exécution de l’algorithme d’optimisation est long. Afin de pallier ce
type de problème, il est possible de se contenter dans un premiers temps d’un choix sous
optimal. C’est-à-dire, au lieu de chercher la solution optimale du système global, on cherche
la solution optimale de chaque sous-système séparément (optimisation séparée de
l’architecture du régulateur de vitesse et de courant). Si la solution sous-optimale trouvée
satisfait les contraintes du cahier des charges, il est donc possible de l’approuver et de
construire ainsi le modèle architectural final à partir de cette solution.
La détermination de la configuration optimale des deux régulateurs nécessite l’exécution des
tâches suivantes :
Dans un premier temps on commence par la détermination de la configuration optimale du
régulateur de vitesse en utilisant l’algorithme d’optimisation des largeurs de bus développé
au chapitre précédent. L’évaluation du nombre de cellules logiques utilisées ne tient compte
que de l’architecture du régulateur de vitesse. La détermination de la précision de la mesure,
elle aussi, ne dépend que de la précision de calcul dans le régulateur de vitesse. Le régulateur
de courant est implanté en arithmétique virgule flottante seulement.
Ensuite, en fixant la largeur des bus du régulateur de vitesse sur la configuration optimale
trouvée, on passe à la détermination de la configuration optimale du régulateur de courant.
Dans ce cas, le rapport signal sur bruit de quantification dépend de la précision de calcul du
régulateur de vitesse et du régulateur de courant. Par effet de propagation, une erreur de
quantification qui se trouve au niveau du régulateur de vitesse va forcément affecter le signal
de sortie du régulateur de courant (structure cascade). L’évaluation du nombre de cellules
logiques, quant à elle, ne dépend que du nombre de cellules du régulateur de courant.
Dans les deux cas, la largeur maximale des signaux d’entrées des deux régulateurs dépend de
la largeur des bus des dispositifs de mesure (nombre de bits du CAN pour la mesure de
courant et du nombre de bits du codeur incrémental pour la mesure de position ou de vitesse).
La largeur du signal de sortie du régulateur de courant est imposée par le nombre de bits du
compteur qui sert à la génération du signal PWM ( n( S13 ) =12 bits.
La configuration sous-optimale trouvée correspond à la configuration suivante : n( S1 ) = 12
bits et n( S 4 ) =14 bits pour le régulateur de vitesse et n( S1 ) =12 bits et n( S 4 ) =14 bits pour
le régulateur de courant. En effet, même si il est possible d’obtenir ces résultats sans
l’utilisation de cet algorithme, le gain en temps de développement n’est pas sans atouts.
Pour vérifier si la solution sous optimale trouvée satisfait les besoins de cahier des charges,
nous avons établi la simulation du modèle fonctionnel en virgule fixe (architecture fixée sur
la solution trouvée) en appliquant une consigne de vitesse qui varie entre − N max et + N max
pour un couple de charge nominal. Les résultats obtenus sont montrés sur la Figure 3.19.

99
Implantation des lois de commande des machines électriques sur FPGA

Cette figure nous révèle que la différence entre la réponse du système en virgule fixe et le
système en virgule flottante est inférieur à 30 tours/min (donc une erreur de l’ordre de 1%,
voir Figure 3.19.b). Lors de l’application d’une perturbation de couple, l’erreur relative entre
la consigne et la mesure reste toujours inférieure à 7% (contraintes de précision satisfaites).
Quel que soit le régime de fonctionnement du moteur le courant mesuré ne dépasse pas le
courant nominal de la machine (5A).
Puisque les contraintes du cahier des charges sont respectées, il est donc possible
d’approuver la solution sous-optimale et de l’utiliser pour la conception du modèle
architectural que l’on va implanter sur le FPGA.

Figure 3.19.a : Réponse de vitesse

Figure 3.19 b: Différence de vitesse entre les systèmes en virgule fixe et en virgule flottante

Figure 3.19.c : Réponse de courant

100
Implantation des lois de commande des machines électriques sur FPGA

3.3.3.3. Validation du modèle HDL

Comme la conception architecturale du modèle VHDL a été basée sur une approche
modulaire, sa validation aussi sera basée sur la même technique. En effet, une telle approche
permet simplifier la vérification des différents blocs et de réduire son temps. La validation du
modèle VHDL est basée sur la comparaison des résultats des simulations du modèle
fonctionnel (utilisé comme référence) et du modèle VHDL. Pour cela, il est nécessaire de
commencer par le choix des stimuli à appliquer aux entrées des deux modèles, ce qui n’est
pas facilité par la difficulté de reproduire sur un simulateur VHDL les mêmes stimuli que
ceux que l’on peut générer avec Matlab Simulink. La validité du modèle VHDL dépendra de
la concordance exacte des résultats des deux simulations.

3.3.4. Validation expérimentale


Il est évident que la validation expérimentale est la dernière étape du cycle de développement
de la mise en œuvre d’une loi de commande sur un FPGA. Pour cela, on va adopter la même
démarche que celle utilisée pour la validation du modèle VHDL.
En effet, la validation expérimentale doit être réalisée par étapes successives. Après la
validation séparée de chaque bloc, on passe à la validation de la boucle interne, puis à celle
de la boucle externe et enfin on termine par la validation du système global.
Le premier bloc à tester donc est le bloc de génération du signal PWM. Cela peut se faire en
appliquant à l’entrée de ce bloc une référence égale à la moitié de la porteuse. La validité de
ce bloc a été effectuée par l’obtention d’un signal dont le rapport cyclique est égal à ½. La
vérification a été faite par visualisation sur oscilloscope.
Après la validation du bloc PWM, on passe à la validation du régulateur de courant (boucle
de courant). Celle-ci peut se faire de la manière suivante : on bloque d’abord le rotor de la
machine (cela permet d’annuler l’effet de la force contre électromotrice du moteur), puis on
applique un échelon de courant à l’entrée de consigne du régulateur de courant. Le calcul de
l’amplitude de l’échelon doit tenir compte du gain introduit sur la chaîne de mesure. La
Figure 3.20, qui montre les résultats expérimentaux obtenus, permet de constater que le
temps de réponse est de l’ordre de 10 ms. Comme cela correspond aux exigences du cahier
des charges, la boucle de courant est validée.

Puisque l’onduleur utilisé est un onduleur de tension, il n’est pas possible d’appliquer à la
machine une commande en courant. Par conséquent, la validation du régulateur de vitesse
vient nécessairement après la validation de la boucle de courant.

101
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.20 : Validation du régulateur de courant

A l’issue de la phase de validation expérimentale des différents blocs, nous avons effectué le
test du système global (régulation de vitesse et de courant à la fois). Un fonctionnement à
vide et une consigne de vitesse variant entre ± 480 tours/min sont donc imposés. Les
résultats expérimentaux obtenus sont montrés dans la Figure 3.21. A partir de l’allure de la
vitesse (courbe à gauche de la figure), il est possible de constater que le temps de réponse du
système est de l’ordre de 0,2 s. Cela montre bien que le dispositif de commande répond aux
besoins du cahier des charges en termes de performances. En ce qui concerne la réponse de
courant, on peut constater que son allure présente des pics dont la valeur ne dépasse pas 5 A
(valeur du courant nominal de la machine). Par conséquent, on peut considérer que le
dispositif assure la protection de la machine vis-à-vis du dépassement du courant nominal.
Les oscillations présentes sur l’allure des deux réponses (vitesse, courant) proviennent d’un
problème mécanique au niveau de la fixation du codeur incrémental sur l’arbre du moteur.
C’est la raison pour laquelle nous n’avons pas poussé la machine à son régime de
fonctionnement nominal. Le nombre total de portes logiques réservés à la réalisation du deux
régulateurs, codeur incrémental et bloc PWM est de 5502 portes, soit un taux d’occupation
du composant de moins 1%. Un PFGA de faible taille peut contenir l’architecture.

Figure 3.21 : Résultats expérimentaux pour un asservissement de vitesse

102
Implantation des lois de commande des machines électriques sur FPGA

3.3.5. Conclusion
Mis à part les oscillations présentes sur l’allure du courant, les résultats expérimentaux
viennent confirmer les résultats de simulation. Les exigences imposées dans le cahier des
charges sont respectées, donc il est possible d’approuver la validité du dispositif de
commande réalisé. A l’exception de quelques problèmes rencontrés lors de la validation du
bloc de mesure de vitesse (problème mécanique), la réalisation de ce travail a été faite dans
un temps très court, ce qui montre l’intérêt de notre méthodologie de travail. La réalisation
d’une régulation à la fois de courant et de vitesse est suffisamment présentative pour pouvoir
être étendue à la commande d’une machine à courant alternatif.

103
Implantation des lois de commande des machines électriques sur FPGA

3.4. Contrôle scalaire d’un moteur asynchrone


La machine asynchrone est communément utilisée dans les applications domestiques
(machine à laver, réfrigérateur, etc.), en industrie (machinerie d’entraînement, machinerie de
transformation) et dans le transport (traction ferroviaire, véhicule électrique). Sa robustesse,
son faible coût à l’achat et sa faible maintenance lui permettent actuellement de conquérir
une place de plus en plus prépondérante sur le marché des machines électriques. De part sa
complexité de mise en oeuvre, la variation de vitesse de la machine asynchrone a été le
champ d’application de différentes théories. Plusieurs variateurs ont donc été proposés. Le
plus répandu parmi eux est le variateur scalaire. Basée sur un modèle en régime permanent
(modèle simplifié), cet algorithme présente une simple architecture et une faible densité de
calculs.
Dans cette section nous allons détailler les différentes étapes de l’implantation de la
commande scalaire d’un moteur asynchrone sur FPGA. Nous allons nous intéresser aux
techniques de mise en œuvre des dispositifs de génération des signaux PWM, plus
particulièrement l’algorithme de MLI vectorielle. Afin d’établir des comparaisons, cette
étude est ensuite étendue à l’implantation de ces mêmes algorithmes sur un microcontrôleur
dédié à la commande des machines. La dernière partie de cette section est consacrée à la
présentation de quelques problèmes typiques souvent rencontrés lors de la phase de
validation expérimentale.

3.4.1. Cahier des charges


Le cahier des charges que nous avons défini, pour illustrer ce deuxième exemple
d’application, correspond à celui d’un entraînement à vitesse variable à faible coût et faible
puissance. Cet actionneur pourra être appliqué à des applications domestiques (machine à
laver par exemple), en vue d’une production à grande échelle. Le système à développer doit
répondre aux exigences suivantes :
• Utiliser un moteur asynchrone de faible puissance : puissance utile 750W, vitesse
nominale 2800 tours/min, couple nominal 2,5 Nm ;
• Accepter des consignes de vitesse en échelon comprises entre +2800 et -2800 tours/min ;
• Avoir un temps de réponse du système en boucle fermée inférieur à une seconde ;
• Réduire au minimum l’occupation de l’algorithme sur le FPGA, afin de permettre son
implantation sur un composant comprenant un petit nombre d’éléments logiques ;
• Utiliser un capteur de vitesse faible coût.

3.4.2. Conception fonctionnelle


En se basant sur les exigences du cahier des charges présentées précédemment, il est possible
d’opter pour la structure générale présentée Figure 3.22. Puisqu’il s’agit ici d’une régulation

104
Implantation des lois de commande des machines électriques sur FPGA

de vitesse de la machine asynchrone et qu’il est nécessaire de disposer de la mesure de la


vitesse, on a choisi d’utiliser la machine à courant continu comme génératrice tachymétrique.
Du fait de la lenteur de la machine à courant continu, un tel choix impose un temps de
réponse élevé du système en boucle fermée. Quand le moteur asynchrone tourne à la vitesse
nominale de la machine à courant continu, la tension recueillie en sortie de la génératrice
tachymétrique est égale à la tension nominale, soit environ 180 volts. Dans la mesure où le
convertisseur analogique-numérique n’admet que des tensions faibles (entre -1 et +1 V dans
notre cas), il est donc nécessaire d’utiliser un circuit de conditionnement du signal de sortie
de la machine. Pour réduire l’effet des perturbations crées par le collecteur mécanique de la
machine à courant continu et éviter de le problème de repliement, un filtre passe-bas est
utilisé.
Le système de commande, implanté sur un FPGA, assure la fonction de régulation de la
vitesse et détermine les instants de conduction ou de blocage des différents transistors de
l’onduleur. Choisie pour sa grande popularité et sa simplicité, la commande scalaire est la
stratégie de commande adoptée pour assurer le fonctionnement à vitesse variable de la
machine. La régulation de vitesse, quant à elle, est confiée à un régulateur de type PI.

Figure 3.22 : Structure générale de la chaîne d’entraînement

3.4.2.1. Modélisation du processus

L’exploitation de la machine asynchrone à vitesse variable est fondée sur la connaissance du


modèle de la machine et de l’expression du couple électromécanique dépendant des
paramètres électriques. En effet, le moteur asynchrone tourne à une vitesse légèrement

105
Implantation des lois de commande des machines électriques sur FPGA

inférieure à la vitesse de synchronisme ω s / p (où ω s est la pulsation des courants statoriques


et p le nombre de paires de pôles de la machine). Il suffit donc de faire varier la fréquence
d’alimentation du moteur pour commander sa vitesse.

L’application d’un système de tensions sinusoïdales d’amplitude Vsm et de pulsation ω s

( Vs = Vsm e j ωs t ) aux enroulements statoriques d’un moteur asynchrone est accompagné par le

passage d’un courant sinusoïdal avec une même pulsation I s = I sm e j (ωs t +ϕ s ) dans les
enroulements statoriques et par la création de courants induits dans le circuit rotorique avec
la même pulsation ( I r = I rm e j (ωs t +ϕr ) ). Dans un référentiel lié au stator, les équations
électromagnétiques de la machine asynchrone, exprimées sous forme complexe, se résument
aux équations suivantes [Leonhard 96, Seguier 94, Boulbair 05b] :

 dφ s
 dt + Rs I s =Vs

 dφr − j ω φ + R I = 0
 dt m r r r

φ s = Ls I s + Lm I r (3.10)
φ = L I + L I
 r r r m s
 3p *
Te = 2 Lm Im(I s I r )

Avec Rs la résistance statorique, Rr la résistance rotorique, Ls l’inductance statorique,

Lr l’inductance rotorique, Lm l’inductance mutuelle, ω m la pulsation rotorique, φ s le flux

statorique, φ r le flux rotorique, I s le courant statorique, I r le courant rotorique et Vs la


tension d’alimentation des enroulements statoriques. A partir de l’équation (3.10), il en
résulte :

Rr + j Lr ω slp j Lm ω slp
Is = Vs Ir =− Vs (3.11)
∆ ∆

où ω slp = ω s − ω m et ∆ = ( Rs + j Ls ωs )( Rr + j Lr ωslp ) + L2m ωslp ωs . A partir des expressions

des courants I s et I r , il est possible de déduire l’expression du flux rotorique :

Lm Rr
φr = Vs (3.12)

106
Implantation des lois de commande des machines électriques sur FPGA

Si on suppose que le moteur tourne à une vitesse suffisamment importante et que la chute de
tension ohmique aux bornes des enroulements statoriques est négligeable, il est possible
d’écrire ∆ ≈ j Rr L s ω s . Dans ce cas, les nouvelles expressions du flux rotorique et du couple
deviennent :

Lm Rr L V
φrm ≈ Vsm = m sm (3.13)
Rr Ls ω s Ls ω s

2
3 p φ rm
Te = ω slp (3.14)
2 Rr

L’équation (3.14) nous montre que si on maintient constant l’amplitude du flux φrm , il est
possible de piloter le couple électromagnétique en agissant seulement sur la pulsation de
glissement ω slp = ω s − ω m . D’après l’équation (3.13), ceci peut être obtenu en maintenant le

Vsm
rapport constant.
ωs

Pour obtenir un fonctionnement à vitesse variable, il serait donc possible de calculer la


pulsation des courants statoriques en se basant sur le calcul de la pulsation de glissement et
de la vitesse rotorique ω m de la manière suivante :

2 Rr
ωs = ωm + 2
Te (3.15)
3 p φ rm

Toutefois, cette relation n’est pas valable pour les faibles valeurs de la pulsation ω s car la
chute de tension ohmique due à la résistance des enroulements statorique n’est plus
Lm
négligeable devant le terme inductif ( ∆ ≈ R s Rr et φ r ≈ Vs ). C’est ainsi qu’on envisage
Rs
sur la plupart des variateurs une compensation de cette chute de tension en augmentant
l’amplitude des tensions statoriques pour les faibles valeurs de ω s (Figure 3.23) de façon à

maintenir φ s constant. D’autre part, si un fonctionnement en survitesse de la machine


asynchrone est envisagé, il n’est pas possible de dépasser la tension statorique nominale. Le
flux est alors diminué de même que le couple électromagnétique maximum.

107
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.23 : Variation de la tension statorique en fonction la fréquence à flux constant

Pour déterminer les différents paramètres de la machine on peut procéder de la manière


suivante [Seguier 94, Loron 99]:
 Alimentation en courant continu, pour évaluer résistance Rs du stator ;

 Essai à vide : permet d’identifier l’inductance de magnétisation Lm ;

 Test en court circuit : permet d’évaluer la valeur des inductances de fuite statorique et
rotorique ;
 La mesure des paramètres mécaniques est déjà présentée dans le cadre de l’identification
de la machine à courant continu.
La réalisation de ces tests nous a permis d’obtenir les paramètres suivants : Rs = 11 Ohms,

Rr = 9,5 Ohms, Ls = 560 mHenry, Lm = 535 mHenry, Lr = 540 mHenry.

La commande en boucle ouverte ne permet pas de contrôler parfaitement la vitesse de la


machine puisque à pulsation constante, la vitesse de rotation dépend du couple résistant de la
charge entraînée. Il serait donc opportun d’utiliser un régulateur de vitesse (de type IP par
exemple) pour assurer la fonction de régulation même en présence de perturbations
extrinsèques. La Figure 3.24 montre le schéma global de la structure de commande
envisagée.
La variation de vitesse est obtenue par une variation de ω slp directement liée au couple

comme le montre l’équation (3.14). Il s’agit donc d’un contrôle indirect du couple. Le
régulateur de vitesse élabore ω slp à partir de l’erreur de vitesse. La fréquence statorique est

obtenue par la loi d’autopilotage ω s = ω slp + ω m . Pour garder le flux constant, il est donc

108
Implantation des lois de commande des machines électriques sur FPGA

nécessaire que la valeur de l’amplitude des tensions d’alimentation de la machine soit


proportionnelle à la pulsation des courants statoriques, d’où l’utilisation d’un bloc dit « loi en
Vsm / ω s =constante ». La pente de cette loi est déterminée à partir de la connaissance des
valeurs nominales de la tension et de la vitesse de la machine.

Le rôle attendu du bloc PWM est de déterminer les instants de commutation des interrupteurs
de l’onduleur qui alimente le moteur. Parmi les techniques les plus utilisées dans le domaine
de la commande des machines, nous avons opté pour l’utilisation de la MLI naturelle et la
MLI vectorielle. Bien que le principe de ces deux techniques soit largement exposé, nous
allons nous intéresser plus particulièrement à leur implémentation plutôt qu’à l’évaluation de
leurs performances.

Figure 3.24 : Schéma global d’un asservissement de vitesse de la machine asynchrone

‰ MLI naturelle
Cette technique est basée sur la comparaison entre une onde de modulation à faible
fréquence, et une onde porteuse de forme triangulaire à fréquence plus élevée. Les instants de
commutation sont déterminés par les points d’intersection entre la porteuse et la modulante.
La génération de l’onde modulante est réalisée à partir de la multiplication du signal de sortie
du bloc Vs / ω s par un signal sinusoïdal de pulsation ω s . Puisqu’il s’agit d’un moteur

triphasé, il est donc nécessaire de générer trois signaux sinusoïdaux de pulsation ω s et


décalés de :
3
2π 4π t
Va* = Vsm sin(θ ) , Vb* = Vsm sin(θ −
3 3 ∫
) , Vc* = Vsm sin(θ − ) et θ (t ) = ω s (τ ) dτ
0

109
Implantation des lois de commande des machines électriques sur FPGA

La génération du signal sinusoïdal sin(θ ) peut être réalisée par la sauvegarde des valeurs de
la fonction sinus dans une table d’allocation ou par l’utilisation d’un oscillateur en quadrature
[Boulbair 05a]. Si une table de sinus est utilisée pour générer le signal sinusoïdal, il est
particulièrement simple d’ajouter au fondamental du signal un harmonique du rang 3, et de
1
sauvegarder sin(θ ) + sin(3θ ) dans la table au lieu de sin(θ ) . Cette technique trouve tout
6
son intérêt si l’amplitude du fondamental de la tension nécessaire pour obtenir une vitesse
désirée dépasse la tension nominale de l’onduleur [Freescale 03, Boulbair 05a].

‰ MLI vectorielle
L’algorithme de MLI vectorielle est largement utilisé dans le domaine de la commande
moderne des machines électriques [Nec 03, Toliyat 04, Tzou 97, Yu 98]. Son principe est
r
basé sur la construction de la tension statorique Vs à partir de huit vecteurs de tension
correspondant aux huit états possibles de l’onduleur. Nous allons décrire, dans ce qui suit, la
technique employée par cet algorithme pour la détermination des instants de commutation
des interrupteurs [Boulbair 05b]. Sur la Figure 3.25, nous représentons un onduleur idéal à
trois bras (c'est-à-dire un onduleur sans temps morts et sans retards de commutation)
alimentant les enroulements statoriques d’un moteur asynchrone.

Figure 3.25 : Structure général d’un onduleur

Pour un tel onduleur, il n’existe que huit configurations possibles selon l’état de ses
interrupteurs, ce qui correspond à huit combinaisons de tension entre ligne et donc huit
tensions statoriques applicables au moteur, dont deux sont nulles et 6 ont un module égal à
E . Les extrémités des vecteurs de tension non nuls forment les sommets d’un hexagone (voir
Figure 3.26). Dans le plan complexe, les huit vecteurs tension peuvent être écrits sous la
forme

110
Implantation des lois de commande des machines électriques sur FPGA

π
j(k−1)
Vk = E e 3 (3.16)

avec ( k = 1,...6 ) et V0 = V7 = 0 V.

Figure 3.26 : Vecteurs de tension statorique dans le plan (α , β )

De même, l’écriture dans un repère (α , β ) de la tension que l’on souhaite appliquer à la


machine est donnée par :

Vs = Vα + j Vβ = Vsm cos(θ ) + j Vsm sin(θ ) (3.17)

Dans le repère statorique abc, les tensions Vα et Vβ s’obtiennent par :

 1 1  V
 an 
 1 − −
Vα  2 2  
V  =   Vbn (3.18)
 β  0 3 3 
− Vcn 
 2 2   

où Van , Vbn et Vcn sont les tensions de ligne (tension entre phase et neutre). Si le neutre est

isolé, Van + Vbn + Vcn = 0 V, donc 3Vn = Va + Vb + Vc . Le Tableau 3.5 résume les différentes
combinaisons de tension que peut fournir l’onduleur de tension.

111
Implantation des lois de commande des machines électriques sur FPGA

L’onduleur ne peut fournir de façon exacte et instantanée que des tensions de type Vk . La
génération d’une tension quelconque ne peut donc être réalisée qu’en valeur moyenne. Pour
cela, il faut appliquer sur une période de commutation Tcom un vecteur Vi pendant une durée

d k puis un vecteur Vi +1 pendant une durée d k +1 . De cette manière, en moyenne, on peut


obtenir n’importe quelle tension statorique désirée. Le poids de chaque vecteur est en fait le
rapport cyclique, c’est-à-dire le rapport entre son temps d’application et la période de
di
commutation : δ i = .
Tcom

S a + S b+ S c + Vab Vbc Vca


Si Van Vbn Vcn Vα Vβ Vi

0 0 0 S0 0 0 0 0 0 0 0 0 V0

0 0 1 S1 0 -E E -E/3 -E/3 2E/3 – E/2 - 3 E/2 V5

0 1 0 S2 -E E 0 -E/3 2E/3 -E/3 −E / 2 3 E/2 V3

0 1 1 S3 -E 0 E -2E/3 E/3 E/3 -E 0 V4

1 0 0 S4 E 0 -E 2E/3 -E/3 -E/3 E 0 V1

1 0 1 S5 E -E 0 E/3 -2E/3 E/3 E/2 - 3 E/2 V6

1 1 0 S6 0 E -E E/3 E/3 -2E/3 E/2 3 E/2 V2

1 1 1 S7 0 0 0 0 0 0 0 0 V7

Tableau 3.5 : Combinaisons de vecteurs de tension d’un onduleur trois bras idéal, moteur branché en
étoile (0 : interrupteur ouvert, 1 : interrupteur fermé)

La réalisation du vecteur tension Vs par les vecteurs tensions les plus proches (tensions qui

délimitent le secteur dans lequel le vecteur tension Vs se situe) permet d’optimiser le nombre
de commutations des interrupteurs (pertes de commutation de l’onduleur), ce qui fait partie
des principaux objectifs de la MLI vectorielle.
Si la somme des durées d’application des vecteurs Vi et Vi +1 est inférieure à Tcom

( d k + d k +1 < Tcom ), alors on complète la séquence par les vecteurs tensions nuls. Le vecteur

reconstitué Vs est donc une combinaison linéaire de vecteurs Vk :

Vs = δ i Vi + δ i +1 Vi +1 + δ 0 V0 + δ 7 V7 (3.19)

112
Implantation des lois de commande des machines électriques sur FPGA

d0 d 1 − δ i − δ i +1
avec δ 0 = , δ 7 = 7 et δ 0 = δ 7 = .
Tcom Tcom 2

Tout le problème se réduit donc au calcul des durées d’application ( d k et d k +1 ) des


différents vecteurs de tension.

Suivant la position du vecteur tension Vs dans le cercle angulaire, on résume dans le Tableau
3.6 les différentes expressions des différents rapports cycliques à appliquer.
Numéro de
θ dk d k +1
secteur

 π 2 Vsm π 2 Vsm
1 0, 3  sin( − θ ) sin(θ )
  3 E 3 3 E

 π 2π  2 Vsm π 2 Vsm 5π
2 3 , 3  sin( + θ ) sin( + θ )
  3 E 3 3 E 3

 2π  2 Vsm 2 Vsm 4π
3  3 ,π  sin(θ ) sin( +θ)
  3 E 3 E 3

 4π  2 Vsm 5π 2 Vsm
4 π , 3  sin( + θ ) sin(2π − θ )
  3 E 3 3 E

 4π 5π  2 Vsm 4π 2 Vsm 2π
5  3 , 3 sin( +θ) sin( +θ)
  3 E 3 3 E 3

 5π  2 Vsm 2 Vsm π
6  3 , 2π  sin(2π − θ ) sin( + θ )
  3 E 3 E 3

Tableau 3.6 : Détermination des rapports cyclique

Une analyse fine des différentes expressions des rapports cycliques, présentées dans le
tableau précédant, permet de constater que quel que soit la position du vecteur tension (et
quel que soit le numéro de secteur), le calcul des différents rapports cyclique dépend toujours
du calcul du sinus d’un angle qui varie entre 0 et π / 3 . On peut en effet réécrire toutes les
expressions précédentes sous la forme :

2 Vsm 2 Vsm
δ k = da = sin(θ ′′) δ k +1 = d b = sin(θ ′) (3.20)
3 E 3 E

113
Implantation des lois de commande des machines électriques sur FPGA

π π
avec θ ′′ = − θ ′ et θ ′ = θ − (k − 1) .
3 3
Ce résultat permet non seulement un gain en simplicité algorithmique (le calcul des rapports
cycliques ne dépend pas du numéro de secteur) mais aussi une réduction du domaine de
π
définition de la fonction sinus utilisée (calcul du sinus des angles variant entre 0 à
3
seulement). La détermination de l’angle θ ′ peut être réalisée par un simple calcul en modulo
π
de de l’angle θ (voir Figure 3.27). Signalons enfin qu’aucune des publications que nous
3
avons consultées lors de cette étude ne présente ce résultat.

Figure 3.27 : Détermination de l’angle θ′

Une fois les durées d’application calculées, il faut déterminer les instants de commutation des
interrupteurs, le problème étant qu’il est possible de déterminer plusieurs séquences de
commutations qui correspondent aux temps calculés. Pour un même fondamental à la sortie
de l’onduleur, chaque séquence produit des harmoniques et des pertes de commutation
différentes.
Dans notre exemple, nous utilisons une MLI avec des impulsions centrées au milieu de la
période de commutation. Ce type de modulation limite le contenu harmonique des tensions
générées. La méthode pour déterminer les instants de commutation consiste à distribuer le

114
Implantation des lois de commande des machines électriques sur FPGA

temps d’application du vecteur nul de façon identique entre V0 et V7 . On applique donc

successivement V0 puis les vecteurs non nuls, puis V7 , puis des vecteurs non nuls, puis V0 .
Figure 3.28, nous présentons le séquencement d’applications des différents vecteurs de
tensions dans le cas du secteur numéro 1.

Figure 3.28 : Séquence d’application des vecteurs de tensions

Utiliser des tests logiques pour déterminer les instants de changement de vecteur est une
tâche très fastidieuse pour un système de calcul. C’est pourquoi, les DSP et les
microcontrôleurs dédiés à la commande de machine sont souvent dotés d’un compteur
décompteur et de trois comparateurs rapides (implantés matériellement). Au lieu donc de
déterminer les instants de commutation, on va déterminer des seuils de commutation des
sorties des comparateurs. La sortie de chaque comparateur pilote l’ouverture ou la fermeture
des interrupteurs (voir Figure 3.29).

115
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.29 : Détermination des seuils de comparaisons

Selon les différents secteurs, le Tableau 3.7 résume les valeurs des seuils de changement des
sorties des trois comparateurs ( C a , Cb , Cc ). Ce tableau nous montre qu’en fonction du
numéro de secteur, le calcul des valeurs de C a , Cb et de C c ne fait appel qu’à une opération
d’addition ou de soustraction des rapports cycliques. Le calcul du numéro de secteur est
réalisé par un compteur circulaire (modulo 6). Il est incrémenté ou décrémenté à chaque fois
π π
que l’angle θ ′ passe de 0 à ou de à 0.
3 3
Numéro 4 4 4
Ca − 1 Cb − 1 Cc − 1
de secteur Ts Ts Ts

1 − d a − db da − db d a + db

2 − d a + db − da − db d a + db

3 d a + db − da − db d a − db

4 d a + db − d a + db − d a − db

5 da − db d a + db − d a − db

6 − da − db d a + db − d a + db

Tableau 3.7 : Calcul des seuils de comparaison

En résumé, la détermination des instants de conduction ou de blocage des différents


interrupteurs en utilisant l’algorithme de la MLI vectorielle nécessite l’exécution des
opérations suivantes :

116
Implantation des lois de commande des machines électriques sur FPGA

- détermination des angles θ ′ , θ ′′ et du numéro de secteur à partir d’une intégration


π
circulaire sur de la pulsation statorique (Figure 3.27) ;
3
- évaluation de sinus des angles θ ′ et θ ′′ ;
- calcul des rapports cycliques (équation 3.20) ;
- calcul des seuils de déclenchement des comparateurs (Tableau 3.7).

3.4.2.2. Synthèse du régulateur

La synthèse du variateur de vitesse est basée sur la connaissance de la fonction de transfert


liant la vitesse mécanique à la pulsation de glissement. Celle-ci peut être déterminée à partir
du modèle mécanique de la machine et de l’expression du couple (équation 3.14):
2
3 p φ rm
ωm 2 Rr K
Gω , BO ( s) = = =
ω slp J s + f v τ m s +1
Etant donné que le système formé par le régulateur et par le modèle mécanique du moteur
forme en boucle fermée un système du second ordre, il est possible de déterminer les
paramètres du régulateur de vitesse en utilisant la même technique que celle présentée au
paragraphe 3.3.2.2.

3.4.2.3. Discrétisation et choix de la période d’échantillonnage

Comme nous l’avons présenté au paragraphe 2.2.2.2 le passage du modèle à temps continu
au modèle à temps discret a été réalisé en effectuant le changement de l’opérateur de
dérivation s par une approximation en z , par une approximation d’Euler (remplacement de
1 − z −1
l’opérateur s par ). La période d’échantillonnage a été déterminée en suivant la
Te
démarche présentée au paragraphe 2.2.2.2. En suivant les règles préconisées dans
[Santina98b], nous avons choisi f e = 512 Hz.

Afin de valider la structure de commande établie, il est nécessaire d’étudier en simulation le


comportement du système commandé et de voir s’il satisfait les contraintes imposées dans le
cahier des charges. La Figure 3.30 montre les résultats de simulation obtenus pour une
variation de vitesse entre +2800 tours/min et -2800 tours/min. D’après cette figure, on peut
constater que le dispositif de commande remplit bien les spécifications du cahier de charges,
particulièrement celles liées à la fonction de régulation de vitesse et aux performances (temps
de réponse inférieur à 1 s).

117
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.30 : Réponse de vitesse, couple de charge

3.4.2.4. Développement des calculs

Etant donné que la structure de commande utilisée ici ne requiert pas des calculs matriciels ni
des calculs factorisés, il n’est pas nécessaire de faire appel à cette tâche. Cependant, selon la
technique de génération du signal PWM que l’on peut adopter, il possible d’effectuer un
partage de ressources.

Figure 3.31 : Partage de ressources dans le cas de la MLI naturelle

118
Implantation des lois de commande des machines électriques sur FPGA

Figure 3.32 : Partage de ressources dans le cas de la MLI vectorielle

La Figure 3.31 et la Figure 3.32 présentent l’architecture du système de génération des


signaux PWM dans le cas d’une MLI naturelle et d’une MLI vectorielle. Dans les deux cas,
le processus de multiplexage-démultiplexage permet d’économiser les systèmes de calculs de
la fonction sinus et des multiplieurs.

3.4.2.5. Mesures des extremums et normalisation des signaux

D’après la Figure 3.31, le calcul des trois tensions de référence ( Va* , Vb* , Vc* ) est réalisé par la
multiplication du signal Vsm par trois signaux sinusoïdaux d’amplitude unitaire. Par
conséquent, leurs valeurs maximales ne dépendra que de la valeur maximale de Vsm :

max(Va* ) = max(Vb* ) = max(Vc* ) = max(Vsm ) .


Pour connaître les maximums des différents signaux du régulateur de vitesse, nous avons
utilisé la méthode de simulation du modèle fonctionnel en appliquant une consigne de vitesse
variant entre 2800 et -2800 tours/min. Afin d’alléger notre présentation, on a gardé la même
désignation des signaux que celle présentée 3.4.2.5 (on utilise un régulateur qui à la même
structure). Le relevé des extremums des différents signaux du régulateur de vitesse est illustré
dans le Tableau 3.8.
Signal Extremum
S1 293,2
S2 295,2
S3 586,4
S4 0,832
S5 64,6
S6 16,91
S7 16,51
S8 0,402
S9 55,89

Tableau 3.8 : Relevé des extremums du régulateur de vitesse

119
Implantation des lois de commande des machines électriques sur FPGA

Ce tableau nous montre que seul deux signaux ont des amplitudes maximales inférieure à 1
(S4 et S8), le reste des signaux ne l’est pas. Afin de les normaliser tous les signaux et éviter
ainsi les problèmes de dépassement de capacité (Overflow) lors des opérations de
multiplication, on doit modifier les gains en entrée et en sortie du correcteur (et
éventuellement en interne). Pour connaître les valeurs des gains à introduire, il est nécessaire
de connaître d’abord les différents gains inhérents à la chaîne d’entraînement, c’est-à-dire les
gains introduits par la chaîne d’acquisition de la mesure et par l’interface de puissance.
Dans le cadre de cet exemple, la mesure de la vitesse est réalisée par la machine à courant
continu (utilisée comme génératrice tachymétrique). Puisque sa tension de sortie ne peut pas
être directement exploitée par le convertisseur analogique-numérique, il est nécessaire de
conditionner sa sortie par le circuit de changement d’échelle. Pour réduire les perturbations
créées par le collecteur de la machine et éviter le problème de repliement, un filtre passe-bas
d’ordre 4 est utilisé. Sa fréquence de coupure est égale à 256 Hz (moitié de la fréquence
d’échantillonnage). Enfin le signal filtré est converti en un signal numérique à l’aide d’un
convertisseur analogique-numérique 12 bits. Pour connaître la valeur du gain du circuit de
changement d’échelle Gnorm , on détermine d’abord la valeur maximale de la tension de
sortie de la machine à courant continu. Quand celle-ci est entraînée par un moteur à une
vitesse ω m , la valeur de la tension qu’elle peut débiter à vide est donnée par :
U = K e ωm

Avec U la tension de sortie, ω m la vitesse de rotation de la machine asynchrone et K e la


constante de la force électromotrice. La tension de sortie maximale sera donc le produit de la
vitesse maximale de la machine asynchrone par la constante de force électromotrice : pour
ω m = ω m max la tension de sortie est : U max = K e ω m max
1
Le gain de normalisation est donc : Gnorm =
U max
Au final le gain introduit par la chaîne de mesure de vitesse est
Ke
Gmes _ ω =
U max
Pour assurer l’alimentation de la machine avec un système de tension à fréquence variable,
un onduleur de tension est utilisé (interface de puissance). Si on ne tient pas compte du retard
introduit par celui-ci, on peut considérer que le gain introduit par l’interface de puissance est
égal à la valeur de la tension du bus continu. Dès lors, la valeur du gain qu’il faut insérer aux
niveaux des signaux de sortie sera donc
G sortie = E
Si on est amené à multiplier les signaux d’entrée d’un bloc par un gain, pour préserver le
même transfert, il est obligatoirement nécessaire de diviser sa sortie par le même gain.

120
Implantation des lois de commande des machines électriques sur FPGA

Une fois déterminés les différents gains imposés par la chaîne d’acquisition de la mesure et
par l’interface de puissance, il ne reste qu’à les reproduire dans le schéma fonctionnel et de
prendre les nouvelles mesures des extremums des différents signaux. Le Tableau 3.9 montre
les nouveaux extremums des signaux internes du régulateur de vitesse après insertion des
gains.
Signal Extremum
S1 0,452
S2 0,455
S3 0,90
S4 0,001
S5 0,099
S6 0,026
S7 0,025
S8 0,0006
S9 0,086

Tableau 3.9 : Relevé des extremums (régulateur de vitesse) après normalisation

A partir de ce tableau, on constate que les signaux (S4, S5, S6, S7, S8, S9) ont des
maximums très faibles, ce qui signifie qu’il est nécessaire de les coder sur un nombre de bits
important pour réduire les effets des erreurs de quantification. Pour palier ce problème, nous
avons rehaussé les amplitudes de ces signaux par le biais de l’insertion de gains internes, en
particulier au niveau des gains K p et K i Te . On rappelle ici que l’insertion de n’importe quel
gain en amont du bloc de saturation doit être accompagnée par la multiplication des niveaux
de saturation de celui-ci par le même gain. Après la multiplication des gains K p et K i Te par

2 3 et du signal de sortie du régulateur (S7) par 2 −3 , tous les signaux ont un maximum de
niveau convenable.

3.4.2.6. Quantification et choix de la largeur des bus

A ce stade, la fixation de la largeur des bus ne sert que d’initialisation. Un choix approprié
sera présenté dans le paragraphe § 3.4.3.1.2. Néanmoins, il nécessaire de montrer que le
largeur de certains bus peut être déterminée explicitement et ne dépend pas d’un choix
arbitraire mais des contraintes imposées par le codage en virgule fixe :
n ( S1 ) = n ( S 3 ) = n ( S 3 ) , n ( S 4 ) = n ( S 5 ) = n ( S10 ) = n ( S 8 ) , n ( S 6 ) = n ( S 7 ) .

3.4.3. Conception architecturale


Parmi les techniques utilisées pour l’implémentation matérielle de la fonction sinus, nous
avons opté pour la technique qui consiste à sauvegarder les valeurs de sinus des angles dans
une mémoire. Afin de réduire le plus possible la taille de cette mémoire, il est possible de ne

121
Implantation des lois de commande des machines électriques sur FPGA

sauvegarder que les valeurs du sinus des angles qui appartiennent au premier quadrant du
cercle angulaire. La détermination du sinus des angles n’appartenant pas à ce secteur se fait
par application des propriétés du calcul trigonométrique.
π
Dans le cas de l’algorithme de MLI vectorielle, seul le sinus des angles entre 0 et est
3
mémorisé (voir page 110).
L’inversion du sens de rotation d’une machine triphasée peut être obtenue par la simple
permutation de deux de ses phases (permutation des signaux de commande des interrupteurs
de l’onduleur). Donc, il est possible de coder les différents signaux des blocs en aval du
régulateur de vitesse avec des nombres non signés et d’utiliser un commutateur pour assurer
l’inversion du sens de rotation (voir Figure 3.33).

Figure 3.33 : Structure d’inversion de sens de rotation du moteur

3.4.3.1. Conception architecturale en vue d’une implantation sur FPGA

3.4.3.1.1. Codage VHDL et Test des codes


Comme il a été présenté au paragraphe §2.2.3.1, l’un des principaux avantages du langage
VHDL est la possibilité décomposer l’architecture à implanter en différents blocs. Cette
technique trouve tout son intérêt dans le cas présent, car notre objectif est de tester les
dispositifs de commande utilisant les deux techniques de génération des signaux PWM. Pour
cela, nous avons constitué une architecture qui comporte les blocs suivants : régulateur de
vitesse, calcul de la pulsation statorique, calcul da la valeur absolue de la pulsation
statorique, bloc de loi en Vsm / ω s , bloc de calcul des seuils de comparaison, bloc des
comparateurs. Le seul bloc qui doit être changé en fonction de la stratégie de MLI adoptée

122
Implantation des lois de commande des machines électriques sur FPGA

est le bloc de calcul des seuils de comparaison. Ce bloc peut être lui-même décomposé en
plusieurs sous blocs utilisables à la fois par les systèmes de MLI naturelle et vectorielle. En
particulier, le multiplexeur, le démultiplexeur, le multiplieur, le système de calcul de la
fonction sinus.

3.4.3.1.2. Détermination de la largeur optimale des bus


Puisque la détermination de la largeur de certains bus est dictée par les règles de codage en
virgule fixe (§3.4.2.6), l’utilisation de l’algorithme d’optimisation est limité à la
détermination de la largeur des signaux S 4 , S 9 , et S11 du régulateur de vitesse, et de la
Vs
largeur du signal de sortie de la loi . La largeur de bus du signal de sortie de la table sinus
ωs
est fixée à 10 bits afin de préserver la même configuration que celle utilisée lors de
l’implantation dans le microcontrôleur. Pour la configuration optimale obtenue
( n ( S 4 ) = n ( S 9 ) = 17 bits et n ( S11 ) = 12 bits), les résultats de simulation du modèle
fonctionnel en virgule fixe et en virgule flottante sont représentés Figure 3.34. Cette figure
montre que la réponse de vitesse du système en virgule fixe et en virgule flottante ont
pratiquement la même allure, et l’écart maximal entre les deux est d’environ 3 tours/min.
Cela nous permet donc de valider la solution trouvée.

Figure 3.34 : Réponse de la vitesse (algorithmes en virgule fixe et en virgule flottante)

123
Implantation des lois de commande des machines électriques sur FPGA

3.4.3.1.3. Validation du modèle HDL


Pour s’assurer que le modèle VHDL développé correspond réellement à ce que l’on cherche
à implémenter, une vérification par simulation des différents blocs a été réalisée. On prend
comme référence les résultats de simulation du modèle fonctionnel et on les compare aux
résultats de simulation du modèle architectural.

3.4.3.2. Conception architecturale pour un microcontrôleur

Dans le but de tester les performances d’un microcontrôleur dédié à la commande des
machines récemment commercialisé, l’AT90PWM3 de la société Atmel, une implantation de
la structure de commande présentée dans la Figure 3.33 a été réalisée [Boulbair 05b]. Pour ne
pas alourdir notre présentation, on ne présente ici que l’algorithme de la MLI vectorielle.

Début
- calcul de la tension Vsm ;

- calcul de la position θ ′ , θ ′′ et du numéro de secteur ;


- obtention de sin( θ ′ ) et sin( θ ′′ ) en utilisant une table sinus ;
- calcul de d a et d b équation 3.20 ;

- évaluation des seuils de comparaisons ( C a , Cb , Cc ) en fonction du


numéro de secteur (tableau 3.7)
Fin

La phase de test comporte les étapes suivantes :


- Traduction de l’algorithme en langage C ;
- Compilation du programme C par le compilateur IAR [IAR] ;
- Chargement du code exécutable sur le microcontrôleur à l’aide du logiciel AVR Studio
[Atmel] ;
- Exécution du programme en mode pas à pas et vérification du contenu des registres ;

3.4.4. Validation expérimentale


Dans la mesure où l’architecture du dispositif de commande réalisé est composée de
différents blocs, la meilleure façon de réaliser les tests expérimentaux du système global est
sans doute la validation préalable de chaque bloc pris séparément. On suggère de commencer
la série de tests expérimentaux par la validation du système de génération des trois
sinusoïdes. Cela peut se faire en vérifiant leurs formes, leurs périodes et leurs déphasages. La
visualisation sur oscilloscope est un moyen de test efficace et rapide. Ensuite, en fixant

124
Implantation des lois de commande des machines électriques sur FPGA

l’amplitude et la fréquence des trois tensions de référence Va* , Vb* , Vc* , il est possible de
vérifier les différents signaux PWM servant à piloter les interrupteurs de l’onduleur. A ce
niveau, la vérification peut se faire en amont et en aval de l’onduleur (test des signaux PWM
ou tests des signaux de sorties de l’onduleur). Pour visualiser le signal à la sortie de
l’onduleur, il est nécessaire de disposer d’un filtre passe-bas afin d’éliminer les fréquences
dues au découpage. Dans le cas où les signaux de sortie de l’onduleur forment un système
triphasé, d’amplitude et de fréquence égales à celles des tensions de référence, on peut
considérer que le système en boucle ouverte est validé. La dernière étape du cycle de tests
expérimentaux est le test du système en boucle fermée. Pour des raisons de sécurité des
équipements, il est important de commencer toujours ce type de tests par des consignes qui
correspondent à des cas de fonctionnement à vide et à faible vitesse.
Le Tableau 3.10 montre les résultats de synthèse du modèle VDHL du dispositif de
commande utilisant la technique de MLI naturelle et vectorielle. A partir de ce tableau, il est
intéressant de constater que l’implantation de l’algorithme de MLI vectorielle nécessite
moins de ressources que la MLI naturelle.
Ressource
MLI naturelle MLI vectorielle
FPGA
Slice 5120 307 288
Flip flop 10240 232 211
4 input LUT 10240 525 485
18x 18 multiplier
40 1 1
block

Tableau 3.10 : Ressources du FPGA utilisées par le dispositif de commande

Les résultats de compilation de l’algorithme de commande utilisant la stratégie de MLI


vectorielle (lors de l’implantation sur le microcontrôleur) sont présentés Tableau 3.11. A
partir de la comparaison des ressources utilisées par l’algorithme et le nombre total
disponible dans le microcontrôleur, il est possible de constater que le microcontrôleur en
question est parfaitement adapté à de telles applications.
Ressources
MLI vectorielle
Microcontrôleur
Mémoire de données (octets) 512 124
Mémoire programme (octets) 8196 2850
Temps d’exécution ( µ s) 0,125 (8MHz) 480

Tableau 3.11 : Ressources du microcontrôleur utilisées par le dispositif de commande

La Figure 3.35 montre les résultats expérimentaux obtenus pour une variation de vitesse entre
± 700 tours/min à vide dans e cas d’une de la MLI vectorielle (implantation sur FPGA).

125
Implantation des lois de commande des machines électriques sur FPGA

Cette figure nous montre que le temps de réponse est légèrement supérieur à 1 s. Une des
contraintes du cahier des charges n’est donc pas respectée. L’allure de la tension montre que
pour des vitesses inférieures à N boost = 0.1 N nominale = 280 tours/min, l’amplitude de la

tension appliquée à la machine est égale à Vboost (voir Figure 3.23).

Figure 3.35 : Résultats expérimentaux dans le cas d’une implantation sur FPGA - stratégie de MLI
vectorielle

Figure 3.36 : Résultats expérimentaux dans le cas d’une implantation sur microcontrôleur – stratégie de
MLI vectorielle

126
Implantation des lois de commande des machines électriques sur FPGA

La Figure 3.36 montre les résultats expérimentaux obtenus pour une variation de la vitesse de
-700 tours/min à +700 tours/min avec une implantation de la MLI vectorielle sur
microcontrôleur. A partir de cette figure, on peut constater que le temps de réponse du
système en boucle fermée est de l’ordre de 1 s ce qui remplit bien les objectifs du cahier des
charges.
La Figure 3.37 nous montre les résultats expérimentaux obtenus sur un FPGA pour une
variation de vitesse entre 700 et 1400 tours/min dans le cas d’utilisation d’une MLI
vectorielle (voir Figure 3.37.a) et d’une MLI naturelle (voir Figure 3.37.b). On constate que
le dispositif de commande assure, dans les deux cas, le même fonctionnement à vitesse
variable mais pour des tensions d’alimentation différentes. Dans le cas de MLI vectorielle la
valeur maximale de la tension fournie est inférieure à celle du MLI naturelle. Cela nous
montre bien un des rôles attendus de la MLI vectorielle.

(a) (b)

Figure 3.37 : Résultats expérimentaux obtenus sur une FPGA par une MLI vectorielle (a) et par une MLI
naturelle (b).

(a) (b)

Figure 3.38 : Résultats expérimentaux obtenus sur un microcontrôleur par une MLI avec injection d’un
harmonique 3 (a) et par une MLI naturelle (b)

127
Implantation des lois de commande des machines électriques sur FPGA

Comme on peut le voir sur la Figure 3.38, pour la même vitesse de rotation, la valeur
maximale de la tension de ligne dans le cas de l’utilisation d’une MLI avec injection d’un
harmonique 3 (Figure 3.38.a) est inférieure de celle de la MLI naturelle (Figure 3.38.b).

3.4.5. Conclusion
Malgré une complexité apparente de l’algorithme de MLI vectorielle, l’originalité de notre
façon d’implanter cet algorithme nous montre bien la parfaite adéquation des FPGA avec
l’implantation de tel algorithme. Bien qu’il soit l’algorithme le plus simple, l’algorithme de
MLI naturelle requiert plus d’éléments logiques que celui de MLI vectorielle (Tableau 3.10).
Cependant, il nous reste à réaliser des petits ajustements pour répondre aux exigences de
cahier des charges en termes de performances.
L’implantation sur microcontrôleur, quant à elle, nous montre que l’AT90PWM3 peut
parfaitement accomplir la tâche de régulation en utilisant la technique de MLI vectorielle.
Contrairement à ce qui est fréquemment affirmé, la puissance de calcul d’un DSP n’est donc
pas nécessaire pour cet algorithme.

3.5. Problèmes souvent rencontrés lors de la validation expérimentale


Il est évident que la réalisation pratique des lois de commande est souvent confrontée à de
nombreux problèmes de mise en œuvre. Certains de ces problèmes proviennent
essentiellement des éléments physiques qui forment la chaîne d’entraînement, c’est-à-dire le
moteur et ses capteurs (génératrice tachymétrique, codeur incrémental), l’onduleur, la carte
de commande numérique. D’autres problèmes viennent de la structure même de la
commande implémentée. Sans être exhaustif, nous présentons dans ce paragraphe quelques
problèmes susceptibles d’être rencontrés lors de la phase de la validation expérimentale et
nous proposons les mesures qu’il faut prendre.

3.5.1. Problèmes provenant de la machine


Généralement la modélisation des machines électriques est basée sur des hypothèses
simplificatrices. Ces simplifications rendent le modèle développé approximatif. Aussi, la
détermination des différents paramètres physiques est souvent entachée d’erreurs (erreurs de
mesure, changement des valeurs des résistances en cours de fonctionnement…etc). Tout cela
peut contribuer à avoir un comportement différent de celui prévu par simulation lors de la
réalisation expérimentale. Pour résoudre ce type de problèmes, il est envisageable d’affiner
davantage la modélisation des processus et d’utiliser des algorithmes de commande capables
de s’adapter à la variation des paramètres de la machine (commande robuste).

128
Implantation des lois de commande des machines électriques sur FPGA

3.5.2. Problèmes provenant de l’onduleur


Pour que l’onduleur fonctionne en toute sécurité, il est nécessaire de laisser un laps de temps
(temps mort) avant la mise en conduction d’un interrupteur, lorsque nous venons demander
l’ouverture de l’interrupteur complémentaire du même bras. Le temps mort dépend
essentiellement du temps de commutation des semi-conducteurs de puissance. Il est imposé
par le constructeur ( ≥ 3.5 µs pour les interrupteurs de l’onduleur Semikron que nous avons
utilisé). L’insertion du temps mort dans le cycle de commande des interrupteurs réduit le
temps de conduction global et donc diminue l’amplitude de la tension de sortie. Pour palier
ce problème il suffit de majorer le signal de commande (tensions de références) avec la
même chute de tension provoquée par l’insertion du temps mort.
Un deuxième type de problème qui peut surgir vient de la forme du bus continu de
l’onduleur. Si le bus continu change de valeur (ondulation par exemple ou chute de tension),
la répercussion sur la tension de sortie de l’onduleur est directe. Donc pour avoir une tension
de sortie la plus fiable possible, il faut que la tension du bus continu soit la plus stable
possible.

3.5.3. Problèmes provenant de l’interface entre la machine et la carte numérique


Il est clair que les capteurs que nous utilisons pour mesurer les courants (sondes à effet Hall
+ CAN), la position et la vitesse (codeur incrémental, génératrice tachymétrique + CAN) ne
sont pas parfaits et des erreurs de mesure se glissent dans la chaîne d’acquisition des
données. Par exemple, l’utilisation d’un convertisseur analogique-numérique et de son circuit
de conditionnement associé introduit une erreur de gain, une erreur d’offset et un bruit de
quantification.
Dans le cas où les niveaux de quantification de la mesure ne correspondent pas aux niveaux
de quantification de la consigne et où le système de régulation comporte une action intégrale,
le signal de sortie va entrer en oscillation autour de la consigne. Un des moyens qui permet
d’annuler ces oscillations serait donc d’utiliser des consignes avec les mêmes niveaux de
quantification que la mesure ou bien de réduire le pas de quantification.

3.5.4. Problèmes provenant de l’interface entre la commande et l’onduleur


Il est évident que l’utilisation d’un compteur pour la génération du signal triangulaire, servant
dans le processus de modulation de la largeur d’impulsion, impose une quantification sur le
calcul des rapports cycliques des signaux PWM. En conséquence, le signal de sortie de
l’onduleur est lui aussi quantifié. Si la tension d’alimentation de la machine est différente de
celle calculé par la commande, le signal de sortie va être différent de la consigne imposée.
Pour réduire l’effet de quantification du rapport cyclique, il est possible de rehausser le
nombre de bits du compteur. L’inconvénient d’une telle solution est l’augmentation de la

129
Implantation des lois de commande des machines électriques sur FPGA

surface de silicium utilisée et la diminution du cycle de hachage (si on garde la même


fréquence d’horloge du compteur).
Il est possible que des perturbations électromagnétiques viennent se superposer sur les
signaux PWM et provoquent ainsi des changements des ordres de commutation des
interrupteurs. Pour remédier à ce type de problèmes, une des solutions proposées consiste à
utiliser un câble blindé (câble de liaison entre la carte de commande et l’onduleur)
[Coquerelle 99].

3.5.5. Problèmes provenant de la structure de la commande


L’action intégrale d’un régulateur exige une attention particulière. En effet, lorsque le signal
d’écart entre la consigne et la mesure est important pendant une longue période temporelle,
l’intégrateur continue à évoluer. Etant donné que le résultat d’intégration est représenté en
arithmétique virgule fixe, son domaine de définition est fixe. Si le résultat d’intégration
atteint une des deux limites et que l’intégrateur continue à intégrer, le signal de sortie prendra
une valeur erronée et peut créer de fortes oscillations sur la sortie. Pour résoudre ce type de
problème il est possible de limiter les actions intégrales et d’insérer des blocs anti-saturation
[Sicot 97]. Néanmoins, cette solution n’est pas sans inconvénients. Elle provoque le
changement des performances dynamiques du système de régulation.

3.6. Conclusion
Après une présentation détaillée de la méthodologie de mise en œuvre des algorithmes de
commande numérique sur FPGA, effectuée dans le chapitre 2, ce troisième chapitre a été
consacré à sa mise en pratique à sa validation expérimentale au moyen de la réalisation d’une
régulation de courant et de vitesse d’une machine à courant continu et d’une commande
scalaire d’une machine asynchrone. A travers la réalisation du premier exemple, nous avons
montré la parfaite adéquation de notre méthodologie avec la réalisation et la validation
expérimentale d’un système de commande de machine à courant continu. L’application de
notre méthodologie à la commande d’une machine asynchrone triphasée a également prouvé
son grand intérêt.

Dans les différentes publications étudiées, la MLI vectorielle est implantée de manière plus
au moins complexe. Dans ce chapitre, nous avons montré que grâce à une analyse détaillée
de cet algorithme, il est possible de l’implanter sur un FPGA en utilisant moins de ressources
physiques qu’il n’en faut pour l’implanter un algorithme de MLI naturelle. Cela montre donc
bien l’intérêt de l’analyse des algorithmes de commande des machines électriques pour
améliorer leur adéquation aux particularités des FPGA

130
Implantation des lois de commande des machines électriques sur FPGA
La dernière partie de ce chapitre a été consacrée à la présentation de quelques problèmes
typiques de mise en œuvre, à savoir les problèmes de modélisation, les problèmes
d’utilisation d’un onduleur, les problèmes d’interfaçage entre la carte numérique et la
machine et les problèmes inhérents à la structure de commande.
En ce qui concerne les problèmes liés à la modélisation de la machine nous avons vu que leur
résolution nécessite la synthèse des lois de commande en se basant sur un modèle le plus fin
possible de la machine. Pour les problèmes dus à l’onduleur (notamment les problèmes dus
aux temps morts), nous avons opté pour une augmentation des tensions de référence. Les
problèmes d’interfaçage entre la carte de commande et la machine peuvent être atténués en
respectant les règles de compatibilité électromagnétique. Concernant les problèmes dus à
l’action intégrale, ils peuvent être résolus par l’insertion de blocs de saturation et par la
gestion d’anti-saturations.

Dans le but de tester de notre méthodologie sur des applications plus complexes, nous
envisageons d’implanter la commande sans capteur d’une machine synchrone à aimants
permanents. Une étude comparative des différents algorithmes a déjà été réalisée et a fait
l’objet d’une validation expérimentale sur carte dSPACE [Boulbair 04]. Il a notamment été
montré que la méthode adaptative permet d’avoir de meilleurs résultats avec un faible coût
algorithmique. Il reste à implanter cette technique sur un FPGA en suivant la méthodologie
présentée dans ce mémoire.

131
Conclusion générale

L’objectif que nous nous sommes fixé dans cette thèse est double. Nous avons d’abord tenté
de proposer aux concepteurs de dispositifs de commande numérique des systèmes électriques
une méthodologie qui leur permet de concevoir plus aisément et plus rapidement des
systèmes. Puis nous avons appliqué et validé expérimentalement cette méthodologie sur des
exemples courants du domaine de la commande des machines.

Pour atteindre ces objectifs, nous avons commencé par situer la position des FPGA dans le
domaine de l’implantation des lois de commande des systèmes électriques. Nous avons donc
consacré le premier chapitre de ce travail à une description succincte de l’historique des
variateurs de vitesse des machines électriques, en particulier les variateurs des machines à
courant alternatif, et de leurs moyens technologiques de mise en œuvre. Nous avons montré
que les prix et les capacités initiales des FPGA étaient les obstacles principaux de la
vulgarisation des FPGA dans un domaine aussi exigent que celui de la commande des
systèmes électriques. Enfin, nous avons montré qu’à l’heure actuelle, il n y a pas de
dominance absolue d’une technologie sur une autre. La chute spectaculaire des prix des
FPGA instaure aujourd’hui une rude concurrence.

Toutefois, la mise en œuvre des algorithmes de commande numérique des systèmes


électriques, ne nécessite pas que la maîtrise des outils de développement propres à ces
composants. Il est également fortement lié à l’étude du système de commande global. Il est
donc important de suivre une méthodologie de travail qui permet de gérer au mieux le cycle
de développement. C’est dans ce sens que nous avons focalisé notre contribution. Nous
avons donc consacré le second chapitre à la présentation de la méthodologie que nous avons
développée et pratiquée. Elle consiste à résoudre progressivement les difficultés de
l’intégration, et permet de guider le concepteur pour :
- traduire les contraintes imposées dans le cahier des charges en spécifications
fonctionnelles ;
- établir les différents blocs fonctionnels du dispositif de commande à réaliser ;
- valider le modèle fonctionnel global ;
- concevoir les différents blocs de l’architecture à implanter à partir du modèle
fonctionnel ;

132
- valider le modèle architectural ;
- valider l’ensemble sur un banc d’essai expérimental.

Sans que cela ne remette en cause ni la nécessité d’une méthodologie de conception en


général ni celle que nous avons proposée en particulier, il nous parait important de souligner
que le caractère descendant (top-down) de notre méthodologie nécessite de remonter le cycle
de développement et de refaire toutes les étapes en cas de changement tardif de l’architecture
ou de modification des coefficients. Mais si l’identification du système, si la validation
fonctionnelle et si la validation de l’architecture ont été correctement faites, de tels
changements ne devraient pas se produire.

Comme perspective de ce travail, il nous paraîtrait intéressant d’étudier l’incidence des outils
de génération automatique de code, apparus récemment, sur la conception des dispositifs de
commande sur FPGA. Nous aimerions en particulier savoir si l’utilisation de ces outils doit
nous amener à modifier la méthodologie proposée, si des techniques d’optimisation peuvent
être intégrées dans ces outils, et dans quelle mesure la réduction de la durée de conception
apportée par ces outils se traduit par une diminution des performances de la solution obtenue.

Après une présentation de notre méthodologie dans un cas général, nous avons consacré la
troisième partie de ce travail au test de cette méthodologie sur deux exemples de commande
de machines électriques. A travers la réalisation du premier exemple, nous avons pu montrer
que notre méthodologie s’applique parfaitement à l’implantation d’une commande en vitesse
et en courant de la machine à courant continu. Le deuxième exemple a été consacré à
l’implantation de la commande scalaire de la machine asynchrone. La réalisation de cet
exemple a permis de montrer encore une fois la bonne adéquation de notre méthodologie
pour l’implantation des lois de commande des machines à courant alternatif. Il a également
permis de montrer l’apport de l’utilisation des FPGA pour la commande des machines à
courant alternatif. En effet, l’adoption d’une structure originale pour l’implantation de
l’algorithme de MLI vectorielle a permis l’obtention d’un taux d’occupation sur le
composant plus faible que celui d’une MLI naturelle.

Bien que ces deux exemples nous permettent de valider notre méthodologie, nous estimons
que certaines étapes de la méthodologie ne sont pas suffisamment exploitées, notamment
l’algorithme de détermination automatique de la largeur des bus. Il nous parait donc justifié

133
d’étudier l’application de cette méthodologie à des exemples de commande plus complexes.
Nous pensons en particulier à l’implantation de la commande sans capteur mécanique des
machines à courant alternatif pour lesquels des travaux de validation sur carte dSPACE ont
déjà été réalisés.

134
Bibliographie

[Abrahamsen 96] F. Abrahamsen, J. K. Pedersen, F. Blaabjerg, “State-of-the-art of optimal


efficiency control of low cost induction motor drives”, PEMC 96, Budapest, Hungary, 2-4
September 1996.

[ABB 1] ABB, “La technologie DTC ou le contrôle direct du couple”, Guide technique n°1,
disponible sur le site www.abb.com.
[Adams 02] L. Adams, “Choosing the right architecture for real signal processing designs”,
Texas Instruments, White paper, SPRA879, November 2002
[Ahmed 84] M. E. Ahmed, P. R. Belanger, “Scaling and Roundoff in Fixed-Point
Implementation of Control Algorithms”, IEEE Transactions on Industrial Electronics, Vol
31, No 3, pp 228-234, 1984.
[Ahmed 95] I. Ahmed, “Digital control applications with the TMS320 Family”, Selected
application notes, Texas Instruments, 1995.
[Airiau 98] R. Airiau, J. M. Bergé, V. Olive, J. Rouillard, “VHDL : langage, modélisation,
synthèse”, Presses polytechniques et universitaires romandes, 1998.
[Altera] Altera Inc – FLEX 10K, Data sheet. V4.1 2001.
[Åström 87] K.J. Åström, B. Wittenmark, “Computer controlled systems”, Prentice Hall,
Englewoods Cliffs, 1987.
[Åström 95] K.J. Åström, H. Steingrimsson, “Implementation of a PID Controller on a
DSP”, Digital Control Applications with the TMS320 Family. Selected Applications Notes.
Texas Instruments. Pag. 205-215, 1995.
[Atmel] http://www. Atmel.com
[Atmel 05] http://www.atmel.com/dyn/resources/prod_documents/doc4317.pdf
[Auger 03] F. Auger, Z. Boulbair, F. Miqueau, “Estimation par maximum de vraisemblance
de la dérivée d’un signal bruité, Application à la caractérisation de vérins pneumatiques”,
GRETSI’03 - Colloque GRETSI sur le Traitement du Signal et des Images, Paris, pp 178-
181, septembre 2003.
[avrfreaks] http://www.avrfreaks.net/
[Bajard 04] J. C. Bajard, J. M Muller, “Calcul et Arithmétique des Ordinateurs”, Traité IC2
Information - Commande – Communication, Edition Hermes, 2004.
[Bednara 03] M. Bednara, K. Danne, O. Oberschelp, F. Slomka, J. Teich, “Design and
Implementation of Digital Linear Control Systems on Reconfigurable Hardware”, EURASIP
Journal on Applied Signal Processing, pp 594-602, 2003.
[Bennett 01] S. Bennett, “The past of PID controllers”, Annual Reviews in Control n°25,

135
pp43-53, 2001.
[Berthiau 01] G. Berthiau, P. Siarry, “Etat de l’art des méthodes d’optimisation globale”,
Rairo Operations Research, Vol 35, pp 329-365, 2001.
[Black 34] H.S. Black, “Stabilized Feedback Amplifiers”, Bell Syst. Tech. J., 1934.
[Blaschke 72] F. Blaschke, “The principle of field orientation as applied to the new
Transvector closed-loop control system for rotating-field machines”, Siemens review, Vol.
39, no 5, 1972.
[Bode 40] H.W. Bode, “Feedback Amplifier Design”, Bell System Tech. J., vol. 19, p. 42,
1940.
[Bomar 98] B. W. Bomar, “Finite Worldlength Effects”, The Control Handbook, Chap 3, pp
1-18, CRC Press / IEEE Press, 1998.
[Bonnal 98] J. Bonnal, G. Séguier, “Entraînement électriques à vitesse variables - Tome 2 :
Rappels d'électronique de puissance et d'automatique, les variateurs électroniques de
vitesse”, Editions Tec&Doc, 1998.
[Boulbair 04] Z. Boulbair, M. Hilairet, F. Auger, L. Loron, “Sensorless control of a PMSM
using an efficient extended Kalman filter”, proc ICEM 2004.
[Boulbair 05a] Z. Boulbair, R. Aubrée, E. David, F. Auger, L. Loron, “A comparison of
microcontroller– and FPGA-based implementations of three-phase induction motor control
strategies”, proc Electrimacs’05, April 2005.
[Boulbair 05b] Z. Boulbair, R. Aubrée, F. Auger, E. David, L. Loron, “Comparing
Microcontroller- and FPGA-Based Implementations Of The Space Vector Control Algorithm
Of Three-Phase Induction Motors”, proc Electromotion’05, September 2005.
[Boulbair 05c] Z. Boulbair, “Algorithme d’optimisation des largeurs de bus d’une
architecture en virgule fixe pour les systèmes de commande numérique des systèmes
électriques”, JCGE 2005, Montpellier.
[Caron 95] Caron J.-P., Hautier J.-P., Modélisation et commande de la machine asynchrone,
Editions Technip, Paris, 1995.
[Castro 03] A. D. Castro, P. Zumel, O. Garcia, T. Riesgo, J. Uceda, “Concurrent and Simple
Digital Controller of an AC/DC Converter with Power Factor Correction Based on an
FPGA”, IEEE Transactions on Power Electronics, Vol 18, No 1, pp 334-343, January 2003.
[Chang 99] K. C. Chang, “Digital Systems Design with VHDL and Synthesis: An integrated
approach”, IEEE Computer Society, 1999.
[Chujo 02] N. Chujo, “Fail-safe ECU System Using Dynamic Reconfiguration of FPGA”,
R&D Review of Toyota CRDL, Vol 37, No 2, pp 54-60, Jun 2002.

136
[Constantinides 00] G. A. Constantinides, P. Y. K. Cheung, W. Luk, “Roundoff-Noise
Shaping Filter Design”, IEEE International Symposium on Circuits and Systems, ISCAS
2000, pp IV.57-IV.60, 2000.
[Coors 02] M. Coors, H. Keding, O. Lüthje, H. Meyr, “Design and DSP Implementation of
Fixed-Point Systems”, EURASIP Journal on applied Signal Processing, pp 908-925, 2002.
[Coquerelle 99] J. L. Coquerelle, “C.E.M et Electronique de Puissance”, Collection Sciences
et Technologies, Editions Technip, 1999.
[de Larminat 00] P. de Larminat, “Automatique : Commande des Systèmes Linéaires”, 2éme
édition, Hermès, 2001.
[Delta 1] T. Delta, “Motion And Control Ring Optical (MACRO)”, Documentation
disponible à www.deltatau.com
[Delta 2] T. Delta, Carte PMAC, Documentation disponible à www.deltatau.com

[Depenbrock 85] M. Depenbrock, “Direkte Selbstregelung (DSR) für hochdynamische


drehfeldantriebe mit stromrichterspeisung”, ETZ-Archi, 1985.
[Egon 01] H. Egon, M. Marie, P. Porée, “Traitement du Signal et Automatique -
Asservissement linéaire et représentation d’état”, Tome 2, 2001, Hermann.
[Finch 89] J.W. Finch, P. P. Acarnley, D. J. Atkinson, “Field-oriented induction motor
drives: progress”, EPE'89, Aachen, Germany, 9-12 October 1989.
[Foussier 98] P. Foussier, “Contribution à l’Intégration des Systèmes de Commande des
Machines Electriques à Courant Alternatif”, thèse de doctorat, Institut National des Sciences
Appliquées de Lyon, 1998.
[Freescale 03] Frescale (ex Motorla), “3-Phase AC MOtor control with V/Hz Speed Closed
Loop Using 56F800/E”, Application Note 1958/D, disponible sur le site
http://www.frescale.com, septembre 2003.
[Goodwin 92] G.C. Goodwin, R.H. Middleton, H.V. Poor, “High-speed digital signal
processing and control”, Proc. of the IEEE, Vol. 80, no. 2, pp. 240-259, february 1992.
[Grellet 97] G. Grellet, G. Clerc, “Actionneurs Electriques: principe, modèles”, Edition
Eyrolles, 1997.
[Guibert 03] C. Guibert, Z. Boulbair, F. Auger, L. Loron, “Design and Implementation of
Digital Controllers on FPGA Devices”, proc IFAC Workshop on Programmable Devices and
Systems, Ostrava, pp 134-139, 2003.
[Hasse 69] K. Hasse, “Zur Dynamik drehzahlgeregelter antriebe mit stromrichtergespeisten
asynchron-kurzschlußläufermaschinen”, Diss. Thesis, Darmstadt, 1969.
[Helie 05] J. F. Helie, “Le FPGA, plate-forme privilégiée pour le traitement du signal”,
Revue Electronique, juin 2005.

137
[Hunt] http://www.hunt-dsp.com
[Istepanian 01] R. Istepanian, J. F. Whidborne, “digital controller implementation and
fragility: A modern perspective”, Springer, 2001.
[IAR] http://www.iar.com/
[Jahns 01] T. Jahns, E. Owen, “AC adjustable-speed drives at the millennium : how did we
get here”, IEEE Trans. on Power Electronics, Vol. 10, n°1, jangada 2001.
[Kamen 98] A.W. Kamen, “Fundamentals of Linear Time varying Systems”, The Control
Handbook, Chap 25, pp 451-468, CRC Press / IEEE Press, 1998.
[Kessler 58] C. Kessler, “Das Symmetrische Optimum”, Regelungstechnik, Vol. 6, 1958.
[Kim 98] S. Kim, K. I. Kum, W. Sung, “Fixed Point Optimization Utility for C and C++
Based Digital Signal Processing Programs”, IEEE Transactions on Circuits and Systems- II:
Analog and Digital Signal Processing, Vol 45, No. 11, pp 1455-1462, 1998.
[Kotteri 04] K. A. Kotteri, A. E. Bell, J. E . Carletta, “Quantized FIR Filter Design: A
Collaborative Project for Digital Signal Processing and Design Courses”, Proceedings of the
2004 American Society for Engineering Education Annual Conference & Exposition, 2004,
Virginia.
[Kovacs 59] P. K. Kovacs, “Transiente Vorgänge in Wechselstrom Maschinen”, Verlag der
Ungarischen Akademie der Wissenschaften, Budapest, 1959.
[Kum 01] K. I. Kum, W. Sung, “Combined Word-length Optimization and High-Level
Synthesis of digital Signal Processing Systems”, IEEE Transactions On Computer-Aided
Design of Integrated Systems, Vol 20, No 8, pp 921-930, 2001.
[Langlois 99] J. M. P. Langlois, D. Al-khalili, R. J. Inkol, “A high performance, wide
bandwidth, low cost FPGA-based quadrature demodulator”, Electrical and Computer
Engineering, IEEE Canadian Conference in ECE, Vol 1, pp 497-502, May 1999.
[Leonard 96] W. Leonard, “Controlled AC drives”, a successful transition from ideas to
industrial practice, Control Eng. Practice, Vol. 4, no 7, p. 897-908, 1996.
[Leonhard 85] W. Leonhard, “Control of electrical drives”, Springer-Verlag, Berlin, 1985
(1ère édition).

[Leonhard 85] W. Leonhard, “Control of electrical drives”, Springer-Verlag, Berlin, 1985


(1ère édition).
[Leonhard 91a] W. Leonhard, “30 years space vector, 20 years field orientation, 10 years
digital signal processing with controlled AC-drives”, a review (Part 1), EPE Journal, Vol. 1,
no 1, pp. 13-20, July 91.
[Leonhard 96] W. Leonhard, “Control of electrical drives”, 2nd Ed, Springer, 1996
[Lilen 03] H. Lilen, “Une (brève) histoire de l’électronique”, Editions Vuibert, 2003.

138
[Lorentz 94] D.L. Lorentz, T. A. Lipo, D.W. Novotny, “Motion control with induction
motors”, IEEE Proc., Vol. 82, no 8, August 1994.
[Loron 97] L. Loron, “Tuning of PID controllers by the non-symmetrical optimum method”,
Automatica, Vol. 33, n°1, 1997.
[Loron 99] L. Loron L, “Compte-rendu des essais complémentaires d’Identification de la
Machine à rotor bobiné de l'IRCyN avec analyse des effets de saturation sur l'estimation des
paramètres”, 1999, disponible sur le site : http://www.irccyn.ec-
nantes.fr/hebergement/BancEssai/RapportEssais.html

[Mathworks] http://www.mathworks.com/products/modelsim/
[Maxwell 1868] J.C. Maxwell, “On Governors”, Proc. Royal Soc. London, vol. 16, pp. 270-
283, 1868.
[Menard 02a] D. Menard, “Méthodologie de compilation d’algorithmes de traitement du
signal pour les processeurs en virgule fixe sous contrainte de précision”, thèse de doctorat de
Rennes 1, décembre 2002, Rennes.
[Menard2 02b] D. Menard, O. Sentieys, “Automatic Evaluation of the Accuracy of Fixed-
point Algorithms”, DATE’02, Paris, March 2002.
[Mentor] http://www.mentor.com
[Meyer-Baese 01] U. Mayer-Baese, “Digital Signal Processing With Field Programmable
Gate Arrays”, Springer-Verlag Berlin Heidelberg, 2001.
[Microchip] http://www.microchip.com
[Minorsky 22] N. Minorsky, “Directional Stability and Automatically Steered Bodies”, J.
Am. Soc. Nav. Eng., vol. 34, p. 280, 1922.
[Monmasson 02] E. Monmasson, Y. Chapuis, “New Technology Contribution of FPGA to
the Control of Electrical Systems, a Review”, IEEE Industrial Electronics Society
Newsletter, Vol 49, No 4, pp 8-15, 2002.
[Monmasson 93] E. Monmasson, “Architecture de Dispositifs de Commande Numérique –
Application à la variation de vitesse, Réalisation à l’aide de prédiffusés reprogrammables”,
thèse de doctorat de l’INPT, 1993, Toulouse.
[Nec 03], Nec Corp., “An Introduction to Space Vector Modulation using NECs 8-bit Motor
Control Microcontrollers,” Document No. U16699EE1V0AN00, May 2003. Disponible sur
le site : http : //www .ee.nec.de/products / micro/0178k/78k0/index.html
[Nyquist 32] H. Nyquist, “Regeneration Theory”, Bell Syst. Tech. J., 1932.
[Pinard 04] M. Pinard, “Commande Electronique des Moteurs Electriques”, Dunod, 2004
[Pirsch 95] P. Pirsch, N. Demassieux, “VLSI Architectures for Video Compression - A
Survey”, Proceedings of the IEEE, Vol 83, No 2, pp 220-246, February 1995.

139
[placeaudesign] http://www. Placeaudesign.com
[Prodic 01] A. Prodic, D. Maksimovic, R. W. Erickson, “Design and Implementation of a
Digital Controller for a High- Frequency Switching DC-DC Power Converter”, ICON’01, pp
893-898, 2001.
[Rivoire 89] M. Rivoire, J. L. Ferrier, “Traitement du Signal Systèmes”, Edition Eyrolles,
1989.
[Routh 1887] E.J. Routh, “A Treatise on the Stability of a Given State of Motion”, London:
Macmillan & Co., 1877.
[Santina 98a] M. S. Santina, A. R. Stubberud, G. H. Hostetter, “Discrete-time Equivalents to
Continuous-time Systems”, The Control Handbook, Chap 13, pp 265-279, CRC Press / IEEE
Press, 1998.
[Santina 98b] M. S. Santina, A. R. Stubberud, “Sample Rate Selection”, The Control
Handbook, Chap 16, pp 313-321, CRC Press / IEEE Press, 1998.
[Santina 98c] M. S. Santina, A. R. Stubberud, “Quantization Effects”, The Control
Handbook, Chap 15, pp 301-311, CRC Press / IEEE Press, 1998.
[Seguier 94], G. Seguier, F. Notelet, “Electrotechnique Industrielle”,Editons Tec & Doc,
1994.
[Sicot 97] L. Sicot, “Contribution à l’Intégration de Limitations dans les Lois de Commandes
de la Machine Synchrone à Aimants Permanents: Approche théorique et réalisation
expérimentales, Commande sans capteur mécanique”, thèse de doctorat de l’Université de
Nantes, GE44, janvier 1997, Saint Nazaire.
[Stefani 98] B. T. Stefani, W. A. Wolovich, “Analysis methods”, The Control Handbook,
Chap 8, pp 115-130, CRC Press / IEEE Press, 1998.
[Steinbuch 94] M. Steinbuch, G. Schootstra, H. T. Goh, O. Bosgra, “Closed Loop l1 Scaling
for Fixed-point Digital Control Implementation”, Proceeding of the American Control
Conferences, pp 1157-1161, 1994.
[Sung 95] W. Sung, K. Kum, “Simulation Based Word Length Optimization Method for
fixed point Digital Signal Processing Systems”, IEEE Transactions on Signal Processing, Vol
43, No 12, pp 3087-3090, 1995.
[Takahashi 02] T. Takahashi, “New Digital Control Method for High Performance AC
Servo Motor Drive, Accelerator Servo Drive Development for Military Application”,
Military Electronics Conference, Sept 24-25, 2002.
[Thoma 05] Y. Thoma, “Tissu numérique cellulaire à routage et configuration dynamiques”,
thèse de doctorat de l’Ecole Polytechnique Fédérale de Lausanne, 2005, Lausanne.

140
[Toliyat 04] H.A. Toliyat, S.G. Campbell, “DSP-based electromechanical motion control”,
[Tzou 97] Y. Y. Tzou, H. J. Hsu, ”FPGA Realization of Space-Vector PWM Control IC for
Three-Phase PWM Inverters”, IEEE Transactions on Power Electronics, Vol 12, No 6, pp
953-936, November 1997.
[Vas 90] P. Vas, “Vector control of AC machines”, Oxford University Press, Oxford, 1990.
[Vas 98] P. Vas, “Sensorless vector and direct torque control”, Oxford University Press,
Oxford, 1998.
[Warnes 04] P.Warnes, T.Hollis, “Heron-IO2 version 2 user manual”, HUNT
ENGINEERING, Document Rev H, March 25, 2004.
[Wheatley 93] C. T. Wheatley, “Drives”, EPE'93, Brighton, 13-16 September 93.
[Wilson 62] T.G Wilson, P.H. Trickey, “DC machine with solid State commutation”, AIEE
paper n°CP62-1372, oct 7, 1962.
[Wyss 89] W. Wyss, “AC servo drives”, EPE'89, Aachen, Germany, 9-12 October 1989.
[Xilinx] http://www.xilinx.com
[Yaskawa 1] Yaskawa, “Sigma II Series Servo System - User’s Manual”, Documentation
constructeur disponible à www.yaskawa.com.
[Yu 98] Z. Yu, D. Figoli, “AC induction motor control using constant V/Hz principle and
space vector PWM technique with TMS320C240,” Application Note SPRA284A Disponible
sur le site http://www.ti.com, april 1998.

141
Implantation d’algorithmes de commande sur FPGA :
une méthodologie pour les systèmes électriques

L’apparition ces dernières années de nouveaux composants FPGA, possédant des capacités
fortement accrues et proposés à des prix très compétitifs, a fait de ces composants une alternative
très sérieuse aux solutions logicielles dans le domaine de la commande numérique des systèmes
électriques. Cependant, si l’implémentation sur des cibles logicielles est abondamment
documentée, que ce soit dans des travaux scientifiques ou des notes d’application de constructeurs,
l’implémentation matérielle l’est beaucoup moins. Pour réduire le temps de développement d’une
application sur FPGA et travailler avec plus d’efficacité, il est pourtant nécessaire de disposer
d’une méthodologie rationnelle, qui guide le concepteur pendant toutes les phases de conception.
C’est dans ce sens qu’une méthodologie de mise en œuvre des algorithmes de commande
numérique des systèmes électriques sur FPGA a été proposée. Sa validité a été testée sur différents
algorithmes de commande numérique des machines électriques, notamment la variation de vitesse
et de courant de la machine à courant continu ainsi que la commande scalaire de la machine
asynchrone. Les résultats obtenus montrent l’intérêt de notre méthodologie pour réduire le temps
de conception. L’implémentation de la MLI vectorielle est l’un des algorithmes qui montre que les
FPGA conviennent particulièrement pour la commande des systèmes électriques. Une comparaison
entre l’implémentation de cet algorithme sur microcontrôleur et sur FPGA a donc été réalisée.

Mots-clés :

Méthodologie de mise en œuvre, optimisation de la largeur des bus, implémentation sur FPGA,
implémentation sur microcontrôleurs, adéquation algorithme architecture.

Implementing Digital Control Algorithms on FPGA:


A methodology for variable speed drives design

Implementing digital control algorithms on FPGAs : A methodology for variable speed drives

The era of dominance of microcontroller and digital signal processors (DSP) on digital controllers
is maybe over. In the past, the use of FPGAs was constrained by their small number of gates and
their high cost. But nowadays, the international market is explosed by the advent of new FPGAs
with a large number of gates and very competitive prices. However, the main problem for the
implementation of control algorithms on these components is their complexity and their long
conception time. In this thesis, we propose a top-down methodology for the design of digital
controllers on FPGA. This methodology was confirmed by several case studies, such as speed and
current regulation of DC machines and scalar control of induction motors. FPGAs match
particularly well for the digital control of electrical drives, as can be seen in many examples, one
of them being the Space Vector Modulation. For the latter algorithm, a comparison between
microcontroller- and FPGA-based implementations has been performed.

Keywords:
FPGA, microcontroller, design and implementation of digital control algorithms, word length
optimization, variable speed drives.

Discipline : Génie Electrique

N° : ED 366-235

View publication stats