Vous êtes sur la page 1sur 33

Ministère de l’Enseignement Supérieur ‫وزارة التعليـم العالي‬

et de la Recherche Scientifique ‫والبحث العلمي‬


Université de Carthage
‫جامعـة قرطاج‬

Département de Génie Electrique

FASCICULE DE TRAVAUX PRATIQUES


D'AUTOMATIQUE GENERALE

2ème année Génie Electrique

Élaboré par :

Mohamed Adel SELLAMI


Mohamed Aymen SLIM
Maher BEN HARIZ

Année Universitaire 2012-2013


TP n°1: Initiation à Matlab

Objectifs

▪ Se familiariser avec l’utilisation du logiciel de calcul "MATLAB".


▪ Introduction à l'outil "SIMULINK" de Matlab.

Introduction

Matlab est un logiciel de calcul numérique. Ce TP a pour but de vous familiariser avec son
utilisation.
MATLAB (abréviation de " MATrix LABoratory "), est un environnement informatique conçu
pour le calcul matriciel. L'élément de base est une matrice dont la dimension n'a pas à être fixée.
Matlab est un outil puissant qui permet la résolution de nombreux problèmes en beaucoup
moins de temps qu'il n'en faudrait pour les formuler en C ou en Pascal. Il est parfaitement
destiné à l'Automatique et au Traitement du Signal (traitement numérique des données). Sa
facilité d'emploi avec des nombres complexes et ses possibilités d'affichages graphiques en font
un outil intéressant pour bien d'autres types d'applications. De plus, des "Toolboxs" (boîtes à
outils) sont disponibles dans de nombreux domaines (traitement du signal, traitement d'image,
automatique, contrôle, logique floue, ...). Matlab peut être considéré comme un langage de
programmation au même titre que C, Pascal ou Basic.
Il intègre le calcul numérique, la visualisation des résultats, la programmation dans un
environnement ouvert aux développements ultérieurs et il présente la possibilité de créer des
interfaces graphiques afin de fournir à l'utilisateur un espace de travail convivial. Le logiciel
MATLAB est réservé notamment au traitement numérique des signaux, à la modélisation, à la
simulation et à la conception des systèmes numériques complexes. Par contre, sa singularité est
qu’il s’agit d’un langage interprété, c'est-à-dire, que les instructions sont exécutées
immédiatement après avoir été tapées.

Commandes de MATLAB

Help command/ toolbox : fournit la syntaxe de la commande et les commandes similaires.


Help function: fournit comme aide ce qui a été écrit comme commentaire (précède par %).
Look for command : affiche toutes les fonctions sous Matlab qui utilise la commande en
question.
Dans l'espace de travail fourni par MATLAB, Il n'est pas nécessaire de compiler un programme
avant de l'exécuter.
La réponse est affichée si on ne met pas de point-virgule en fin de ligne. Elle est de plus stockée
dans une variable nommée ans (answer). La plupart des fonctions mathématiques usuelles sont
définies dans Matlab, et ceci sous une forme naturelle (sin, cos, exp, ...). C’est également le cas
de certaines constantes comme ‘pi’ par exemple, « 2* sin (pi/4) ».
Variables
On peut évidemment indiquer le nom de la variable dans laquelle le résultat doit être stocké (ce
nom doit commencer par une lettre et occuper moins de 19 caractères).

Attention : Matlab distingue les minuscules des majuscules.

• Variable complexe

Matlab travaille indifféremment avec des nombres réels et complexes. Par défaut les
variables i et j sont initialisées à la valeur complexe. Naturellement si vous redéfinissez
la variable i ou j avec une autre valeur elle n'aura plus la même signification.

Les vecteurs et les matrices et leurs manipulations


En fait, toute variable de Matlab est une matrice (scalaire : matrice 1x1, vecteur : matrice
1xN ou Nx1). On peut spécifier directement une matrice sous la forme d'un tableau avec des
crochets. l'espace ou la virgule sépare deux éléments d'une même ligne, les points virgules
séparent les éléments de lignes distinctes.
>> A = [ 1, 2, 3 ; 4, 5, 6 ; 7, 8, 9 ]
Les éléments d'une matrice peuvent être n'importe quelle expression de Matlab :
>> x = [ -1.3, sqrt(3), (1+2+3)*4/5 ]
x = -1.3000 1.7321 4.8000
Pour calculer la transposée d’un vecteur x ou d’une matrice A , il faut écrire

x1 = x’
A1 = A’

Les éléments d'une matrice peuvent ensuite être référencés par leurs indices, on utilise alors des
parenthèses et non des crochets. Le mot-clé end peut être utilisé en indice pour signifier le
dernier élément.
On peut effectuer les opérations d’addition, de soustraction, de multiplication sur les vecteurs
et les matrices, s’ils ont bien sûr les dimensions adéquates, en utilisant les symboles +, -, * . Le
tableau suivant donne quelques fonctions de base pour le calcul matriciel :

Commandes Description
det calcule le déterminant d’une matrice
trace calcule la trace d’une matrice
inv calcule l’inverse d’une matrice
size détermine la taille d’une matrice
eig permet d’obtenir les valeurs propres et les vecteurs propres d’une matrice
rank calcule le rang d’une matrice
length détermine la longueur d’un vecteur

Pour l'analyse des données, on peut utilisé : min, max, mean, std, sum,
On peut avoir des informations sur la taille d'une matrice:
>> size(x)
>> length(x) % longueur

