LST-GE

publicité
LST-GE
Travaux Pratiques
Demi-Module :
SYSTEMES ASSERVIS
T.P. 1 : Initiation à MATLAB…………………...…….……………...…….….………2
T.P. 2 : Initiation à SIMULINK……………………………..……………….…….....26
T.P. 3
: ANALYSE TEMPORELLE & FREQUENTIELLE D’UN SYSTEME DE
PREMIER ORDRE …………………………………..………………….….28
T.P. 4 :
ANALYSE TEMPORELLE & FREQUENTIELLE D’UN SYSTEME DE
DEUXIEME ORDRE ………..……………….………………………….….29
Responsable ; Naji Abdenouri
Année Universitaire 2010-2011
T.P. N°1
INITIATION À MATLAB
I. INTRODUCTION
Ce document constitue un support d’initiation au logiciel MATLAB. Il permet à l’étudiant de
se familiariser tout d’abord avec les outils de base dont dispose MATLAB, puis de prendre
connaissance des possibilités offertes dans le domaine de l’automatique des systèmes linéaires
continus facilitant ainsi leur compréhension et leur exploitation.
MATLAB (MATrix LABoratory) est un logiciel de calcul matriciel mis au point par
l’université d’Albuquerque (Nouveau-Mexique, Etats-Unis) et développé par la société MathWorks.
MATLAB est écrit en langage C et conçu à la base pour être un environnement informatique de calcul
scientifique et de visualisation de données. Il peut être considéré comme un langage de programmation
au même titre que le langage C, Pascal ou Basic. C’est un langage interprété, c’est-à-dire qu’il n’est
pas nécessaire de compiler un programme. Les instructions, écrites dans la fenêtre de commande, sont
exécutées immédiatement après avoir été tapées (après la frappe de return).
Dans le cadre universitaire, MATLAB constitue un outil standard pour les cours d’algèbre
linéaire ainsi que pour des cours plus avancés dans d’autres domaines. Dans l’industrie, il est utilisé
pour la recherche ainsi pour la résolution des problèmes pratiques de l’ingénieur et des problèmes
mathématiques.
MATLAB en tant que logiciel de conception des systèmes de traitement du signal est largement
répandu, aujourd’hui, autant dans les universités que dans les centres de recherche et développement,
ainsi que dans l’industrie.
MATLAB est un outil puissant qui permet la résolution de nombreux problèmes en beaucoup
moins de temps qu’il ne faudrait pour les formuler en C ou en Pascal.
MATLAB est un langage parfaitement adapté au traitement du signal. C’est aussi un excellent
outil de traitement numérique qui présente de nombreux avantages pour l’étude et même la conception
des systèmes de traitement numériques des signaux. Parmi ces avantages on peut citer :
•
La syntaxe MATLAB est très proche du formalisme de l’algèbre linéaire, ce qui permet de
transcrire rapidement en code des opérations comme le produit scalaire de deux vecteurs
(corrélation) ou encore le produit d’une matrice et d’un vecteur (transformée).
•
Toutes les variables sont par définition des matrices de complexes, ce qui signifie qu’on n’a pas
à déclarer une variable avant de l’utiliser (exemple la ligne a = 1 crée la variable a puis lui
affecte la valeur 1).
•
MATLAB comprends de nombreuses librairies, notamment pour le traitement numérique des
signaux, ce qui permet de réaliser rapidement des opérations comme le filtrage numérique et les
transformées discrètes et même de concevoir des filtres numériques (Butterworth,
Chebyshev,…).
•
MATLAB comprend également une bonne librairie graphique, ce qui permet d’observer
facilement les caractéristiques des signaux, leur analyse spectrale et le comportement des
systèmes numériques (réponse impulsionnelle, réponse en fréquence, fonction de transfert,…).
•
MATLAB compte plus de 500 fonctions prédéfinis et près de 10 000 fonctions ! dans ses
Toolbox. Leurs natures étant très diversifiées. Même les utilisateurs les plus chevronnés ne
prétendent pas connaître parfaitement la totalité des fonctions de MATLAB.
2
II. ENVIRONNEMENT DE TRAVAIL, SCRIPTS ET FONCTIONS
1 – Répertoire de travail :
•
Il est souhaitable de travailler dans votre répertoire et non dans le répertoire de MATLAB. De
même vous pouvez organiser vos fichiers dans des sous répertoires.
•
Pour que vos fonctions et scripts soient accessibles à partir de la ligne de commande MATLAB
il faut, au début de chaque session MATLAB, déclarer vos répertoires de travail. Ceci est
réalisé à l’aide de la commande path. Cette commande permet de déclarer le chemin à suivre
par MATLAB pour exécuter vos fichiers.
•
Il faut aussi se placer dans votre répertoire de travail. Pour cela il est possible de se déplacer
dans l’arborescence du disque de travail à l’aide des commandes cd et dir (même syntaxe que
MS-DOS).
•
Par défaut, les scripts et fonctions sont enregistrés dans le répertoire work sous MATLAB.
2 – Sauvegarde et chargement de variables
•
Lorsque le nombre de variables déclarés dans une cession MATLAB est élevé, il se peut qu’il
soit utile de les sauvegarder dans un fichier d’extension .mat pour une réutilisation ultérieure.
Ceci est rendu possible à l’aide de la commande save dont la syntaxe est :
save nom du fichier noms des variables
Exemple :
save toto.mat A, B, C
•
Si le nom des variables est omis, tout l’espace de travail est sauvé.
•
Si l’extension du fichier est omise elle sera automatiquement .mat
•
Si de plus, le nom du fichier est omis, la sauvegarde se fera dans le fichier matlab.mat.
•
Pour recharger les variables sauvées dans un fichier .mat, il suffit de taper : load nom
du fichier.
•
Si le nom du fichier est omis, MATLAB chargera le fichier matlab.mat
•
Pour effacer plusieurs variables dans l’espace de travail on utilise la commande clear.
Exemple :
clear x supprime la variable x
3 – Scripts
•
Il est parfois (souvent) souhaitable, pour ne pas avoir à taper plusieurs fois une même séquence
d’instructions, de la stocker dans un fichier. Ainsi on pourra réutiliser cette séquence dans une
autre session de travail. Un tel fichier est dénommé script ou fichier de commande.
•
Sous windows, Pour créer un nouveau fichier de commande, choisir New M-file dans
le menu File. Une fenêtre Untitled apparaît alors, dans laquelle la suite de commande désirées
peut être éditée comme dans un traitement de texte et de sauver le fichier avec une extension .m
•
Pour ouvrir un fichier script, toto.m par exemple, dans la fenêtre de commande MATLAB il
suffit de taper open toto.m
•
Pour enregistrer le fichier, choisir Save as… dans le menu File, introduire le nom désiré, par
exemple toto, sélectionner le dossier de destination, puis enregistrer. Le nom du fichier doit
comporter l'extension .m
•
Par défaut, les fichiers .m sont stockés dans le dossier work.
3
•
En tapant le nom du fichier sous MATLAB, la suite d’instructions s’exécute.
•
Si la fenêtre du script est active, par exemple lors de l’édition du fichier, il suffit de choisir la
commande save dans le menu File pour enregistrer les modifications.
•
Les variables définies dans l’espace de travail sont accessibles pour le script. De même les
variables définies dans le script sont accessibles dans l’espace de travail. Les fichiers de
commandes partagent les variables définis dans la fenêtre de commande. Il s’agit donc de
variables globales.
•
Dans le fichier script, il est possible, et même recommandé, d’introduire des commentaires.
Ceci est réalisé à l’aide du caractère %. Toute commande située après % n’est pas prise en
compte par MATLAB jusqu’à la ligne suivante.
•
MATLAB ne voit pas les espaces blancs entre les différents caractères des instructions de
commandes. Par conséquent on peut aérer suffisamment le fichier pour qu’il soit facilement
lisible.
4 – Fonctions
•
MATLAB dispose de bibliothèques supplémentaires de fonctions appelées toolboxes, ou boîte
à outils, qui contiennent des fonctions spécialisées permettant d’utiliser l’environnement
MATLAB pour résoudre des problèmes bien spécifiques.
•
MATLAB compte plus de 500 fonctions prédéfinies, mais il se peut qu’on ait besoin d’une
fonction ne figurant pas dans son catalogue. Alors il est possible de créer de telles fonctions
dans un fichier séparé et les appeler de la même façon que les fonctions préexistantes.
•
Si la première ligne est une ligne de commentaire alors elle sera affichée à chaque fois que le
help de cette fonction est sollicité.
•
La première ligne (hormis la ligne de commentaires) d’une fonction doit impérativement avoir
la syntaxe suivante :
function [S1, S2,…] = nom fonction (E1, E2,…).
•
nom fonction est une chaîne de caractère qui correspond au nom de la fonction. Ce nom doit
être différent de celui des autres fonctions déjà disponibles. Le fichier de commandes doit
porter le même nom que la fonction. E1, E2,… sont les variables transmises à la fonction
lorsqu’elle est invoquée. S1, S2,… sont les variables retournées par la fonction après son
exécution. Ces dernières variables définies à l’intérieur de la fonction sont locales.
•
Par défaut, les fichiers .m contenant les fonctions sont stockés dans le dossier work.
Exemple :
% la fonction calcul la somme et le produit de deux nombres.
function [a, b] = somprod (x,y)
% Cette fonction retourne la somme et le produit de deux nombres.
a=x+y;
b=x*y;
>> [u, v] = somprod (3,4)
>> u =
7
v=
12
4
•
Le nom de la fonction doit impérativement être le même que le nom du fichier dans lequel elle
est stockée, sinon MATLAB ne prendra pas en compte ce nom mais uniquement celui du
fichier.
•
Les variables de l’espace de travail ne sont pas accessibles à la fonction sauf si elles sont
entrées comme variable d’entrée. De même les variables définies dans une fonction ne sont pas
accessibles dans l’espace de travail.
•
Il est vivement recommandé, avant d’écrire une fonction, de consulter la documentation ou le
help afin de savoir s’il n’existe pas déjà une fonction similaire et peut être mieux écrite.
•
Avant d’utiliser une fonction MATLAB pour la première fois il est souhaitable de consulter la
documentation ou le help pour vérifier qu’elle réalise bien ce que vous désirez.
5 – Help
•
MATLAB est pourvu d’une fonction d’aide très utile : help. Ainsi si vous tapez help sur la
ligne de commande apparaissent tous les répertoires accessibles depuis MATLAB ainsi qu’une
explication (en anglais) concernant ces répertoires.
•
Si vous tapez help suivi du nom du répertoire, MATLAB affiche une explication brève sur
toutes les fonctions et scripts de ce répertoire.
•
Enfin si vous tapez help suivi du fichier script ou fonction apparaît une explication détaillée sur
l’utilisation de la fonction ou du script.
III. OUTILS DE BASE
1 - Commandes générales :
who
:
Affiche les variables actuellement présentes en mémoire.
whos
:
Affiche les variables actuellement présentes en mémoire ainsi
qu’une série d’informations comme leur nature, leur taille en nombre de
lignes et de colonnes pour les matrices, leur taille en bytes, etc...
exist (‘Nom variable’) :
Affiche la valeur 1 si la variable Nom Variable existe, et la valeur 0 si la
variable n’existe pas.
clear Nom variable :
Efface de la mémoire la variable Nom Variable.
clear
Efface toutes les variables en mémoire.
:
help Nom Fonction :
Affiche la description et la syntaxe de la fonction Nom Fonction
save Nom Fichier
Enregistre dans le fichier Nom Fichier l’ensemble des variables
:
définies et actuellement présentes en mémoire.
Load Nom Fichier
:
X = input (‘message’) :
Charge les variables stockées dans le fichier Nom Fichier.
Cette commande permet de saisir une donnée, elle produit
l’apparition à l’écran du ‘message’ et attend l’introduction des éléments
de X. Essayer avec ou sans point virgule.
fprintf (‘bonjour’)
:
Produit l’apparition à l’écran du message : bonjour.
pause
:
provoque un arrête momentané sur l’écran.Presser sur’importe
quelle touche pour reprendre la main sur le clavier.
2 - Caractères spéciaux
;
:
Utilisé à la suite d’une commande, ce caractère supprime l’écho
à l’écran de cette commande et de son résultat.
5
...
:
Ajouté au cours d’une commande, ce caractère permet la
continuation de la commande à la ligne suivante.
3 - Valeur particulières
ans
:
Variable créée automatiquement quand le résultat d’une
expression n’est pas affecté à une variable.
pi
:
Constante correspondant au nombre π.
i, j
:
Constantes correspondant à
−1 .
4 - Définitions de scalaires
z = 1 +2*i
:
Définit le nombre z = 1 + 2i.
a=2
:
Définit la variable a = 2.
a
:
En actionnant la touche RETURN, on visualise la valeur de a.
5 - Définition de vecteurs
x = [-1 0 2] ou x = [-1, 0, 2] : Définit le vecteur ligne : x = [-1 0 2].
x = [-1; 0; 2]
:
− 1
Définit le vecteur colonne : x = 0 
2 
x = [-1.3 sqrt(3) 6*4/5] :
Définit le vecteur : x = [-1.3 1 .7321 4.8]
x (5) = x(1)
Etend la dimension de x jusqu'à 5 et assigne la valeur prescrite à
:
la dernière composante. L’élément x (4) n’étant pas défini, il vaut 0 par
défaut : x = [-1.3 1.7321 4.8 0 -1.3].
y = [y0 : D : yMax]
:
Définit un vecteur ligne dont la première composante est y0 et la
dernière yMax. Les valeurs intermédiaires sont obtenues par adjonction
successive de l’incrément D.
y = [y0 : yMax]
:
Si l’incrément D est omis, il vaut par défaut 1.
Donc y = [y0, y0+1, ..., yMax-1, yMax].
y = [1 : 5]
:
Définit le vecteur : y = [1 2 3 4 5].
y = linspace ( y0, yMax, n):
Définit un vecteur ligne dont les n composantes sont linéairement
espacées entre les valeurs y0 et yMax.
y = linspace (-pi, pi, 4) :
Définit le vecteur y = [-3.1416 -1.0472 1.0472 3.1416]
w = logspace (d1, d2, n) :
Définit un vecteur ligne dont les n composantes sont
logarithmiquement espacées entre les valeur 10dl et 10 d2. C’est une
fonction adaptée à la création de vecteurs de pulsations utilisées pour
visualiser des réponses fréquentielles.
w = logspace(-2, 1, 50) :
Génère 50 points compris entre 0.01 et 10.
6 - Définitions de matrices
A = [1 2 3 ; 4 5 6; 7 8 9]
:
1 2 3 
Définit la matrice : A = 4 5 6
7 8 9 
r = [10, 11, 12]
6
A = [A; r]
:
Modifie A par adjonction de r comme nouvelle ligne
1
4
A=
7

