Vous êtes sur la page 1sur 15

TP1 Introduction à Matlab

1 - Qu’est ce que Matlab® ?

Matlab est un logiciel de calcul numérique commercialisé par la société


MathWorks1. Il a été initialement développé à la fin des années 70 par Cleve
Moler, professeur de mathématique à l’université du Nouveau-Mexique puis à
Stanford, pour permettre aux étudiants de travailler à partir d’un outil de
programmation de haut niveau et sans apprendre le Fortran ou le C.
Matlab signifie Matrix laboratory. Il est un langage pour le calcul scientifique,
l’analyse de données, leur visualisation, le développement d’algorithmes. Son
interface propose, d’une part, une fenêtre interactive type console pour
l’exécution de commandes, et d’autre part, un environnement de
développement intégré (IDE) pour la programmation d’applications.
Matlab trouve ses applications dans de nombreuses disciplines. Il constitue un
outil numérique puissant pour la modélisation de systèmes physiques, la
simulation de modèles mathématiques, la conception et la validation (tests en
simulation et expérimentation) d’applications. Le logiciel de base peut être
complété par de multiples toolboxes, c’est-à-dire des boîtes à outils. Celles-ci
sont des bibliothèques de fonctions dédiées à des domaines particuliers. Nous
pouvons citer par exemple : l’Automatique, le traitement du signal,
l’électronique, l’électronique de puissance, les machines électriques, l’analyse
statistique, l’optimisation…
Voici une liste non exhaustive (loin de là) et en vrac de toolboxes, montrant la
diversité des fonctionnalités de Matlab :

2) L’interface
L’interface-utilisateur de MATLAB varie légèrement en fonction de la version de
MATLAB et du type de machine utilisée. Elle est constitué de :
* Fenêtre de commandes (Command Window)
* Espace de travail (Workspace)
* Historique des commandes (Command History)
* Répertoire de travail (Current Folder)

1
Notons que la command window est la fenêtre centrale de l’interface, c’est à
partir de là que l’utilisateur pourra lancer les commandes interprétées par
Matlab. Le principe est simple et intuitif, le tout est de connaitre les fonctions
appropriées et de respecter leur syntaxe. Premier exemple élémentaire : à
l’invite de commande, taper « 3*5 », puis entrer :

3) Opérateurs de base :
ceux-ci agissent sur les scalaires et les matrices. Dans le cas matriciel, les
dimensions des matrices doivent s’y prêter !

La division à gauche A\B donne le résultat de l’opération A-1B (utilisée pour


résoudre un système linéaire).

2
4) Fonctions mathématiques de base :
Les fonctions mathématiques de base sont données dans le tableau suivant :

5) Matrices :
Un tableau est délimité par des crochets. On sépare les colonnes par des
espaces et les lignes par des points-virgules.
Exemples :

3
Instructions pour les matrices :

6) Courbes :
le tracé d’une courbe s’effectue à partir de la commande plot().
Exemple :
Traçons la fonction sinus dans l'intervalle [ -π,π] avec un pas de 0.01.

La commande plot prend un troisième argument permettant de spécifier la


couleur du tracé et le symbole de représentation.
Retraçons l’exemple précédent en rouge avec des étoiles pour chaque point.

A chaque nouvelle commande plot, la figure est remplacée. Pour garder


plusieurs courbes, il faut autoriser la superposition de graphique à l’aide de la
commande hold on . Les plot suivants se superposeront jusqu’à la désactivation
hold off ou la fermeture de la fenêtre.

4
7) Travail avec les m-files :
Dans les précédentes sections, nous avons présenté des séries de commandes
lancées depuis la command window. Pour des calculs complexes et répétitifs, il
est préférable (ou plutôt indispensable) de rassembler l’ensemble des
commandes dans un fichier qui constituera le programme à exécuter.
On distingue deux types de fichiers dans Matlab, également appelés m-files :
les scripts et les fonctions.
7.1 Fichiers SCRIPT
Un fichier script permet regrouper des séries de commandes Matlab. Cela évite
d’avoir à saisir plusieurs fois de longues suites d’instructions. A son lancement,
les instructions qu’il contient s’exécutent séquentiellement comme si elles
étaient lancées depuis l’invite de commande. Un script stocke ses variables
dans le workspace, lequel est partagé par tous les scripts. Ainsi, toutes les
variables créées dans les scripts sont visibles depuis la command window et
vice versa. Lorsque Matlab détecte une erreur, le programme s’arrête et un
message d'erreur s'affiche à l'écran (avec le numéro de la ligne où l'erreur est
détectée).
Editons notre script monfichier.m :

