Cours Matlab El Mokhtari Complet

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 69

Cours Matlab

Karim El mokhtari
FST Tanger
Ce que Matlab est
Langage de haut niveau orienté matrices (MATrix LABoratory)
Syntaxe similaire au BASIC, éléments du C, interface graphique (IDE)
Type de base : matrice 2 à 3 dimensions de nombres réels
La plupart des opérateurs et fonctions s’appliquent directement sur les
matrice  Pas besoin de boucles
Grand nombre de « toolboxes » avec de multiples fonctions et algoritmes
numériques : statistiques, traitement d’image, traitement du signal,
télélcommunications, …
Système d’entrée/sortie très simple pour les fichiers données/multimédia
Très populaire pour les expérimentations et le prototypage rapide
Très utilisé dans la recherche et l’enseignement scientifique
Ce que Matlab n’est pas
oN’est pas un langage de programmation à usage général
(comme C)
oN’est pas très orienté objet
oInterface graphique limitée
oN’est pas très rapide (mais très performant pour les matrices)
oN’est pas gratuit
Déplacer,
Menu Voir ou changer minimiser, fermer
Aide le dossier actuel la fenêtre
dynamique

Menu Start pour Séparateur pour Ligne de commande Voir/exécuter les


accéder aux outils redimensionner la pour saisir les commandes
Matlab fenêtre commandes précédentes
Utiliser Matlab comme
calculateur
>> 1+2*3 Le résultat d’une expression est évalué
ans = sur la fenêtre de commande
7
ans (answer) est une variable qui
contient le dernier résultat

>> x = 1+2*3  On peut assigner le résultat d’un


x = expression à une variable (ici x)
7
Variable = valeur ou expression

 Opérateurs de base : +, - , * , / , ^
(^: puissance)
Utiliser Matlab comme calculateur
>> t = 5;  Le ; la fin de la ligne exécute la
>> t = t+1 commande sans afficher le résultat
t =
6  t=t+1 permet d’incrémenter t

>> x = 10;  Signalement d’une erreur dans la


>> 5x commande tapée
??? 5x
|
Error: Unexpected MATLAB expression.
Gestion du workspace (espace des
variables)
>> clear x  clear x : supprime la variable x du
>> clear workspace
 clear ou clear all supprime toutes les
variables du workspace
>> x = 10; y=2;
 who affiche les variables actuelle
>> who
Your variables are:  whos : comme who mais affiche leur
x y
taille
>> whos
Name Size Bytes Class
Attributes

x 1x1 8 double
y 1x1 8 double
Autres commandes utiles
>> clc  clc : efface la fenêtre des commandes
>> y=1+2+3 ...
+4+5  pour continuer une ligne sur la ligne
y = suivante, taper …
15

CTRL + C pour arrêter l’exécution d’un


script matlab
Fonctions élémentaires de Matlab
>> help elfun  Permet d’afficher la liste de ces
fonctions élémentaires prédéfinies dans
matlab
Fonction Description Fonction Description
cos(x) Cosinus abs(x) Valeur absolue
sign(x) Signe
sin(x) Sinus
max(x) Valeur maximum
tan(x) Tangente min(x) Valeur minimum
acos(x) Arc cosinus ceil(x) Arrondi vers +∞
asin(x) Arc sinus floor(x) Arrondi vers -∞
atan(x) Arc tangent round(x) Arrondi à l’enter le plus proche
exp(x) Exponentiel rem(x) Reste de la division
sqrt(x) Racine carrée angle(x) Angle de phase d’un nombre
log(x) Logarithme naturel complexe
log10(x) Logarithm décimal conj(x) Conjugé d’un nombre complexe
Constantes prédéfinies de Matlab
 pi : le nombre π = 3,14159….
 i,j : l’unité de la partie imaginaire d’un complexe 𝑖 = −1
Inf : L’infini +∞
 NaN : Not a Number (nombre indéfini)
Eps : Nombre très proche de zéro
 eps
Génération d’une séquence de
nombres
>> 1:5  1:5 : génère une séquence d’entiers de
ans = 1à5
1 2 3 4 5

