Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Élaboré par :
Objectifs
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
• 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.
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.
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.
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=-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)
>> y=sin(t);
>> 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')
>> 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
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:
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:
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.
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:
Application
Objectif
Partie A
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
Automatique 11/32
On distinguera deux cas : 0 < < l et ≥ l.
c) Conclusion
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
Partie B
2
1. Pour 0 < <
2
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.
2
2. Pour ≥
2
Automatique 14/32
TP n°3
Objectifs
Enoncé
Partie A
40
Refaire le même travail pour : 𝐻2 (𝑠) = 𝑠(𝑠+2)(𝑠+5)
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.
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.
Automatique 16/32
TP n°4
Objectifs
Enoncé
Partie A
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é.
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é
7
H (s) =
(l + T1 s)(l + T2 s)(l + T3 s)
avec T1=100 ms, T2=10 ms et T3=2 ms.
Automatique 18/32
On choisit d'abord un correcteur Proportionnel (P) : C(s) = Kc. La FTBO corrigée Tc1(s)=C(s)
H(s).
Automatique 19/32
TP n° 6 (suite TP n° 5)
Objectif
Correction du système avec les correcteurs PD et PI.
Enoncé
7
H (s) =
(l + T1 s)(l + T2 s)(l + T3 s)
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 )
1
C ( s ) = Kc 1 +
Ti s
On prend Kc=l et Ti=0.1 s.
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
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 :
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
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
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.
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.
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 :
• Dans M-FILE
II y a plusieurs méthodes pour définir une fonction de transfert dans M-File de Matlab :
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)
• 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)
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).
• Dans SIMULINK
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.
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
Yc(s) Y(s)
H(s)
+
-
Yc(s) Y(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 :
Mφ
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
• 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.
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