Opérations matricielles
Les opérations usuelles sont définies de façon naturelle pour les matrices :
>> 2*A % Produit par un scalaire
>> A*B % Produit de deux matrices (de dimensions cohérentes)
>> A^p % Elève la matrice carrée A à la puissance p
>> inv(A) % Inversion d'une matrice carrée inversible (message d'alerte éventuel)
>> A.*B % Produit élément par élément de deux matrices.

Attention : A*A est différent de A.*A.

>> X = A\B % Donne la solution de A*X = B (équivalent à X = inv(A)*B)


>> X = B/A % Donne la solution de X*A = B (équivalent à X = B*inv(A))
>> X = A./B % Division éléments par éléments

A( :,n) nième colonne de A


A.^2 fait le carre des éléments de A.(élément par élément)
Zeros(m,n) : génère une matrice m*n de zéros.
Ones(m,n) : génère une matrice m*n de 1.
Eye(m,n) : génère une matrice m*n identité.
 M1 M2 
Pour définir une matrice M =   par bloc, il faut d’abord définir les matrices M1,
 M3 M 4 
M2, M3 et M4 puis écrire:

M=[M1 M2 ;M3 M4]


Exemple :
A=[2 0;1 3]
B=[1 1;0 5]
C=eye(2)
D=ones(2)
A1=inv(A) (on calcule l’inverse de A)
E=[A B;C D] (c’est une matrice définie par bloc)
size(E) (on calcule la taille de E)
det(E) (pour calculer le déterminant de E)
rank(E) (pour calculer le rang de E)

Les fonctions arithmétiques


abs : module, sqrt : racine carrée, real : partie réelle, imag : partie imaginaire, angle : la phase,
conj : conjugue.
rem : reste de la division entière, ceil : quotient de la division entière + 1, round: quotient de la
division euclidienne , exp, log, log10.
L'opérateur " : "
L'opérateur " : ", sous MATLAB, peut être considéré comme l'opérateur d'énumération. Sa
syntaxe usuelle est : « deb:pas:fin ». Il construit un vecteur dont le premier élément est deb
puis deb+pas, deb+2*pas... jusqu'à deb+n*pas tel que deb+n*pas < fin < deb+(n+1)*pas. « : »
est très utile pour construire des signaux.