10
ones (n, m)
:
2 3 
5 6 
8 9

11 12
Définit une matrice de dimension n x m avec tous les éléments
égaux à 1
O = ones (2, 3)
:
1 1 1
Définit la matrice : O = 

1 1 1
zeros (n, m)
:
Définit une matrice de dimension n x m avec tous les éléments
égaux à 0
size (A)
:
Définit un vecteur dont la première composante est le nombre de
lignes de A et la seconde son nombre de colonnes.
eye (n, m)
:
Définit une matrice identité de dimension n x m.
E = eye (size (A))
:
Définit une matrice E de même dimension que A, qui contient
des 1 sur la diagonale principale et des 0 partout ailleurs.
1
0
E=
0

0
diag(v)
:
0 0
1 0 
0 1

0 0
Si v est un vecteur à n composantes, alors diag(v) est une
matrice carrée de dimension n qui porte sur la diagonale principale les
éléments du vecteur v.
D = diag ([1 2 3])
:
1 0 0 
Définit la matrice diagonale : D = 0 2 0
0 0 3 
V = []
:
Définit une matrice V de dimension 0 x 0.
7 - Manipulations de matrices ou de vecteurs
A (:, J)
:
Représente la j-ième colonne de A.
A (i, :)
:
Représente la i-ième ligne de A.
A (:, k : m)
:
Représente [A(:, k), A(:, k+1), … , A(:, m)]
A (:, 2)= []
:
1
4
Efface la 2ème colonne de la matrice A. On obtient : A = 
7