Des annotations peuvent être ajoutées dans le code afin de le commenter.


Pour cela, chaque ligne de commentaires doit être précédée par le caractère %.
Les mots suivant ce symbole ne seront pas interprétés.

7.2 Fichiers FUNCTION :


Le principe d'une fonction est d'effectuer des opérations à partir d’une ou
plusieurs entrées et fournir une ou plusieurs sorties (résultat). Les variables
d’entrées sont des paramètres à spécifier en argument de la fonction, tandis
que les variables de sorties sont des valeurs qu’elle renvoie.
Un m-file est définit comme une fonction en plaçant en tête du fichier le mot
clé function suivit de son prototype. Un prototype est de la forme :
[s1,s2,…] = nomfonction(e1,e2,…)
Le membre de gauche regroupe les sorties renvoyées par la fonction et les
variables entres parenthèses sont les entrées. Le nom du fichier doit être
identique au nom de la fonction.

5
Ecrivons dans l’éditeur notre fonction qui permet de calculer l’aire et le volume
d’une sphère pour un rayon donné.

8) Programmation avec Matlab :


8.1 Opérateurs relationnels et logiques :
Comme dans tout langage de programmation, Matlab possède des opérateurs
qui permettent d’établir des expressions renvoyant en résultat une valeur
logique, c’est-à-dire 0 ou 1. Ces expressions logiques sont généralement
utilisées dans les structures de contrôle présentées dans la prochaine section.
Opérateurs relationnels
Ces opérateurs comparent deux opérandes de même dimension :
== égal à
~= différent de
> strictement supérieur à
>= supérieur ou égal à
< strictement inférieur à
<= inférieur ou égal à
Lorsque deux scalaires sont comparés, le résultat est un scalaire qui vaut 1 si la
relation est vrai et 0 si elle est fausse. Si deux matrices sont comparées, le
résultat est une matrice de même dimension constituée de 1 et 0, la relation
étant testée élément par élément.

6
Opérateurs logiques
Ces opérateurs effectuent un test logique entre deux variables logiques de
même dimension:
& et
| ou
~ non
xor ou exclusif
any(x) retourne 1 si un des éléments de x est non nul
all(x) retourne 1 si tous les éléments de x sont nuls

Le résultat vaut 1 si le test est vrai et 0 s’il est faux. Pour des matrices,
l’opération s’effectue aussi élément par élément. Concernant les opérandes,
une valeur est considérée comme fausse (=0) si elle est nulle. Elle est
considérée comme vrai (=1) si elle est non nulle.

8.2 Structures de contrôle


Dans sa forme la plus simple, le déroulement d’un programme est linéaire dans
le sens où les instructions qui le composent s’exécutent successivement. Les
structures de contrôle sont des mécanismes qui permettent de modifier la
séquence d’exécution des instructions. Plus précisément, lors de l’exécution, en
fonction des conditions réalisées certaines parties précises du code seront
exécutées.

7
Branchement conditionnel (if … elseif … else)
Cette structure permet d’exécuter un bloc d’instructions en fonction de la
valeur logique d’une expression. Sa syntaxe est :
if expression
instructions …
end
L’ensemble des instructions instructions est exécuté seulement si expression
est vraie.
Plusieurs tests exclusifs peuvent être combinés.
if expression1
instructions1 …
elseif expression2
instructions2 …
else
instructions3 …
end
Plusieurs elseif peuvent être concaténés. Leur bloc est exécuté si l’expression
correspondante est vraie et si toutes les conditions précédentes n’ont pas été
satisfaites. Le bloc instruction3 associé au else est quant à lui exécuté si aucune
des conditions précédentes n’a été réalisées.

Exemple :

Bien évidement, la variable x doit être définie auparavant. La fonction disp


permet d’afficher une chaîne de caractère spécifiée entre apostrophes. Si x
n’est ni positif ni nul, il reçoit la valeur 1.

Boucle conditionnelle (while … ) :


Ce mécanisme permet de répéter une série d’instructions tant qu’une
condition est vérifiée. Sa syntaxe est :
while expression
instructions …
end

8
Le terme expression est une expression logique. Si cette dernière est vraie, le
bloc instructions est exécuté. Puis, expression est de nouveau testé.
L’exécution du bloc est répétée tant que le test est vrai.
Exemple :

Boucle itérative (for … ) :