Affichage alphanumérique
On peut afficher des chaînes de caractères dans la fenêtre de commande :
>> message = 'bienvenue sur Matlab';
>> disp(message)
Les fonctions sprintf et fprintf existent également (même syntaxe qu'en langage C).
>> fprintf('pi vaut %f\n',pi)
pi vaut 3.141593.
On peut aussi demander des valeurs à l'utilisateur :
>> rep = input ('Nombre d'itération de l'algorithme : ');
Matlab affichera la chaîne de caractère entrée en paramètre et attendra une réponse de
l'utilisateur.

Affichages graphiques des courbes


Matlab permet un grand nombre de types d'affichage 1D et 2D, seuls les plus courant seront
décrits ici. La commande plot permet l'affichage d'une courbe 1D :

Exemple : On veut tracer la fonction y = sin( t ) entre −  et  . Matlab ne peut pas calculer
sin(t) pour tous les points entre −  et  (il y en a une infinité). Il faut choisir un nombre fini
de points entre −  et  . On peut utiliser la commande linspace.

>> t=linspace(-pi,pi,100); (Cette fonction choisit 100 points régulièrement espacés


entre -pi et pi)

On peut aussi définir t de la façon suivante:

>> t=-pi:0.1:pi; ( cette définition crée un vecteur ligne dont le premier élément est
-pi et les points sont espacés de 0.1, 0.1 est l'incrément)

On calcule ensuite le vecteur y:

>> y=sin(t);

puis on trace la courbe:

>> plot(t,y)

On peut tracer une courbe en semilog ou en log avec les fonctions semilogx, semilogy et loglog.
On peut ajouter un titre aux figures ainsi que des labels aux axes avec les commandes title,
xlabel, ylabel:
>> title('Courbe y = sinus(t)')
>> xlabel('t'); ylabel('y')

Affichage de plusieurs courbes


On peut bien évidemment vouloir afficher plusieurs courbes à l'écran. Pour cela deux solutions
s'offrent à nous :
On peut effectuer plusieurs affichages sur une même figure en utilisant la commande subplot
qui subdivise la fenêtre graphique en plusieurs sous figures.
Sa syntaxe est : « subplot(nombre_lignes,nombre_colonnes,numéro_subdivision) ».
Les subdivisions sont numérotés de 1 à nombre_lignes*nombre_colonnes, de la gauche vers la
droite puis de haut en bas.

>> subplot(3,2,1)
>> plot(t,y)
>> subplot(3,2,2)
>> plot(t,y.^2)

On peut aussi ouvrir une deuxième fenêtre graphique à l'aide de la commande figure. Le passage
d'une fenêtre graphique à une autre pourra alors se faire à la souris ou en précisant le numéro
correspondant dans la commande figure(n). NB : on peut également superposer plusieurs
courbes sur le même référentiel, en utilisant la commande hold on (resp. hold off).
On peut changer la couleur, le type de trait ou le type de marqueur directement à partir des
menus de la figure sans passer par les commandes Matlab. C'est beaucoup plus simple.
Cependant, il est intéressant parfois de le faire directement à partir de Matlab.

 Couleur

Couleur symbole
bleu (défaut) b
vert g
rouge r
cyan c
magenta m
noir k
jaune y

 Type de trait

Type de trait symbole


trait continu ---
pointillé :
tiret point --
tirets --
 Type de Marqeur

Par défaut, Matlab ne met aucun marqueur

Type de marqueur symbole


plus + +
cercle o
astérix *
point .
croix x
carré s
diamant d
triangles ^ , v, > , <
pentagone p
hexagone h

Pour les triangles, on aura un marqueur qui a la forme d'un triangle qui pointe dans la direction
du symbole utilisé.
Exemples (Applications détaillées)

Exemple1:
1. On veut tracer sin(t) et cos(t) sur [0, ] sur la même figure:

>> t1=linspace(0,pi,30); y1=sin(t1);


>> t2=linspace(0,pi,20); y2=cos(t2);
(on peut ne pas prendre les mêmes valeurs de t pour les deux courbes)
>> plot(t1,y1,'r+',t2,y2,':o')

Matlab affiche la courbe de sin(t) en utilisant le marqueur + et la couleur rouge, les points ne
sont pas joints entre eux parce qu'on a pas précisé le type de trait. La courbe cos(t) est tracé à
l'aide de pointillé avec des marqueurs cercle.
2. Un exemple où on précise les trois en même temps:

>> plot (t1,y1,'-.+y',t2,y2,':o')

La courbe y1 est tracé avec des tiret-point, en jaune et des marqueurs ‘+’.

• Pour tracer deux courbes sur la même figure, on peut aussi utiliser la commande "hold
on".
>> plot(t1,y1,'r+')
>> hold on
>> plot(t2,y2,':p')

Après qu'on a fini de tracer toutes les courbes dont on a besoin, on peut écrire "hold off" pour
que la prochaine courbe ne se superpose pas aux courbes précédentes.

• La légende d'une figure:


On peut ajouter à une figure:

 un titre en utilisant la commande title


>> title('la fonction sin(t) et cos(t)')
 un nom à l'axe des abscisses avec la commande xlabel
>> xlabel('temps (s)')
 un nom à l'axe des ordonnées avec la commande ylabel
>> ylabel('amplitude')

Pour subdiviser une figure en plusieurs sous figures. On utilise la commande subplot.

>> suplot(3,2;k)

divise la fenêtre figure en 3 lignes et deux colonnes c.à.d. que l'on pourrait tracer 6 figures sur
cette fenêtre. k désigne le numéro de la figure courante.

Exemple2 :

Définitions de 5 fonctions:

>> t=linspace(0,6,50); y1=sin(t); y2=cos(t); y3=exp(t); y4=exp(-t) ; y5=2*t;

Traçage de la figure contenant les représentations graphiques des 5 fonctions ;

>> subplot(3,2,1); plot(t,y1); title('y=sin(t)');


>> subplot(3,2,2); plot(t,y2); title('y=cos(t)');
>> subplot(3,2,3); plot(t,y3); title('y=exp(t)');
>> subplot(3,2,4); plot(t,y4); title('y=exp(-t)');
>> subplot(3,2,5); plot(t,y5); title('y=2*t');
Génération des signaux
Construire la fonction échelon : stem (ones (m,n))
Construire la fonction rectangulaire : stem ([ones(m,n) zeros(m,n)])

Création du Fichier ".m"


Les fichiers ".m" permettent la sauvegarde d’un ensemble de commandes et leur exécution.
Ils permettent aussi d’écrire et de sauvegarder des fonctions.

Application

Créer un fichier ".m" qui permet de calculer la fonction sinusoïdale.


>> function y= sinusoide(pas,long, per)
>> t=[0 :pas :long]
>> y=sin (2*pi*1/per*t)
>> plot (y)
>> xlabel(‘temps’)
>> ylabel(‘y(t)’)
>> nom=sprintf(‘fonction sunisoidale de periode%i de
longueur%i’,per,long)
TP n°1

Objectif

▪ Etude de la réponse indicielle du système du premier ordre et celle du deuxième ordre.

Partie A

I) Etude de la réponse indicielle d'un système du premier ordre


La fonction de transfert d’un système du premier ordre est donnée par :
K
H (s) =
1+ T s
avec s l’opérateur de Laplace. K et T sont respectivement le gain statique et la constante de
temps du système.
On veut étudier la réponse du système à l'échelon u(t) = U 0 Γ(t) ( échelon d'amplitude U0 ).

1. En utilisant Simulink, vérifier que la réponse du système a la forme suivante :

On prendra, par exemple, K=2, T=0.5 et U0 =4.

2. Vérifier que :
• la valeur en régime permanent y(∞) est égale à KU0.
• pour t=T, y(t) atteint 63% de la valeur en régime permanent.
• le temps de réponse à 5% est tr ≈ 3T.

Partie B

II) Etude de la réponse d'un système du deuxième ordre à un échelon


La fonction de transfert d’un système du second ordre est donnée par :
K wn2
H (s) =
s 2 + 2  n s + wn2
avec  le coefficient d'amortissement et  n la pulsation propre non amortie du système.
On veut étudier la réponse du système à l’échelon u(t)=U0 Γ(t) selon la valeur de  .
On prendra K=2,  n = 1 rad/s et U0 = 4.

1) Etude de la réponse lorsque  > 0

Automatique 11/32
On distinguera deux cas : 0 <  < l et  ≥ l.

a) Premier cas : 0 <  < 1

Pour les différentes valeurs de  = 0.25, 0.5 et 0.8,


