0% ont trouvé ce document utile (0 vote)
376 vues3 pages

Commande PID Floue pour Pendule Inversé

Ce document décrit la commande d'un pendule inversé par un régulateur PID à gains variables utilisant la logique floue. Le système est modélisé et commandé par PID flou où les gains Kp, Kd et Ki dépendent de la sortie du régulateur flou en fonction de l'erreur et de sa variation. Le but est d'améliorer les performances par rapport à un PID à gains fixes.

Transféré par

Ouail Makhebi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
376 vues3 pages

Commande PID Floue pour Pendule Inversé

Ce document décrit la commande d'un pendule inversé par un régulateur PID à gains variables utilisant la logique floue. Le système est modélisé et commandé par PID flou où les gains Kp, Kd et Ki dépendent de la sortie du régulateur flou en fonction de l'erreur et de sa variation. Le but est d'améliorer les performances par rapport à un PID à gains fixes.

Transféré par

Ouail Makhebi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

USTHB – Faculté Génie Électrique – Département d’Automatique - MASTER AS C. E.

Boudjedir

TP 2: Commande d’un pendule inversé par PID flou

-a) Modéliser le pendule inversé.


-b) Les conditions initiales sont les suivantes:[x1 , x2 , x3 , x4 ] = [0, 0, 15.π/180, 0].
-c) Le temps de simulation est égal à 30s.
-d) Le coefficient de frottement b est égal à: b=0.1 pour t ≤ 10s et b=0.5 pour t > 10s.
-e) La commande u est saturée comme suit: −30 ≤ u ≤ 30.
-f ) La trajectoire désirée r est égal à: r = 10.π/180
-g) Commander le système par un PID (les gains sont: Kp0 , Kd0 et Ki0 ).
-h) Tracer l’angle θ.

Le pendule inversé est affecté par le frottement qui entraîne une dégradation significative des performances. Pour cette
raison, les gains fixes du contrôleur ne sont pas appropriés. Afin d’améliorer les performances telles que le dépassement de
pic, le temps de montée (le taux de convergence)...., les gains de PID sont ajustés en ligne en utilisant la logique floue. Il faut
mentionner que l’ajustement en ligne des gains va augmenter aussi la robustesse du régulateur.
Le but de ce TP est de synthétiser une commande PID floue, où Kp , Kd et Ki seront en fonction de la
sortie du régulateur flou.

Les gains finaux sont choisis comme suit:

Kp = Kp0 + Kpf loue , Kd = Kd0 + Kdf loue , Ki = Ki0 + Kif loue

- Les gains Kpf loue , Kdf loue , et Kif loue sont modifiés selon les tableaux suivants:

Table 1: Les règles floues de Kpf loue

de \e NB NM NS Z PS PM PB
NB PB PB PM PM PS PS Z
NM PB PB PM PM PS Z Z
NS PM PM PM PS Z NS NM
Z PM PS PS Z NS NM NM
PS PS PS Z NS NS NM NM
PM Z Z NS NM NM NM NB
PB Z NS NS NM NM NB NB

-On crée une structure de logique floue en utilisant la fonction "newfis", par exemple: a = newf is(0 f uzzpid0 );
-On introduit une entrée au régulateur flou en utilisant la fonction ’addvar’, par exemple:
a = addvar(a,0 input0 ,0 e0 , cc ∗ [−1, 1]);
-Les fonctions d’appartenances sont triangulaires (répartition uniforme).
-Le domaine de variation de ’e’ est: cc ∗ [−1, 1] avec cc = 0.05.
-Le domaine de variation de ’de’ est: dd ∗ [−1, 1] avec cc = 1.
-Le domaine de variation de ’Kpf loue ’ est: aa ∗ [−1, 1] avec aa = 100.
-Le domaine de variation de ’Kif loue ’ est: bb ∗ [−1, 1] avec bb = 200.
USTHB – Faculté Génie Électrique – Département d’Automatique - MASTER AS C. E. Boudjedir

Table 2: Les règles floues de Kif loue