Cette boucle exécute le bloc interne autant de fois que spécifié par une
variable jouant un rôle de compteur. Sa syntaxe est :
for variable = debut:increment:fin
instructions …
end
Le compteur variable est initialisé à la valeur debut et évolue jusqu’à la valeur
fin par pas de increment. A chaque itération, le bloc instructions est exécuté.
Généralement, variable est un scalaire et souvent un entier.
Exemple :

Cet exemple construit élément par élément un vecteur x de dimension 5.

9
Exercices :
1) Résolution matricielle de systèmes linéaires. Résoudre matriciellement les
systèmes suivants. Si Matlab affiche un message d’erreur, dire pourquoi.
a) b)

2) Graphe de fonctions : Tracer le graphe des fonctions suivantes :


a) 𝑓 (𝑥 ) = 𝑥 2 𝑠𝑖𝑛𝑥 𝑥 ∈ [0,2𝜋]
𝑛
b) 𝑓𝑛 (𝑥 ) = √𝑛𝑥 𝑥 ∈ [0,1] 𝑛 = 1, … ,5 (tous sur la même figure).

3) Faire un programme qui permet de résoudre une équation de second degré.

4) Faire une fonction qui permet de déterminer la nature d’un triangle ABC.

(−1)𝑛
5) A l’aide d’un programme Matlab, calculer ∑𝑛
√𝑛

10
TP2 Etude des systèmes asservis sur Matlab/Simulink
Initiation :

Saisie d’une fonction de transfert par son numérateur et son dénominateur :


>> H=tf([1 3],[1 2 5],'variable','p')
remarque : Toute donnée entrée au clavier ou calculée par MATLAB demeure
dans l’espace de travail tant qu’on ne quitte pas l’environnement MATLAB ou
tant qu’on ne le remet pas volontairement à zéro. La remise à zéro de l’espace
de travail se fait par la commande clear.
Saisie d’une fonction de transfert par ses zéros pôles gain :
>> G=zpk([1 2],[3 4 5],2)
Association de fonctions de transfert :
Association en série : >>series(H,G)
Association en parallèle : >>parallel(H,G)
Système bouclé : >>feedback(H,G)
Diverses informations sur un système défini par sa fonction de transfert H :
pole(H) Liste les pôles
tzero(H) Liste les zéros
dcgain(H) Précise le gain statique
impulse(H) Réponse impulsionnelle
step(H) Réponse indicielle
lsim Réponse à une entrée
quelconque
bode(H) Diagramme de Bode
nyquist(H) Diagramme de Nyquist
margin(H) Marge de gain et de phase

Travail demandé :
1) Réponse d’un système du premier ordre :
Sous Matlab :
5
saisir la fonction de transfert 𝐺(𝑝) = .Visualiser la réponse indicielle et la
1+2𝑝
réponse impulsionnelle de G(p).
sous SIMULINK :
Pour accéder à Simulink, taper sous matlab : >>simulink ou cliquer sur Simulink
dans l’espace de travail. Ouvrir un new model à partir de la fenêtre principale
de Simulink).

11
On reprend l’exemple précédant, on obtient :

5
s+2
Step Transfer Fcn Scope

On trouve le bloc Transfer Fcn dans la bibliothèque Continuous, on prend un


échelon (step) dans la bibliothèque Sources, dans la bibliothèque Sinks, on
choisit un oscilloscope (Scope). On relie entre les différents blocs à l’aide de la
souris.
Pour récupérer le résultat de la simulation dans une variable exploitable sur
Matlab, on utilise le bloc To Workspace dans la bibliothèque Sinks :

5
s+2 Scope
Step T ransfer Fcn

simout

T o Workspace

Pour avoir un tracé exportable et imprimable, tapez dans matlab l’instruction


plot(tout,simout) où simot est le nom de la variable entrée dans le bloc To
Workspace. La variable tout est le vecteur qui contient les temps des points de
calcul de la simulation.
2) Réponse d’un système du deuxième ordre :
𝐾
a) Saisir la fonction de transfert 𝐺 (𝑝) = 2𝑚 𝑝2 .Avec K=1 et 𝜔0 = 1.
1+ 𝜔 𝑝+
0 𝜔2
0
Représenter sur le même graphe les réponses indicielles pour m=0.5, m=1 et
m=2. Déterminer le temps de pic et le dépassement pour le cas m=0.5.
Refaire le même travail sous simulink.
b) Représenter sur le même graphe le diagramme de Bode de G(p) pour m=0.5,
m=1 et m=2. Pour m=0.5, déterminer la pulsation de résonance ainsi que le
Gain maximal correspondant.
Représenter sur le même graphe les diagrammes de Black et de Nyquist de
G(p) pour m=0.5, m=1 et m=2.