• Tracer la réponse indicielle du système.
• Vérifier que la valeur en régime permanent y(∞) est égale à KU0.
• Déterminer graphiquement le temps du premier pic tpic, le temps de montée tm et le temps
de réponse tr à 5%.
 3
• Vérifier que t pic = et tr  pour  ≤0.69.
 1−  2   n
n
 −  
• Déterminer le dépassement D en % et vérifier que D% = 100 exp  .
 1−  2 
 
b) Deuxième cas :  ≥ 1
Pour la valeur de  = 1, 1.5.
• Tracer la réponse du système à l'échelon u(t).
• Vérifier que la valeur en régime permanent y(∞) est égale à KU 0.
• Déterminer graphiquement le temps de montée tm et le temps de réponse à 5% tr.
• La courbe présente-t-elle un dépassement.

c) Conclusion

2) Etude de la réponse lorsque  = 0


Tracer la réponse du système lorsque  = 0. Conclure.
3) Etude de la réponse lorsque  < 0
a) Premier cas : - 1 <  < 0.
Pour  = -0.5, tracer la réponse indicielle du système. Conclure.
b) Deuxième cas :  ≤ -1.
Pour  = -1.3, tracer la réponse indicielle du système. Conclure.

Automatique 12/32
TP n°2

Objectif

▪ Etude de la réponse fréquentielle d'un système du premier ordre et celle du second ordre.

Partie A

I) Réponse fréquentielle d’un système du premier ordre


La fonction de transfert d’un système du premier ordre est donnée par :
K
H (s) =
1+ T s
avec s l’opérateur de Laplace. K et T sont respectivement le gain statique et la constante de
temps du système.
On prendra K=2 et T=0.5.
1. Tracer sur Matlab les diagrammes de Bode pour  0.02, 200 .
2. Vérifier que pour  = 0 , on a |H|dB = 20 log (K).
3. Mesurer la pulsation de coupure.
4. Vérifier que pour w  1/ T , on a une asymptote de pente -20 dB/décade.
5. Vérifier que pour w = 1/ T , la phase de H(i  ) est de -45°.
6. Pour les valeurs suivantes de  , w = 0, 1, 2, 5, 10 et 100 rad/s , mesurer les valeurs de
|H|dB et de Arg(H).
7. Tracer sur Matlab le lieu de Black.

Partie B

I) Réponse fréquentielle d’un système du second ordre


La fonction de transfert d’un système du second ordre est donnée par :
K wn2
H (s) =
s 2 + 2  n s + wn2
avec  le coefficient d'amortissement et  n la pulsation propre non amortie du système.
On prendra K=2 et n = 1 rad/s .
On veut étudier la réponse fréquentielle pour   0 .

2
1. Pour 0 <  <
2

Pour les valeurs de  = 0.4, 0.2 et 0.1 ,


a. Tracer les diagrammes de Bode.
b. Vérifier que la courbe de Bode d'amplitude présente une résonance. Mesurer la pulsation
de résonance et le facteur de résonance en dB.

Automatique 13/32
c. Vérifier que pour    n on a une asymptote de pente -40 dB/décade.
d. Vérifier que pour  = n , la phase de H(i  ) est de -90°.

Conclusion : vérifier qu'on a une résonance d'autant plus importante que  est faible.

e. Tracer le lieu de black. Préciser les points qui correspondent à  =0,  r et  n .

2
2. Pour  ≥
2

Pour les valeurs  = 0.707 et 1.2 ,

a. Tracer les diagrammes de Bode.


b. Mesurer la pulsation de coupure.
c. Vérifier que pour    n on a une asymptote de pente -40 dB/décade.
d. Vérifier que pour  =  n , la phase de H(i  ) est de -90°.

e. Tracer le lieu de black. Préciser les points qui correspondent à  =0 et  n .

NB : voir annexe (Partie A et B).

Automatique 14/32
TP n°3

Objectifs

▪ Etude fréquentielle (ou harmonique) d'une fonction de transfert.


▪ Etude de l’échantillonnage et du blocage d’un signal.
▪ Détermination des paramètres d’un Filtre Anti-Repliement (FAR).

Enoncé

Partie A

On considère la fonction de transfert suivante :


40
𝐻1 (𝑠) =
(𝑠 + 1)(𝑠 + 2)(𝑠 + 5)

1) Tracer les diagrammes de Bode de 𝐻1 .


2) Tracer le diagramme de Bode asymptotique de 𝐻1 (étude théorique).
3) Tracer le lieu de Black de 𝐻1 .
4) Interpréter les résultats.

40
Refaire le même travail pour : 𝐻2 (𝑠) = 𝑠(𝑠+2)(𝑠+5)

Partie B (sur Simulink)

1) Tracer la réponse des blocs " Zéro-order Hold " et " First Order Hold " lorsque
a) l’entrée est un échelon,
b) l’entrée est une rampe,
c) l’entrée est un signal sinusoïdal de pulsation 1 rad/s.
pour les différentes valeurs suivantes de Te=1s, 0.5s et 0.1s
2) Conclure.

Partie C

Un signal x1 (t), dont le spectre est limité à 20 Hz, est mesuré à l’aide d’un capteur. Le signal
x(t) obtenu est entaché d’un bruit b(t). Avant d’échantillonner le signal x(t), on utilise un filtre
anti-repliement afin d’éviter le problème de repliement de spectre. On impose dans le cahier
des charges d’avoir une atténuation de 30Db à la fréquence d’échantillonnage.

2
1) On veut utiliser un filtre du second ordre avec un coefficient d’amortissement  =
2
.