>> 1:2:10  1:2:10 : génère une séquence d’entiers


ans = de 1 à 10 avec un pas de 2
1 3 5 7 9

>> 20:-5:0  20:-5:0 : génère une séquence


ans = d’entiers décroissante de 20 à 0 avec un
20 15 10 5 0 pas de -5
Création d’un vecteur ligne
>> x=[1 2 3 4 5];  On peut créer le vecteur ligne
>> x=[1,2,3,4,5]; x=(1,2,3,4,5) de plusieurs façons
>> x=[1:5];
>> x=1:5;

>> size(x)  La fonction size retourne les


ans = dimensions d’un vecteur/matrice
1 5
La fonction length retourne la longueur
>> length(x)
du vecteur (la dimension la plus
ans = grande)
5
Création d’un vecteur colonne
>> x=[1;2;3;4;5];  Un vecteur colonne x=(1,2,3,4,5)t peut
>> x=[1:5]'; être créé de plusieurs manières

>> size(x)  Affichage des dimensions et de la


ans = longueur
5 1
>> length(x)
ans =
5
Opérations de base sur un vecteur
>> x=[2 5 6 7];  Le symbole ' (apostrophe) : transposé
>> y=x'
y =
2
5
6
7

>> x(2)  x(i) : retourne l’élément i du vecteur x.


ans = Le premier élément a l’indice 1.
5

>> x(2:4)  x(2:4) : retourne les éléments à partir


ans = de l’indice 2 jusqu’à 4.
5 6 7
 x(2:end) donne le même résultat
Opérations de base sur un vecteur
>> x=[2 5 6 7];  Multiplication du vecteur par une
>> 2*x constante
ans =
4 10 12 14

>> x=[2 5 6 7];  Somme de deux vecteurs (de même


>> y=[1 1 2 2]; taille)
>> x+y
ans =
3 6 8 9

 Peut on calculer le produit x*y ?


Opérations sur les éléments d’un
vecteur
>> x=[2 5 6 7];  Les opérateurs appliqués
>> y=[1 1 2 2]; élément-par-élément sur un
>> x*y vecteur sont :
??? Error using ==>  Multiplication : .*
mtimes
Inner matrix dimensions  Division : ./
must agree.  Puissance : .^
>> x.*y
ans =
2 5 12 14
Application d’une fonction sur un
vecteur
>> x=[1 -1 2 -5];  Application d’une fonction de base à
>> abs(x) un vecteur : la fonction est appliqué à
ans = chaque élément du vecteur :
1 1 2 5 abs(x) = [abs(1) abs(-1) abs(2) abs(-5)]

>> sum(x)
ans =  Somme, moyenne, max, min des
-3 éléments du vecteur
>> mean(x)
ans =
-0.7500
>> max(x)
ans =
2
>> min(x)
ans =
-5
Tracer graphiquement un vecteur
>> x=0:0.1:10;  plot(x,z) : trace le vecteur z (sur l’axe
>> z=sin(x); des ordonnées) en fonction du vecteur
>> plot(x,z); x (sur l’axe des abcisses)
>> grid;
 grid : affiche une grille
Tracer graphiquement un vecteur
>> xlabel('Angle');  xlabel et ylabel : indique la
>> ylabel('Sinus'); légende de l’axe x et y
>> title('Fonction Sin');
 title : Titre du graphique
Tracer plusieurs vecteurs
1ère méthode
>> x=0:0.1:10;
>> y1=sin(x);
>> y2=2*sin(x);
>> plot(x,y1,'--',x,y2,'-');
>> grid;
>> legend('sin(x)', '2*sin(x)');
>> axis([0 2*pi -3 3]);

 legend: Affiche la légende de chaque courbe dans l’ordre


 axis([xmin xmax ymin ymax]) : indique les limites des axes x et y