10
A (i, j)
:
En actionnant la touche RETURN on visualise la valeur de
l’élément (i, j) de la matrice A.
7
3
6 
9

12
Exemple :
Soit A = [1 2 3; 4 5 6; 7 8 9; 10 11 12];
A = A (1 : 3, :)
:
1 2 3 
Produit la matrice A = 4 5 6
7 8 9 
A = A (3, 2)
:
Visualise la valeur 8
8 - Opérations matricielle ou vectorielles
Soient x = [-1 0 2] , A = [ 1 2 3; 4 5 6; 7 8 0] et Z = [1+5*i, 2+6*i; 3 + 7* i, 4+8*i];
•
Complexe conjugué transposé
:
1 4 7 
Correspond à B = A = 2 5 8
3 6 0
x = x’
:
− 1
Produit le vecteur x =  0 
 2 
W = Z’
:
1 − 5i 3 − 7i 
Produit la matrice W = 

2 − 6i 4 − 8i 
B = A’
•
Transposé
W = Z’.
•
T
:
1 + 5i 3 + 7i 
Produit la matrice W = 

2 + 6i 4 + 8i 
Addition et soustraction
Les opérations sont définies uniquement si les variables ont la même dimension ou si une des
variables est un scalaire .
C = A+B
y = x –1
•
:
2 6 10 
Produit la matrice C = 6 10 14
10 14 0 
:
− 2 
Produit le vecteur y =  − 1
 1 
Multiplication et division
Les dimensions des variables doivent être compatibles.
x’*y
x*y’
:
Produit le scalaire ans = 4
:
 2 1 − 1
0 0 
Produit la matrice ans =  0
− 4 − 2 2
8
:
5 
Produit le vecteur b =  8 
− 7 
pi*x
:
− 3.1416

Produit le vecteur ans =  0

 6.2832 
C = A.*B
:
Correspond à la multiplication, élément par élément, des matrice A et
b = A*x
B, cij = aij bij.
1 8 21 
C = 8 25 48
21 48 0 
B/A
:
Correspond formellement à BA-1, si A est une matrice carrée inversible.
z = x. /y
:
Correspond à la division, élément par élément, des vecteur x et y.
Donne le vecteur :
0.5
z =  0 
 2 
•
Puissance
A^n
:
correspond à An. Cette opération est définie si A est une matrice carrée
et si n est un scalaire.
Z = y.^x
:
Correspond à une élévation en puissance élément par élément. Donne le
vecteur :
− 0.5
z =  1 
 1 
z = x.^2
:
 1
Donne le vecteur z =  0
 4
9 - Fonctions
•
Fonctions matricielles élémentaires
Ces fonctions sont définies uniquement pour des matrices carrées. Soit A une matrice de
dimension n x n ;
det(A)
inv(A)
expm(A)
logm(A)
:
:
:
:
Déterminant de la matrice A.
Inverse de la matrice A.
Exponentielle de la matrice A.
Logarithme naturel de la matrice A.
9
-1
sqrtm(A)
:
Racine carrée de la matrice A. Donne A = P BP. Avec P matrice de
1/2
poly(A)
:
eig(A)
:
[V, D] = eig(A)
-1 1/2
1/2
passage et B matrice diagonale. A = P B P. B sera calculé élément par
élément.
Vecteur ligne de dimension n+1 dont les éléments sont les coefficients
du polynôme caractéristique det(sI-A) ordonnés en puissances décroissantes. .
Vecteur colonne contenant les valeurs propres de la matrice A.
Calcule les vecteurs propres et les valeurs propres de la matrice A et les
retourne respectivement dans les matrices V et D. Chaque colonne de la matrice
V correspond à un vecteur propre associé à la valeur propre se trouvant dans la
colonne correspondante de la matrice D. Ceci peut être écrit de la manière
suivante : A V = V D.
Exemple :
Considérons la matrice A tels que A = [2 0 4 ; 3 –4 12 ; 1 –2 5]
[V, D] = eig(A) donne
•
 − 0.8944 − 0.9701 0.7428 


V =  − 0.4472
0
− 0.5571 

0
0.2425 − 0.3714 

et
 2 0 0


D = 0 1 0 
0 0 0