Automatique 15/32
w
a) Déterminer l’expression de F ( jw) en fonction de u = . Tracer la réponse
wn
fréquentielle du filtre.

b) Proposer un FAR qui convient à ce problème.

2) On veut utiliser maintenant deux filtres du second ordre mis en cascade (avec un
2
coefficient d’amortissement  = ).
2
a) Tracer la réponse fréquentielle du filtre.
b) Proposer un FAR qui convient à ce problème.

3) Tracer les courbes de phases des deux filtres trouvées.


4) Le FAR sera inséré dans une dans une boucle de régulation numérique. Comparer les
deux solutions trouvées.

Automatique 16/32
TP n°4

Objectifs

▪ Etude de la discrétisation d’une fonction de transfert.


▪ Etude du comportement temporel d’un système discret.

Enoncé

Partie A

Discrétisation d’une fonction de transfert


2
1) On considère la fonction suivante H ( s ) = .
s +1
a) Calculer la fonction de transfert échantillonnée H(z) de H(s) en présence d’un BOZ pour
la période d’échantillonnage Te=1s. Utiliser la commande c2d.
b) Tracer sur la même figure la réponse indicielle de H(s) et de H(z). Utiliser la commande
step et hold on.
c) Tracer les diagrammes de Bode de H(s) et de H(z) sur la même figure. On utilisera la
commande « hold on ».
d) Refaire les questions a) , b) et c) avec Te=0.5s.
e) Conclure
1
2) Refaire les mêmes questions avec H ( s ) = .
1 + 2s + 2s 2

Partie B (sur Simulink)

2
On considère la fonction de transfert suivante H ( z ) = . On veut étudier la réponse de ce
z− p
système lorsqu’il est excité par l’échelon unité.

1) Tracer la réponse du système pour les différentes valeurs suivantes de p=3.1,


0.5, -0.5, -1, -3.
2) Conclure.

Automatique 17/32
TP n° 5

Objectifs
• Etude de la stabilité et de la précision statique d'un système.
• Correction d'un système afin d'améliorer ses performances.

Enoncé

On considère un système dont la fonction de transfert est donnée par :

7
H (s) =
(l + T1 s)(l + T2 s)(l + T3 s)
avec T1=100 ms, T2=10 ms et T3=2 ms.

On veut converger la sortie y du système vers la consigne yc appliquée à l’entrée.

Partie A : Sans correcteur


On réalise le schéma fonctionnel suivant :

1. Tracer le lieu de Black de la FTBO : T(s)=H(s). Mesurer la marge de phase.


2. Déterminer, avec le calcul, l'erreur statique (l'erreur en régime permanent) lorsque la
consigne est l'échelon a Γ (t).
3. Câbler sur Simulink le schéma précédent. On prendra a=1 pour la consigne. Dans
Simulation Parameters, on utilisera les paramètres suivants :
Stop time : 0.5 (un temps de simulation de 0.5s est suffisant).
Max step size : l e-3 (On impose à Simulink de ne pas dépasser un pas de simulation de 10-3 s).
4. Tracer la sortie y(t). Mesurer l'erreur en régime permanent.

Partie B : Régulation avec correcteur P


On veut obtenir une erreur statique inférieure ou égale à 3% de a .On introduit dans la suite un
correcteur C(s) dans la boucle d'asservissement :

Automatique 18/32
On choisit d'abord un correcteur Proportionnel (P) : C(s) = Kc. La FTBO corrigée Tc1(s)=C(s)
H(s).

1. Déterminer le gain Kc.


2. Câbler sur Simulink le schéma précédent. Pour le correcteur, on utilisera le bloc PID
Controller. Tracer la sortie y(t). Mesurer l'erreur en régime permanent. Conclure.
3. Tracer sur la même figure le lieu de Black de H(s) et celle de la FTBO corrigée T c1(s).
Repérer sur les deux courbes les points qui correspondent à  = 0; 28.8 et 87.8 rad/s.
4. En déduire que pour obtenir le lieu de Black de Tc(s), il suffit de translater verticalement
celui de H(s) de 20 log(Kc).
5. Mesurer la nouvelle marge de phase. Conclure.
NB : voir annexe 3.

Automatique 19/32
TP n° 6 (suite TP n° 5)

Objectif
Correction du système avec les correcteurs PD et PI.

Enoncé

On rappelle la fonction de transfert du système à réguler :

7
H (s) =
(l + T1 s)(l + T2 s)(l + T3 s)

avec T1=100 ms, T2=10 ms et T3=2 ms.

Partie C : Régulation avec correcteur PD


On désire améliorer la marge de phase en utilisant un correcteur PD de la forme :
C ( s ) = Kc (1 + Td s )
On gardera la valeur précédente de Kc. On prend Td = 0.004 s.

1. Tracer le lieu de Black de la FTBO corrigée Tc 2 ( s ) = C ( s ) H ( s ) . Mesurer la marge de


phase. Conclure.
2. Déterminer avec le calcul l’erreur statique. Vérifier la valeur trouvée en traçant la
réponse indicielle avec Matlab.

3. Etude de l’apport du terme (l + Td s)

3.1.Tracer les diagrammes de Bode de C0 ( s ) = 1 + Td s pour  variant de 10 à 2000 rad/s.


Compléter le tableau suivant :
 (rad/s) Arg(C0) (degrés) C0 dB