Tracer plusieurs vecteurs
2ème méthode
>> x=0:0.1:10;
>> y1=sin(x);
>> y2=2*sin(x);
>> plot(x,y1,'--');
>> hold on;
>> plot(x,y2,'-');
>> hold off;
>> grid;
>> legend('sin(x)', '2*sin(x)');
>> axis([0 2*pi -3 3]);

 hold on: verrouille l’affichage, les courbes suivantes seront


superposées à la courbe actuelle
 hold off: déverrouille l’affichage
Style de la ligne et sa couleur
>> plot(x,y,'r-o');  'r-o' : Couleur rouge, ligne solide,
marqueur en cercle

Symbole Couleur Symbole Style de ligne Symbole Marqueur


k Noir - Solide + Signe plus
r Rouge -- Tirets o Cercle
b Bleu : Points * Astérisque
g Vert -. Point-Tiret . Point
c Cyan x Croix
m Magenta s Carré
y Jaune d Diamond
Exercices
1) Ecrivez le code qui permet de :
 Ajouter 1 à chaque élément du vecteur [2 3 -1]
 Multiplier chaque élément du vecteur [1 4 8] par 3

2) Soit un vecteur n=[1 2 3 4 5], écrivez le code Matlab qui


calcule les vecteurs suivants en appliquant une opération au
vecteur n :
 2, 4, 6, 8, 10
 1/2, 1, 3/2, 2, 5/2
 1, 1/2, 1/3, 1/4, 1/5
 1, 1/2², 1/3², 1/4², 1/5²
Exercices
3) Avec une seule commande, créez le vecteur suivant:
b = 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1

4) Soit un vecteur C de 16 éléments commençant par 13 et se


terminant par 73 avec un pas de 4
a) créez le vecteur D contenant les éléments de C qui ont un
indice impair : D= [C(1) C(3) … ]
b) créez le vecteur E contenant les éléments de C qui ont un
indice pair : E= [C(2) C(4) … ]
Exercices
5) Soit un circuit RL, l’interrupteur est fermé à t=0, le courant
dans le circuit a la forme suivante :
𝑉 −
𝑅
𝑡
𝐼 = (1 − 𝑒 𝐿 )
𝑅

Sur le même graphique et avec deux couleurs différentes, Tracer le


courant I1 et I2 pour L1=0,5H et pour L2=2H respectivement.
R = 240Ω et V=120V
Pensez à l’échelle de temps adéquate.
Création d’une matrice
>> A = [1 2 3; 4  Les éléments d’une ligne sont séparés
5 6; 7 8 9] par un espace ou virgule
A = Les lignes sont séparés par des points-
1 2 3 virgules
4 5 6
7 8 9

>> A(2,1)  A(i,j) : élément de la ième ligne et jème


colonne
ans =
4
Opérateur « : »
>> A(2,:)  L’opérateur « : » permet d’indiquer un
ans = intervalle de ligne ou de colonne
4 5 6
 Utilisé tout seul, l’opérateur « : »
indique toute la ligne ou toute la
colonne

>> A(:,2:3)  L’opérateur « : » permet d’extraire une


sous-matrice de A
ans =
2 3
5 6
8 9
Sous-matrice
>> B = A([2 3],[1 2])  B est une sous-matrice
B = constituée des lignes 2 et 3 et des
4 5 colonnes 1 et 2 de la matrice A.
7 8

>> C = A([2 1 3],:)  Ceci permet de permuter les


C = lignes 1 et 2 de la matrice A
4 5 6
1 2 3
7 8 9
Sous-matrice
>> D = A(end,:)  Pour extraire la dernière ligne de
D = la matrice A
7 8 9

>> A(3,:) = []  Permet de supprimer la ligne 3


C = de A
1 2 3
4 5 6
Concaténation de matrices
>> A = [1 2 3; 4 5 6;  Une matrice peut être
7 8 9] constituée de plusieurs sous-
A = matrices
1 2 3
4 5 6
7 8 9

>> B = [A 10*A; -A [1 0 0; 0 1 0; 0 0 1]]


