Professional Documents
Culture Documents
de rgulation thermique
(niveau BAC + 2)
en utilisant
lenvironnement MATLAB
pour la partie commande
Patrick BRUNET
Emile FERRERE
Cuve dont la
temprature est
rguler
sonde PT 100
220V/50Hz
Thermoplongeur
Bloc de puissance
gradipack
Fonctions gres
par lordinateur
*
+ E* uc Bloc de systme :
consigne Rgulateur puissance : cuve
C.N.A. GRADIPACK
-
*
chantillonnage Capteur :
sonde PT 100
230 V
Ucom
0.5 V 8.5 V
8
Evaluation des pertes thermiques :
Les pertes thermiques peuvent se mettre sous la forme Pth = K .( ext ) (Loi de FOURIER).
Lexprience montre quelles sont faibles. On les estimera 50 W pour un = 25C. Do
1
K = 2WK
Bilan de puissance sur la cuve :
La puissance fournie par le thermoplongeur : PT, sert lever la temprature de leau et participe
aux pertes soit :
d ( ini )
PT = C. + K .( ext )
dt
avec : temprature de leau
ini : temprature initiale de leau
ext : temprature extrieure la cuve
1
Loprateur retard est un oprateur chantillonn, sa sortie est mise jour toutes les 5
z
secondes. Il permet de mmoriser la valeur de lerreur linstant t-1 . Ainsi, le circuit de diffrence
permet dobtenir la variation de lerreur entre 2 instants dchantillonnage. Le contrleur sera donc
sensible lerreur de temprature et sa variation.
B.2.4. Prise en compte dune perturbation
La perturbation pourra tre simule par un crneau de puissance ngatif limit dans le temps (et
dcal par rapport au dbut de la simulation) traduisant un apport deau froide par exemple.
Si la tension est de 2V, elle est alors dans la classe petite et bien sr ni moyenne ni
grande . Le degr dappartenance de la valeur 2V la classe petite est de 1 et 0 pour les 2 autres.
On retrouve l une logique binaire o ltat dun comparateur ne peut tre que 0 ou 1 .
linconvnient de cette reprsentation est que la valeur 2.95V appartient la classe petite alors que la
valeur 3.05V appartient la classe moyenne et pourtant les valeurs sont proches. Ceci est d la
dfinition des 3 sous-ensembles classiques petite , moyenne e t grande qui ont une
frontire nette do cette discontinuit. Si le rsultat de la mesure est lgrement bruit (cas trs
frquent videmment), on pourra basculer dun cot lautre de la frontire .
La notion de sous-ensemble flou permet dviter cette discontinuit brutale. Cette opration
sappelle la fuzzification . La sortie du capteur est appele variable linguistique puisquelle
pourra prendre les valeurs linguistiques petite , moyenne ou grande , mais on va modifier
comme indiqu ci-dessous les frontires entre ces valeurs linguistiques, cest--dire les formes des
fonctions dappartenance.
: degr dappartenance
Dans cette reprsentation la valeur de tension 2V sera la fois petite et moyenne ; de plus,
on va prciser de combien. On dfinit alors un degr dappartenance chacune de ces classes :
petite = 0.8 et moyenne = 0.2
On peut dire que lordre de grandeur de la tension issue du capteur est pris en compte par les
valeurs linguistiques, puis la valeur prcise est contenue dans les degrs dappartenance (on parle aussi de
mesure dappartenance ou de degr de certitude).
Remarques :
Les profils des frontires peuvent tre varis : triangle, trapze, sigmode, courbe de Gauss, etc.
Il ny a rien de flou dans cette reprsentation, une mme mesure peut appartenir plusieurs
classes avec un degr dappartenance prcis dans chaque classe.
La valeur de la tension issue du capteur est ici considre comme prcise comme en
automatique classique (on lappelle singleton).
Cest le rle de lexpert que de dfinir les valeurs linguistiques de la variable.
0.8
variable : e
0.2
2V
variation de
lerreur : e : degr dappartenance
0.6
variable : e
0.4
2.2V
: degr dappartenance
sortie : s
petite moyenne grande
1
varaible : s
0
1.5V 3V 4.5V 6V 7.5V 9V
Lentre e a t partitionne en 5 valeurs linguistiques ainsi que e. Elles peuvent tre positives
ou ngatives.
La sortie s a t partitionne en 3 valeurs linguistiques ; elle pourra ntre que positive (cas de la
figure) dans le cas o la partie puissance est commande par une tension (0, 10V) par exemple.
On a gradu les axes donnant la variation des variables en Volt pour faciliter la comprhension,
mais en pratique les tests seront faits sur les valeurs chantillonnes des entres (on passe par un C.A.N.)
B.3.3.2. Base de rgles dinfrence
Le rle de lexpert est ici prsent car cest lui qui va fixer les rgles de la commande qui vont
porter uniquement sur les valeurs linguistiques des variables.
Soit par exemple la liste de rgles suivantes (qui rsultent de la connaissance de lexpert) :
-R1 : SI (e) est petite ET (e) est petite ALORS (s) est petite
-R2 : SI (e) est petite ET (e) est moyenne + ALORS (s) est petite
-R3 : SI (e) est moyenne + ET (e) est petite ALORS (s) est petite
-R4 : SI (e) est moyenne + ET (e) est moyenne + ALORS (s) est moyenne
-R5 : SI (e) est grande + ET (e) est moyenne + ALORS (s) est moyenne
- ....
Le tableau ci-dessous reprsente la base de rgles en donnant les valeurs de la sortie pour les
diffrentes valeurs linguistiques de e et e :
On va donc tudier maintenant le rle de chaque rgle active et voir concrtement comment on
traduit les oprations de conjonction (ET) et dimplication (ALORS).
Pour traduire le ET (cest--dire la conjonction des prmisses), on peut utiliser la fonction MIN :
on prendra la valeur minimale des 2 degrs dappartenance des prmisses. La signification
physique de ce choix est de conserver linformation la plus sre.
Le rsultat est un nouveau degr dappartenance au sous ensemble flou de la sortie.
Ainsi pour R1, on a :
le MIN de 0.8 et 0.6 est 0.6, donc pour (s) : petite = 0.6
On fait ensuite la mme chose pour toutes les rgles actives et on obtient les rsultats suivants
pour la variable linguistique de sortie (s) :
Pour R1 : petite = 0.6
Pour R2 : petite = 0.4
Pour R3 : petite = 0.2
Pour R 4 : moyenne =
0.2
Lopration nest pas termine car les 4 rgles tant actives en mme temps, il faut faire ce que
lon appelle lagrgation des rgles (lassemblage)
Les rgles R1, R2 et R3 concernent la mme valeur linguistique petite de la variable de sortie
alors que R 4 porte sur la valeur moyenne . On utilise ici loprateur MAX, cest--dire que pour
chaque valeur linguistique de sortie concerne on va prendre la valeur maximum des degrs
dappartenance.
Le rsultat de lagrgation des rgles donne donc la variable s petite avec un degr
dappartenance de 0.6 en mme temps que moyenne avec un degr dappartenance de 0.2.
A ce stade, on a donc la sortie dfinie sous forme linguistique avec des degrs dappartenance
prcis. Il faut maintenant passer une grandeur qui, elle, sera interprtable par linterface de commande.
B.3.3.4. Dfuzzification
: degr dappartenance
sortie : s
petite moyenne grande
valeur de la 1
commande
0.6
0.2 variable : s
0
1.5V 3V 4.5V 6V 7.5V 9V
La figure ci-dessus indique comment on interprte lagrgation des rgles. Le sous ensemble
petite est limit par le degr dappartenance 0.6 et le sous ensemble moyenne par 0.2 (on prend
le MIN entre la fonction dappartenance de la valeur linguistique de la sortie concerne et le trouv par
lagrgation des rgles). On obtient ainsi toute la surface grise. Pour obtenir le signal de commande
envoyer linterface, on utilise le plus souvent la rgle du centre de masse cest--dire que lon
calcule le barycentre de la surface pour obtenir la valeur de la commande.
B.3.3.5. Conclusion
CAN
consigne ajustement des chelles Base de rg-
les en ROM
+
e
CAN
Fuzzification
CAN sortie
d/dt Moteur
retour - dinfrence Dfuzzification
e
en RAM
Fuzzification
Les grandeurs relles consigne et retour sont numrises avec ces convertisseurs AN puis
lerreur (ventuellement la variation de lerreur) est fuzzifie. La base de rgles qui sera stocke en
ROM sera active et le moteur dinfrence permettra dlaborer une sortie qui sera ensuite dfuzzifie et
convertie en signal analogique.
On peut constater que dans son principe mme le contrleur logique floue nest pas
linaire.
En effet lactivation des rgles dinfrence nest pas un processus linaire pas plus que la
traduction mathmatique que lon en donne (algorithme MAX MIN).
On a utilis ici lalgorithme MIN MAX (MIN pour la conjonction des prmisses et limplication
des rgles, MAX pour lagrgation des rgles). Mais, il existe dautres possibilits : on peut par exemple
utiliser lalgorithme PROD MAX (PROD pour la conjonction des prmisses et limplication des rgles,
MAX pour lagrgation des rgles) cest--dire que lon fait le produit des degrs dappartenance obtenu
avec chaque rgle pour dfinir le degr dappartenance pour la sortie.
Il existe un autre type de contrleur flou dit de type SUGENO. Les prmisses des rgles sont aussi
linguistiques mais les conclusions sont labores directement sous une forme polynomiale avec des
coefficients dfinis lavance. Lavantage de ce type de rgulateur est quil est possible dintroduire des
algorithmes dapprentissage pour adapter les coefficients. Cest ainsi quil existe des contrleurs flous
adaptatifs. La technologie des rseaux de neurones peut tre utilise pour lapprentissage.
tape 1
La commande Edit permettra de choisir le nombre dentres-sorties (2 entres et 1 sortie dans
notre application). On pourra renommer loisir ces diffrentes variables.
tape 2
Double-cliquer sur chaque variable dentre ou de sortie pour dfinir les valeurs linguistiques et la
forme des fonctions dappartenance. Pour cela utiliser dans le nouveau menu Edit la commande
Add MFs, ce qui signifie ajouter des fonctions dappartenance. On pourra choisir des fonctions
triangulaires [trimf], trapzodales [trapmf], etc
tape 3
Double-cliquer sur le bloc central (mandani) pour entrer les rgles dinfrences choisies.
tape 4
Pour visualiser le comportement du contrleur ainsi cr, on pourra utiliser dans le menu View, la
commande View rules. Il est alors possible de fixer les valeurs des variables dentres, de voir quelles
sont les rgles dinfrences actives et de lire la valeur de la tension de commande correspondante.
B.3.4.2. Sauvegarde du contrleur dans lespace de travail matlab
Pour que le contrleur ainsi cr soit disponible dans un modle simulink, il faut quil soit
sauvegard dans lespace de travail. Pour cela dans le menu File, utiliser loption Save to workspace.
Ainsi, son contenu sera mis dans un fichier de type *.fis (chauff3.fis dans lexemple ci-dessus) auquel
il sera fait appel dans simulink.
Pour incorporer le correcteur flou dans son propre modle simulink, le plus simple est den copier
un partir dune dmo de MATLAB. Ensuite, on double-cliquera sur le modle en entrant dans la fentre
le nom du fichier (chauff3 comme indiqu prcdemment)
Les deux blocs Sfunction (Analog Input, Analog Output) correspondent au driver Matlab de la
carte FASTLAB, permettant de gnrer la tension de commande du Gradipack et de rcuprer la tension
dlivre par le transmetteur (image de la temprature de leau du bac).
Ce driver a t ralis en se basant sur lexemple du driver de la carte Keithley fourni avec les
botes outils de MATLAB (cf. Creating Device Drivers doc. Real-Time Workshop). Le driver nest
pas complet, tant donnes toutes les fonctionnalits de la carte (E/S logiques, Timer), mais la partie qui
concerne notre systme fonctionne.
Remarque : Le driver fonctionne sous Dos, Windows 9x, mais pas sous WinNT.
C.3.1. Insertion et paramtrage du bloc Analog Input
Dans le navigateur de simulink,
Dvelopper larborescence Real-Time Workshop
Dvelopper la sous-arborescence Eurosmart FASTLAB
Slectionner le bloc Sfuntion Analog Input
Faire glisser le bloc slectionn dans le modle simulink regul_rt.mdl
Double-Cliquer sur le bloc Analog Input du modle regul_rt.mdl
Adresse de base
de la carte E/S
Etendue de la plage
dentre en Volts
Gain en entre
(1.0 - 8000.0)
Numro de la voie
dentre (0 - 7)
Priode
dchantillonnage
Accs la carte
dentres / sorties
Adresse de bas
de la carte E/S
Etendue de la plage
de sortie en Volts
Valeur de sorti
avant simulatio
en Volts
Valeur de sortie
aprs simulation
en Volts Numro de la vo
(channel 1 / chann
Priode
dchantillonna
Accs la carte
dentres / sorties
Cliquer sur longlet General et configuer les paramtres du bloc scope suivant limage ci-dessous
Ne pas cocher
la case
Nombre de
graphes tracs
Echelle des temps
1000 s
Affichage en
continu
Ajouter le chemin daccs aux fichiers du driver de la carte Fastlab la liste des
chemins daccs de Matlab
Slectionner Set Path du menu File de la fentre Matlab
Cliquer sur le bouton Add Folder
Compiler le fichier fstlabad.c en saisissant sur la ligne de commande Matlab : mex fstlabad.c
gnration du fichier fstlabad.dll
Compiler le fichier fstlabda.c en saisissant sur la ligne de commande Matlab : mex fstlabda.c
gnration du fichier fstlabda.dll
Charger le contrleur flou dans lespace de travail de Matlab
Se positionner dans le rpertoire o se trouvent les fichiers modles regul_rt.mdl et chauff3.fis,
en tapant la commande cd c:\matlabr12\work ou en utilisant le
Dans le navigateur des fichiers systmes cible, slectionner le fichier rtwin.tlc pour la
gnration de code dans le mode temps rel sous Windows
Dure de simulation
de 1000 s
Echantillonnage
pas fixe
Systme
temps discret
priode
dchantillonnage
de 5 s
Real-Time Workshop gnre plusieurs fichiers sources, les compile et gnre le fichier binaire
regul_rt.rwd correspondant lapplication temps rel sous windows.
C.5. Excution du code
Avant dexcuter lapplication temps rel sous windows, il faut vrifier que le noyau
temps rel de Matlab soit install.
Entrer sur la ligne de commande Matlab : rtwho
Si le message suivant apparat, cela signifie que le noyau temps rel est install
Cliquer sur le bouton Target interface et vrifier que le fichier rtwinext.dll soit bien entr
Lapplication temps rel est charg en mmoire et communique avec le modle simulink.
Dmarrer la rgulation du systme en cliquant sur Start real-time code ou sur
licne de la barre doutils
On peut noter que la dure de mise en temprature est assez proche de celle obtenue en simulation.
On note un lger dpassement de la consigne qui peut sexpliquer par le fait que le thermoplongeur
possde une inertie thermique et que les changes de chaleur ne sont pas instantans. La temprature
mettra donc du temps shomogniser et la sonde thermique ne donnera une information fiable que
lorsque cette homognisation aura eu lieu. Ces aspects nont pas t pris en compte dans la modlisation.
La consigne tant rgle 30C, soit trs proche de la temprature ambiante, aucun
refroidissement naturel ne pourra avoir lieu ce qui explique que la temprature atteinte reste stabilise
autour de 31 C.
Contrairement ce quil se passait avec une consigne de 30 C, lorsque celle celle-ci est porte
50 C, la temprature chute naturellement. En effet le diffrentiel de temprature entre leau et lambiante
(20 C environ) permet cette fois un refroidissement naturel. En consquence, on note la remise en action
du Gradipack qui permet la compensation des pertes.
D. Conclusion
Lobjectif de cette contribution est de montrer la faisabilit dune application temps rel mettant
en uvre les outils de modlisation de MATLAB pour la partie commande . Dans cet article, cest un
contrleur flou qui a t implant, mais on pourrait tout aussi bien mettre en uvre un contrleur PID
plus classique.
On peut penser que les oprations pralables la gnration du code sont un peu lourdes. Un
dveloppement futur permettra de les rendre transparents pour un utilisateur non intress par cette partie.
Enfin dautres cartes dEntres / Sorties pourraient tre prises en compte.
Toutes les remarques propos de cette tude peuvent nous tre adresses :
patbrune@wanadoo.fr (Patrick BRUNET) ou ferrere.emile@wanadoo.fr (Emile FERRERE).