100
250
1000
1
Vérifier que pour  = , on a |C0|dB = 3dB et Arg(C0) = 45° .
Td
3.2. Tracer sur la même figure les lieux de Black de Tc1 ( s ) = Kc H ( s ) et de
Tc2 ( s ) = Kc (1 + Td s ) H ( s ) . On précise que : Tc 2 ( s ) = (1 + Td s ) Tc1 ( s ) .

Automatique 20/32
3.3. Repérer sur les deux courbes les points correspondants à  = 100, 250 et 1000 rad/s .
Indiquer par des flèches le sens de déplacement de ces points du lieu de Back de Tc1(s) vers
celui de Tc2(s).
Vérifier, à partir de ces points, qu'on a :

 Tc 2 dB = Tc1 dB + C0 dB

 Arg (Tc 2 ) = Arg (Tc1 ) + Arg ( C0 )

Partie D : Régulation avec correcteur PI

On privilégie maintenant une erreur statique nulle. On choisit un correcteur PI de la forme :

 1 
C ( s ) = Kc 1 + 
 Ti s 
On prend Kc=l et Ti=0.1 s.

1. Calculer la FTBO corrigée Tc3(s)=C(s)H(s). En déduire que cette valeur de Ti permet


de compenser le pôle lent de H(s).
2. Vérifier que ce correcteur apporte une intégration à la FTBO corrigée
Tc3 ( s ) = C ( s ) H ( s ) . En déduire qu'on aura une erreur statique nulle.
3. En utilisant Simulink, tracer la réponse indicielle du système asservi. Pour obtenir un
correcteur PI, il suffit de mettre dans les champs Proportional, Intégral et Derivative
du bloc PID respectivement les valeurs : Kc, Kc /Ti et 0. En effet :
C(s) = Kp + KD s + KI / s
avec Kp=Kc, KD=0 et K I=Kc / TI . Vérifier qu'on obtient une erreur en régime permanent nulle.

 1 
4. Etude de rapport du terme 1 + 
 Ti s 
 1 
4.1.Tracer les diagrammes de Bode de C0(s) = 1 +  . pour ω variant de 10 à 2000 rad/s.
 Ti s 
Compléter le tableau suivant :
 (rad/s) Arg(C0) (degrés) C0 dB

100
250
1000

1
Vérifier que pour  = , on a |C0|dB = 3dB et Arg(C0) = -45° .
Ti

Automatique 21/32
4.2. Tracer sur la même figure les lieux de Black de T ( s ) = H ( s ) et de
 1   1 
Tc3 ( s ) = 1 +  H ( s ) . On précise que Tc3 ( s ) = 1 +  T ( s ) . Repérer sur les deux
 Ti 
s  Ti 
s
courbes les points correspondants à ω = 100; 250 et 1000 rad/s. Indiquer par des flèches le sens
de déplacement de ces points du lieu de Back de T(s) vers celui de Tc3(s).
4.3. Vérifier, à partir de ces points, qu'on a :
 Tc3 dB = T dB + C0 dB

 Arg (Tc3 ) = Arg (T ) + Arg ( C0 )
NB : voir annexe 3.

Automatique 22/32
ANNEXE 1

PARTIE A : INTRODUCTION A SIMULINK

MATLAB est l’outil de référence pour la simulation numérique, notamment en ce qui concerne
l’automatique. Il offre des possibilités avancées que ce soit en matière d’identification ou de
commande. Il permet, de manière plus générale, de résoudre une grande diversité de problèmes
de simulation, dans des domaines aussi variés que le traitement du signal.
SIMULINK est un outil qui permet la modélisation et la simulation de systèmes dynamiques
linéaires ou non linéaires. Ces systèmes peuvent être continus ou discrets.
Pour lancer Simulink, il faut cliquer sur l'icône :

La fenêtre suivante s'ouvre :

Automatique 23/32
Description de Simulink
Il y a plusieurs bibliothèques dans Simulink. On peut citer par exemple :
• Sources : pour générer différents types de signaux.
• Sinks : pour la visualisation des signaux.
• Math : contient plusieurs fonctions mathématiques.

La bibliothèque Sources :
Chaque élément de cette bibliothèque indique le type du signal qu'il génère. Nous allons voir
les blocs suivants :
• Le bloc Constant permet de générer un signal constant.
• Le bloc Step permet de générer un échelon. Dans ce bloc, il y a trois champs à remplir
:
- Step time : l'instant du saut.
- Initial value : la valeur initiale.
- Final value : la valeur finale.

Par exemple pour obtenir l'échelon unitaire, il faut prendre les valeurs suivantes:
- Step time : 0
- Initial value : 0
- Final value : 1

• Le bloc Ramp permet de générer une rampe. Il y a trois champs à remplir:


- Slope : la pente de la droite.
- Start time.
- Initial output.

Pour obtenir une rampe unitaire, il faut pendre les valeurs suivantes:
- Slope: 1
- Start time: 0
- Initial output: 0

• Le bloc Sine Wave permet de générer un signal sinusoïdal. Les quatre champs
Amplitude, Bias, Frequency et Phase permettent de fixer les paramètres du signal. La formule
appliquée est la suivante :

Automatique 24/32
>> y = Amplitude * sin(Frequency * t + Phase) + Bias

La bibliothèque Sinks
Les éléments de cette bibliothèque permettent de "visualiser" les signaux obtenus par la
simulation. On citera deux éléments:
• Scope

Ce bloc permet de tracer l'évolution d'une variable d'un modèle Simulink. C'est utile par
exemple pour voir la sortie d'un système après une simulation.
• Display