Fonctions Mathématiques élémentaires
Il existe un ensemble de fonctions mathématiques élémentaires qui s’appliquent aux éléments
de vecteurs ou de matrices.
sin (A)
cos (A)
tan (A)
asin (A)
acos(A)
atan (A)
abs (A)
sqrt (A)
real (A)
imag (A)
conj (A)
exp (A)
log (A)
log10 (A)
•
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Sinus des éléments de la matrice A.
Cosinus des éléments de la matrice A.
tangente des éléments de la matrice A.
Arc sinus des éléments de la matrice A.
Arc cosinus des éléments de la matrice A.
Arc tangente des éléments de la matrice A.
Valeur absolue des éléments de la matrice A.
Racine carré des éléments de la matrice A.
Partie réelle des éléments de la matrice A.
Partie imaginaire des éléments de la matrice A.
Complexe conjugué des éléments de la matrice A.
Exponentielle des éléments de la matrice A.
Logarithme naturel des éléments de la matrice A.
Logarithme décimal à base de 10 des éléments de la matrice A.
Fonctions pour l’analyse des données
Les fonctions suivantes opèrent sur les colonnes d’une matrice ou sur les éléments d’un vecteur
ligne ou colonne.
Soient x = [ 6 4 1 2 5 3 ] et A = [ 9 8 4; 1 6 5; 3 2 7 ]
mx = max (x)
mA = max (A)
:
:
mvx = mean (x)
mvA = mean (A)
:
:
sx = sort(A)
:
Fournit l’élément le plus grand du vecteur x, mx = 6.
Définit un vecteur contenant la valeur maximale de chaque
colonne de la matrice A, mA = [ 9 8 7].
Calcule la valeur moyenne du vecteur x, mvx = 3.5.
Définit un vecteur contenant la valeur moyenne calculée sur
chaque colonne de la matrice A, . mvA = [ 4.333 5.333 5.333].
Classe les éléments de chaque colonne de la matrice A selon
10
l’ordre croissant, sx = [1 2 3 4 5 6 ]
Classe les éléments de chaque colonne de la matrice A
1 2 4 
selon l’ordre croissant sA = 3 6 5
9 8 7
sA = sort(A)
:
sux = sum(x)
:
Calcule la somme de tous les éléments du vecteur x, sux = 21.
suA = sum(A)
:
Définit le vecteur contenant la somme calculée sur chaque
colonne de la matrice A, sux = [13 16 16]
•
Fonctions opérant sur des polynômes
MATLAB dispose également de fonctions qui opèrent sur des polynômes représentés par des
vecteurs de coefficients.
Soient p = [1 –6 –72 –27], a = [1 2 3] et
r = roots (p)
:
b = [4 5 6]
Définit un vecteur colonne dont les composantes sont les racines
du polynôme s3 – 6s2 – 72s – 27,
 12.1229 