B =
1 2 3 10 20 30
4 5 6 40 50 60
7 8 9 70 80 90
-1 -2 -3 1 0 0
-4 -5 -6 0 1 0
-7 -8 -9 0 0 1
Matrices élémentaires
 Matlab dispose de fonctions pour générer des matrices
élémentaires
Fonction Résultat
eye (m,n) Matrice m*n avec des 1 sur la diagonale
eye (n) Matrice identité carrée n*n
zeros (m,n) Matrice m*n avec de zéros
ones (m,n) Matrice m*n avec de uns
diag (A) Extrait les éléments de la diagonale de A
rand (m,n) Retourne une matrice m*n de nombres
aléatoires
Matrices élémentaires
>> b=ones(3,1)  Vecteur de 1
b =
1
1
1

>> eye(3)  Matrice identité 3*3


ans =
1 0 0
0 1 0
0 0 1
Exercices
1) Donner une commande sur une seule ligne qui permet de
générer les matrices suivantes :
Exercices
2) Tapez la matrice A sur Matlab :

a) Créez le vecteur B qui contient la deuxième colonne de A


b) Créez le vecteur C qui contient la troisième ligne de A
c) Créez la matrice D de dimensions 4*3 qui comporte les
lignes 2 et 4 de la matrice A
d) Créez la matrice E de dimensions 2*3 qui comporte les deux
premières colonnes et les trois dernières lignes de A
Conditions sur les matrices
>> A = [1 2 3; 4 5 6;  Appliquer une opération de
7 8 9] comparaison sur une matrice
A = fournit une matrice de 1 et de 0.
1 2 3 Les 1 désignent les éléments qui
4 5 6 respectent la condition.
7 8 9

>> B = A>5 >> C = B.*A %Elements >5


B = C =
0 0 0 0 0 0
0 0 1 0 0 6
1 1 1 7 8 8

 Application : Ecrire le code Matlab qui permet de tracer un


redressement mono-alternance d’un signal sinusoïdal
Résolution d’un système linéaire
>> A = [1 2 3; 4  Pour résoudre le système linéaire :
5 6; 7 8 0]; A.x = b
Il suffit de calculer :
>> b=ones(3,1);
x = A-1.b
>> x=inv(A)*b
x =
-1.0000
1.0000
-0.0000

Autres écritures :
>> x=A^-1*b;
>> x=A\b;
Création d’un script matlab ou m-file
 Un script matlab ou m-file est un fichier qui englobe plusieurs
commandes matlab enregistré dans un fichier pour faciliter sa
sauvegarde ou son exécution
 On crée un script en utilisant la commande edit ou avec le
bouton New
>> edit prg1.m

 On exécute un script en écrivant son nom sur la ligne de


commande ou en cliquant sur le bouton Run (ou F5)

>> prg1
Création d’un fichier de fonction
 Il est possible de créer des fonctions sur Matlab dans des
fichiers séparés portant le même nom que la fonction
function f = factoriel(n)
% FACTORIEL(N) retourne le factoriel de N.
f = prod(1:n);

 On peut appeler la fonction dans un script matlab, ou


directement sur la ligne de commande :
>> factoriel(5)
ans =
120
Création d’un fichier de fonction
 Si la fonction retourne plusieurs résultats, ils sont déclarés
sous forme de vecteur :
function [somme,produit] = sp(a,b)
somme = a+b;
produit = a*b;

 Appel de la fonction :
>> [x,y] = sp(4,5)
x =
9

y =
20
Entrée/sortie des données
 On peut lire les données sur la ligne de commande avec les
commande input
 On affiche les résultats avec disp ou fprintf (ressemble à printf
en langage C)
a = input('Entrer a : ');
b = input('Entrer b : ');
disp (a*b);
fprintf('%d * %d = %d \n',a,b,a*b);
Test conditionnel
 Pour réaliser des tests sur matlab, on utilise if …. else …. end
a = input('Entrer a : ');
if (a>=0)
disp ('Nombre positif');
else
disp ('Nombre négatif');
end
Boucles
 Matlab dispose aussi des boucles for et while :