Ce bloc permet d'afficher les valeurs d'une variable au cours de la simulation.

La bibliothèque Math
Cette bibliothèque contient des fonctions mathématiques. On cite par exemple le bloc sum, son
symbole est : .
Ce bloc contient un seul champ à remplir. Lorsqu’on le remplit avec + - , on obtient un
comparateur.

Construction d’un modèle


II faut d'abord ouvrir un nouveau modèle en cliquant sur l'icône blanc (voir page 2) ou à
partir du menu de la fenêtre Simulink: File puis New et ensuite Model.
Pour construire un modèle, il faut glisser les différents éléments dont on a besoin des
bibliothèques vers la fenêtre du nouveau modèle. Ensuite, on les relie entre eux à l'aide de
la souris.

Lancement d’une simulation


Avant de lancer une simulation, il faut fixer les paramètres de la simulation. Dans le menu
de la fenêtre du modèle, cliquer sur simulation puis simulation parameters, la fenêtre
suivante s'ouvre :

Automatique 25/32
Remarque : si on a une fenêtre différente, il faut cliquer sur "solver" qui se trouve dans la
première ligne de la fenêtre.

Il faut préciser les valeurs de :


- Start time : l'instant du début de la simulation.
- Stop time : l'instant final.
- Solver options : pour les tous les TP, on garde toujours les options :
Variable step et ode45(Donnand Prince).

La valeur par défaut de Max step size est auto (Dans ce cas, Matlab fixe tout seul un pas de
simulation maximum). Il est intéressant parfois d'imposer à Matlab un pas de simulation à ne
le pas dépasser.
Remarque : Si on choisit un pas de simulation trop petit, ceci pourrait augmenter énormément
le temps de simulation.
• Ensuite on lance la simulation en cliquant sur l'icône suivant :

On peut aussi lancer la simulation à partir du menu : simulation puis start.

PARTIE B : FONCTION DE TRANSFERT

• Dans M-FILE

II y a plusieurs méthodes pour définir une fonction de transfert dans M-File de Matlab :

• A partir du numérateur et du dénominateur :


Utiliser la commande tf.

Automatique 26/32
s2 + s
Exemple : Soit H ( s ) = , on définit le numérateur num et le dénominateur
s3 + 2 s 2 − 7 s + 3
den :
num=[l 1 0] ;
den=[l 2 -7 3] ;
% Ce sont les coefficients des polynômes du numérateur et du dénominateur.
Puis, on définit le système H grâce à la commande tf :
H= tf(num, den)
% On ne met pas le point-virgule pour afficher la fonction de transfert.
Ou encore : H=tf ([l 1 0], [l 2 -7 3]).
• A partir des pôles et des zéros de la fonction de transfert:
Utiliser la commande zpk.
( s − 0.45) ( s − 0.8)
Exemple: Soit H ( s ) = 3 , on définit alors le vecteur suivant :
( s − 1) ( s − 0.7) ( s − 0.2)
>> zeros = [0.45 0.8]; % les valeurs qui annulent le
numérateur
>> pôles = [1 0.7 0.2]; % les valeurs qui annulent le
dénominateur
>> k = 3; % le coefficient devant la fraction
>> H=zpk(zeros,poles,k)

• Pour définir une fonction de transfert du second ordre