r = − 5.7345
− 0.3884
p2 = poly (r)
:
Calcule les coefficients d’un polynôme définit par ses racines,
p2 = [1 –6 –72 –27].
v = polyval (p, x)
:
Retourne, dans v, les valeurs calculées du polynôme p en chaque
point de x.
c = conv (a, b)
:
Effectue le produit des polynômes a(s) = s2 + 2s + 3 et
b(s) = 4s2 + 5s + 6 puis fournit un vecteur contenant les coefficients du
polynôme résultant, c = [4 13 28 27 18].
[q, r] = deconv (B, A) :
Réalise la division polynomiale B/A et retourne dans q les
coefficients du polynôme quotient et dans r ceux du reste. C’est-à-dire B
=Aq+r
Exemple :
[q, r] = deconv(c, a)
ans
q=
4
5
6
r=
0
0
0
Ainsi c = q a + r
0
0
4x4 + 13x3 + 28x2 + 27x + 18 = (4s2 + 5s + 6 ) (s2 + 2s + 3) + 0
11
On peut vérifier ce résultat en utilisant la commande conv entre les polynômes q et a pour voir
si le résultat donne bien le polynôme c.
•
Fonctions opérant sur les fractions rationnelles.
Soient les polynômes A = [1 5 6] et B = [1],
[r, p, k] = residue (B, A)
:
effectue la division des polynômes B par A et la retourne
sous la forme suivante :
B( x)
r (1)
r ( 2)
r ( n)
=
+
+ ... +
+ k ( x)
A( x) x − p (1) x − p (2)
x − p ( n)
Ainsi :
[B, A] = residue (r, p, k)
:
1
−1
1
=
+
x + 5x + 6 x + 3 x + 2
2
Effectue l’opération inverse et retourne dans B les
coefficients de B(x) et dans A ceux de A(x).
IV. DOMAINE DE L’AUTOMATIQUE
Il sera question de savoir comment décrire et manipuler un système dynamique SLTI.
MATLAB dispose d’une représentation objet des SLTI continus ou discrets.
1 - graphiques
Avec MATLAB les données peuvent être examinées graphiquement. Pour la représentation
d’un graphe à l’écran il est possible de choisir le type d’échelle désiré pour les axes x et y.
Plot (x, y)
:
Plot (x, y, ‘s1s2s3’) :
Graphe linéaire de y en fonction de x. x et y doivent être deux
vecteurs de même dimension.
Donne la courbe y(x). s1 et s2 et s3 sont trois paramètres qui
précisent la couleur, le type de point et la nature de lignes d’interpolation
choisies.
s1 (couleur)
y
m
c
r
g
b
w
k
jaune
magenta
bleu ciel
rouge
vert
bleu
blanc
noir
s2 (type de point)
.
o
x
+
*
s
d
^
v
<
>
p
h
point
cercle
marque x
plus
étoile
carreau
diamant
triangle (haut)
triangle (bas)
triangle (gauche)
triangle (droite)
pentagone
hexagone
12
s3 (nature de lignes)
:
-.
--
solide
pointillé
tiret point
2 tirets
Plot (x, y, t, z)
:
Donne la courbe y(x) et la courbe z(t) sur le même graphique.
Eventuellement on peut ajouter les données concernant la couleur, le type
point et la nature d’interpolation choisies.
stem (n, y)
:
analogue à la commande plot sauf qu’elle trace la courbe du
signal numérique y en fonction du pas d'échantillonnage n.
subplot (nml)
:
subdivise la fenêtre du graphe en n lignes et m colonnes et
choisie la lème pour être active. Les zones graphiques sont numérotées de
la gauche vers la droite et de haut vers le bas.
loglog (x, y)
:
Graphe logarithmique en x et y.
semilogx (x, y)
:
Graphe logarithmique en x, linéaire en y.
semilogy (x, y)
:
Graphe linéaire en x, logarithmique en y.
Une fois le graphe est visualisé à l’écran, il est possible d’introduire un titre et des noms
indicatifs pour les axes x et y.
title (‘texte’)
:
Ajoute la phrase écrite entre apostrophe au sommet du graphe.
gtext (‘texte’)
:
Place le message entre apostrophe sur le graphique en cours.
Une fois la position choisie est indiquée par le témoin de la souris, il
suffit d’y cliquer ou d’appuyer sur une touche du clavier.
xlabel (‘texte’)
:
Ajoute le texte écrit entre apostrophe sur le graphe pour la
légende de l’axe des x.
ylabel (‘texte’)
:
Ajoute le texte écrit entre apostrophe sur le graphe pour la
légende de l’axe des y.
clf
:
Efface toutes les courbes du graphe.
grid ou grid on
:
Place les lignes du quadrillage sur la courbe courante.
grid off
:
Supprime les quadrillages placés sur la courbe.
axis ([xmin xmax ymin ymax]): Définit les limites des coordonnées des axes x et y en tenant
compte des limites mentionnées par xmin, xmax, ymin et ymax
Exemple :
t = 0 : 0.05 : 4*pi ;
x = cos (t) ;
y = sin(t) ;
plot ( t, x, ‘r.’, t, y, ‘g*’)
xlabel (‘t en radian’)
ylabel (‘cos(t) en rouge et sin(t) en vert’)
ou encore :
t = 0 : 0.05 : 4*pi ;
x = cos (t) ;
y = sin(t) ;
subplot (2,1,1)
plot ( t, x, ‘y.’)
xlabel (‘t en radian’)
ylabel (‘cos(t) en jaune’)
subplot (2, 1, 2)
plot (t, y, ‘b*’)
xlabel (‘t en radian’)
ylabel (‘sin(t) en bleu’)
2 – Fonction de transfert :
La fonction de transfert est une représentation très utilisée pour la description des systèmes.
a - Forme polynomiale d’une fonction de transfert analogique :
Soit : H ( s ) =
n0 s m + n1 s m −1 + ... + n m
d 0 s n + d 1 s n −1 + .... + d n
13
Noter que la variable p, couramment utilisé en tant que variable de la fonction de transfert
analogique H, est remplacée dans MATLAB par la variable s.
Dans MATLAB, nous décrivons ce système par les deux vecteurs lignes suivants :
num = [n0 , n1 ,...n m ] et
sys = tf(num, den)
:
den = [d 0 , d 1 ,...d n ]
crée le système sys dont la fonction de transfert continu a pour
numérateur num et pour dénominateur den.
get (sys)
:
permet de lister les caractéristiques du système sys.
Exemple :
Considérons le système défini par la fonction de transfert : H ( s ) =
s 3 + 2s + 5
3s 3 + 4 s 2 + 2 s + 1
L’introduction de ce système dans MATLAB se fait par les commandes suivantes :
num = [1 0 2 5]
den = [3 4 2 1]
sys = tf(num,den)
b - Représentation pôles zéros d’une fonction de transfert analogique :
Soit : H ( s ) =
K 0 ( s + z1 )...( s + z m )
( s + p1 )...( s + p n )
Dans MATLAB, nous décrivons ce système par les deux vecteurs colonnes et un scalaire
comme suit :
K = K0
; Z = [− z1 ,− z1 ,... − z m ] et
P = [− p1 ,− p 2 ,... − p n ]
Exemple : Considérons le système H ( s ) =
4( s + 1).( s + 2)
( s + 3).( s + 4).( s + 5)
L’introduction de ce système dans MATLAB se fait par les commandes suivantes :
K=4;
Z = [-1 ; –2] ;
P = [-3 ; –4 ; –5] ;
La représentation pôles zéros (p, z) peut être convertis sous forme polynomiale (num, den) en
appliquant la commande poly.
num = poly (Z)*K ;
den = poly (P) ;
L’opération inverse s’effectue en appliquant la commande roots.
Z = roots (num)
P = roots (den)
d – Systèmes avec retard
La représentation objet de MATLAB permet de définir des systèmes avec retard.
14
Soit H ( s ) = e− rs
n0 s m + n1s m−1 + ... + nm
où r est le retad pur en secondes du système.
d 0 s n + d1s n −1 + ... + d n
Le numérateur et le dénominateur sont toujours décrits de la même manière. La commande tf
est utilisée pour décrire le système sans retard sys.
Sys = tf (num, den)
La fonction set permet de changer quelques paramètres de l’objet sys et en particulier son
retard pur initialement mis à zéro. Le retard pur est repéré par le paramètre Td :
set (sys, ‘Td’,r)
:
Assigne la valeur r secondes au retard pur du système (analogique).
Exemple : considérons le système analogique défini par : H ( s ) =
s3 + 2s + 5
3s 3 + 4 s 2 + 2 s + 1
num = [1 0 2 5]
den = [3 4 2 1]
sys = tf(num, den)
subplot (2,1,1)
impulse (sys)
set (sys, ‘Td’,5)
subplot (2,1,2)
impulse (sys)
e - Combinaison de fonctions de transfert
MATLAB fournit la possibilité de connecter deux systèmes dynamiques qui sont décrits
chacun par une fonction de transfert.
Cette opération qui consiste à réduire plusieurs systèmes dynamiques connectés en série en un
seul système équivalent est intéressante car elle facilite, entre autre, l’analyse de la réponse du système
globale.
Soit (num1, den1) et (num2, den2) la représentation de deux systèmes dynamiques 1 et 2
connectés en série.
x
S 1(p)
S 2(p)
y
La fonction de transfert du système équivalent est représentée par deux vecteurs ligne, num et
den, définis comme suit :
num = conv (num1, num2)
den = conv (den1, den2)
Où conv est la fonction réalisant le produit de convolution de deux polynômes. Plus
simplement, avec la représentation objet de MATLAB des systèmes linéaires, la mise en série de deux
systèmes peut être réalisée de la façon suivante :
sys1 = tf(num1, den1)
sys2 = tf(num2, den2)
sys = sys1*sys2
15
Exemple :
Soit : H 1 ( s ) =
s+2
et
2
0 .5 s + s + 0 .5
H 2 ( s) =
s 2 + 0 .4 s + 4
deux systèmes mis en série.
s 2 + 0 .5 s + 2
Calculer la fonction de transfert H(s) des systèmes 1 et 2 et du système équivalent et tracer
leurs réponses impulsionnelles.
num1 = [1 2]
den1 = [0.5 1 0.5]
num2 = [1 0.4 4]
den2 = [1 0.5 2]
sys1 = tf (num1, den1)
sys2 = tf (num2, den2)
sys = sys1*sys2
subplot (3,1,1)
impulse (sys1)
subplot (3,1,2)
impulse (sys2)
subplot (3,1,3)
impulse (sys)
sys
H ( s) =
donne
s 3 + 2.4 s 2 + 4.8s + 8
0.5s 4 + 1.25s 3 + 2 s 2 + 2.25s + 1
e - Quelques commandes utiles de plus :
printsys (num,den)
:
écrit sur l’écran la fonction de transfert sous forme d’un rapport
de deux polynômes dont les coefficients sont contenus dans les vecteurs
num et den en prenant s comme variable de la transformation.
printsys (num, den,’v’) :
la variable s est remplacée cette fois ci par v.
Exemple :
num = [1 2]
den = [3 4]
printsys (num, den)
donne
printsys (num, den, ‘b’)
donne
s+2
3s + 4
b+2
3b + 4
3 – Réponse temporelle des systèmes SLTI :
MATLAB fournit des commandes pour le calcul des réponses temporelles des systèmes
dynamiques linéaires et stationnaires. Nous présentons ci-dessous le cas des systèmes analogiques. Des
commandes analogues existent aussi pour le cas des systèmes numériques.
a – Réponse impulsionnelle
Soit un système analogique décrit par sys et un système discret représenté par sysd.
impulse (num,den)
:
impulse (sys)
:
donne la courbe de la réponse impulsionnelle, en fonction du
temps, correspondante au système défini par la fonction de transfert
(num, den).
idem que impulse (num, den)
16
impulse (num,den, t) :
impulse (sys, t)
:
y = impulse (sys)
:
y = impulse (sys, t) :
y = impulse (sysd, T) :
idem que impulse (num, den) sauf que le calcul est réalisé sur
l’intervalle de temps t choisi par l’utilisateur.
idem que impulse (sys) sauf que le calcul est réalisé sur
l’intervalle de temps t choisi par l’utilisateur.
retourne dans le vecteur y les valeurs de la sortie de la réponse
impulsionnelle.
retourne dans le vecteur y les valeurs de la sortie de la réponse
impulsionnelle en fonction du temps t choisi par l'utilisateur.
retourne dans le vecteur y les valeurs de la réponse
impulsionnelle d'un système discret décrit par la fonction de transfert
sysd calculées à chaque pas d'échantillonnage T choisi par l'utilisateur.
Exemple :
t = 0 : 0.01 : 10 ;
num = [1] ;
den = [3 4] ;
impulse (num, den, t) ;
Le même résultat peut être obtenu en remplaçant la dernière instruction par :
y = impulse (num, den, t) ;
plot (t, y)
Ou encore :
sys = tf (num,den)
impulse (sys, t)
b – Réponse indicielle :
step (num, den)
:
donne la courbe de la réponse à un échelon unitaire du système
linéaire et continu, en fonction du temps, dont la fonction de transfert est
défini par (num, den).
y= step (num, den, t) :
retourne dans le vecteur y les valeurs de la réponse à un échelon
unitaire, en fonction du temps pour l’intervalle de temps t, du système
linéaire et continu dont la fonction de transfert est défini par (num, den).
Exemple :
t = 0 : 0.01 : 10 ;
num = [1] ;
den = [3 4] ;
step (num, den, t) ;
Le même résultat peut être obtenu en remplaçant la dernière instruction par :
y = step (num, den, t) ;
plot (t, y)
c – Réponse à une entrée arbitraire :
lsim (sys, u, t)
:
donne la courbe de la réponse temporelle, au signal d’entrée u en
fonction du temps t, du système défini par la fonction de transfert sys.
y= lsim (sys, u, t)
:
retourne dans le vecteur y les valeurs de la réponse temporelle,
au signal d’entrée u en fonction du temps t, du système défini par la
fonction de transfert sys.
17
Exemple :
t = 0 : 0.01 : 10 ;
num = [2 1] ;
den = [3 4] ;
x = sin (t) ;
sys = tf (num,den) ;
lsim (num, den, x, t) ;
Le même résultat peut être obtenu en remplaçant la dernière instruction par :
y = lsim (sys, x, t) ;
plot (t, y)
3 – Réponse fréquentielle des systèmes SLTI :
a - Diagramme de Bode
num (s)
⇒
bode ( num, den)
produit la representation de bode de la fonction de transfert den (s) . La
gamme de fréquence et le nombre de points sont choisis automatiquement.
bode ( num, den, ω) ⇒ utilise la gamme de fréquence choisie par l'utilisateur. Le vecteur ω
doit contenir les fréquences en rad / s.
[ Mag, phase, ω ] = bode ( num, den) ⇒ retourne les amplitudes dans Mag, les phases dans
phase, et les fréquences dans ω, sans représentation graphique. Pour effectuer cette dernière
nous devons utiliser l'instruction semilogx en faisant observer que les amplitudes ne sont
pas données en dB.
Exemple :
clear
num = input ( ' num = ') ;
den = input ( ' den = ' ) ;
bode ( num , den )
gtext ( 'diagramme de BODE ')
Les mêmes représentations sont obtenues en remplaçant l'instruction " bode
( num, den )" par la série d'instructions suivante :
[ mag, phase , ω ] = bode ( num, den ) ;
subplot ( 211)
semilogx ( ω , 20 * log10 ( mag ) ) ;
grid
subplot ( 212 )
semilogx ( ω , phase )
grid.
b – Lieu de Nyquist
num (s)
nyquist ( num, den) ⇒ produit la représentation de Nyquist de la fonction de transfert den (s)
18
nyquist ( num, den, ω) ⇒ utilise la gamme de fréquence imposée par l'utilisateur dans le
vecteur ω (en rad/S).
num (jω)
[ Re, im, ω ] = nyquist ( num, den) ⇒ retourne dans Re les parties réelles de den (jω) dans
im les parties imaginaires et dans ω les fréquences prises. La représentation de Nyquist
s'obtient alors par le biais de l'instruction plot ( Re, im ) .
c – Lieu de Black – Nichols
num (jω)
⇒
nichols ( num, den)
donne la représentation de Black - Nichols de la fonction den (jω)
nichols ( num, den, ω) ⇒ donne le diagramme de Nichols pour la gamme de fréquences
choisie dans ω ( en rad/s).
[ Mag, phase, ω ] = nichols ( num, den) ⇒ retourne les amplitudes dans Mag, les phases
dans phase, et les fréquences dans ω, sans représentation graphique. Nous obtenons le
diagramme de Nichols à l'aide de l'instruction plot.
Exemple :
clear
num = 2 ;
den = [ 1 0.5 1 ] ;
nichols ( num, den )
Le même résultat est obtenu en remplaçant la dernière instruction par :
plot ( phase , 20*log10 ( mag) )
axis ( [ -180
0
- 100
20 ] )
d - Marge de Gain - Marge de phase
[ Gm, Pm, ωcg, ωcp ] = margin ( mag, phase, ω ) : retourne la marge de gain dans Gm , la
marge de phase dans Pm et les fréquences associées dans ωcg et ωcp . Sachant que les
vecteurs mag, phase et ω doivent contenir respectivement les amplitudes, les phases et les
fréquences en rad /s.
margin ( mag, phase, ω ) : donne le diagramme de Bode avec les marges de gain et de phase
(indiquées pas des lignes verticales).
Exemple :
num = 2 ;
den = [ 1
0.25
1] ;
[ mag , phase , ω ] = bode (num, den ) ;
margin ( mag, phase, ω )
pause
[Gm, Pm, ωcg , ωcp ] = margin ( mag, phase, ω )
e – Système en boucle fermée
Soit le système en boucle fermée suivant :
19
+
S1(p)
-
S2(p)
L’instruction feedback permet de réaliser un tel système.
Syntaxe :
>>[num,den]=feedback(num1,den1,num2,den2,sign)
V. PROGRAMMATION AVEC MATLAB
Il est possible avec MATLAB de faire des programmes. Les lignesd’instructions d’un programme sont
crées avec l’éditeur associé à MATLAB (cliquer sur File,puis New (M-File) pour créer un fichier ou
sur Open M-File pour ouvrir un fichier déjà existant). Le fichier doit être sauvegarder avec l’extension
« .M » , il est ensuite executable dans l’environnement MATLAB.
Les tests classiques (for, while, if, …) existent avec MATLAB, décrivons les rapidement.
1. Tests et boucle
a. Instruction FOR
Cette instruction permet de faire une boucle de type « pour ».
Syntaxe : >> for variable = expression
…..
>> end
b. Instruction WHILE
Cette instruction permet de faire une boucle de type “tant que”.
Syntaxe : >> while expression
……….
>> end
c. Instruction IF
Cette instruction permet de faire des insructions différentes selon qu’un test est vrai ou
faux.
Syntaxe : >> if expression
………..
>> else
………..
>> end
2. Autres exemples de fonctions
break
permet de quiter « anormalement » une boucle FOR ou WHILE.
input
permet d’introduire une valeur dans une variable.
Ex : x = input (‘donner la valeur de x :’)
disp(‘xxx’)
affiche à l’écran la chaîne de caractères xxx.
clc
efface l’écran.
20
pause
attend un apui sur une touche quelconque du clavier avant d’exécuter l’instruction
suivante.
Pause(n)
suspend le déroulement du programme durant n secondes.
VI. CREATION DE FONCTION
Si une fonction, qu'on désire utiliser fréquemment, ne fait pas partie des fonctions
incorporées. Matlab dispose de structures pour créer de nouvelles fonctions sous la forme d'un fichier
M. files
Les fonctions M. files doivent suivre des règles spécifiques parmi lesquelles on cite.
1- La première instruction d'une fonction doit s'écrire suivant la syntaxe :
function Y = Nomfon ( x1, x2 )
où :
Y est l'argument de sortie
x1, x2 sont les arguments d'entrée
Nomfon le nom de la fonction.
2- Le nom de la fonction et celui du fichier doivent être identiques. Par exemple, la fonction
Nomfon doit être sauvegardée sous le nom Nomfon.m.
3- Les fonctions peuvent avoir zéro ou plusieurs arguments d'entrée et zéro ou plusieurs
arguments de sortie.
4- Lorsqu'une fonction possède plus d'une variable de sortie, celles-ci sont mis entre crochets
comme [ V , D ] = eig(A)
5- Les fonctions M.files agissent comme des commandes MATLAB. Ainsi une fonction est
appelée (pour exécution) en plaçant les variables entre parenthèses comme det(A).
6- Une fonction peut être appelée de manière récursive, c -à - d qu'elle peut être appelée par elle
même.
Exemple :
Soit Fibona une fonction M.file qui calcule les X premièrs nombres de Fibonnaci.
function Fib = Fibona (X)
f=[1 1] ;
while
i=3
i <=X
f (i) = f ( i-1) + f ( i -2 )
i=i+1
end
f
Cette fonction doit être sauvegardé sous le nom Fibona.m . Le calcul des 25 premièrs nombres
de Fibonnaci est obtenu à l'aide de l'instruction Fibona (25).
21
T.P. N°2
INITIATION À SIMULINK
Simulink est l’extension graphique de MATLAB permettant de représenter les fonctions
mathématiques et les systèmes sous forme de diagramme en blocs.
1- Pour démarrer Simulink
Dans la fenêtre commande de MATLAB, taper simulink.
La fenêtre simulink va s’ouvrir :
Figure 1 : Bibliothèque SIMULINK.
Cette fenêtre contient des collections de blocs que l’on peut ouvrir en cliquant dessus :
Sources
Sinks
Discrete
Continuous
Discontinuities
sources de signaux
affichage
blocs discrets
blocs linéaires
blocs non linéaires
2- Construction d'un modèle simple
Pour commencer, dans le menu File, on choisit New-model.
Une fenêtre de travail Untitled s’ouvrira ;
Ouvrir les collections de blocs en cliquant dessus deux fois.
22
Faire glisser dans la fenêtre de travail les blocs dont on a besoin pour construire le diagramme.
- Le bloc " signal Gen" génère un signal [ sources library]
- Le bloc " scope" représente un graphique d'un oscilloscope [ sinks library]
mettre le " horizontal range " et le " vertical range" à 10 et 3 respectivement
- Le braket (>) à la sortie du bloc" signal Gen" représente son port de sortie
- Le braket (>) à l'entrée du bloc " scope" représente son port d'entrée
- Pour lier ces deux blocs, utiliser le bouton de la sourie en même temps sur le port de sortie et le port
d'entrée.
- Maintenant vous pouvez commencer la simulation
- Pour sélectionner la technique d'intégration et les paramètres à utiliser durant la simulation, appeler le
menu Simulation et choisir Paramètres .
- Une boite est ouverte montrant tous les paramètres qui peuvent être modifiés.
- Changer la valeur du " Maximum step size" à 0,01 et cliquer sur OK.
- Lancer la simulation en choisissant start à partir du menu simulation
- Si la fenêtre du " scope bloc" n'est pas ouverte, cliquer maintenant deux fois sur le bloc.
- Le générateur de signaux envoi le sin(t) à chaque pas de temps et l'oscilloscope le montre sous la
forme d'une onde sinusoïdale.
- Vous pouvez sélectionner différentes formes de signaux sur le générateur de signaux et voir les
résultats immédiatement sur l'oscilloscope.
- La simulation est arrêtée en choisissant la commande Stop du menu Simulation.
- Pour sauvegarder votre travail sous forme de fichier " M-file", choisir save du menu File. Choisir le
nom "Binôme NG" (N = numéro de Binôme, G = numéro de Groupe).
- Maintenant prendre une copy du " Gain bloc" du " linear subsystem" dans le bloc bibliothèque.
- Ouvrir ce bloc en cliquant 2 fois.
- Changer la valeur du gain 2 et fermer le bloc.
- Maintenant lier le générateur de signaux au " Grain bloc"
- Ajouter un autre oscilloscope au modèle en copiant l'oscilloscope déjà existant en utilisant le bouton
droit de la sourie. La copie aura les mêmes valeurs de paramètres.
- Lier le bloc gain au 2ème oscilloscope.
- Ouvrir les deux oscilloscopes et lancer la simulation.
- Observer le résultat des deux oscilloscopes, remarquer que le bloc gain multiplie par deux son signal
d'entrée.
23
- Arrêter la simulation
- Vous pouvez éliminer un bloc ou une ligne en le sélectionnant et en utilisant la touche Delete on en
choisissant Cut ou Clear du menu Edit
- Enlever le 2ème oscilloscope, sa ligne de connexion avec le bloc gain et la ligne de connexion du
générateur de signaux et l'oscilloscope
- A partir de la bibliothèque connections, ajouter un bloc Mux dans le modèle.
- Ouvrir le bloc Mux pour changer le nombre d’entrées en cas de besoin
- Connecter le générateur de signaux et le bloc gain à l'entrée du bloc Mux et diriger sa sortie à
l'oscilloscope.
- La fonction du bloc Mux est de multiplexer ses entrées dans un seul vecteur de sortie. Dans notre
exemple, la ligne de connexion du bloc Mux et l'oscillo est une ligne multivariable ( qui transmet
plusieurs valeurs pour chaque pas de temps).
- Maintenant faire une copie du bloc Workspace de la bibliothèque " Sinks" puis l'ouvrir. Le nom de la
variable apparaît dans l'icône du bloc ; c'est " yout" par défaut. On peut changer ce nom en entrant un
nouveau nom.
Le bloc To Workspace prend le vecteur d'entrée est le met dans le " Workspace Matlab" sous forme
d'une matrice. La matrice a une ligne par pas en temps et une colonne par élément du vecteur d'entrée
du bloc.
- Ouvrir le bloc " To Workspace"
- Changer le nom de la variable Matlab produit par la simulation de ce modèle à matrice1.
-
Faire la connexion de la sortie du bloc Mux à l'entrée de bloc " matrice1". Une autre façon de faire
la liaison est d'utiliser une ligne de sortie existante. Positionner le pointeur sur la ligne " Mux"
"Scope", utiliser le bouton droit de la sourie et mettre le pointeur à l'entrer du bloc "
ToWorkspace".
24
- Lancer une simulation de ce modèle.
- Stopper la simulation et sauvegarder ce modèle.
- Retourner à la fenêtre des commandes de MATLAB. Entrer la commande whos. Le résultat est :
Name
size
Total
Complex
matrice 1
1000 by2
2000
No
Grand total is ( 2000 * 8) = 16 000 bytes.
- Entrer la commande plot ( matrice 1).
- On peut utiliser la commande Save de MATLAB pour sauvegarder les résultats de la simulation dans
un fichier data de Matlab.
- Un vecteur représentant les pas en temps peut être obtenu en connectant un bloc " Clock" au bloc "
To Workstation" ou en entrant un nom de variable (par exemple t) dans le champ " Return Variables"
de " Simulation Paramètres".
Application :
Construire le modèle suivant :
Simuler puis visualiser la variable « sorties » sur une figure MATLAB.
25
T.P. N°3
ANALYSE TEMPORELLE & FREQUENTIELLE D’UN SYSTEME DU PREMIER ORDRE
On considère le circuit RC suivant :
R
Ve
C
Vs
Figure 1 : Circuit RC en série.
Analyse Temporelle
1/ Etablir la fonction de transfert H ( p ) =
Vs ( p )
en fonction de R et C ; Calculer H(p) pour les valeurs
Ve ( p )
suivantes R=3KΩ ; C=10µF.
2/ Relever expérimentalement la réponse indicielle et en déduire H(p)
Analyse Fréquentielle
Pour les valeurs de T1=……………………et α=………………………
Faites varier la fréquence du signal sinusoïdal d’entrée de 0 à une valeur supérieure à 1/T1
Quelle est la nature du signal de sortie ?
Remplir les Tableau suivant
ω(rad/s)
|H(jw)|dB
Arg(H(jw))
N.B. : Le nombre de points ainsi que les fréquences sont à choisir.
1./ Tracer le lieu de transfert du système sur les plans de Bode , Nyquist et Black,
2./ Comparer avec les tracés théoriques,
3./ Que peut on dire sur la stabilité du système ?
26
T.P. N°4
ANALYSE TEMPORELLE & FREQUENTIELLE D’UN SYSTEME DE DEUXIEME ORDRE
I. PARTIE THEORIQUE
On considère le circuit RLC suivant :
R
L
Ve
C
Vs
Figure 1 : Circuit RLC série.
1. Ecrire l’équation différentielle qui régit le fonctionnement de ce système.
2. Dans les conditions d’Heaviside, déterminer la fonction de transfert H ( p ) =
K
sous la forme : H ( p ) =
1+
2ξ
ω0
p+
p2
Vs ( p )
; l’écrire
Ve ( p )
, puis donner ξ et ω0 en fonction des éléments du
ω02
montage.
3. Sachant que la bobine a une inductance L=0,1H et présente une résistance R=32Ω, déterminer ξ
et ω0 pour chacun des couple (R,C) suivant :
C(nF)
R(Ω)
4. Quelle est la valeur critique du coefficient d’amortissement ξ qui conditionne la réponse
temporelle du système ?
5. Donner la réponse temporelle Vs(t) (expression et allure sur le même graph) dans les trois cas ξ<
ξcritique , ξ= ξcritique et ξ> ξcritique.
6. Pour la même valeur de C1 choisir deux valeurs R1 et R2 de R qui donnent des réponses
oscillatoires et deux autres valeurs R3 et R4 qui donnent des réponses apériodiques.
7. Etudier la fonction |H(jω)|=f(ω).
8. Quelle est la valeur critique du coefficient d’amortissement ξ qui conditionne la réponse
fréquentielle du système ?
9. Pour la même valeur de C1 choisir deux valeurs R1 et R2 de R qui donnent des réponses avec
résonance et deux autres valeurs R3 et R4 qui donnent des réponses sans résonance.
10. Donner le diagramme de Bode du système pour les quatre couples (R, C) de la question9.
27
II. PARTIE PRATIQUE
Analyse Temporelle
1. Réaliser le montage suivant pour chaque couple (Ri, Ci) de la question 6 :
V o ie1 de l’o sc illo sco pe
R
GBF
L
Ve
V o ie2 de l’o scillo sco pe
Vs
C
M asse
Figure 2 : Montage à réaliser.
avec : Ve est signal carré de fréquence assez faible.
2. Relever les réponses temporelles correspondantes à chaque montage.
3. En déduire :
Le temps de réponse à 5 %,
Le temps du premier dépassement et la valeur de celui-ci en %,
Le temps de montée,
La pente à l’origine.
4. Comparer ces résultats avec la théorie.
5. Conclure sur l’influence des éléments R et C sur la réponse du système.
6. Relever la réponse temporelle du système pour un seul couple (R, C) en éliminant la bobine,
comparer la pente à l’origine de cette réponse aux précédentes et commenter ce résultat.
7. Montrer comment peut-on utiliser un potentiomètre pour régler la valeur de ξ à ξcritique , quelle
est la valeur correspondante de la résistance ?
Analyse fréquentielle
1. Réaliser le montage suivant pour chaque couple (Ri, Cj) de la figure 2 :
Avec : Ve est signal sinusoïdal de fréquence variable.
2. Pour chaque montage relever les mesures nécessaires pour établir la réponse en fréquence du
système.
ω (rad/s)
|H(jω)|dB
Arg(H(jω))
N.B : le nombre de point ainsi que les fréquences sont à choisir.
3. Tracer les diagrammes de Bode des différents systèmes sur papier semi-logarithmique.
4. Tracer les lieux de transfert sur l’abaque de Black-Nichols.
5. Déterminer les caractéristiques fréquentielles de chacun de ces systèmes
Le gain statique,
La pulsation de coupure à -3dB,
La pulsation de résonance et le gain correspondant,
Le facteur de résonance.
6. Comparer ces résultats avec la théorie.
7. Que deviennent ces caractéristiques en boucle fermée.
8. Proposer un schéma de montage en boucle fermée et vérifier 7. pour un couple (R, C).
28
Téléchargement