12
3) Analyse d’un système asservis
On considère le système asservis suivant :
Cr(p)

T2(p)

(p)
-
Ve(p) + U(p) + m(p) 1 (p)
R(p) T1(p)
𝑝
-


𝐴
On donne 𝑇1(𝑝) = (1+𝜏 avec 𝐴 = 5, 𝜏1 = 0,1 𝑠 et 𝜏2 = 0,5 𝑠.
1 𝑝)(1+𝜏2 𝑝)
𝐵+𝐶 𝑝
𝑇2(𝑝) = (1+𝜏 avec B=0,2 et C=0,3. Le gain du capteur est =0,2V/rad.
1 𝑝)(1+𝜏2 𝑝)
Le correcteur utilisé est un correcteur proportionnel 𝑅 (𝑝) = 𝐾1.
1) A l’aide de Matlab et de simulink, étudier la stabilité du système en boucle
fermée en fonction de K1. Valider par une étude théorique.
2) Trouver à l’aide de Matlab/simulink la valeur de K 1 qui permet de garantir
une marge de gain égale à 10dB. Comparer avec le résultat théorique.
3) Pour cette valeur de K1 calculer la marge de phase.
4) Déterminer à l’aide de Matlab/simulink l’erreur statique 𝜺(∞) pour la valeur
de K1 précédente, une consigne en rampe unitaire et un couple résistant en
échelon d’amplitude 20N.m.

13
TP3 Modélisation et simulation de la machine à courant
continu
1) Introduction :
L’évolution des technologies conduit à utiliser des machines nécessitant des
vitesses de rotation précises et variables pour l’entraînement d’engins
industriels, systèmes robotique...etc.
Dans ce TP, on s’intéresse à la modélisation du moteur à courant continu, car il
offre une introduction facile au fonctionnement de ses homologues, en
donnant des repères clairs. Les moteurs à courant continu ont pendant
longtemps été les seuls aptes à la vitesse variable à large bande passante,
comme dans le domaine robotique. Ils ont donc fait l’objet de nombreuses
améliorations, et beaucoup de produits commercialisés aujourd’hui.
Sous MATLAB/SIMULINK, nous réalisons le modèle de la machine à courant
continu à excitation séparée par deux méthodes :
1- Par des fonctions de transferts de premier ordre.
2- Par la représentation d’état temporelle.
2) Modélisation de la MCC
Il s’agit d’un MCC à excitation séparée commandé par la tension d’induit, dont
le schéma technologique est illustré dans la figure au-dessous

La modélisation de l’ensemble moteur + charge est réalisable à partir des


équations de base de la machine à courant continu et du principe fondamental
de la dynamique (PFD):
Equations électromécaniques :

14
Equation électrique :

Equation mécanique :

Ce: le couple électromagnétique fourni par le moteur, E: la force contre


électromotrice générée par le moteur, Ua: la tension d’induit, Ra, La: la
résistance et l’inductance d’induit, J: le moment d’inertie du moteur, fr:
coefficient de frottement visqueux de l’ensemble moteur + charge.
3) Travail demandé
3-1- Modélisation dans le domaine fréquentiel (la transformée de Laplace)
1) Appliquer la transformée de Laplace sur le modèle de la machine, puis
déduire les fonctions de transfert qui forment ce moteur.
2) Réaliser le schéma bloc du moteur sous Simulink.
3) Mettez le modèle du MCC sous la forme d’un seul bloc avec les entrées Ua et
Cr, et les sorties Ia, Ω et Ce.
4) Déclarer les paramètres du moteur.
5) Alimenter la machine par une tension continue fixe de 220 V et appliquer un
couple de charge de 10 N.m à l’instant t = 1s ; le temps de simulation est de 2s.
6) Relever les courbes du courant induit, de la vitesse mécanique et du couple
moteur.
3-2- Modélisation dans le domaine temporel (la représentation d’état)
1) Refaire les mêmes questions de 2 à 6 de la section précédente (3.1), mais
maintenant en utilisant la représentation d’état : 𝑋̇ = 𝐴. 𝑋 + 𝐵. 𝑈
Avec :
𝐼
X est le vecteur d’état, 𝑋 = ( 𝑎 ).
Ω
𝑈
U est le vecteur de commande, 𝑈 = ( 𝑎 ).
Cr
2) Donner le schéma bloc de simulation de ce moteur, en utilisant la méthode «
Fcn »+ « Mux » ; avec les entrées sont Ua, et Cr, et les sorties sont Ia, Ω et Ce.

15

Vous aimerez peut-être aussi