K wn2
H (s) =
s 2 + 2  n s + wn2
à partir du facteur d'amortissement  , et de la pulsation propre non amortie  n , on utilise la
commande ord2.
Exemple :
>> Xi = ; (le facteur d'amortissement)
>> Wn = ;
>> [numl,denl]=ord2(Wn,Xi)

• Avec la version Matlab 6.1. on peut définir directement une fonction de transfert en utilisant
la commande tf et en procédant de la façon suivante (on reprend l'exemple l):
s=tf(‘s’) (pour définir la variable s )
(Puis on écrit directement l'expression de la fonction de transfert)
H=(s^2+s)/(s^3+s^2-s+3)

Détermination des paramètres caractéristiques d'une fonction de transfert


A partir d'une fonction de transfert définie dans Matlab, on peut obtenir ses pôles et ses zéros.
• Pour obtenir les pôles de la fonction de transfert : utiliser la commande pôle, pole(H).
• Pour obtenir les zéros de la fonction de transfert, utiliser la commande zéro.

Réponses temporelles d’une fonction de transfert


• Pour obtenir la réponse impulsionnelle, on utilise la commande impulse, impulse(H).

Automatique 27/32
• Pour obtenir la réponse indicielle, on utilise la commande step, step(H).
Si on veut imposer l’instant final de simulation Tfinal, il faut écrire : step(H, Tfinal).

Analyse fréquentielle d’une fonction de transfert


• Pour tracer les diagrammes de Bode, on utilise la commande bode, bode(H).
La commande bodemag permet d'obtenir uniquement le diagramme de Bode d'amplitude,
bodemag(H).
• Pour tracer le lieu de Black, on utilise la commande nichols, nichols(H).
Pour afficher l'abaque de Black avec le lieu de Black d'une fonction de transfert H, il faut écrire
nichols(H) (puis on rajoute)
ngrid
• Pour tracer le lieu de Nyquist on utilise la commande nyquist, nyquist(H).

• Dans SIMULINK

Nous intéressons dans les sciences de TP à la bibliothèque Continuous.

Transfer Fcn : Ce bloc permet de définir une fonction de transfert en rentrant les coefficients
du numérateur et du dénominateur. En double-cliquant sur l'icône de ce bloc, une fenêtre s'ouvre
où il y a deux champs à remplir: Numerator et Dénominator. Il faut mettre respectivement les
coefficients du numérateur et du dénominateur de la fonction de transfert dans ces champs.

Zéro-Pôle : Ce bloc permet de définir une fonction de transfert en rentrant les zéros et les pôles.
Elle est équivalente à la commande zpk de Matlab. Il faut remplir les champs Zéros, Pôles et
Gain. Le champ Gain correspond au coefficient k de la commande zpk.

Integrator : Ce bloc permet de réaliser une intégration.

Automatique 28/32
ANNEXE 2

Lorsque la réponse indicielle d'un système tend vers une constante pour t assez grand, on peut
définir les paramètres suivants :

a. Le temps de réponse à 5%, qu'on note tr, est le temps mis par le système pour que la sortie
y(t) rentre dans la zone de [95 %; 105 %] de la valeur en régime permanent y(∞) et n'en
ressort plus. Nous donnons deux exemples ci-dessous :

b. Le temps de montée tm est le temps nécessaire pour passer de 10% à 90% de la valeur en
régime permanent.

Automatique 29/32
c. Si la réponse présente des oscillations amorties (avec une amplitude qui décroît), on
peut aussi définir
• tpic : l'instant du premier dépassement.
y(t pic ) − y()
• Le dépassement D en % : D% = 100
y()

Automatique 30/32
ANNEXE 3

On considère le système asservi suivant :

Yc(s) Y(s)
H(s)
+
-

On appelle la fonction de transfert en boucle ouverte (qu'on notera FTBO) T(s)=H(s). Si le


système asservi à la forme suivante :

Yc(s) Y(s)
H1(s) H2(s)
+
-

alors la FTBO est T(s)=H1(s) H2(s).

• Pour étudier la stabilité du système asservi (de la boucle fermée), on peut tracer le
lieu de Black de la FTBO T(s). On étudie la position du lieu de Black de T(s) par
rapport au point de coordonnées (-180°; 0 dB) qu'on appelle le point critique :

Le système asservi doit être stable. Dans la pratique, on ne se contente pas d'avoir un système
stable mais on veut avoir aussi des marges de sécurité. Le lieu de Black doit donc passer loin
du point critique. On définit la marge de phase Mφ = 180° + Arg(T(i  0)) où (  0 est la
pulsation pour laquelle |T|dB = 0dB (le point où le lieu de Black coupe l’axe des abscisses).

Automatique 31/32
Exemple :

Point critique

Arg(T)
-180 ° -120 °

Point correspondant à ω0

Mφ = 180° + Arg(T(i  0))=180° + (-120° ) = 60°. On impose dans la pratique d’avoir une
marge de phase comprise entre 45° et 60°.
• L'erreur statique:
L'erreur ε(t) est l’écart entre la consigne yc(t) et la sortie y(t): s(t) = yc (t)- y(t).
L'erreur statique est Ferreur en régime permanent: ε(∞). On a le résultat suivant: Lorsque la
consigne yc(t) est un échelon a Γ(t) :
a
• Si T(s) ne présente pas d'intégration alors ε(∞)= avec K0=lims→0 T(s).
1+ K0
• Si T(s) présente une intégration alors s(∞) ==0 (l’erreur est nulle).

Exemples :
1 1
1) T(s) = T ( s ) = . Il y a une intégration (T(s) contient le terme ) donc s(∞)=0.
s(s + 2) s
1
2) T ( s ) = . Il n'y a pas d'intégration dans T(s), on obtient que K0 = 0.5 donc
(s + 2)
a
S () = = 0.66 a .
1.5

• Le bloc PID Controller de Simulink


Ce bloc se trouve dans la bibliothèque Simulink Extras, dans la partie Additional Linear. Ce
bloc représente le correcteur PID qui est très utilisé dans la pratique. Le correcteur PID a pour
K
FT: C(s) = Kp + KD S + 1 . Il y a trois paramètres Kp, KD , K1 qui sont respectivement les gains
s
Proportionnel, Dérivé et Intégral. Remarquons que pour obtenir un correcteur P (proportionnel):
C(s) = Kc, il suffit de mettre dans le champ Kp la valeur de Kc et dans KD et K1 la valeur 0.

• On peut faire dans Matlab le produit de deux FT. Par exemple, on peut définir d'abord les FT
: Cs et Hs puis écrire: T1=Cs * Hs

Automatique 32/32
• Pour tracer les lieux de Black de H 1(s) et H2(s) sur la même figure, il faut écrire:
nichols(Hsl,Hs2)
• Dans Matlab, la fonction logarithme décimal est : log10.

• Notion de Pôle lent

Soit y(t) la réponse indicielle du système H(s) c.à.d. la sortie qu'on obtient lorsque l'entrée u(t)
est l'échelon unité:

On trouve que y(t) = 7 -7,94e-t/T1 + 0.97 e-t/T2 – 0,035 e-t/T3 . Ainsi y(∞) = 7.

Les trois termes e--t/T1 =e-10t, e-t/T2 =e-100t et e-t/T 3 =e-500t tendent vers 0.
Mais le premier terme tend moins vite vers zéro que les deux derniers. Le pôle -1/T1 est donc
le pôle lent (A cause de ce pôle, le système va mettre plus de temps pour atteindre la valeur
y(∞)=7).

Automatique 33/32

Vous aimerez peut-être aussi