for k=1:10
disp(k);
end
%---------------
k = 1;
while (k<=10)
disp(k);
k = k+1;
end
Sauvegarde et lecture du workspace
 Pour sauvegarder tout le workspace dans un fichier, on utilise
save :
>> save session1

 Pour sauvegarder juste les variables a et b :


>> save ('session2','a','B');

 Pour charger le contenu d’un fichier sauvegardé vers le


workspace, utiliser la commande load :
>> load session2;
Exercices R1
Soit le circuit RC ci-contre. 100

R=100Ω ; C=20µF ; V1=100.sin(t) V1


100V C1
 = 2F avec F=50Hz ; T=1/F
10uF

Ecrivez un script Matlab :


1) Calculer en complexe le courant 𝐼 dans le circuit, la tension
complexe 𝑉𝐶 aux bornes de C, et la tension complexe 𝑉𝑅 aux
bornes de R
2) Créez une matrice A qui comporte 4 lignes : La 1ère ligne: t (deux
périodes de V), 2ème ligne: 𝑉, 3ème ligne: 𝑉𝐶 , 4ème ligne: 𝑉𝑅
3) Tracez toutes ces grandeurs sur un même graphique en fonction
du temps
4) Quelle valeur de C permet d’avoir 𝑉𝐶 et 𝑉𝑅 de même amplitude.
Vérifiez avec Matlab graphiquement
Représentation d’une fonction de
transfert R
100

On considère que le circuit RC


Ve C
10uF
Vs
Le générateur Ve peut avoir n’importe quelle
forme.
Trouver la fonction de transfert F(p) = Vs(p) / Ve(p)

1
𝐹 𝑝 =
1 + 𝑅𝐶𝑝

La tension de sortie ou la réponse du système est : 𝑉𝑠 (𝑝) = 𝐹 𝑝 . 𝑉𝑒 (𝑝)

On peut trouver Vs(t) à l’aide de la transformé de Laplace inverse :


𝑉𝑠 (𝑡) = ℒ −1 𝑉𝑠 𝑝
Représentation d’une fonction de
transfert R

 Matlab dispose de plusieurs fonctions


100

Ve Vs
qui facilitent la création et la simulation
C
10uF

des fonctions de transfert.


 Matlab utilise le symbole ‘s’ au lieu de ‘p’ 1
𝐹 𝑝 =
dans la transformé de la place. 1 + 𝑅𝐶𝑝

On commence par déclarer ‘s’ comme opérateur de Laplace :


>> s=tf('s')
s =
s
Continuous-time transfer function.
Représentation d’une fonction de
transfert R

 On déclare la fonction F(s) comme suit :


100

Ve C
10uF
Vs

1
𝐹 𝑝 =
1 + 𝑅𝐶𝑝
>> R=100; C=10e-6;
>> F = 1 / (1 + R*C*s)
F =
1
-----------
0.001 s + 1
Continuous-time transfer function.
Réponse indicielle
R

 On obtient la réponse indicielle (réponse


100

Ve Vs
à un échelon d’entrée) par la commande
C
10uF

step :
>> step(F); grid; 1
𝐹 𝑝 =
1 + 𝑅𝐶𝑝
Réponse fréquentielle
R

 La réponse fréquentielle (Ve est


100

Ve Vs
sinusoïdale) s’obtient à l’aide du diagramme
C
10uF

de Bode. La courbe de gain et de phase sont


affichées avec la commande: 1
𝐹 𝑝 =
>> bode(F); grid; 1 + 𝑅𝐶𝑝
Réponse impulsionnelle
R

 La réponse impulsionnelle (Ve est une


100

Ve Vs
impulsion de Dirac) s’obtient par la
C
10uF

commande:
>> impulse(F); grid; 1
𝐹 𝑝 =
1 + 𝑅𝐶𝑝

 La réponse impulsionnelle est aussi


la transformée de Laplace inverse de
la fonction de transfert. Justifiez la
réponse trouvée.
Pôles et zéros de la fonction de
transfert R

 On peut afficher la position des pôles et


100

Ve Vs
zéros avec la commande pzmap. Les pôles
C
10uF