de \e NB NM NS Z PS PM PB
NB NS NS Z Z NM NB NB
NM PS PS PS PS NS NS NM
NS NB PB PM PS Z NS NM
Z NB PM PM PS PS NS NM
PS NB PM PS PS PS NS NS
PM NM PS PS PS PM NS NS
PB PS Z Z Z PB NB NB

Table 3: Les règles floues de Kdf loue

de \e NB NM NS Z PS PM PB
NB NS NM Z Z Z NB NB
NM PS PS PS PS Z NS NM
NS NB NB PM PS Z NS NM
Z NB PM PM PS Z NS NM
PS NB PM PS PS Z NS NS
PM NM PS PS PS Z NS NS
PB PS Z Z Z Z NB NB

-Le domaine de variation de ’Kdf loue ’ est: ee ∗ [−1, 1] avec ee = 40.

Vous pouvez changer les valeurs de cc, dd, aa, bb, ee, et voir leurs influences sur la réponse?

-On introduit une fonction d’appartenance au système flou en utilisant la fonction ’addmf ’, par exemple:

a=addmf(a,’input’,1,’NB’,’trimf’,cc* [-1.333 -1 -0.6667]);


a=addmf(a,’input’,1,’NM’,’trimf’,cc* [-1 -0.6667 -0.3333]);
a=addmf(a,’input’,1,’NS’,’trimf’,cc* [-0.6667 -0.3333 0]);
a=addmf(a,’input’,1,’Z’,’trimf’,cc* [-0.3333 0 0.3333]);
a=addmf(a,’input’,1,’PS’,’trimf’,cc* [0 0.3333 0.6667]);
a=addmf(a,’input’,1,’PM’,’trimf’,cc* [0.3333 0.6667 1]);
a=addmf(a,’input’,1,’PB’,’trimf’,cc* [0.6667 1 1.333]);

-Pour la sortie, en utilisant les instructions suivantes:

a=addvar(a,’output’,’kp’,aa*[-1,1]);
a=addmf(a,’output’,1,’NB’,’trimf’,aa* [-1.333 -1 -0.6667]);
a=addmf(a,’output’,1,’NM’,’trimf’,aa* [-1 -0.6667 -0.3333]);
a=addmf(a,’output’,1,’NS’,’trimf’,aa* [-0.6667 -0.3333 0]);
a=addmf(a,’output’,1,’Z’,’trimf’,aa* [-0.3333 0 0.3333]);
a=addmf(a,’output’,1,’PS’,’trimf’,aa* [0 0.3333 0.6667]);
a=addmf(a,’output’,1,’PM’,’trimf’,aa* [0.3333 0.6667 1]);
a=addmf(a,’output’,1,’PB’,’trimf’,aa* [0.6667 1 1.333]);
USTHB – Faculté Génie Électrique – Département d’Automatique - MASTER AS C. E. Boudjedir

-Ajouter les règles en utilisant l’exemple suivant:

rulelist = [ 1 1 7 3 3 1 1;
1 2 7 5 5 1 1;
1 3 6 1 1 1 1;
1 4 6 1 1 1 1;
... ... .. .. .. ...
... .. .. .. .. .. ..

Où, 1 indique ’NB’, 2 ’NM’, 3 ’NS’, 4 ’Z’....


-Ajouter les règles en utilisant la fonction ’addrule’.
-Utiliser, Min-Prod et le centre de gravité pour calculer la sortie. Exemple:

a=setfis(a,’DefuzzMethod’,’centroid’);
a=setfis(a,’AndMethod’,’min’);
a=setfis(a,’ImpMethod’,’prod’);

- Sauvegarder la structure de votre logique floue en utilisant la fonction ’writefis’.


-Appeler votre structure floue en utilisant la fonction ’readfis’.
-Dans la boucle, calculer la valeur de la sortie en utilisant la fonction ’evalfis’.
-Finalement le gain appliqué au pendule sera le gain fixe plus le gain flou, par exemple:
Kp = Kp0 + kpid (1)
-Utiliser les fonctions, plotmf, showrule, ...

-Tracer l’erreur de poursuite, le signal de commande u, les gains Kp , Kd , Ki ,....


-Comparer la commande PID avec gains fixes et PID avec gains flous. Donnez vos remarques et conclusion.

Vous aimerez peut-être aussi