sont représentées par des « x » et les zéros


par des « o ». 1
𝐹 𝑝 =
>> pzmap(F) 1 + 𝑅𝐶𝑝

1/𝑅𝐶 1000
𝐹 𝑝 = =
1 𝑝 − (−1000)
𝑝 − (− 𝑅𝐶 )

F(p) a un seul pôle à -1000. Il a une partie


réelle négative (système stable) et une
partie imaginaire nulle (pas d’oscillations).
ltiview : Outil interactif de l’étude de
la réponse d’un système R

 Matlab dispose d’un outil graphique ltiview


100

Ve Vs
pour étudier les différents types de
C
10uF

réponses d’un système d’une manière


interactive. 1
𝐹 𝑝 =
 ltiview permet de visualiser la réponse d’un 1 + 𝑅𝐶𝑝
ou plusieurs systèmes linéaires
>> ltiview(F); % Afficher la réponse de F(p)

>> C2=5e-6; G=1/(1+R*C2*s); %G(p) avec C2=5µF


>> ltiview(F,G); % Afficher la réponse de F(p) et G(p)
ltiview : Différentes réponses
ltiview : Réponse à un signal au choix

 On peut aussi créer un signal sur


matlab et l’importer sur ltiview
ltiview : Exercice
 Créez un signal d’entrée qui est à 1 pendant 2,5ms puis passe à 0
pendant 2,5ms. Affichez la réponse de F et G à ce signal
Simulation d’un MCC
 Afin de concrétiser les notions acquises en automatique sur
Matlab, nous allons simuler un moteur à courant continu

J : Moment d’inertie du rotor 0.01 kg.m2


b : Constante de friction visqueux du moteur 0.1 N.m.s
Ke : Constante de la f.é.m. 0.01 V/rad/sec
Kt : Constante du couple moteur 0.01 N.m/Amp
R : Résistance électrique 1 Ohm
L : Inductance électrique 0.5 H
Simulation d’un MCC
 Le champ magnétique de l’excitation étant fixe, le couple
moteur est proportionnel au courant i : 𝐶 = 𝐾𝑡 . 𝑖
 La force contre électromotrice est proportionnelle à la vitesse
angulaire : 𝑒 = 𝐾𝑒 . 𝜃
 Les deux constantes Ke et Kt sont égales : 𝐾𝑒 = 𝐾𝑡 = 𝐾
Simulation d’un MCC
 Les deux lois qui gouvernent le fonctionnement du moteur
sont la deuxième loi de Newton et la loi des mailles :

𝐽. 𝜃 + 𝑏. 𝜃 = 𝐾 . 𝑖 Transformé 𝐽. 𝑝2 . Θ 𝑝 + 𝑏. 𝑝. Θ(𝑝) = 𝐾 . 𝐼(𝑝)


𝑑𝑖 de Laplace 𝐿. 𝑝. 𝐼 𝑝 + 𝑅. 𝐼 𝑝 = 𝑉 𝑝 − 𝐾 . 𝑝. Θ(𝑝)
𝐿. + 𝑅. 𝑖 = 𝑉 − 𝐾 . 𝜃
𝑑𝑡
Simulation d’un MCC
 Nous allons choisir de contrôler la vitesse de rotation du
moteur 𝜃 par la tension appliquée au stator v.
 La fonction de transfert étudiée est alors :
Θ(𝑝) 𝐾 𝑟𝑑/𝑠
𝐹 𝑝 = = 𝑒𝑛
𝑉(𝑝) 𝐽𝑝 + 𝑏 𝐿𝑝 + 𝑅 + 𝐾 2 𝑉
Simulation d’un MCC
 Ecrire cette fonction de transfert sur Matlab
 Tracer les réponses : indicielle, impulsionnelle
 Tracer le diagramme de Bode
 Afficher les pôles et zéros et déduire si le système est stable

Θ(𝑝) 𝐾 𝑟𝑑/𝑠
𝐹 𝑝 = = 𝑒𝑛
𝑉(𝑝) 𝐽𝑝 + 𝑏 𝐿𝑝 + 𝑅 + 𝐾 2 𝑉

J : Moment d’inertie du rotor 0.01 kg.m2


b : Constante de friction visqueux du moteur 0.1 N.m.s
Ke : Constante de la f.é.m. 0.01 V/rad/sec
Kt : Constante du couple moteur 0.01 N.m/Amp
R : Résistance électrique 1 Ohm
L : Inductance électrique 0.5 H
MCC : Réponse en boucle fermé
Régulateur MCC

C(p) F(p)

H(p)

 Créer une fonction de transfert en boucle fermée sans


régulateur (C(p)=1) :
>> H = feedback(F,1) % boucle fermée avec retour unitaire
H =
0.01
---------------------------
0.005 s^2 + 0.06 s + 0.1101
Continuous-time transfer function.
MCC : Réponse en boucle fermé
Régulateur MCC

C(p) F(p)

H(p)

 Tracer la réponse indicielle de H(p). Que constatez vous ?


 La valeur finale = 0,09 qui est loin
de la consigne qui est 1 (échelon).
L’erreur statique = 0,91
 On peut diminuer l’erreur statique
en ajoutant un gain dans la boucle
directe: régulateur P : C(p)=Kp
MCC : Régulateur P
Régulateur MCC

C(p) F(p)

H(p)

 Un régulateur P est un régulateur PID sans action I et D. Le


régulateur PID est défini par la commande pid(Kp,Ki,Kd)
 C = pid(10,0,0) ou pid(10) définit un régulateur P de gain 10
 Considérez plusieurs gains Kp=10, 50, 100. Tracez les réponses
indicielles sur le même graphique. Pour cela, définir 3 régulateurs
C1,C2,C3 et trois fonctions en boucle fermée H1,H2,H3
 Exemple : H1 = feedback(C1*F,1)
MCC : Régulateur P
Régulateur MCC

C(p) F(p)

H(p)

 Quelles conclusions tirez-vous de cette réponse ?


 La réponse est d’autant proche de 1 que Kp est grand, mais l’erreur
statique n’est jamais nulle
 Quand on augmente le gain pour réduire l’erreur statique, le
dépassement et les oscillations deviennent plus importants
 Pour éliminer l’erreur statique, il faut ajouter une action intégrale
MCC : Régulateur PI
Régulateur MCC

C(p) F(p)

H(p)

 Gardez un gain proportionnel Kp=100 et affichez la réponse


indicielle avec un gain intégral de Ki=1, 100 puis 200
 Quelles sont vos conclusions ?
MCC : Régulateur PI
Régulateur MCC

C(p) F(p)

H(p)

 L’erreur statique est éliminée d’autant plus vite que le gain Ki


est grand
 Cependant, quand Ki augmente le dépassement et les
oscillations sont plus notables
 Pour stabiliser le système, on ajoute une action D
MCC : Régulateur PID
Régulateur MCC

C(p) F(p)

H(p)

 Pour un gain proportionnel Kp=100 et un gain intégral


Ki=100, tracez les réponses indicielles du système pour
plusieurs gain de l’action dérivée Kd=1, 5, 10
 Quelles sont vos conclusions ?
MCC : Régulateur PID
Régulateur MCC

C(p) F(p)

H(p)

 Grâce à l’action dérivée, on arrive à baisser le dépassement


et à diminuer les oscillations tout en gardant une erreur
statique nulle grâce à l’action intégrale
 Mais est ce que les paramètres Kp, Ki, Kd sont bien réglés ?
 Matlab dispose d’un outil de réglage du PID : pidtool ou
pidTuner
MCC : Réglage du Régulateur PID
 Comparez la réponse trouvée avec le pid C3=pid(100,100,10)
avec d’autres réglages de Kp, Ki et Kd en utilisant pidTuner :
 C3 = pid(100,100,10); pidTuner(F,C3);

 Quel est le meilleur réglage du PID pour la meilleure réponse


du MCC ?

Vous aimerez peut-être aussi