Introduction à MATLAB Simulink Control toolbox - e

Transcription

Introduction à MATLAB Simulink Control toolbox - e
Département de Génie Energétique et Environnement.
Département de Génie Electrique.
Introduction à
MATLAB
Simulink
Control toolbox
MC ESHER
Edition janvier 2007
D PLANSON, JM RETIF
Institut National des Sciences Appliquées de Lyon
SOMMAIRE
SOMMAIRE
MATLAB
1
INTRODUCTION. ............................................................................................................................................ 1
1.1
2
L'ENVIRONNEMENT MATLAB - GENERALITES................................................................................... 5
2.1
2.2
2.3
2.4
3
COMMUNICATION AVEC L’UTILISATEUR. .................................................................................................. 24
OPERATEURS RELATIONNEL ET LOGIQUE. ................................................................................................. 24
INSTRUCTIONS DE CONTROLE.................................................................................................................... 25
FICHIERS *.M OU SCRIPTS.......................................................................................................................... 26
CREATION DE FONCTIONS MATLAB. ......................................................................................................... 26
FONCTIONS AVANCEES............................................................................................................................. 27
6.1
6.2
6.3
6.4
6.5
7
GRAPHIQUES 2D. ...................................................................................................................................... 20
GRAPHIQUES 3D. ...................................................................................................................................... 23
PROGRAMMATION AVEC MATLAB....................................................................................................... 24
5.1
5.2
5.3
5.4
5.5
6
SCALAIRE, VECTEUR, MATRICE. ................................................................................................................ 13
OPERATIONS ARITHMETIQUES ................................................................................................................... 17
VARIABLES ET FONCTIONS ........................................................................................................................ 18
GRAPHIQUES. ............................................................................................................................................... 20
4.1
4.2
5
PRESENTATION DE L’INTERFACE ................................................................................................................. 5
TRAVAIL EN MODE INTERACTIF OU EXECUTIF ............................................................................................. 6
FONCTION "HELP" ....................................................................................................................................... 9
ESPACE DE TRAVAIL (WORKSPACE).......................................................................................................... 10
OPERATIONS MATHEMATIQUES. .......................................................................................................... 13
3.1
3.2
3.3
4
INTRODUCTION A MATLAB....................................................................................................................... 2
TRAITEMENT DES POLYNOMES.................................................................................................................. 27
INTERPOLATIONS. ..................................................................................................................................... 27
INTEGRATION NUMERIQUE........................................................................................................................ 28
RESOLUTION DE SYSTEMES D’EQUATIONS NON-LINEAIRES. ...................................................................... 29
RESOLUTION DE SYSTEMES D’EQUATIONS DIFFERENTIELLES ORDINAIRES. ............................................... 29
RESUME, NON EXHAUSTIF, DES COMMANDES MATLAB ............................................................... 31
7.1
7.2
7.3
7.4
7.5
7.6
7.7
MATHEMATIQUES ..................................................................................................................................... 31
GRAPHIQUES ............................................................................................................................................. 32
CARACTERES SPECIAUX ............................................................................................................................ 33
ANALYSE DE DONNEES ............................................................................................................................. 33
PROGRAMMATION ET TYPES DE DONNEES ................................................................................................. 33
IMPORTATION ET EXPORTATION DE DONNEES ........................................................................................... 34
OUTILS DU BUREAU ET ENVIRONNEMENT DE DEVELOPPEMENT ................................................................ 34
i
SOMMAIRE
CONTROL SYSTEM TOOLBOX
1.
REPRESENTATION DES SYSTEMES.....................................................................................35
1.1.
Rappel sur les représentations continues. .................................................................35
1.1.1.
Cas continu, saisi d’une fonction de transfert. .................................................35
1.1.2.
Cas continu, saisi d’une matrice de transfert. ..................................................36
1.1.3.
Cas continu, saisi des équations d’état.............................................................37
1.2.
Rappel sur les systèmes échantillonnés. ...................................................................38
1.2.1.
Cas discret, fonction de transfert......................................................................38
1.2.2.
Cas discret, matrice de transfert.......................................................................39
1.2.3.
Cas discret, équations.......................................................................................40
1.3. Traitement des transmittances....................................................................................41
2. CHANGEMENT ENTRE LES FORMALISMES TRANSMITTANCE ET EQUATIONS D’ETAT. ....43
2.1.
Passage d’une fonction de transfert vers une équation d’état. ..................................43
2.1.1.
Cas continu mono variable. ..............................................................................43
2.1.2.
Cas discret monovariable. ................................................................................44
2.2.
Passage d’une matrice de transfert vers des équations d’état. ..................................45
2.3.
Passage entre des équations d’état et une fonction de transfert. ...............................46
2.4.
Passage entre des équations d’état et une matrice de transfert. ................................46
3. DISCRETISATION D’UN SYSTEME CONTINU.......................................................................48
3.1.
Discrétisation d’une fonction de transfert.................................................................48
3.2.
Discrétisation des équations d’état continues. ..........................................................48
4. PASSAGE D’UN SYSTEME DISCRET A UN SYSTEME CONTINU. ...........................................50
4.1.
Cas d’une fonction de transfert. ................................................................................50
5. ANALYSE DES ZEROS ET DES POLES DU SYSTEME.............................................................50
5.1.
Cas d’une fonction de transfert .................................................................................51
5.2.
Cas d’un système multivariable. ...............................................................................52
6. ANALYSE FREQUENTIELLE................................................................................................53
7. ANALYSE TEMPORELLE.....................................................................................................54
8. EXEMPLE POUR UNE FONCTION DE TRANSFERT CONTINUE DU SECOND ORDRE..............55
9. SOMMAIRE DES PRINCIPALES FONCTIONS. .......................................................................57
SIMULINK
1
INTRODUCTION A SIMULINK.................................................................................................................. 65
2
DEMARRAGE DE SIMULINK..................................................................................................................... 65
2.1
3
LES DIFFERENTES BIBLIOTHEQUES ........................................................................................................... 66
UTILISATION DE SIMULINK.................................................................................................................... 69
3.1
3.2
3.3
CONSTRUCTION D’UN DIAGRAMME SIMULINK....................................................................................... 69
CHOIX DES PARAMETRES DE SIMULATION................................................................................................. 70
LANCEMENT DE LA SIMULATION............................................................................................................... 71
ii
Résumé des commandes
Préface
Matlab constitue aujourd’hui un outil de simulation incontournable pour l’ingénieur.
A l’orée de ce nouveau millénaire le concepteur regarde « l’avenir » de son projet technologique au
sein du silicium tel la Pythie de Delphes qui augurait du futur dans les entrailles de quelques
gallinacés.
Résumé des commandes
Résumé des commandes
MATLAB
1 INTRODUCTION.
Ce document est un guide simplifié du logiciel MATLAB et SIMULINK pour les étudiants des
départements de Génie Energétique et Environnement et de Génie Electrique de l’INSA de
Lyon. C’est ce logiciel que vous utiliserez durant les trois années que vous passerez au
département. Il sera utilisé en TP et TD et servira à illustrer certaines parties de cours
(Automatique continue en 4éme et 5éme année, Signaux Systèmes en 3ème année, Traitement du
Signal en 4ème année, TP de MAP, etc…). L’objectif est de présenter quelques notions de base
pour permettre aux étudiants un démarrage rapide. Le logiciel dispose d’une aide en ligne très
performante, qui comprend une grande quantité d’exemple qu’il ne faut pas hésiter à consulter.
De plus, sur les serveurs de « The Mathworks » (compagnie propriétaire de Matlab, Simulink,
etc… ) www.mathworks.com et www.mathworks.fr vous trouverez quantité de démonstrations,
exemples et tutoriaux et même d’anciennes versions de Matlab (tournant sous DOS) que vous
pourrez télécharger pour travailler chez vous.
Pour toutes remarques ou commentaires sur ce document «Introduction à MATLAB et
Simulink» joignez nous par courriel : [email protected] ou [email protected].
On peut positionner l’enseignement de MATLAB au sein du Département GEN de la façon
suivante :
Logiciel
Matlab
Noyau
MATLAB
TOOLBOXES
(Boîtes à outils
spécialisées)
SIMULINK
+ Boîtes à outils
Spécialisées
Simulink
Cours
3GEN
ANALYSE
NUMERIQUE
SIMULINK
COMMANDE DES
PROCEDES
CONTINUS
1
Cours
5GEN
CALCUL ET
MODELISATION
DES REACTEURS
Introduction à MATLAB
1.1
Introduction à MATLAB.
1.1.1 Généralités.
MATLAB est un logiciel de calcul matriciel développé il y a plus de vingt ans, qui permet avec
les versions actuelles de piloter des instruments de mesure, de faire de l’analyse d’images, du
traitement du signal, etc… MATLAB est compatible avec les différents systèmes d’exploitation
usuels (Windows , Unix, Mac, Linux).
Le cœur du logiciel étant le calcul matriciel, on retrouvera donc toutes les fonctions nécessaires à
ces calculs, ce type de représentation (matrice) étant lui aussi à la base de l’automatique, tout
naturellement c’est devenu l’un des premiers logiciels de simulation de systèmes linéaires. Afin
d’en faciliter l’utilisation de nombreuses fonctions de tracé, de sauvegarde, etc… lui ont été
adjointes et il est ainsi devenu un standard de logiciel de calcul scientifique.
Par ailleurs, avec ses fonctions de boucle (for, while, …), de condition (if, else, …) et de test
(égalité, >, <, ==, …), il peut être considéré comme un langage de programmation (certaines
universités nord-américaines l’utilise comme logiciel d’apprentissage de l’informatique
scientifique).
Le cœur du logiciel MATLAB comprend essentiellement 5 éléments :
Un environnement et des outils de développement
L’environnement visible est constitué de fenêtres graphiques telles que la Fenêtre de
Commandes, l’historique des Commandes, un Editeur de texte et différents navigateurs
qui permettent de visualiser l’espace de travail, les fichiers, et les chemins d’accès.
Une bibliothèque de fonctions mathématiques
Cette bibliothèque est constituée d’un ensemble très complet de fonctions mathématiques
préprogrammées telles que la somme, le sinus….ou des fonctions plus complexes telles
que l’inverse d’une matrice, ses valeurs propres, la transformée de Fourier etc…
Le langage MATLAB
MATLAB comporte un certain nombre d’instructions qui permettent d’utiliser des
instructions de contrôle, différentes structures de données, d’effectuer des entrées/sortie.
MATLAB permet donc d’écrire des programmes permettant de résoudre des problèmes
complexes.
Les graphiques
MATLAB possède une interface et une bibliothèque permettant de produire des
graphiques de qualité en deux ou trois dimensions, de créer des animations, etc…Au
niveau de l’utilisation au Département GEN, la possibilité de résoudre un problème
mathématique et de produire des graphiques dans un unique environnement de travail
constitue un des atouts majeurs de MATLAB.
Une interface externe
C’est une bibliothèque qui permet d’écrire des programmes en C ou en Fortran qui
interagissent avec MATLAB ou d’inclure dans MATLAB des fonctions écrites en C ou
Fortran. Cette fonctionnalité ne sera pas évoquée dans le cadre de ce fascicule.
2
Introduction à MATLAB
1.1.2 Spécificités de MATLAB
Par rapport à d'autres langages tels que Fortran, C ou C++, MATLAB possède quelques
particularités:
-
il n'est pas nécessaire de compiler un programme pour l'exécuter.
-
il n'est pas nécessaire de déclarer les variables utilisées dans un programme ; il est
possible d'effectuer une déclaration dynamique de variables, c'est-à-dire de créer et
supprimer des variables au cours de l'exécution d'un programme.
-
il est possible d'exécuter un grand nombre d'opérations sur les matrices sans utiliser de
boucles sur les indices des éléments des matrices, ce qui permet d'écrire des programmes
"compacts".
-
MATLAB possède une interface graphique qui permet de visualiser très rapidement et
facilement les résultats dans des graphiques de qualité. Cette interface graphique est l’un
des atouts majeurs de MATLAB.
-
MATLAB possède une bibliothèque mathématique très riche ; ainsi, la plupart des
algorithmes usuels utilisés en analyse numérique (intégration de fonctions, résolution
d'équations différentielles,...) existent sous forme de fonctions préprogrammées.
-
MATLAB possède un certain nombre de Boîtes à Outils (ou Toolbox) spécialisées qui
permettent d'effectuer de l'Acquisition et du Traitement d'Images ou du Signal,
d'interfacer un appareil de mesure (oscilloscope, camera,...) ou une carte de numérisation
analogique/digital, de résoudre des équations aux dérivées partielles,...
-
MATLAB possède une Toolbox particulière, nommée SIMULINK, qui permet de
simuler des systèmes; l’utilisation de cette fonctionnalité de MATLAB fait l’objet d’un
enseignement spécifique au Département GEN.
-
Il est possible de suivre l'exécution d'un programme instruction par instruction, et de le
"debugger" grâce à un éditeur spécial.
-
Enfin, MATLAB a une diffusion mondiale, tant au plan universitaire qu’industriel.
1.1.3 Fonctions spéciales de MATLAB (Toolbox)
A partir du noyau dur, des boites à outils ont été élaborées, ainsi nous pouvons trouver des
modules pour le traitement du signal (Signal Processing Toolbox) l’automatique classique
(Control system toolbox) ainsi que pour l’Automatique avancée (Robust control, Nonlinear
Control Design).
A l’heure actuelle Matlab dispose d’environ 45 boites à outils dans des domaines aussi divers
que l’Automatique, le Traitement du Signal des Images et des Télécommunications, l’Analyse de
données, les Mathématiques appliquées, la Finance, le Temps Réel. Ces boites à outils
contiennent des instructions spécifiques au domaine de la boîte à outil que vous pourrez appeler
dans vos lignes de commande. Au département vous utiliserez surtout les boîtes à outils
suivantes : Control toolbox pour l’automatique continue et Signal Processing toolbox pour le
traitement du signal.
Il existe aussi des outils complémentaires (14) pour générer des programmes C ou C++, des liens
avec Excel, des Bases de Données (Oracle, Microsoft SQL Server, etc..), des instruments de
mesures (GPIB, VISA), des serveurs Web et d’autres choses. Des Bibliothèques SIMULINK
dans le domaine du Génie Electrique, de la Mécanique et de l’espace sont aussi disponibles.
3
Introduction à MATLAB
Depuis cette année il existe aussi une boite à outil qui permet de faire directement des
acquisitions à partir de cartes placées dans le PC ou d’instruments de mesures (Oscilloscope,
générateur de fonctions, analyseur de spectre, etc …) au format GPIB ou VISA.
Il est aussi possible de piloter des systèmes en temps réel grâce à xPC Target ou Dspace. A partir
de Simulink et des modèles mis au point en simulation, on génère "du code Temps réel" qui sera
téléchargé sur la machine cible, qui pilotera le système. Il est aussi possible de généré du code
qui sera embarqué sur un système autonome.
Matlab et Simulink sont à l’heure actuelle les logiciels les plus utilisés tant dans le monde de la
Recherche que dans l’Industrie. Ce sont des outils généraux qui sont capables de résoudre une
grande quantité de problèmes, mais on peut toujours trouver des logiciels beaucoup plus
performants pour des domaines très spécifiques.
L’intérêt d’outils de simulation avancés ne doit pas faire perdre de vue à l’utilisateur que la
représentation interne des nombres est entachée d’erreurs qui peuvent conduire à des résultats
erronés. Il faut donc faire très attention dans l’interprétation que vous ferez lors de l’utilisation
de ces logiciels de calcul numérique. En effet vous allez travailler avec des données codées
(approximées) sur un nombre d’octets plus ou moins important… Vous allez ensuite faire des
calculs avec ces approximations et donc les résultats seront entachés d’erreurs plus ou moins
importantes… La pertinence des résultats issus de la résolution par une méthode numérique est
fortement sujette à la forme, au conditionnement numérique initial, au niveau de précision des
variables, au test de convergence, aux méthodes de résolution choisies…. L’ingénieur et
l’étudiant doivent à tout moment rester critique et avoir conscience du résultat qu’il doit obtenir
à priori.
Matlab est un langage interprété (comme le BASIC), c’est à dire que les lignes sont interprétées
(transformées en langage machine) et exécutées ligne à ligne au fur et à mesure de leur écriture.
Il est donc nécessaire d’avoir dans sa machine le logiciel pour exécuter un programme fait par
quelqu’un d’autre ou par vous-même.
Il existe trois possibilités pour exécuter ces programmes :
Mode interactif. Ce qui est décrit précédemment, lignes exécutées au fur et à mesure de leur
écriture.
Mode exécutif. Matlab exécute un fichier spécifique (M-file, extension .m) qui sera exécuté ligne
à ligne.
Création d’un exécutable. Il est nécessaire d’avoir à sa disposition MATLAB Compiler qui
permet de transformer son fichier.m en C ou C++ qui sera compilé et pourra être exécuté sans
disposer du logiciel MATLAB.
4
Introduction à MATLAB
2 L'ENVIRONNEMENT MATLAB - GENERALITES
2.1
Présentation de l’interface
Pour lancer MATLAB, il faut double-cliquer sur l'icône de la Figure 1 présent sur le bureau du
PC. La version disponible au Département GEN est une version 7.0 destinée à l’enseignement.
Une fenêtre telle que celle de la Figure 2 va s’ouvrir.
Figure 1 Icône du logiciel Matlab
Aide de Matlab
(Help)
Fenêtre de commandes
(Command Window)
Espace de travail
(Workspace)
Répertoire courant
(Current Directory)
Historique des commandes
(Command History)
Figure 2 Interface de Matlab
La figure 2 montre que, par défaut, l'interface de MATLAB comporte plusieurs éléments et
fenêtres :
-
-
une fenêtre principale, intitulée Command Window (ou Fenêtre de Commandes) située
dans la partie droite de la fenêtre principale ; c'est dans cette fenêtre que sont tapées les
instructions dont l'exécution sera obtenue en tapant sur la touche Entrée (ou Return) du
clavier; c'est aussi dans cette fenêtre que l'on tape le nom d'un programme (ou script)
dont on souhaite lancer l'exécution ;
une fenêtre située en haut à gauche comportant deux onglets, intitulés Workspace
(Espace de Travail) et Current Directory (Répertoire courant). Un clic sur l’onglet
Workspace permet de visualiser les variables qui sont présentes en mémoire de
l'ordinateur, leur type, leur taille,....C’est un outil très utile pour identifier des sources
5
Introduction à MATLAB
-
d’erreurs dans un programme. Un clic sur l’onglet Current Directory permet d’afficher
un gestionnaire de fichiers qui liste les différents sous-répertoires et fichiers présents dans
le répertoire courant, ainsi que la taille et le type de ces fichiers ;
différents onglets intitulés File, Edit, Debug, Desktop, Window, Help. L’onglet Help,
également accessible par l’icône comportant un point d’interrogation jaune, permet
d’accéder à l’aide de Matlab.
Remarque
Lorsque l’on ouvre le logiciel MATLAB le répertoire de travail par défaut est
généralement C:\Matlab7\work. Toute opération de stockage de fichiers sur le disque dur
sera donc effectuée dans ce répertoire, ce qui est fortement déconseillé. Il est donc
nécessaire de spécifier le répertoire de travail grâce à une instruction décrite plus loin, ou
en utilisant l’onglet de navigation situé en haut de la fenêtre principale.
2.2
Travail en mode interactif ou exécutif
Il existe principalement deux façons de travailler avec MATLAB :
-
un mode interactif (fonctionnement par ligne de commande), pour lequel on tape dans la
fenêtre de commande les instructions dont l'exécution s'effectue à l'aide de la touche
Entrée (ou Return) du clavier. Ce mode de fonctionnement est très utile si on veut
exécuter quelques tâches ou calculs très simples en temps réel; il devient vite inefficace
lorsqu’il s’agit d’enchaîner de nombreuses tâches (résolution d’une équation
différentielle, tracé des résultats, stockage des résultats sur le disque dur,…) ;
-
un mode exécutif qui consiste à lancer l’exécution d’une suite d’instructions qui auront
été préalablement tapées dans une fenêtre d’édition. Le contenu de cette fenêtre est
stocké sur le disque dur dans un fichier dont l’extension est .m (par exemple,
monprogramme.m), et son exécution sera obtenue en tapant monprogramme dans la
Fenêtre de Commande, suivi de la touche Entrée (Matlab comprend alors qu’il doit
exécuter le contenu des lignes du fichier intitulé monprogramme.m). En fait, il existe
deux types de fichiers .m décrits plus loin.
Ces deux modes de fonctionnement, qui sont utilisés dans le cadre de cet enseignement,
nécessitent que le logiciel MATLAB soit installé sur la machine. Il existe néanmoins une
troisième possibilité qui consiste à compiler un fichier .m afin de créer un exécutable qui pourra
être lancé sur n’importe quelle machine non pourvue de Matlab.
Les deux modes de fonctionnement interactif et exécutif sont illustrés dans l’exemple suivant qui
trace la fonction x =sin(t) pour t compris entre 0 et 2π.
Exemple de fonctionnement en mode interactif
Pour fonctionner en mode interactif (par ligne de commandes), il faut taper chaque instruction à
exécuter dans la Fenêtre de Commandes à côté du symbole >>, suivi de la touche Entrée.
Pour éviter de stocker des fichiers n’importe où sur le disque dur, à l’aide de la barre de
navigation, il faut d’abord se placer dans un répertoire de travail, par exemple le répertoire
Documents Partagés du PC. Le résultat de l’exécution de chacune des 6 lignes de commande cidessous :
6
Introduction à MATLAB
>> t = [0 :2*pi/100 :2*pi] ;
>> x = sin(t) ;
>> plot(t,x) ;
>> save monfichier t x ;
>> clear all ;
>> load monfichier ;
L’affichage dans les fenêtres Workspace et Current Directory permet de surveiller le résultat
de l’exécution de chacune des lignes.
La première ligne de commande a pour effet de créer une variable nommée t, constituée de réels
double précision, t variant de 0 à 2π, avec un pas égal à 2π/100. Cette variable t est effectivement
présente en mémoire de l'ordinateur (fenêtre Workspace), sous la forme d’un tableau à 1 ligne et
101 colonnes.
La deuxième ligne de commande a pour objet de créer une variable x , de la même dimension
que t, et dont chaque terme x(i) est égal au sinus de t(i), i variant de 1 à 101. La création effective
de cette variable x est visualisée dans la fenêtre Workspace.
La troisième ligne de commande a pour objet de tracer dans une fenêtre graphique la courbe x(t).
La quatrième ligne de commande a pour effet de créer sur le disque dur dans le répertoire
courant un fichier intitulé monfichier.mat (l’extension d’un fichier de données Matlab est par
défaut .mat) et contenant les deux variables t et x.
La cinquième ligne de commande a pour effet d’effacer de la mémoire de l’ordinateur toutes les
variables.
Enfin, la sixième ligne de commande a pour effet de charger en mémoire le contenu du fichier
monfichier.mat.
Pour sauvegarder sur le disque dur le graphique, sélectionner dans l’onglet File situé en haut à
gauche de cette fenêtre l’option Save As… et choisir par exemple mafigure pour le nom du
fichier. L’examen de la Fenêtre Current Directory montre qu’il existe maintenant deux fichiers
sur le disque dur :
- un fichier de données intitulé monfichier.mat ;
- un fichier graphique intitulé mafigure.fig.
Remarques
i)
ii)
iii)
iv)
Ces deux fichiers possèdent des extensions propres à Matlab (.mat et .fig); leur
contenu ne peut donc être lu qu’avec Matlab. Vous aurez néanmoins l’occasion de
voir qu’il existe d’autres formats de stockage qui permettent à ces fichiers et figures
d’être utilisés par d’autres logiciels d’utilisation courante (Word, Excel,
Powerpoint,…).
Toutes les lignes de commande sont terminées par un point-virgule ; en l’absence du
point virgule, MATLAB va non seulement exécuter l’instruction correspondant à cette
ligne, mais également afficher à l’écran le résultat de cette exécution (par exemple,
pour la première ligne, affichage à l’écran de toutes les valeurs de la variable t).
Comme le montre cet exemple, MATLAB ne nécessite pas de déclaration de type ou
de taille de variable. Lorsque MATLAB rencontre un nouveau nom de variable, il
crée automatiquement cette variable, et lui alloue la quantité de mémoire nécessaire.
La première ligne de commande pour la création de la variable t illustre la façon
dont on peut travailler avec une seule instruction sur tous les éléments d’un tableau
sans utiliser de boucles. Le contenu de la variable t est identique à celui qu’on
obtiendrait en remplaçant la première ligne par les trois lignes suivantes :
7
Introduction à MATLAB
for k=1 :101
t(k)=(k-1)*2*pi/100 ;
end
Exemple de fonctionnement en mode exécutif
On souhaite maintenant réaliser les mêmes instructions, mais en mode exécutif, c’est-à-dire en
lançant l’exécution d’un programme stocké sur le disque dur dans un fichier dont l’extension
MATLAB est .m. Un clic sur l’icône situé en haut à gauche de la barre de commande (qui
représente une feuille de papier) a pour effet ouvrir une fenêtre d’édition, dans laquelle il faut
taper les 6 lignes de commande précédentes. Pour sauvegarder dans un fichier du disque dur le
contenu de ces instructions, il faut sélectionner dans l’onglet File situé en haut à gauche de cette
fenêtre l’option Save As…et donner au fichier un nom, par exemple monprogramme. L’examen
du répertoire courant permet de vérifier la création sur le disque dur du fichier intitulé
monprogramme.m. Pour lancer l’exécution du programme, il faut alors taper monprogramme
dans la fenêtre de commande à côté du symbole >>. De même que pour le mode interactif,
l’exécution des instructions conduit à la création des variables t et x, au tracé du graphique x(t) et
à la création sur le disque dur d’un fichier monfichier.mat contenant les variables t et x.
Remarque
A travers la présentation des deux modes de fonctionnement interactif et exécutif, les trois
types de fichiers propres à MATLAB qui seront utilisés dans le cadre de cet enseignement
ont été présentés:
- programme : fichier avec extension .m
- données : fichier avec extension .mat
- figure : fichier avec extension .fig
8
Introduction à MATLAB
2.3
Fonction "help"
Pour obtenir de l'aide sur un sujet, une instruction ou une fonction, on tape help suivi par le
sujet, le nom de l'instruction ou de la fonction désirée.
Exemple :
» help atan
atan Inverse tangent.
atan(X) is the arctangent of the elements of X.
See also atan2.
La réponse proposée suggère souvent une aide sur une instruction similaire (‘See also …’)
Une autre méthode pour obtenir de l’aide consiste à taper helpdesk dans une console et on
obtient alors la fenêtre suivante qui fait appel à l’environnement Netscape :
Il est possible d’accéder à une aide en ligne très complète comprenant notamment toute la
documentation en cliquant sur le « ? » dans la barre de menu de la console Matlab.
9
Introduction à MATLAB
2.4
Espace de travail (Workspace).
Les variables sont définies au fur et à mesure que l'on donne leurs noms et leurs valeurs
numériques ou leurs expressions mathématiques.
Les variables ainsi définies sont stockées dans l'espace de travail et peuvent être utilisées dans les
calculs ultérieurs. Attention, le langage Matlab fait la différence entre les majuscules et les
minuscules.
10
Introduction à MATLAB
2.4.1 Information sur l’espace de travail.
Pour obtenir une liste des variables dans l'espace de travail, on utilise les instructions suivantes :
who
whos
Affichage des variables dans l'espace de travail.
Affichage détaillé des variables dans l'espace de travail.
La deuxième instruction (whos) donne beaucoup plus de détails.
Exemple d’utilisation de l’instruction « who »
Exemple d’utilisation de l’instruction « whos »
11
Introduction à MATLAB
2.4.2 Enregistrement des variables de l’espace de travail dans un fichier.
Pour enregistrer les variables de l'espace de travail dans un fichier, on utilise les instructions
suivantes :
save
Enregistrer toutes les variables dans un fichier matlab.mat. Dans une session
ultérieure, taper load pour ramener l'espace de travail enregistrée.
save fichier1.mat x y z A X
Enregistrer les variables x, y, z, A, X dans le fichier
fichier1.mat. Dans une session ultérieure, taper
load fichier1 pour recharger le nom et le contenu
des variables x, y, z, A, X dans l'espace de travail.
2.4.3 Commandes DOS/UNIX.
Il est possible d’utiliser certaines commandes des systèmes d’exploitation DOS/UNIX.
pwd
permet de connaître le répertoire courant de travail
cd ..
permet de remonter d’un niveau dans la hiérarchie des répertoires
cd directory_name
permet d’accéder au répertoire ‘directory_name’
dir ou ls
permettent de connaître le contenu du répertoire courant
mkdir directory_name permet de créer un répertoire directory_name
delete(‘file_name’) supprime un fichier file_name
12
Introduction à MATLAB
3 OPERATIONS MATHEMATIQUES.
3.1
Scalaire, vecteur, matrice.
L'élément de base de MATLAB est la matrice. Un scalaire est ainsi une matrice de dimension
1×1, un vecteur colonne de dimension n est une matrice n×1, un vecteur ligne de dimension n,
une matrice 1×n.
Contrairement aux langages de programmation usuels, il n'est pas obligatoire de déclarer les
variables avant de les utiliser et, de ce fait, il faut prendre toutes les précautions dans la
manipulation de ces objets. Les variables sont affectés directement à l’aide du signe égal (=).
3.1.1 Scalaires.
Les scalaires se déclarent directement :
>> x = 0.12;
>> a = 1.7e-4;
Les nombres complexes peuvent être écrits sous forme cartésienne ou polaire :
Forme cartésienne : 0.5 + i*2.7
-1.2 + j*0.789
2.5 + 9.7i
Forme polaire : 1.25*exp(j*0.246)
Pour choisir le format d'affichage pour les nombres, on utilise l'instruction format :
format short
0.1234
format long
0.12345678901234
format short e
1.2341E+002
format long e
0.123456789012345E+002
format hex
0123456789ABCDEF
Nota : i) le format hexadécimal est utilisé pour les calculs en base 16.
ii) ne pas confondre format d’affichage et précision machine
3.1.2 Vecteurs.
Il existe différentes façons de définir un vecteur :
- soit en donnant la liste de ses éléments entre crochet « [ ] » :
>> V_ligne = [0 1 2]
V_ligne =
0
1
2
Pour les vecteurs colonne, on sépare les éléments par des points-virgules :
>> V_colonne = [0;1;2]
V_colonne =
0
1
2
-
soit en utilisant l'opérateur d'incrémentation (:). Ainsi, pour créer un vecteur ligne
constitué des valeurs de 0 à 1 par incrément de 0,2 :
>> V = [0:0.2:1]
V=
Columns 1 through 6
0
0.2000
0.4000
0.6000
13
0.8000
1.0000
Introduction à MATLAB
Par défaut, l'incrément est de 1:
>> V = [0:5]
V=
0
1
2
3
4
-
5
soit en utilisant une fonction qui génère un vecteur. Exemple :
>> x=linspace(1,10,6)
% variation linéaire : 6 valeurs sont réparties linéairement
dans l’intervalle donné allant de 1 à 10.
x=
1.0000
2.8000
4.6000
6.4000
8.2000
10.0000
ou :
>> y=logspace(1,3,7)
y=
1.0e+003 *
0.0100
0.0215
% variation logarithmique – 7 valeurs sont réparties
linéairement sur une échelle logarithmique dans l’intervalle
donné
0.0464
0.1000
0.2154
0.4642
1.0000
Remarque :
Lorsqu'on ajoute un «;» à la fin d'une instruction, elle est exécutée mais le résultat n'est pas
affiché :
>> a=[1 2 3 4 5];
>> b=-2.5;
>> c=b*a;
>>
Lorsqu'il n'y a pas de «;» à la fin d'une instruction, elle est exécutée et le résultat est affiché :
>> a=[1 2 3 4 5]
a=
1
2
3
4
5
>> b=-2.5
b=
-2.5000
>> c=b*a
c=
-2.5000
-5.0000
-7.5000
-10.0000
-12.5000
>>
On se servira de cette remarque pour afficher les résultats de calcul à l’écran.
14
Introduction à MATLAB
3.1.3 Matrices.
Les matrices peuvent être construites directement :
>> M = [1 2 3; 4 5 6 ; 7 8 9]
M=
1
2
3
4
5
6
7
8
9
On peut avoir accès aux éléments de la matrice par :
>> m21 = M(2,1)
% 2e ligne, 1ère colonne
m21 =
4
Il est aussi possible de stocker dans un vecteur une ou plusieurs lignes (ou colonnes). Ainsi, si
l'on veut stocker la deuxième colonne de la matrice M :
>> V = M(:,2)
% ici, (:) signifie toutes les lignes
V=
2
5
8
De la même manière, si l'on veut stocker les lignes 2 et 3 :
>> M2=M(2:3,:)
% (2:3) signifie ligne 2 à 3 et (:) signifie toutes les colonnes
M2 =
4
5
6
7
8
9
Il existe aussi des matrices prédéfinies dans Matlab, notamment :
Zeros
Ones
Eye
Linspace
Logspace
rand
randn
ones(N,N)
zeros(N,N)
Matrice de 0
Matrice de 1
Matrice identité
Vecteur linéairement espacé
Vecteur logarithmiquement espacé
Nombre aléatoire à répartition uniforme
Nombre aléatoire à répartition normale
définit une matrice carré contenant des 1 et de taille N×N.
définit une matrice carré contenant des 0 et de taille N×N.
Valeurs propres d’une matrice :
[v,d] = eig(X)
Produit un matrice diagonale d des valeurs propres de X et une matrice pleine v
dont les colonnes correspondent aux vecteurs propres tel que X ⋅ d = v ⋅ d .
» [v,d]=eig(A)
v=
-0.4152 0.3001 - 0.5584i 0.3001 + 0.5584i
0.8079 0.0363 - 0.4525i 0.0363 + 0.4525i
-0.4182 0.5330 - 0.3285i 0.5330 + 0.3285i
d=
-0.8260
0
0
15
Introduction à MATLAB
0
0
5.6030 + 1.1550i
0
5.6030
0
- 1.1550i
Inversion d’une matrice.
inv(X)
inversion de la matrice X
» inv(A)
ans =
-0.3963 0.5456 0.2455
1.2702 -0.9057 -0.6720
-0.5722 0.5571 0.4337
Matrice exponentielle.
expm(X)
Matrice exponentielle
Transposée d’une matrice.
B = A' La matrice B est égale à la matrice A transposée
Somme de deux matrices.
C=A+B
produit de deux matrices.
D=A*B
EMPLOI DES INDICES
Les éléments d'un vecteur ou d'une matrice peuvent être adressés en utilisant les indices sous la
forme suivante :
t(10)
élément no. 10 du vecteur t
A(2,9)
élément se trouvant à ligne 2, colonne 9 de la matrice A
B(:,7)
la colonne 7 de la matrice B
B(3,:)
la ligne 3 de la matrice B
Addition
D=A-B
Soustraction
Z = X*Y
Multiplication
X = B/A
Équivalent à B*inv(A)
OPÉRATION «ÉLÉMENT PAR ÉLÉMENT»
Les opérations «élément par élément» des vecteurs et des matrices sont effectuées en ajoutant un
point (.) avant les opérations * / \ ^ '
Exemple 2 :
>> A=[1 2 3 4 5];
>> B=[6 7 8 9 10];
>> C=A.*B
C=
6
14
24
36
>> D=A./B
D=
0.1667
0.2857
50
0.3750
0.4444
16
0.5000
Introduction à MATLAB
3.2
Opérations arithmétiques
3.2.1 Opérations arithmétiques usuelles.
Les opérations usuelles d'addition, de soustraction et de multiplication par scalaire sur les
vecteurs et les matrices sont définis dans MATLAB. Les expressions mathématiques sont écrites
de la façon habituelle :
z = 5*exp(-0.4*x)*sin(7.5*y);
Addition
Soustraction
Multiplication
Elévation à la puissance
Transposée de la matrice
Division à droite
Division à gauche
+
*
^
′
/
\
En revanche, dans le cas de la multiplication (ou de la division) de vecteurs (ou de matrices), il
faut faire attention à leurs dimensions. En effet :
>> V1 = [1 2];
>> V2 = [3 4];
>> V = V1 * V2
% multiplication de vecteurs
??? Error using mtimes
Inner matrix dimensions must agree.
MATLAB indique une erreur lorsque les dimensions ne concordent pas (lisez attentivement les
messages d'erreur, ils sont parfois utiles pour corriger vos programmes). L’erreur provient ici du
fait qu’on ne peut multiplier deux vecteurs lignes (relisez vos cours de calcul matriciel…).
Il est possible par contre de multiplier (ou de diviser) élément par élément. Il suffit d’ajouter un
point (.) avant les opérations *, /, \, ^ :
>> V = V1 .* V2
V=
3
8
% multiplication de vecteurs élément par élément
3.2.2 Calcul matriciel.
Bien évidemment, Matlab recèle de nombreux moyens propres au calcul matriciel comme
l’inversion de matrice (inv), l’extraction de la diagonale de la matrice (diag), la détermination
des valeurs propres d’une matrice (eig), de son déterminant (det)… Vous retrouverez une partie
de ces commandes à la fin de ce fascicule dans la rubrique résumant les commandes Matlab.
17
Introduction à MATLAB
3.2.3 Analyse des données par colonnes.
De nombreuses commandes Matlab permettent de réaliser des opérations colonne par colonne
(ou ligne par ligne), notamment :
Valeur maximum
Valeur minimum
Valeur moyenne
Somme des éléments
Produits des éléments
Ecart type
Tri par ordre croissant
Max
Min
Mean
Sum
prod
Std
sort
3.2.4 Fonctions mathématiques élémentaires.
Valeur absolue
Racine carrée
Partie réelle
Partie imaginaire
Produits des éléments
Signe
Exponentielle
Log base e/ log base 10
Abs
Sqrt
Real
imag
Round
Sign
exp
Log / log10
3.2.5 Fonctions trigonométriques.
Sin, asin, sinh, asinh
Cos, acos, cosh, acosh
tan, atan, tanh, atanh
3.3
Sinus, Arcsin trigo et hyperbolique
Variables et fonctions
VARIABLES
Exemples de variables en utilisant soit une affectation (signe =) soit une expression
mathématique :
a =1.25;
x = 0:0.5:10;
y = a*x;
z = y.^2;
EXPRESSIONS MATHÉMATIQUES
On écrit les expressions mathématiques de la façon habituelle :
z = 5*exp(-0.4*x).*sin(7.5*y);
18
Introduction à MATLAB
FONCTIONS MATHÉMATIQUES
Les fonctions mathématiques de base sont données dans le tableau suivant :
abs
angle
sqrt
real
imag
Valeur absolue
Module (nb complexe)
Argument
(nb complexe)
Racine carrée
Partie réelle
Partie imaginaire
conj
round
fix
floor
ceil
Conjuguée
(nb complexe)
arrondir
Arrondir (vers zéro)
Arrondir (vers -∞)
Arrondir (vers ∞)
sign
rem
exp
log
log10
signe
reste
exponentielle
Logarithme base e
Logarithme base 10
Les fonctions trigonométriques sont données dans le tableau suivant :
sin
sinh
cos
cosh
tan
tanh
asin
asinh
acos
acosh
atan
atanh
Exemple 3 :
>> x=-2+5i
x=
-2.0000 + 5.0000i
>> a=real(x)
a=
-2
>> b=imag(x)
b=
5
>> X=abs(x)
X=
5.3852
>> alfa=angle(x)
alfa =
1.9513
Exemple 4 :
>> w=50;
>> t=0.5e-3;
>> y=25*exp(-4*t)*cos(w*t)
y=
24.9423
CRÉATION DE FONCTIONS
L'utilisateur peut créer des fonctions particulières pour ses applications. Voir
«Programmation avec MATLAB».
19
Introduction à MATLAB
4 GRAPHIQUES.
Pour ouvrir une fenêtre dans laquelle seront tracés des graphiques, il faut utiliser l’instruction
figure. S’il n’y a besoin que d’une seule fenêtre graphique, cette instruction est optionnelle.
4.1
Graphiques 2D.
4.1.1 Tracée de courbes
On utilise l'instruction plot pour tracer un graphique 2D :
plot(x,y)
Trace le vecteur y en fonction du vecteur x.
plot(t,x,t,y,t,z)
Trace x(t), y(t) et z(t) sur le même graphique.
plot(t,z,'r--')
Trace z(t) en trait mixte rouge.
stem(k,z)
Trace z(k.T) en échantillons (pour les fonctions discrètes).
La chaîne de caractères correspond à la définition du symbole et de la couleur utilisés selon le
code suivant :
y
jaune
.
point
-
trait plein
m
c
r
g
b
w
k
magenta
cyan
rouge
vert
bleu
blanc
noir
o
x
+
*
s
d
v
^
<
>
p
h
cercle
croix
plus
*
carré
losange
triangle
triangle
triangle
triangle
étoile
étoile
:
-.
--
trait pointillé
plein pointillé
trait mixte
Nota : rien ne vaut mieux qu’un essai !
4.1.2 Format de graphique
On peut choisir le format du graphique :
plot(x,y)
Trace y(x) avec des échelles linéaires
loglog(x,y)
Trace y(x) avec des échelles logarithmiques
semilogx(f,A)
Trace A(f) avec une échelle log(f)
semilogy(w,B)
Trace B(w) avec une échelle log(B)
polar(theta,r)
Trace r(theta) en coordonnées polaires
bar(x,y)
Trace y(x) sous forme des barres
grid
Quadrille le graphe de la fenêtre active
20
Introduction à MATLAB
Exemple 5 :
» t = 0:pi/100:2*pi; % La variable π est prédéfinie et vaut pi = 3.14159265358979
y = sin(t);
plot(t,y)
» grid
» title('Fonction Sinusoidale')
» xlabel('temps (s)'), ylabel('amplitude')
»
4.1.3 Graphique multiple
On peut tracer plusieurs graphiques dans la même fenêtre en utilisant l’instruction subplot pour
diviser la fenêtre en plusieurs parties.
Subplot(m,n,p) divise la fenêtre graphique en m×n sous graphique, m et n étant le nombre
de lignes et de colonnes respectivement, la variable p désigne le numéro du graphe.
Exemple 6 :
>> t = 0:pi/10:6*pi;
>> y1=cos(t);
» y2=sin(t);
» subplot(2,1,1), plot(t,y1,'r')
» grid
» title('Fonction Cosinus')
» xlabel('absisse (radian)')
» ylabel('cosinus')
» subplot(2,1,2),plot(t,y2,'b')
» grid
» title('Fonction Sinus')
» xlabel('absisse (radian)')
» ylabel('sinus')
21
Introduction à MATLAB
Fonction Cosinus
1
cosinus
0.5
0
-0.5
-1
0
2
4
6
8
10
12
absisse (radian)
Fonction Sinus
14
16
18
20
0
2
4
6
8
10
12
absisse (radian)
14
16
18
20
1
sinus
0.5
0
-0.5
-1
4.1.4 Ajout du texte au graphique
title('Titre du graphique')
xlabel('Temps')
ylabel('Tension')
gtext('Valeur absolue')
legend('legende 1',’legende 2’)
Ajoute un titre au graphique
Étiquette de l'axe x
Étiquette de l'axe y
Ajoute du texte au graphique à l’endroit pointé par la souris
Insertion d’une légende
4.1.5 Manipulation de graphiques
axis([-1 5 -10 10])
hold
Choix des échelles x = (-1,5) et y = (-10,10)
Garde le graphique actif à l'écran (et permet de tracer
plusieurs courbes sur le même graphique)
Remarque : toutes les modifications du graphique (échelles, axes, titre, symboles, couleurs,…)
peuvent être soit définies par des lignes de programmation (voir les instructions précédentes),
soit modifiées à l’aide de la souris. Le premier mode de fonctionnement est intéressant s’il faut
tracer automatiquement un grand nombre de figures.
22
Introduction à MATLAB
4.1.6 Impression et enregistrement de graphiques
Impression d’un graphique
A partir du menu Fichier, choisir Imprimer. Il faut impérativement modifier le format défini par
défaut de la taille de la feuille (Format lettre US en format A4).
Stockage d’un graphique sur le disque dur
Le contenu d’une fenêtre graphique peut-être stocké au format .fig qui est un format interne à
MATLAB ; c’est le seul format de stockage qui permet de retoucher le graphique ultérieurement.
Il est possible de copier une figure MATLAB dans le presse-papier pour l’insérer dans un autre
logiciel (Word, Powerpoint,..). Le graphique peut également être stocké sous forme d’image aux
différents formats usuels (.bmp, .jpeg, .tif, .eps,…).
4.2
Graphiques 3D.
Le traçage des graphiques 3D est illustré dans les deux exemples suivants.
Exemple 7 :
>> t = 0:0.05:25;
>> x = exp(-0.05*t).*cos(t);
>> y = exp(-0.05*t).*sin(t);
>> z = t;
>> plot3(x,y,z), grid
Exemple 8 :
» [x,y] = meshgrid(-2:.1:2, -2:.1:2);
» z = x .* exp(-x.^2 - y.^2);
» mesh(z)
23
Introduction à MATLAB
5 PROGRAMMATION AVEC MATLAB.
5.1
Communication avec l’utilisateur.
On peut afficher un message, une valeur à l'écran avec l’instruction disp :
disp('Ceci est un test')
Affiche "Ceci est un test" sur l'écran.
On peut entrer une valeur avec l’instruction input :
x = input('Valeur de x = ') Affiche sur l'écran "Valeur de x = " et attendre qu'un
nombre soit tapé sur le clavier.
On peut saisir une chaîne de caractères avec l’instruction input :
rep = input(‘choix = ?,’s')
Afficher sur l'écran "choix ?" et attendre qu'une
chaîne de caractères soit saisie au clavier.
fprintf(‘ceci est un résultat R= %f et C=%f \n’,x1,x2) ; (syntaxe du langage C)
5.2
Opérateurs relationnel et logique.
Une expression relationnelle retourne la valeur 1 sil elle est vraie (ou vérifiée) et la valeur 0
sinon. Les symboles mathématiques suivants sont autorisés dans les conditions de test :
Egal
==
Différent
~=
Inférieur stricte
<
Inférieur égal
<=
Supérieur
>
Supérieur égal
>=
ET logique
OU logique
NON logique
Exemples
>> a=2;
>> b=5;
>> c=a<b;
>> d=(a>=b)
&
|
~
%on affecte à a la valeur 2
%on affecte à b la valeur 5
%est-ce que a<b ? la réponse est postive, donc c vaut 1
%est-ce que a>=b ? la réponse est négative donc d vaut 0
Les résultats binaires (0 ou 1) obtenus avec les expressions relationnelles peuvent être exploités à
l’aide d’opérateurs logiques tels que :
&
opérateur logique et (and)
|
opérateur logique ou (or)
~
opérateur logique non (not)
Exemples
>> a=2;
>> b=5;
>> c=(a<b)&(a>=b);
%on affecte à a la valeur 2
%on affecte à b la valeur 5
%est-ce que a<b et a>=b? la réponse est négativeve, donc c
vaut 0
24
Introduction à MATLAB
5.3
Instructions de contrôle
Elles sont principalement au nombre de 4 : for, while, if, switch
5.3.1 Boucle For
On peut créer une boucle en utilisant for ... end. On peut aussi réaliser des boucles FOR
imbriquées.
Exemple 9 :
Boucle for simple :
for i=1:100
wt = 24*i*0.01;
x(i)=12.5*cos(wt+pi/6);
end
Deux boucles for imbriquées :
for i=1:5
for j=1:20
amp=i*1.2;
wt=j*0.05;
v(i,j)=amp*sin(wt);
end
end
5.3.2 Boucle while.
On peut créer une boucle en utilisant while ... end.
Exemple 10 :
n=1;
while n<100
x=n*0.05;
y(n)=5.75*cos(x);
z(n)=-3.4*sin(x);
n=n+1;
end
5.3.3 Instruction if ... elseif ... else.
L'instruction if ... elseif ... else permet de choisir plusieurs options.
Exemple 11 :
n=input('Donner un nombre positif ');
if rem(n,3)==0
disp('Ce nombre est divisible par 3')
elseif rem(n,5)==0
disp('Ce nombre est divisible par 5')
else
disp('Ce nombre n''est pas divisible par 3 ou par 5')
end
25
Introduction à MATLAB
5.3.4 Instruction switch
>> switch k
>> case 1
>>
a=a+b;
>> case 2
>>
a=a-b;
>> end
5.4
%sélection de la valeur de k
%cas où k=1
%instruction effectuée si k=1
%cas où k=2
%instruction effectuée si k=2
%fin de la sélection sur k
Fichiers *.m ou scripts.
Les fichiers M sont des fichiers ASCII contenant des suites d'instructions MATLAB dont le nom
a comme extension m. Par exemple «test1.m». Dans la fenêtre Commande, si l'on tape test1, les
instructions contenues dans le fichier test1.m seront exécutées une par une. On peut créer des
fichiers M à l'aide de l’éditeur de texte «Text Editor».
Exemple d’un script Matlab :
% Ceci est un exemple de fichier M
% Les lignes "commentaires" commencent par "%"
for i=1:10
for j=1:4
x=0.005*i;
y=30+j;
z(i,j)=10*exp(-y*x)*cos(120*pi*x);
end
end
5.5
Création de fonctions Matlab.
Une fonction MATLAB est un fichier d’extension .m particulier dont la première ligne du script
commence par «function». Une fonction peut être utilisée dans les expressions mathématiques ou
dans les instructions MATLAB :
Définition
de la fonction.
% Commentaire décrivant le but de cette fonction.
function [x1,x2]=bidule(a,b)
x1=b/a;
x2=exp(x1);
Les entrées sont a et b (placées entre parenthèses), les sorties sont x1 et x2 (placés entre
crochets).
Les variables sont locales. Le nom de sauvegarde de ce fichier doit impérativement être
"bidule.m"
Les commentaires donnés avant la définition de la fonction bidule seront affichés à l'écran
lorsqu'on tape help bidule.
Pour faire appel à cette fonction dans une console ou bien à partir d’un script matlab :
Utilisation de la fonction
bidule.
[x1,x2]=bidule(1,2)
les variables x1 et x2 prendront alors les valeurs : x1 = 2 et x2 = 20.08.
26
Introduction à MATLAB
6 FONCTIONS AVANCEES.
6.1
Traitement des polynômes.
Dans MATLAB, les polynômes sont représentés sous forme de vecteurs lignes dont les
composantes sont données par ordre des puissances décroissantes. Un polynôme de degré n est
représenté par un vecteur de taille (n+1).
Le polynôme f(x) = 4x3 – x + 2 s’écrira :
>> f = [4 0 -1 2] ;
Pour déterminer les racines de ce polynôme, il suffit d’utiliser la fonction roots. A l’inverse,
connaissant les racines, il est possible de remonter au polynôme grâce à la fonction poly. Pour
évaluer le polynôme en un point donné, on utilise la fonction polyval.
>> r = roots (f)
r=
- 0.8982
0.4491 + 0.5958i
0.4491 - 0.5958i
>> poly (r)
ans =
1 0 -0.25 0.5
>> a = polyval (f, 2.5)
a=
62
6.2
% valeur de f en x = 2.5
Interpolations.
L’interpolation polynomiale consiste à approcher par un polynôme la courbe liant deux séries de
mesures (régression). Les coefficients optimaux de ce polynôme sont ceux qui minimisent la
variance de l’erreur d’interpolation. La fonction polyfit retourne le polynôme P de degré n
permettant d’approcher la courbe y = f(x) au sens des moindres carrés. Cette méthode peut
s'avérer une alternative intéressante à EXCEL.
>> x = [[1 1.5 2.5 4 5.25] ;
>> y = [0.25 1 1.8 2.3 4.2];
>> p = polyfit(x,y,2)
% polynôme de degré 2
p=
0.0627 0.4358 0.0027
Ainsi, le polynôme d’interpolation de y d’ordre 2 est P(x) = 0,0627 x2 + 0,4358 x + 0,0027.
Il est également possible de réaliser une interpolation non-linéaire. Cette dernière consiste à
relier les points expérimentaux par une courbe sous forme de segments de droites ou de courbes
polynomiales. Ceci peut être réalisé par la fonction interp1. La commande
« interp1(x,y,xi,’type’) » retourne un vecteur de mêmes dimensions que xi et dont les valeurs
correspondent aux images des éléments de xi déterminées par interpolation sur x et y. Si f est
l’interpolation de y, la chaîne ‘type’ spécifie alors le type d’interpolation (‘linear’ : interpolation
linéaire, ‘spline’ : interpolation par splines cubiques, ‘cubic’ : interpolation cubique). Si on ne
spécifie pas le type, l’interpolation linéaire est choisie par défaut.
27
Introduction à MATLAB
>> x = 0:10; y = sin(x); xi = 0:.25:10;
>> yi = interp1(x,y,xi,’cubic’);
6.3
Intégration numérique.
La fonction quad permet de réaliser une intégration d’une fonction dans un intervalle donné (une
méthode adaptative de l'algorithme de Simpson). La syntaxe la plus générale de la fonction quad
est:
>> I = quad(@fun,a,b,tol,trace);
La function fun peut être définie en ligne, ou dans un script.m. Pour spécifier une valeur de
l’erreur pour le calcul de l’intégrale, on utilise le paramètre tol (fixé par défaut à 10-6). Le
paramètre trace est peu utilisé ; par défaut, lui affecter la valeur [ ]:
Exemple 1
Pour calculer l’intégrale
1
∫0 sinx x dx avec une erreur de 10
-10
:
>> quad (@(x) sin(x)./x, 0, 1,1e-10,[ ])
Warning: Divide by zero.
> In @(x) sin(x)./x
In quad at 62
ans =
0.94608307036711
Le symbole @(x) signifie que l’on définit une fonction mathématique qui dépend d’une variable
x. MATLAB a détecté une singularité mathématique en x = 0 (Warning), mais a effectué le
calcul.
Exemple 2
Si la fonction à intégrer contient un paramètre (par exemple alfa), il faut rajouter alfa dans la liste
des arguments d’appel après les arguments obligatoires, comme dans l’exemple suivant:
>> alfa=1;
>> quad (@(x,alfa) sin(alfa*x)./x, 0, 1,1,1e-10,[ ],alfa)
Warning: Divide by zero.
> In @(x,alfa) sin(alfa*x)./x
In quad at 62
ans =
0.94608307036711
Exemple 3
On peut également définir en ligne la fonction à intégrer de la façon suivante
>> f = inline(′sin(alfa*x)′);
>> alfa=1;
>> quad(f, 0, 1,1,1e-10,[ ],alfa);
Il existe également des fonctions permettant de calculer des intégrales doubles (dblquad) ou
triples (triplequad), ainsi que des versions plus précises (quadl).
28
Introduction à MATLAB
6.4
Résolution de systèmes d’équations non-linéaires.
Soit une fonction f(x) = cos x – 2x2. Pour trouver la valeur de x pour laquelle f(x) = 0, le
prototype d’appel utilisant la fonction fzero est le suivant :
a = fzero (‘resol’, valeur initiale)
« resol » est une fonction à créer qui contient l’équation à résoudre ; plus la valeur initiale
précisée est proche du résultat final, plus rapide sera la convergence.
Dans un premier temps, il est nécessaire d’écrire le fichier fonction « resol.m ».
% fichier resol
function f = resol (x)
f = cos(x) – 2*x^2
L’appel à fzero se fait normalement dans un fichier SCRIPT selon :
>> a = fzero (‘resol’, 1)
a=
0.6346
6.5
Résolution de systèmes d’équations différentielles ordinaires.
La résolution de systèmes d’équations différentielles ordinaires, aux valeurs initiales connues, est
très courante. Ces équations s’écrivent sous la forme :
x’(t) = f(t,x(t)) ∀ 0 < t < T
x(0) = a
où x(t) est un vecteur dont on connaît la valeur initiale (à t = 0) et pour lequel on cherche à
déterminer l’évolution au cours du temps. L’algorithme le plus usité est celui de Runge-Kutta
d’ordre 4-5, déjà programmé dans Matlab sous le nom d’ode45. D’autres fonctions existent,
notamment ode23 (méthode d'Euler) et ode15s ou ode23tb (pour les problèmes plus ardus à
résoudre) et sont appelés de la même manière que ode45 :
La syntaxe complète pour appeler la fonction ode45 est :
>> [t,x]=ode45(@fun,[t0 t1],x0,options)
La fonction fun qui contient le second membre de l’équation différentielle est définie dans un
fichier fun.m. L’intervalle [t0 t1] définit le temps initial et le temps final pour la résolution de
l’équation; x0 est la condition initiale pour x à t=t0 Le paramètre optionnel options peut contenir
des spécifications d’erreur absolue et relative définies à l’aide de la fonction odeset. A l’issue de
la résolution, les paramètres de retour de ode45 sont la liste des valeurs de t, ainsi que la liste des
valeurs x(t).
Exemple 1 : Résolution d’une seule équation différentielle
Soit à résoudre l’équation x’(t)=-x avec x(0)=1 ; la solution exacte est x(t)=exp(-t). La fonction
et le programme de résolution s’écrivent de la façon suivante :
>> function dx = fun(t,x)
>> dx=-x ;
%définition du second membre dans la fonction fun
%second membre pour l’équation de x
29
Introduction à MATLAB
>> [t, x] = ode45(@fun,[0 1],1) ;
>> plot(t,x,’-k’,t,exp(-t),’ob’) ;
Exemple 2 : Résolution simultanée de plusieurs équations différentielles
Par exemple, soit à résoudre l’équation différentielle du 2° ordre: x″ = -x avec x(0)=0 et x’(0)=1.
La solution exacte est : x(t) = sin(t). On transforme l’équation du 2° ordre en 2 équations du
premier ordre en posant x1=x et x2=x’. Les deux équations à résoudre s’écrivent alors : x’1=x2 et
x’2=-x1 avec les conditions initiales x 1(0)=0 et x2(0)=1.
>> function dx =fun(t,x)
>> dx = zeros(2,1) ;
>> dx(1) = x(2) ;
>> dx(2) = -x(1) ;
%définition du second membre dans la fonction fun
%un vecteur colonne
%second membre pour l’équation de x1
%second membre pour l’équation de x2
>> [t, x] = ode45(@fun,[0 2*pi],[0 1]) ;
>> plot(t, x(1, : ),’-k’,t, sin(t),’ob’) ;
%appel à la fonction ode45
%tracé de x1(t) et sin(t)
A l’issue de la résolution, la première ligne de la matrice x est constituée de la liste des valeurs
x1(t), et la seconde ligne est constituée de la liste des valeurs de x2(t).
30
Introduction à MATLAB
7 RESUME, NON EXHAUSTIF, DES COMMANDES MATLAB
7.1
Mathématiques
Tableaux et matrices
cat
end
eye
find
linspace
max
meshgrid
min
ones
rand
size
sum
zeros
concaténation d’un tableau dans une direction
indique le dernier indice d’un tableau
matrice identité
recherche d’une valeur dans un tableau
génère un vecteur espacé linéairement
valeur maximale d’un tableau ou d’une matrice
génère deux matrices X et Y pour des graphiques 2D ou 3D
valeur minimale d’un tableau ou d’une matrice
matrice constituée de 1
matrice de nombres aléatoires
dimension d’une matrice
somme des éléments d’un tableau
matrice constituée de 0
Algèbre linéaire
det
eig
inv
linsolve
lu
rank
trace
′
déterminant d’une matrice
calcul des valeurs propres et vecteurs propres
inverse d’une matrice
résolution d’un système d’équations linéaires
factorisation LU d’une matrice
rang d’une matrice
trace d’une matrice
transposée d’une matrice
Fonctions mathématiques élémentaires
atan
acos
asin
conj
cos
exp
floor
i
imag
log
log10
real
round
sin
sqrt
tan
arctangente
arccosinus
arcsinus
conjugué d’un nombre complexe
cosinus
exponentielle
partie entière d’un réel
nombre complexe unité
partie imaginaire d’un nombre complexe
logarithme naturel (ou népérien)
logarithme décimal (en base 10)
partie réelle d’un nombre complexe
arrondi à l’entier le plus proche
sinus
racine carrée
tangente
31
Introduction à MATLAB
Polynômes
polyfit
polyval
roots
interpolation par un polynôme
évaluation de la valeur d’un polynôme
calcul des racines d’un polynôme
Interpolation
interp1
interp2
interp3
spline
interpolation 1D
interpolation 2D
interpolation 3D
interpolation par des fonctions spline
Méthodes numériques non linéaires
dblquad
fzero
ode45,ode23
quad
évaluation numérique d’une intégrale double
recherche d’un zéro d’une fonction
résolution d’équations différentielles du premier ordre
évaluation numérique d’une intégrale
Variables prédéfinies
eps
i,j
pi
inf
NaN
7.2
précision des calculs en virgule flottante
nombre complexe égal à la racine carrée de -1
3,14159….
infini
Not A Number
Graphiques
Graphiques élémentaires
Loglog
polar
plot
subplot
graphique en coordonnées log-log
graphique en coordonnées polaires
tracé d’une courbe
création de plusieurs graphiques dans une fenêtre
Annotation des graphiques
gtext
legend
title
xlabel
ylabel
insertion d’un texte avec la souris
insertion d’une légende
insertion du titre du graphique
insertion du label de l’axe des x
insertion du label de l’axe des y
Graphiques spécialisés
contour
quiver
getframe
tracé d’isovaleurs d’une fonction
tracé d’un champ de vitesse
création d’une animation
32
Introduction à MATLAB
7.3
Caractères spéciaux
=
[]
()
.
...
,
;
%
:
7.4
Analyse de données
abs
fft
ifft
mean
std
trapz
var
7.5
assignation
définition de matrices ou vecteurs
gère la priorité des opérations arithmétique
point décimal
indique une ligne suite
séparateur d'arguments ou d'instructions
fin de lignes (matrices) ou suppression de l'affichage
commentaires
manipulation de sous matrices ou génération de vecteurs
valeur absolue
transformée de Fourier discrète directe
transformée de Fourier discrète inverse
moyenne d’un tableau
écart-type d’un tableau
intégration numérique (méthode des trapèzes)
variance d’un tableau
Programmation et types de données
Type de données
double
num2str
single
str2num
conversion en double précision
conversion d’un entier en chaîne de caractères
conversion en simple précision
conversion d’une chaîne de caractères en entier
Programmation
else,elseif
for
if
function
global
inline
pause
switch
tic, toc
while
exécution conditionnelle
exécution d’un bloc d’instructions pour un nombre de fois spécifié
exécution conditionnelle d’instructions
déclaration d’une fonction
déclaration de variables globales
construction d’une fonction en ligne
interruption momentanée d’un programme
sélection parmi différents cas
chronométrage
répétition d’instructions tant qu’une condition est vérifiée
33
Introduction à MATLAB
7.6
Importation et exportation de données
save
load
7.7
stockage de variables dans un fichier
lecture du contenu d’un fichier
Outils du bureau et environnement de développement
cd
pwd
clear
dir
format
help
mkdir
rmdir
whos
changement de répertoire
affiche le répertoire courant
suppression de variables en mémoire
affichage du contenu d’un répertoire
définition du format de sortie (écran, fichier)
affichage de l’aide pour une fonction
création d’un répertoire
suppression d’un répertoire
liste des variables en mémoire
34
Control System Toolbox
CONTROL SYSTEM TOOLBOX1
1. REPRESENTATION DES SYSTEMES.
Les systèmes que nous allons considérer ici sont linéaires invariant dans le temps (LTS
system, Linear Time Invariant). Régis par des équations différentielles linéaires à coefficients
constants les systèmes étudiés pouront être monovariables (SISO Single Input Single Output)
ou multivariables (MIMO Multiple Input Multiple Output). Les représentations que nous en
aurons feront appel à des fonctions de transfert ou à des équations d’état soit en temps
continus soit échantillonnées.
1.1.
Rappel sur les représentations continues.
1.1.1. Cas continu, saisi d’une fonction de transfert.
Nous rappelons qu’un processus régit par une équation différentielle peut par l’intermédiaire
de la transformée de Laplace se mettre sous la forme d’une transmittance en p.
Ainsi si nous considérons un système défini par l’équation différentielle suivante :
y(t) + y(t) + 10 ⋅ y(t) = u(t) + 2 ⋅ u(t)
(1.1)
Y(p)
p+2
La fonction de transfert sera :
=
(1.2)
U(p) p 2 + p + 10
Représentation sous Matlab.
Pour représenter tout système défini par une fonction de transfert, une matrice de transfert,
utilisant la transformée de Laplace ou la transformée en z il faut utiliser la fonction tf (transfer
function).
Ici pour une simple transmittance de Laplace nous avons explicité deux possibilités. Dans le
premier cas le numérateur et le dénominateur sont définis par des vecteurs (variables num et
den), dans le second cas la variable p étant définie la fonction de transfert H1c est affectée
plus explicitement.
Les variables Hc et H1c contiennent toute l’information de la transmittance.
Instructions Matlab
%--- première possibilité ---%
num=[1 2];den=[1 1 10];
Hc=tf(num,den)
%--- seconde possibilité ---%
p=tf('p');
H1c=(p+2)/(p^2+p+10)
Exécution
Transfer function:
s+2
-----------s^2 + s + 10
Transfer function:
p+2
-----------p^2 + p + 10
Exemple 1.1
Les variables Hc et H1c sont structurées en différents champs auxquels on peut avoir accès
par la fonction get(sys).
Il est possible de modifier, par exemple le champ InputName, en programmant
l’affectation : H1c.inputname='tension'
1
Cette boite à outils, optionnelle contiens diverses fonctions pour concevoir et analyser une commande.
35
Control System Toolbox
1.1.2. Cas continu, saisi d’une matrice de transfert.
Pour les systèmes multi variables il est possible de les représenter à l’aide d’une matrice de
transfert. Considérons à titre illustratif un système 2 entrées 2sorties défini par l’équation
matricielle :
p+2
⎡
⎢ 2
⎡ Y1 (p) ⎤ ⎢ p + 5 ⋅ p + 4
⎢ Y (p) ⎥ = ⎢
1
⎣ 2 ⎦
⎢
p+5
⎢⎣
⎤
⎥
⎥ ⋅ ⎡ U1 (p) ⎤
⎥ ⎢⎣ U 2 (p) ⎥⎦
1
⎥
p 2 + 2 ⋅ p + 1 ⎥⎦
1
p +1
(1.3)
Représentation sous Matlab.
Comme précédemment, nous utiliserons de la fonction tf (transfer function).
Instructions Matlab
Num={[1 2] 1; 1 1}
Den={[1 5 4][1 1];[1 5][1 2 1]}
Hc=tf(Num,Den,...
'InputName',{'U1','U2'},...
'OutputName',{'Y1','Y2'})
Exécution
Transfer function from input "U1" to output...
s+2
Y1: ------------s^2 + 5 s + 4
1
Y2: ----s+5
Nota :
Ici sont défini dans les variables Num et Den deux
matrices (2x2) contenant respectivement les
Transfer function from input "U2" to output...
vecteurs définissant les numérateurs et les
1
dénominateurs des fonctions de transfert.
Y1: ----Lorsque une instruction, pour sa lisibilité doit être
s+1
partitionné sur plusieurs lignes il faut utiliser les
points de suite (…).
1
Y2: ------------s^2 + 2 s + 1
Exemple 1.2
Dans l’instruction :
Hc=tf(Num,Den,'InputName',{'U1','U2'},'OutputName',{'Y1','Y2')
nous avons défini les noms des variables d’entrée et de sortie, ici U1, U2, Y1, Y2.
36
Control System Toolbox
1.1.3. Cas continu, saisi des équations d’état.
Les équations d’état correspondent à une représentation dans le domaine temporel du système
à représenter par une équation différentielle d’ordre un. Pour prendre en compte l’ordre
généralement supérieur à un du système les coefficients de l’équation différentielle sont des
matrices. La forme générale des équations d’état est :
X(t) = A ⋅ X(t) + B ⋅ U(t)
Y(t) = C ⋅ X(t) + D ⋅ U(t)
(1.4)
avec : U(t) Vecteur d’entrée de dimension (e,1)
Y(t) Vecteur de sortie de dimension (s,1)
X(t) Vecteur d’état de dimension (n,1)
A
Matrice d’état de dimension (n,n)
B
Matrice d’entrée de dimension (n,e)
C
Matrice de sortie de dimension (s,n)
D
Matrice de couplage entrée sortie de dimension (s,e)
Nota : le choix du vecteur d’état étant arbitraire il existe une infinité de représentation d’état
pour un même système.
Pour illustrer ce type de formulation, prenons le cas de la fonction de transfert (1.2) qui donne
x (t) ⎡ −1 −2.5⎤ x1 (t) ⎡1 ⎤
ici comme équations d’état : 1
(1.5)
=
⋅
+
⋅ u(t)
x 2 (t) ⎢⎣ 4
0 ⎥⎦ x 2 (t) ⎢⎣ 0 ⎥⎦
x (t)
y(t) = [1 0.5] ⋅ 1
x 2 (t)
(1.6)
Représentation sous Matlab.
Pour les systèmes mis sous forme d’état, Matlab dispose de la fonction ss (state system) pour
laquelle il faut définir les matrices A,B,C,D.
Instructions Matlab
A=[-1 -2.5;4 0];
B=[1;0];
C=[1 0.5];
D=0;
EEc=ss(A,B,C,D)
Exécution
a=
x1
x2
x1
-1
4
x1
x2
u1
1
0
y1
x1
1
y1
u1
0
x2
-2.5
0
b=
Nota :
Ici, les variables A, B, C, D sont des matrices
dans lesquelles sont affectées les valeurs
c=
numériques de l’exemple.
Dans la variable Eec se retrouve toutes les
informations sur les équations d’état.
Comme pour la fonction de transfert il est
d=
possible de définir les noms des entrées et des
sorties.
Exemple 1.3
37
x2
0.5
Control System Toolbox
1.2.
Rappel sur les systèmes échantillonnés.
1.2.1. Cas discret, fonction de transfert.
Les systèmes en temps discrets peuvent être définis par une équation récurrente et font appel à
la transformée en z.
Un système défini par l’équation récurrente suivante :
y(k) = u(k − 1) + 2 ⋅ u(k − 2) − 0, 6 ⋅ u(k − 1) − 0,9 ⋅ u(k − 2)
(1.7)
aura pour fonction de transfert :
Y(z)
z −1 + 2 ⋅ z −2
z+2
=
=
−
−
1
2
2
U(z) 1 + 0, 6 ⋅ z + 0,9 ⋅ z
z + 0, 6 ⋅ z + 0,9
(1.8)
Représentation sous Matlab.
Comme dans le cas continu nous utiliserons la fonction tf (transfer function) pour laquelle il
faudra définir la période d’échantillonnage Te. Avec la fonction tf les fonctions de transferts
échantillonnés sont considérées en puissance de z positive (voir 1ère possibilité exemple 1-4).
Si l’on préfère formuler la fonction de transfert en puissance de z négatives vous aurez
avantage à utiliser la fonction filt (voir seconde possibilité exemple 1-4).
Instructions Matlab
%--- première possibilité ---%
num=[1 2];
den=[1 0.6 0.9];
Te=0.1;
sys=tf(num,den,Te)
Exécution
Transfer function:
z+2
----------------z^2 + 0.6 z + 0.9
Sampling time: 0.1
Transfer function:
z^-1 + 2 z^-2
----------------------1 + 0.6 z^-1 + 0.9 z^-2
%--- seconde possibilité ---%
num=[0 1 2];
den=[1 0.6 0.9];
Te=0.1;
Hz1=filt(num,den,Te)
Sampling time: 0.1
get(Hz)
num: {[0 1 2]}
den: {[1 0.6 0.9]}
Variable: 'z'
Ts: 0.1
%--- affectation de champs
Hz.Inputname='tension';
Hz.OutputName='Vitesse';
Hz.note='moteur électrique';
Note :
Il est possible de modifier les champs de la
variable système Hz après l’utilisation de la
fonction tf.
Ici nous avons affecté des noms aux variables
et défini le champ Notes.
Exemple 1.4
Pour affecter ou modifier les champs de la variable Hz, il est possible, comme vous pouvez le
constater sur la dernière partie de l’exemple 1.4 d’utiliser une syntaxe équivalente au langage
C pour des variables structurées.
38
Control System Toolbox
1.2.2. Cas discret, matrice de transfert.
De la même manière qu’en temps continu il est possible de définir un système multivariable
par une matrice de transfert.
Considérons le système multivariable suivant possédant deux entrées et deux sorties :
0,5
⎡
⎢
z − 0,5
⎡ Y1 (z) ⎤ ⎢
=
⎢ Y (z) ⎥ ⎢
z − 0,9
⎣ 2 ⎦
⎢ 2
⎢⎣ z − 1,3 ⋅ z + 0, 4
z − 0,84
⎤
⎥
z 2 − z + 0,16 ⎥ ⎡ U1 (z) ⎤
i
⎥ ⎢⎣ U 2 (z) ⎥⎦
0, 2
⎥
z − 0,8 ⎥⎦
(1.9)
Représentation sous Matlab.
La fonction tf (transfer function) s’utilise aussi dans le cas multivariable, la formulation est
tout à fait similaire à celle utilisée au §1.12., c’est l’affectation de la période
d’échantillonnage qui distingue les cas continus et discrets.
Instructions Matlab
Exécution
Num={0.5 [1 -0.84];[1 -0.9] Transfer function from input 1 to output...
0.2};
0.5
Den={[1 -0.5][1 -1 0.16];[1 - #1: ------1.3 0.4][1 -0.8]};
z - 0.5
Te=0.1;
z - 0.9
tf(Num,Den,Te)
#2: ----------------z^2 - 1.3 z + 0.4
Transfer function from input 2 to output...
Nota :
z - 0.84
Ici sont définit dans les variables Num et Den #1: -------------deux matrices (2x2) contenant respectivement
z^2 - z + 0.16
les vecteurs caractérisant les numérateurs et
0.2
les dénominateurs des fonctions de transfert.
#2: ------z - 0.8
Sampling time: 0.1
%--- Champs de Hz ----%
num: {2x2 cell}
Hz.InputName={'U1','U2'};
den: {2x2 cell}
Hz.OutputName={'Y1','Y2'};
Variable: 'z'
Hz.UserData='système
Ts: 0.1
multivarible 2x2';
InputDelay: [2x1 double]
get(Hz)
OutputDelay: [2x1 double]
ioDelayMatrix: [2x2 double]
InputName: {2x1 cell}
OutputName: {2x1 cell}
InputGroup: {0x2 cell}
OutputGroup: {0x2 cell}
Notes: {}
UserData: 'système multivarible 2x2'
Exemple 1.5
Dans la seconde partie de l’exemple 1.5, nous pouvons remarquer que ce qui spécifie ici un
système discret sont l’affectation de Variable à ‘z’ et la période d’échantillonnage Te à 0,1.
39
Control System Toolbox
1.2.3. Cas discret, équations.
En temps continu les équations d’état correspondent à une équation différentielle matricielle
d’ordre un (Eq (1.4)), ici nous aurons une équation récurrente matricielle d’ordre un.
X(k + 1) = F ⋅ X(k) + H ⋅ U(k)
Y(k) = C ⋅ X(k) + D ⋅ U(k)
avec : U(k)
Y(k)
X(k)
F
H
C
D
(1.10)
Vecteur d’entrée de dimension (e,1)
Vecteur de sortie de dimension (s,1)
Vecteur d’état de dimension (n,1)
Matrice d’état de dimension (n,n)
Matrice d’entrée de dimension (n,e)
Matrice de sortie de dimension (s,n)
Matrice de couplage entrée sortie de dimension (s,e)
La mise sous forme d’état du système multivariable précédent (Eq (1.9)) donne :
0
⎡ x1 (k + 1) ⎤ ⎡0,5 0
⎢ x (k + 1) ⎥ ⎢ 0 1,3 −0, 4
⎢ 2
⎥ ⎢
⎢ x 3 (k + 1) ⎥ ⎢ 0
1
0
⎢
⎥=⎢
0
0
⎢ x 4 (k + 1) ⎥ ⎢ 0
⎢ x 5 (k + 1) ⎥ ⎢ 0
0
0
⎢
⎥ ⎢
0
0
⎣⎢ x 6 (k + 1) ⎦⎥ ⎣⎢ 0
0
0
0
1
1
0
0 ⎤ ⎡ x1 (k) ⎤ ⎡1 0 ⎤
0
0 ⎥⎥ ⎢⎢ x 2 (k) ⎥⎥ ⎢⎢1 0 ⎥⎥
0
0 ⎥ ⎢ x 3 (k) ⎥ ⎢0 0 ⎥ ⎡ u1 (k) ⎤
⎥+⎢
⎥i⎢
⎥i
−0,16 0 ⎥ ⎢ x 4 (k) ⎥ ⎢0 1 ⎥ ⎢⎣ u 2 (k) ⎥⎦
0
0 ⎥ ⎢ x 5 (k) ⎥ ⎢0 0 ⎥
⎥ ⎢
⎥⎢
⎥
0
0,8⎦⎥ ⎣⎢ x 6 (k) ⎦⎥ ⎣⎢0 0,5⎥⎦
0
(1.11)
⎡ x1 (k) ⎤
⎢ x (k) ⎥
⎢ 2 ⎥
y
(k)
0
1 −0,84 0 ⎤ ⎢ x 3 (k) ⎥
⎡ 1 ⎤ ⎡0,5 0
(1.12)
=
i⎢
⎥
⎢ y (k) ⎥ ⎢ 0 1 −0,9 0
0
0, 4 ⎥⎦ ⎢ x 4 (k) ⎥
⎣ 2 ⎦ ⎣
⎢ x 5 (k) ⎥
⎢
⎥
⎢⎣ x 6 (k) ⎥⎦
Instructions Matlab
Exécution
F=[0.5 0 0 0 0 0;...
0 1.3 -0.4 0 0 0;...
0 1 0 0 0 0;...
0 0 0 1 -0.16 0;...
A l’exécution, les différentes matrices
0 0 0 1 0 0;...
contenues dans la variable système EEd
0 0 0 0 0 0.8];
s’affichent.
H=[1 0;1 0;0 0;0 1;0 0;0 0.5];
C=[0.5 0
0
1 -0.84 0;...
0
1 -0.9 0 0
0.4];
D=[0 0;0 0];
Te=0.1;
EEd=ss(F,H,C,D,Te,...
'InputName',{'U1','U2'},...
'OutputName',{'Y1','Y2'}) ;
Exemple 1.6
40
Control System Toolbox
1.3.
Traitement des transmittances.
Nous avons vu précédemment que l’instruction tf() pouvait représenter indifféremment une
transmittance de Laplace ou une transmittance en z. La fonction filt() étant dédiée à une
fonction de transfert mise en puissance négative de z.
Dans ce paragraphe nous allons voir comment calculer et simplifier des calculs faisant appel à
des fonctions de transfert.
Exemple 1 : Calcul d’un comportement en boucle fermée.
1
Pour un processus Pc(p) =
nous commandons celui-ci par un correcteur de type
2 ⋅ p2 + p + 1
⎛
1 ⎞
Kc(p) = K p ⎜1 + ⋅ p ⎟
⎝ Ti ⎠
K p = 1 et Ti = 0,1 la fonction tf() permet de définir le correcteur.
proportionnel
intégral
de
transmittance
pour
les
réglages
Pour calculer le comportement en boucle fermée les variables Pc et Kp associées au
processus et au correcteur permettent de calculer directement la fonction de transfert en
boucle fermée G. Ce calcul donne souvent une forme non minimale car des zéros et des pôles
sont communs, afin de les simplifier il est commode d’utiliser la fonction minreal().
Instructions Matlab
clear,close all,clc,
%-- processus --%
Pc=tf([0 0 1],[2 1 1]),
%-- Correcteur --%
Kp=0.1;Ti=1;
num=Kp*[Ti 1];den=[Ti 0];
Kc=tf(num,den),
%-comportement
en
boucle
fermée --%
G=(Kc*Pc)/(1+Kc*Pc),
%-- Simplification --%
G=minreal(G),
Exécution
Transfer function:
1
------------2 s^2 + s + 1
Transfer function:
0.1 s + 0.1
----------s
Transfer function:
0.2 s^4 + 0.3 s^3 + 0.2 s^2 + 0.1 s
---------------------------------------------4 s^6+4 s^5+5.2 s^4 2.3 s^3+1.2 s^2+0.1 s
Transfer function:
0.05 s + 0.05
----------------------------s^3 + 0.5 s^2 + 0.55 s + 0.05
Exemple 1.7
Nous pouvons constater que l’execution de ce programme, fourni lors du calcul direct de la
fonction de transfert en boucle fermée, une transmittance du 6ième ordre. Après simplification
des zéros et pôles identiques par l’intermédiaire de la fonction minreal() nous obtenons une
fonction de transfert du 3ième ordre.
41
Control System Toolbox
Exemple 2 : Calcul direct d’un correcteur.
En reprenant l’exemple précédent, on désire avoir un comportement en boucle fermée de
pulsation ω0 = 1rad / s et de coefficient d’amortissement ξ0 = 0,9 . Le comportement en
boucle fermée étant ainsi fixé et connaissance le modèle caractérisant le processus il est
simple de déterminer le correcteur.
Si nous notons respectivement Pc(p) et G(p) le processus et le comportement en boucle
1
G(p)
fermée nous aurons pour le correcteur Kc(p) : Kc(p) =
⋅
Pc (p) 1 − G(p)
Instructions Matlab
clear,close all,clc,
%-- processus --%
Pc=tf([0 0 1],[2 1 1]),
%-comportement
en
boucle
fermée --%
w0=1;xi0=0.9;
G=tf([0 0 1],[1/w0^2 2*xi0/w0
1]);
%-- Correcteur --%
Kc=(1/Pc)*(G/(1-G)),
%-- Simplification --%
Kc=minreal(Kc),
Exécution
Transfer function:
1
------------2 s^2 + s + 1
Transfer function:
2 s^4 + 4.6 s^3 + 4.8 s^2 + 2.8 s + 1
------------------------------------s^4 + 3.6 s^3 + 4.24 s^2 + 1.8 s
Transfer function:
2 s^2 + s + 1
------------s^2 + 1.8 s
Exemple 1.8
Le codage en instructions Matlab de ce problème donne un correcteur du second ordre qui
correspond à une structure de PID (Proportionnel, Intégral, dérivé).
Nota : Lorsqu’une instruction Matlab est suivie d’un ‘point virgule’ le résultat n’est pas
visualisé à l’execution.
42
Control System Toolbox
2. CHANGEMENT ENTRE LES FORMALISMES TRANSMITTANCE ET EQUATIONS D’ETAT.
2.1.
Passage d’une fonction de transfert vers une équation d’état.
2.1.1. Cas continu mono variable.
Y(p)
p+2
=
pour laquelle
2
U(p) p + p + 10
nous avons définie une variable Hc conformément à l’exemple 1-1.
Prenons la transmittance de Laplace définie en (1.2) soit :
Instructions Matlab
num=[1 2];den=[1 1 10];
Hc=tf(num,den);
EEc=ss(Hc)
Exécution
a=
b=
Nota :
Ici il faut utiliser la fonction ss (state system).
La variable EEc de type système contient les
matrices A,B,C,D.
c=
x1
x2
x1
-1
4
x1
x2
u1
1
0
y1
x1
1
y1
u1
0
x2
-2.5
0
x2
0.5
d=
Exemple 2.1
Nous pouvons vérifier ici que les matrices d’état obtenues correspondent aux l’équation (1.5)
et (1.6)
⎡ −1 −2.5⎤ x1 (t) ⎡1 ⎤
=⎢
⋅
+
⋅ u(t)
x 2 (t) ⎣ 4
0 ⎥⎦ x 2 (t) ⎢⎣ 0 ⎥⎦
x (t)
y(t) = [1 0.5] ⋅ 1
x 2 (t)
x1 (t)
43
Control System Toolbox
2.1.2. Cas discret monovariable.
Y(z)
z −1 + 2 ⋅ z −2
z+2
=
=
.
−
−
1
2
2
U(z) 1 + 0, 6 ⋅ z + 0,9 ⋅ z
z + 0, 6 ⋅ z + 0,9
Nous opérerons comme précédemment.
Reprenons le transfert (1.8)
Instructions Matlab
num=[1 2];
den=[1 0.6 0.9];
Te=0.1;
sys=tf(num,den,Te);
EED=ss(sys)
Exécution
a=
x1
x2
x1
-0.6
2
x1
x2
u1
1
0
y1
x1
1
x2
-0.45
0
b=
Nota :
Ici il faut utiliser la fonction ss (state system). c =
La variable EED de type système contient les
matrices F, H, C, D correspondante à
l’équation (1.10).
d=
x2
1
u1
y1
0
Sampling time: 0.1
Discrete-time model.0
Exemple 2.2
X(k + 1) =
F
⋅ X(k) + H ⋅ U(k)
⎡ x1 (k + 1) ⎤ ⎡ −0, 6 −0, 45⎤ ⎡ x1 (k) ⎤ ⎡ 0 ⎤ ⎡ u1 (k) ⎤
+
i
i
⎢ x (k + 1) ⎥ = ⎢ 2
0 ⎥⎦ ⎢⎣ x 2 (k) ⎥⎦ ⎢⎣1 ⎥⎦ ⎢⎣ u 2 (k) ⎥⎦
⎣ 2
⎦ ⎣
(2.1)
Y(k) = C ⋅ X(k)
⎡ x (k) ⎤
y(k) = [1 1]i ⎢ 1 ⎥
⎣ x 2 (k) ⎦
(2.2)
Nota :
Nous vérifions ici que pour un système monovariable la dimension du vecteur d’état est égale
à l’ordre de la transmittance.
44
Control System Toolbox
2.2.
Passage d’une matrice de transfert vers des équations d’état.
Nous ne distinguerons pas ici les représentations continues ou discrètes que se traitent de la
même manière.
Prenons un système multivariable défini au paragraphe par la relation (1.9)
0,5
z − 0,84 ⎤
⎡
⎢
⎥
2
z − 0,5
z − z + 0,16 ⎥ ⎡ U1 (z) ⎤
⎡ Y1 (z) ⎤ ⎢
=
i
⎢
⎥
⎥ ⎣⎢ U 2 (z) ⎦⎥
z − 0,9
0, 2
⎣ Y2 (z) ⎦ ⎢
⎢ 2
⎥
z − 0,8 ⎦⎥
⎣⎢ z − 1,3 ⋅ z + 0, 4
Instructions Matlab
Num={0.5 [1 -0.84];[1 -0.9] 0.2};
Den={[1 -0.5][1 -1 0.16];[1 -1.3 0.4][1 -0.8]};
Te=0.1;
Mf=tf(Num,Den,Te);
EED=ss(Mf)
Exécution
EED=ss(Mf)
a=
x1
x2
x3
x4
x5
x6
x1
0.5
0
0
0
0
0
x2
0
1.3
-0.4
0
0
0
x3
0
1
0
0
0
0
x4
0
0
0
1
-0.16
0
x5
0
0
0
1
0
0
x6
0
0
0
0
0
0.8
b=
u1
u2
x1
1
0
x2
1
0
x3
0
0
x4
0
1
x5
0
0
x6
0
0.5
c=
x1
x2
x3
x4
x5
x6
y1
0.5
0
0
1
-0.84
0
y2
0
1
-0.9
0
0
0.4
d=
u1
u2
y1
0
0
y2
0
0
Sampling time: 0.1
Discrete-time model.
Exemple 2.3
Nota :
Les pôles des différentes transmittances de la matrice de transfert étant ici disjoints, la taille
du vecteur d’état est égale à la somme des ordres des quatre transmittances, soit ici six.
45
Control System Toolbox
2.3.
Passage entre des équations d’état et une fonction de transfert.
Les cas continus et discrets se traitent de la même façon comme vous avez pu vous en rendre
compte dans le paragraphe précédent.
Prenons à titre illustratif l’équation d’état discrète (1.5) et (1.6)
⎡ −1 −2.5⎤ x1 (t) ⎡1 ⎤
=⎢
⋅
+
⋅ u(t)
x 2 (t) ⎣ 4
0 ⎥⎦ x 2 (t) ⎢⎣ 0 ⎥⎦
x1 (t)
x (t)
y(t) = [1 0.5] ⋅ 1
x 2 (t)
Instructions Matlab
A=[-1 -2.5;4 0];
B=[1;0];
C=[1 0.5];
D=0;
sys=ss(A,B,C,D);
tf1=tf(sys)
Exécution
Transfer function:
s+2
-----------s^2 + s + 10
Nota :
La variable sys contient l’équation d’état
continue, l’utilisation de la fonction tf permet
d’affecter dans la variable tf1 la fonction de
transfert.
Exemple 2.4
2.4.
Passage entre des équations d’état et une matrice de transfert.
Reprenons l’exemple 2.3 que nous traiterons dans l’ordre inverse. Les équations de ce
système multivariable sont les suivantes :
0
0
0
0 ⎤ ⎡ x1 (k) ⎤ ⎡1 0 ⎤
⎡ x1 (k + 1) ⎤ ⎡0,5 0
⎢ x (k + 1) ⎥ ⎢ 0 1,3 −0, 4 0
0
0 ⎥⎥ ⎢⎢ x 2 (k) ⎥⎥ ⎢⎢1 0 ⎥⎥
⎢ 2
⎥ ⎢
⎢ x 3 (k + 1) ⎥ ⎢ 0
1
0
0
0
0 ⎥ ⎢ x 3 (k) ⎥ ⎢0 0 ⎥ ⎡ u1 (k) ⎤
(2.3)
⎢
⎥=⎢
⎥+⎢
⎥i
⎥i⎢
0
0
1 −0,16 0 ⎥ ⎢ x 4 (k) ⎥ ⎢0 1 ⎥ ⎢⎣ u 2 (k) ⎥⎦
⎢ x 4 (k + 1) ⎥ ⎢ 0
⎢ x 5 (k + 1) ⎥ ⎢ 0
0
0
1
0
0 ⎥ ⎢ x 5 (k) ⎥ ⎢0 0 ⎥
⎢
⎥ ⎢
⎥ ⎢
⎥
⎥⎢
0
0
0
0
0,8⎦⎥ ⎣⎢ x 6 (k) ⎦⎥ ⎣⎢0 0,5⎥⎦
⎣⎢ x 6 (k + 1) ⎦⎥ ⎣⎢ 0
⎡ x1 (k) ⎤
⎢ x (k) ⎥
⎢ 2 ⎥
0
1 −0,84 0 ⎤ ⎢ x 3 (k) ⎥
⎡ y1 (k) ⎤ ⎡ 0,5 0
i⎢
⎥
⎢ y (k) ⎥ = ⎢ 0 1 −0,9 0
0
0, 4 ⎥⎦ ⎢ x 4 (k) ⎥
⎣ 2 ⎦ ⎣
⎢ x 5 (k) ⎥
⎢
⎥
⎣⎢ x 6 (k) ⎦⎥
46
(2.4)
Control System Toolbox
Instructions Matlab
Exécution
F=[0.5 0 0 0 0 0;...
Transfer function from input 1 to output...
0 1.3 -0.4 0 0 0;...
0.5
0 1 0 0 0 0;...
#1: ------0 0 0 1 -0.16 0;...
z - 0.5
0 0 0 1 0 0;...
z - 0.9
0 0 0 0 0 0.8];
#2: ----------------H=[1 0;1 0;0 0;0 1;0 0;0 0.5];
z^2 - 1.3 z + 0.4
C=[0.5 0 0 1 -0.84 0;0 1 -0.9 0 Transfer function from input 2 to output...
0 0.4];
z - 0.84
D=[0 0;0 0];
#1: -------------Te=0.1;
z^2 - z + 0.16
Sys=ss(F,H,C,D,Te);
0.2
H=tf(Sys)
#2: ------z - 0.8
Nota :Nous retrouvons bien ici la matrice de Sampling time: 0.1
transfert que nous recherchions.
Exemple 2.6
47
Control System Toolbox
3. DISCRETISATION D’UN SYSTEME CONTINU.
3.1.
Discrétisation d’une fonction de transfert.
Y(p)
p+2
=
, nous allons
U(p) p2 + p + 10
discrétiser celle-ci par la transformée en z en utilisant un bloqueur d’ordre zéro.
La formulation théorique et les résultats attendus sont les suivants :
⎡⎛ 1 − e−Te ⋅ p ⎞
p + 2 ⎤ 0,1032 ⋅ z − 0, 08431
(2.5)
Z ⎢⎜
⎥=
⎟⋅
⎟ p 2 + p + 10 ⎥ z 2 − 1,81 ⋅ z + 0,9048
p
⎢⎣⎝⎜
⎠
⎦
Pour calculer la fonction de transfert en z sous Matlab il faut utiliser la fonction c2d
(continous to discrete).
Reprenons un système défini par la transmittance (1.2)
Instructions Matlab
num=[1 2];den=[1 1 10];
sys=tf(num,den);
Te=0.1;
Hz=c2d(sys,Te,'zoh')
Exécution
Transfer function:
0.1032 z - 0.08431
--------------------z^2 - 1.81 z + 0.9048
Nota :Il faut indiquer à la fonction c2d la
méthode de discrétisation utilisée.
Ici, ‘zoh’ spécifie l’utilisation d’un bloqueur
d’ordre zéro (zero order hold).
Sampling time: 0.1
Exemple 3.1
3.2.
Discrétisation des équations d’état continues.
Prenons le système continu multivariable correspondant à l’équation (1.3).
p+2
1
⎡
⎤
⎢ 2
⎥
p +1
⎡ Y1 (p) ⎤ ⎢ p + 5 ⋅ p + 4
⎥ ⋅ ⎡ U1 (p) ⎤
⎢ Y (p) ⎥ = ⎢
⎥ ⎢⎣ U 2 (p) ⎥⎦
1
1
⎣ 2 ⎦
⎢
⎥
p+5
p 2 + 2 ⋅ p + 1 ⎥⎦
⎢⎣
Dans un premier temps nous allons calculer les équations d’état continues, que nous
discrétiserons ensuite.
Instructions Matlab
%-- Définition de la matrice de transfert H ---%
Num={[1 2] 1; 1 1};
Den={[1 5 4][1 1];[1 5][1 2 1]};
H=tf(Num,Den);
%--- Calcul des équations d'état continues ---%
EEC=ss(H);
%--- Calcul des équations d'état discrètes ---%
Te=0.1;
EED=c2d(EEC,Te)
48
Control System Toolbox
Exécution
a=
x1
x2
x3
x4
x5
x6
x1
0.59215
0.15634
0
0
0
0
x2
0.15634
0.98301
0
0
0
0
x3
0
0
0.60653
0
0
0
x4
x5
0
0
0
0
0
0
0.90484 0
0
0.81435
0
0.090484
b=
u1
u2
x1 0.078172
0
x2 0.0084951
0
x3 0.078694
0
x4
0 0.095163
x5
0 0.090484
x6
0 0.0046788
c=
y1
y2
x1
1
0
x2
1
0
y1
y2
u1
0
0
u2
0
0
x3
0
1
x4
1
0
x5
0
0
d=
Sampling time: 0.1
Discrete-time model..
Exemple 3.2
49
x6
0
1
x6
0
0
0
0
-0.090484
0.99532
Control System Toolbox
4. PASSAGE D’UN SYSTEME DISCRET A UN SYSTEME CONTINU.
4.1.
Cas d’une fonction de transfert.
Nous avons au paragraphe 3.1 discrétisé un second ordre précédé d’un bloqueur d’ordre zéro.
⎡⎛ 1 − e−Te ⋅ p ⎞
p + 2 ⎤ 0,1032 ⋅ z − 0, 08431
Z ⎢⎜
⎥=
⎟⋅
⎟ p 2 + p + 10 ⎥ z 2 − 1,81 ⋅ z + 0,9048
p
⎢⎣⎝⎜
⎠
⎦
Opérons maintenant l’opération inverse.
Instructions Matlab
Numz=[0.1032 -0.08431]
Denz=[1 -1.81 0.9048]
Te=0.1;
Hz=tf(Numz,Denz,Te);
Hc=d2c(Hz)
Exécution
Transfer function:
s + 2.002
--------------s^2 + s + 10.05
Exemple 3.3
Nota :
Aux arrondis près nous retrouvons bien la transmittance continue initiale.
5. ANALYSE DES ZEROS ET DES POLES DU SYSTEME.
L’analyse des pôles et des zéros d’un système permet de conclure sur la stabilité de celui-ci,
en outre pour un processus donné cela permet d’orienter valablement une démarche de
commande.
Sous Matlab il est possible de représenter un système par son gain ses pôles et ses zéros.
Dans un cas monovariable (SISO system) les formulations sont les suivantes :
( p − z1 ) ⋅ ( p − z 2 ) ( p − z m ) dans le cas continu
Y(p)
=k
(5.1)
U(p)
( p − p1 ) ⋅ ( p − p2 ) ( p − pm )
( z − z1 ) ⋅ ( z − z 2 )
Y(z)
=k
U(z)
( z − p1 ) ⋅ ( z − p2 )
( z − zm )
( z − pm )
dans le cas discret
(5.2)
Les pi et les zi représentent ici respectivement les pôles et les zéros des transmittances
considérées. Il est à remarquer que le gain k ne représente aucunement les gains statiques des
transmittances continues ou discrètes.
50
Control System Toolbox
5.1.
Cas d’une fonction de transfert
Pour accéder au gain, aux zéros et aux pôles il faut utiliser la fonction zpkdata (zero pole gain
data)
Reprenons la transmittance qui à servi à illustrer nos exemples :
Y(p)
p+2
=
U(p) p2 + p + 10
Pour une période d’échantillonnage Te=0,1s l’équivalent discret est le suivant :
⎡⎛ 1 − e−Te ⋅ p
Z ⎢⎜
⎜
p
⎣⎢⎝
⎞
p + 2 ⎤ 0,1032 ⋅ z − 0, 08431
⎥=
⎟⋅
⎟ p 2 + p + 10 ⎥ z 2 − 1,81 ⋅ z + 0,9048
⎠
⎦
Instructions Matlab
%--- cas continu ----%
num=[1 2];den=[1 1 10];
Hc=tf(num,den);
[Z,P,K] = zpkdata(Hc,'v')
Exécution
Z =-2
P = -0.5000 + 3.1225i
-0.5000 - 3.1225i
K= 1
%--- cas discret ----%
Numz=[0.1032 -0.08431]
Denz=[1 -1.81 0.9048]
Te=0.1;
Hz=tf(Numz,Denz,Te);
[Z,P,K] = zpkdata(Hz,'v')
Z = 0.8170
P = 0.9050 + 0.2929i
0.9050 - 0.2929i
K = 0.1032
Exemple 4.1
51
Control System Toolbox
5.2.
Cas d’un système multivariable.
L’exemple multivariable que nous avons précédemment traité a été présenté sous deux
formulation :
Par matrice de transfert (Eq (1.3))
p+2
1
⎡
⎤
p+2
1
⎡
⎤
⎢
⎥
⎢ 2
⎥
p +1
p +1
( p + 1) ⋅ ( p + 4 )
⎡ Y1 (p) ⎤ ⎢ p + 5 ⋅ p + 4
⎥ ⋅ ⎡ U1 (p) ⎤
⎥ ⋅ ⎡ U1 (p) ⎤ = ⎢
=
⎢ Y (p) ⎥ ⎢
⎥ ⎢⎣ U 2 (p) ⎥⎦
⎥ ⎢⎣ U 2 (p) ⎥⎦ ⎢
1
1
1
1
⎣ 2 ⎦
⎢
⎥
⎢
p+5
p+5
( p + 1) ⋅ ( p + 1) ⎥⎦⎥
p2 + 2 ⋅ p + 1 ⎥⎦
⎢⎣
⎣⎢
Instructions Matlab
%--- définition de la matrice de transfert ---%
Num={[1 2] 1; 1 1};
Den={[1 5 4][1 1];[1 5][1 2 1]};
Hc=tf(Num,Den);
%--- Calcul des zéros des pôles et des gains ---%
[Z,P,K] = zpkdata(Hc)
fprintf('pôles de la transmittance H11(p)=%f \n\',P{1,1});
fprintf('pôles de la transmittance H12(p)=%f \n\',P{1,2});
fprintf('pôles de la transmittance H21(p)=%f \n\',P{2,1});
fprintf('pôles de la transmittance H22(p)=%f \n',P{2,2});
Exécution
Z = [-2] []
[] []
P = [2x1 double] [
-1]
[
-5] [2x1 double]
K= 1 1
1 1
pôles de la transmittance H11(p)=-4.000000
pôles de la transmittance H11(p)=-1.000000
pôles de la transmittance H12(p)=-1.000000
pôles de la transmittance H21(p)=-5.000000
pôles de la transmittance H22(p)=-1.000000
pôles de la transmittance H22(p)=-1.000000
Exemple 4.2
52
Control System Toolbox
6. ANALYSE FREQUENTIELLE.
Les outils d’analyse qu’offre Matlab dans le domaine fréquentiel sont les suivants :
Nom de la fonction
bode(sys)
Descrition
Calcule la ou les représentations dans les
plans de Bode du système considéré.
Représentation dans le plan de Black
Représentation dans le plan de Nyquist
Calcul des valeurs singulières
nichols(sys)
nyquist(sys)
sigma(sys)
Pour illustrer simplement les représentations fréquentielles nous tracerons dans les plans de
Bode et de Nyquist un premier ordre continu ainsi que sa discrétisation.
Y(p)
1
=
et
(6.1)
U(p) 10 ⋅ p + 1
Pour une période d’échantillonnage de Te=2 s nous avons le transfert en z suivant :
⎡⎛ 1 − e−Te ⋅ p ⎞
1 ⎤
0,1813 ⋅ z −1
(6.2)
Z ⎢⎜
⎥=
⎟⋅
⎟ 10 ⋅ p + 1 ⎥ 1 − 0,8187 ⋅ z −1
p
⎢⎣⎜⎝
⎠
⎦
num=1;den=[10 1];
Hc=tf(num,den);
Te=2;
Hz=c2d(Hc,Te,'zoh');
%- Calcul dans Bode -----%
bode(Hc,Hz)
num=1;den=[10 1];
Hc=tf(num,den);
Te=2;
Hz=c2d(Hc,Te,'zoh');
%- Calcul dans Nyquist -----%
nyquist(Hc,Hz)
Nyquist Diagrams
From: U(1)
Bode Diagrams
From: U(1)
20
0.5
0
0.4
-20
0.3
0.2
-40
0.1
-60
0
50
-0.1
0
-0.2
-50
-0.3
-100
-0.4
-150
-0.5
-200
10-2
10-1
100
101
-0.2
Frequency (rad/sec)
0
0.2
0.4
0.6
0.8
1
Real Axis
Exemple 6
Dans le plan de Bode la représentation fréquentielle du système discret n’est donné que
jusqu’à la fréquence de Nyquist ( fréquence respectant le théorème de Shannon) soit ici
π
ω0 =
= 1,57rd / s . Dans le plan de Nyquist nous constatons que la représentation
Te
fréquentielle est en cercle, cependant dans le cas discret à la pulsation de Nyquist le gain n’est
pas nul. De cette remarque nous pouvons conclure que pour certaines valeurs du gain ou de la
période d’échantillonnage le point –1 pourra être accroché et que le système en boucle fermée
sera instable.
53
Control System Toolbox
7. ANALYSE TEMPORELLE.
Les principales fonctions permettant de calculer et de tracer les réponses d’un système sont
résumées dans le tableau suivant :
Nom de la fonction
impulse(sys)
lsim(sys)
Step(sys)
Description
Calcul de la réponse impulsionnelle
Calcul à une entrée définie
Calcul de la réponse indicielle
Y(p)
p+2
=
2
U(p) p + p + 10
0,1032 ⋅ z − 0, 08431
A titre d’exemple prenons la transmittance (Eq (1.2))
Y(z)
=
U(z) z 2 − 1,81 ⋅ z + 0,9048
et son équivalent discret (Eq (2.5))
num=[1 2];den=[1 1 10];
Hc=tf(num,den)
Te=0.1;
Hz=c2d(Hc,Te,'zoh');
%- réponses impulsionnelles -%
impulse(Hc,Hz)
num=[1 2];den=[1 1 10];
Hc=tf(num,den)
Te=0.1;
Hz=c2d(Hc,Te,'zoh');
%- réponses indiciellse --%
step(Hc,Hz)
Impulse Response
From: U(1)
1.2
0.45
1
0.8
0.4
0.6
0.35
0.4
0.3
0.2
0.25
0.2
0
0.15
-0.2
0.1
-0.4
0.05
-0.6
-0.8
Step Response
From: U(1)
0.5
0
2
4
6
8
10
0
0
12
Time (sec.)
2
4
6
Time (sec.)
8
10
12
Exemple 7.
L’utilisation d’un bloqueur d’ordre zéro pour la discrétisation de la fonction de transfert
continue restitue parfaitement la réponse indicielle. Nous pouvons ainsi vérifier que les
réponses indicielles de Hc et Hz sont identiques aux instants d’échantillonnages.
Pour la réponse impulsionnelle, les réponses sont très différentes, cette différence s’explique
aisément, en effet :
Dans le cas continu le signal continu est une impulsion de Dirac de surface unitaire, par
contre dans le cas discret la présence du bloqueur d’ordre zéro transforme le Dirac en une
impulsion unitaire durant la période d’échantillonnage Te. Ici celle-ci vallant 0,1s l’amplitude
de la réponse impulsionnelle est 10 fois plus réduite que dans le cas continu.
54
Control System Toolbox
8. EXEMPLE POUR UNE FONCTION DE TRANSFERT CONTINUE DU SECOND ORDRE.
10
pour laquelle nous allons
Nous considérerons ici la fonction de transfert :
2
10 ⋅ p + 2 ⋅ p + 1
appliquer des outils d’analyse temporels et fréquentiels.
On définit le numérateur et le dénominateur, ce sont des polynômes en p, le terme le plus à
gauche correspond au terme d’ordre le plus élevé et celui le plus à droite correspond au terme
constant,
On écrit
num = [10]
Résultat
num = 10
On ecrit
den =[10 2 1]
Résultat
den = 10 2 1
On écrit
h= tf (num,den)
Résultat
Transfer function:
10
---------------10 s^2 + 2 s + 1
Analyse Fréquentielle
• Diagramme de Bode
On écrit
bode(h)
Résultat
Le tracé du diagramme de bode module et phase sont fonction de la pulsation
• Lieu de Nyquist
On écrit
nyquist (h)
Résultat
Le tracé du lieu de Nyquist
• Lieu de Black
On écrit
nichols (h)
Résultat
Le tracé du lieu de Black, module en fonction de la phase, paramètré en
pulsation.
Analyse temporelle.
• Réponse impulsionelle
On écrit
impulse (h)
Résultat
Le tracé de la réponse impulsionelle.
• Réponse à l’échelon
On écrit
step (h)
Résultat
Le tracé de la réponse à l’échelon.
Lieu des pôles ou lieu d’Evans.
On écrit
rlocus (h)
Résultat
Le tracé du lieu des pôles, paramétré en K.
55
Control System Toolbox
Valeur de K sur le lieu d’Evans
On écrit
rlocfind (h)
Il demande de cliquer sur un point du lieu avec un viseur.
Résultat
-0.1056 + 0.8808i
Coordonnée du point cliqué.
ans = 0.6858
Valeur du gain K pour ce point. Si le lieu comporte plusieurs branches,
les points correspondants à ce gain K sont indiqués.
On écrit
[k,poles] = rlocfind (h)
Il demande de cliquer sur un point du lieu avec un viseur.
Résultat
K = 1.8605
POLES = -0.1000 + 1.3966i et -0.1000 - 1.3966i (les pôles sont conjuguées)
Marge de phase et de gain
On écrit
[Gm,Pm,Wcg,Wcp] = margin (h)
Résultat
Gm = Inf
Pm =11.9860
Wcg =NaN
Wcp =1.0384
Gm, marge de gain, ici il n’y en a pas car le système est du second ordre, donc pas de module
pour un déphasage à 180 degrés.
Pm, marge de phase = valeur de la phase pour un module égal à 1.
Wcg, pulsation pour la marge de gain (càd que c’est la pulsation pour laquelle le déphasage
est de 180 degrés, dans notre cas, système du second ordre, pulsation infinie).
Wcp, pulsation pour la marge de phase (càd que c’est la pulsation pour laquelle on a un
module égale à 1).
A vous de découvrir toutes les autres fonctions qui permettent d’analyser les systèmes.
Simulation.
L’utilisation de SIMULINK permet la simulation temporelle de problèmes d’automatique mis
sous forme de schéma bloc.
Dans une fenêtre simulink vous décrirez où votre schéma (fichier *.mdl). Lorsque vous
cliquez sur le bouton Tools, il apparaît un bouton Linear Analysis, cliquez dessus, il apparaît
une fenêtre avec deux icônes et une fenêtre appelé LTI Viewer.
Sur votre schéma vous placez l’icône input point sur l’entrée, et l’icône output point sur la
sortie. Lancez la simulation comme présenté ci-dessus.
Puis dans la fenêtre LTI viewer, cliquez sur le bouton Simulink, puis faites un GET
Linearized Model.
Vous allez obtenir le tracé de la réponse impulsionnelle, il ne vous reste plus qu’a appuyer sur
le bouton Tools, puis sur le bouton Viewer Configuration pour obtenir toutes les réponses que
vous désirez.
Sur ces tracés, vous pouvez cliquez avec votre souris dessus, et vous obtiendrez des
informations diverses (pulsation, temps, amplitude, déphasage, etc…)
Il ne vous reste plus qu’à manipuler pour découvrir toutes les subtilités.
56
Control System Toolbox
9. SOMMAIRE DES PRINCIPALES FONCTIONS.
bode
Syntaxe.
bode(sys)
bode(sys,w)
Représentation de Bode d’un système.
Représentation de Bode d’un système en fixant le vecteur pulsation w.
bode(sys1,sys2,...,sysN)
Représentation de plusieurs systèmes.
bode(sys1,sys2,...,sysN,w) Représentation de plusieurs systèmes en fixant w.
bode(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
Description.
bode(sys)
La fonction bode calcule le gain et la phase en fonction de la pulsation pour des systèmes
linéaires. S’il n’y a pas d’argument à gauche de la fonction, bode trace automatiquement les
représentations fréquentielles du gain et de la phase.
Dans le cas multivariable les représentations de Bode de chaque couple entrée-sorties sont
données.
bode(sys,w) permet de définir le vecteur des pulsations.
bode(sys1,sys2,...,sysN) ou bode(sys1,sys2,...,sysN,w) superpose les réponses de plusieurs
systèmes.
[mag,phase,w] = bode(sys)
[mag,phase] = bode(sys,w)
Ici w est le vecteur des pulsations défini explicitement ou avec les fonctions linspace ou
logspace.
Permet de récupérer dans les variables mag et phase (le gain et la phase). Attention mag et
phase sont des tableaux 3D dont les dimensions sont ( taille du vecteur d’entrée, taille du
vecteur de sortie nombre de points du vecteur des pulsations).
c2d
Syntaxe.
sysd = c2d(sys,Ts)
sysd = c2d(sys,Ts,method)
Méthode ‘zoh’ par défaut.
Description.
Transformation d’un système continu en un système discret.
Ts représente la période d’échantillonnage.
Les méthodes de transformations sont :
‘zoh’
Bloqueur d’ordre zéro.
‘foh’
Bloqueur d’ordre un (approximation triangulaire)
‘tutsim’
Approximation bilinéaire.
‘prewarp’
Approximation de Tutsim avec transformation fréquentielle.
57
Control System Toolbox
d2c
Syntaxe.
sysc = d2c(sysd)
sysc = d2c(sysd,method)
Méthode ‘zoh’ par défaut.
Description.
d2c convertit un système discret vers une formulation en temps continu avec les méthodes
suivantes :
'zoh'
Bloqueur d’ordre zéro.
'tustin'
Approximation billinéaire.
damp
Syntaxe.
[Wn,Z] = damp(sys)
[Wn,Z,P] = damp(sys)
Description.
Damp calcule les pulsations propres et les facteurs d’amortissements, il fourni en outre les
pôles.
Wn
vecteur des pulsations propres.
Z
vecteur des coefficients d’amortissement.
P
vecteur des pôles.
dcgain
Syntaxe.
k = dcgain(sys)
Description.
Calcul du gain statique.
filt
Syntaxe.
sys = filt(num,den)
sys = filt(num,den,Ts)
sys = filt(M)
sys = filt(num,den,'Property1',Value1,...,'PropertyN',ValueN)
sys = filt(num,den,Ts,'Property1',Value1,...,'PropertyN',ValueN)
Description.
Permet de rentrer des fonctions de transfert discrètes avec des puissances négatives de z.
58
Control System Toolbox
impulse
Syntaxe.
impulse(sys)
tracé pour un système.
impulse(sys,t)
tracé pour un système en fixant le vecteur temps.
impulse(sys1,sys2,...,sysN) tracé pour n systèmes.
impulse(sys1,sys2,...,sysN,t) tracé pour n systèmes en fixant le vecteur temps.
impulse(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[y,t,x] = impulse(sys)
La sortie y, le temps t, l’état x sont des matrices.
Description.
Fournit la ou les réponses impulsionnelles du ou des systèmes considérés.
ltiview
Syntaxe.
ltiview
ltiview(plottype,sys)
ltiview(plottype,sys,extras)
ltiview(plottype,sys1,sys2,...sysN)
ltiview(plottype,sys1,sys2,...sysN,extras)
ltiview(plottype,sys1,PlotStyle1,sys2,PlotStyle2,...)
Description.
Initialise la fenêtre de visualisation d’un système pour ensuite permettre l’analyse des
réponses temporelles ou fréquentielles.
margin
Syntaxe.
[Gm,Pm,Wcg,Wcp] = margin(sys)
[Gm,Pm,Wcg,Wcp] = margin(mag,phase,w)
margin(sys)
Description.
Cette fonction calcule la marge de gain et la marge de phase.
minreal
Syntaxe.
MSYS = MINREAL(SYS)
MSYS = MINREAL(SYS,TOL)
SYS étant un LTI système. TOL la tolérance
Pour les systèmes d’état SYS=SS(A,B,C,D),
[MSYS,U] = MINREAL(SYS)
La matrice orthogonale U est calculée tel que (U*A*U',U*B,C*U') soit une décomposition de
Kalman par rapport à (A,B,C).
Description.
Pour une transmittance, cette fonction permet la simplification des zéros et des pôles.
59
Control System Toolbox
nichols
Syntaxe.
nichols(sys)
nichols(sys,w)
nichols(sys1,sys2,...,sysN)
nichols(sys1,sys2,...,sysN,w)
nichols(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[mag,phase,w] = nichols(sys)
[mag,phase] = nichols(sys,w)
Description.
Calcul dans le plan de Black. Il faut utiliser l’instruction ngrid pour la charte de quadrillage.
nyquist
Syntaxe.
nyquist(sys)
nyquist(sys,w)
nyquist(sys1,sys2,...,sysN)
nyquist(sys1,sys2,...,sysN,w)
nyquist(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[re,im,w] = nyquist(sys)
[re,im] = nyquist(sys,w)
Description.
Calcul dans le plan de Nyquist ,de la représentation fréquentielle de sys.
pole
Syntaxe.
p = pole(sys)
Description.
Calcule les pôles du système.
pzmap
Syntaxe.
pzmap(sys)
[p,z] = pzmap(sys)
Description.
pzmap trace les pôles et les zéros.
60
Control System Toolbox
rlocfind
Syntaxe.
[k,poles] = rlocfind(sys)
[k,poles] = rlocfind(sys,p)
Description.
Recherche le gain dans le plan des racines.
rlocus
Syntaxe.
rlocus(sys)
rlocus(sys,k)
[r,k] = rlocus(sys)
r = rlocus(sys,k)
Description.
Tracé du lieu d’Evans, pour afficher le quadrillage vous utiliserez, sgrig pour les systèmes en
temps continus et zgrid lorsqu’ils sont échantillonnés.
sgrid
Syntaxe.
sgrid
sgrid(z,wn)
Description.
Trace les courbes iso pulsation et iso amortissement pour des fonctions continues. Cette
fonction s’utilise avec pzmap et rlocus.
sigma
Syntaxe.
sigma(sys)
sigma(sys,w)
sigma(sys,w,type)
sigma(sys1,sys2,...,sysN)
sigma(sys1,sys2,...,sysN,w)
sigma(sys1,sys2,...,sysN,w,type)
sigma(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[sv,w] = sigma(sys)
sv = sigma(sys,w)
Description.
Sigma calcule les valeurs singulières en fonction de la pulsation.
61
Control System Toolbox
ss
Syntaxe.
sys = ss(a,b,c,d)
sys = ss(a,b,c,d,Ts)
sys = ss(d)
sys = ss(a,b,c,d,ltisys)
sys = ss(a,b,c,d,'Property1',Value1,...,'PropertyN',ValueN)
sys = ss(a,b,c,d,Ts,'Property1',Value1,...,'PropertyN',ValueN)
sys_ss = ss(sys)
sys_ss = ss(sys,'minimal')
Description.
Spécification d’un modèle d’état.
step
Syntaxe.
step(sys)
step(sys,t)
step(sys1,sys2,...,sysN)
step(sys1,sys2,...,sysN,t)
step(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[y,t,x] = step(sys)
Description.
Fournit la ou les réponses indicielles.
62
Control System Toolbox
tf
Syntaxe.
sys = tf(num,den)
sys = tf(num,den,Ts)
sys = tf(M)
sys = tf(num,den,ltisys)
sys = tf(num,den,'Property1',Value1,...,'PropertyN',ValueN)
sys = tf(num,den,Ts,'Property1',Value1,...,'PropertyN',ValueN)
sys = tf('s')
sys = tf('z')
tfsys = tf(sys)
tfsys = tf(sys,'inv')
Seulement pour les systèmes d’état.
Description.
Tf est utilisé pour définir tout système mono ou multivariable défini par des fonctions de
transfert.
Cette fonction peut être aussi utilisée pour convertir un système d’état sous forme de
transferts.
zero
Syntaxe.
z = zero(sys)
[z,gain] = zero(sys)
Forme valable que pour les systèmes SISO.
Description.
Calcul des zéros pour un système SISO et les zéros de transmission pour un sytème MIMO.
zgrid
Syntaxe.
zgrid
zgrid(z,wn)
Description.
Trace la grille dans le cas discret pour des coefficients d’amortissement et les pulsations. A
utiliser avec pzmap et rlocus.
63
Control System Toolbox
zpk
Syntaxe.
sys = zpk(z,p,k)
sys = zpk(z,p,k,Ts)
sys = zpk(M)
sys = zpk(z,p,k,ltisys)
sys = zpk(z,p,k,'Property1',Value1,...,'PropertyN',ValueN)
sys = zpk(z,p,k,Ts,'Property1',Value1,...,'PropertyN',ValueN)
sys = zpk('s')
sys = zpk('z')
zsys = zpk(sys)
zsys = zpk(sys,’inv’) % for state-space sys only
Description.
Zpk est utilisé pour caractériser un système par son gain ses zéros et ses pôles. Le système
initial à étudier pouvant être sous forme de transferts ou d’équations d’état.
zpkdata
Syntaxe.
[z,p,k] = zpkdata(sys)
[z,p,k] = zpkdata(sys,'v')
[z,p,k,Ts,Td] = zpkdata(sys)
Description.
Calcul du gain des pôles et des zéros d’un ou de plusieurs systèmes.
64
Simulink
SIMULINK
1
INTRODUCTION A SIMULINK.
Simulink est l'extension graphique de MATLAB elle permet de représenter les fonctions
mathématiques et les systèmes sous forme de schéma bloc. Dédié à la simulation de systèmes,
Simulink bénéficie de nombreuses boites à outils spécifiques de domaines d’applications telles :
‰ Control System Tolbox.
‰ Fuzzy Logic Toolbox.
Pour la commande par logique floue.
‰ Neural Network Blockset.
Pour le conception de réseaux de neurones.
‰ SimMechanics.
Boite à outils de systèmes mécaniques.
‰ SimPowerSystems.
Pour la simulation des moteurs et convertisseurs.
‰ Stateflow.
Pour les machines d’état.
Ce document, a vocation introductive, n’ayant aucune prétention d’exhaustivité, pour plus de
précision, nous renvoyons le lecteur à l’importante aide en ligne disponible sous Matlab.
2 DEMARRAGE DE SIMULINK.
Au lancement de Matlab, apparaît la fenêtre suivante :
Appel de Simulink
Dans la fenêtre Command Window, vous pouvez taper simulink ou utiliser le pictogramme
correspondant. La fenêtre Simulink va s'ouvrir.
Il faut alors ouvrir un nouveau document à l’aide du menu fichier. Une feuille blanche apparaît
alors à l’écran. Prendre les éléments contenus dans les différentes bibliothèques afin de
construire le schéma bloc qui doit être simulé (ces opérations s’effectuant par « sélectionner,
glisser »).
65
Simulink
2.1
Les différentes Bibliothèques
Cette fenêtre contient des collections de blocs que l'on peut ouvrir en cliquant (double) dessus :
Continuous
Blocs pour les systèmes en temps continus.
Discontinuities
Fonctions discontinues, relais saturation ….
Discrete
Blocs pour les systèmes en temps discrets.
Functions & Tables Blocs de fonctions mathématiques et de tableaux.
Look-Up-Tables
Tableaux à une ou plusieurs dimensions.
Math Operations
Bloc mathématiques
Model Verification
Bloc pour l’établissement de performances globales.
Model Wide Utilities
Utilitaires généraux.
Ports et subsytems
Ports de communication et sous systèmes.
Signal Attributes
Propriétés et caractéristiques des signaux.
Signal Routing
Bus, assignement de signaux ….
Sinks
Outils de visualisation
Sources
Générateurs de signaux
User-Defined Fuctions
Fonctions utilisateur.
Le contenu des principales bibliothèques avec leurs éléments est donné succinctement ci-après :
Fonctions continues
(fonction des transfert en s…)
Ces différents blocs assurent la simulation des
systèmes mis sous forme de transmittances de
Laplace, ou d’équations d’état.
Le bloc intégrateur pouvant, via un schéma se
simulation, prendre en compte un jeu
d’équations différentielles.
Fonctions discrètes
(fonction de transfert en z…)
Dans ce bloc nous retrouvons les divers moyens
de représenter les systèmes échantillonnés, que
ce soit par une fonction de transfert ou à l’aide
des variables d’état.
La fonction Memory correspond à un retard d’un
pas de calcul.
Nota :
Discrete Tansfer Fcn utilise une représentation en
puissance de z positive.
Discrete Filter Représente une transmittance ou un
filtre avec des puissances négatives de z.
66
Simulink
Model Verification.
Math Opérations
Dans ce module se retrouve les principales
opérations arithmétiques et logiques.
Ces utilitaires permettent des vérifications
globales d’une réponse, erreur statique,
dépassement …
Ports et Subsystems
La modélisation de systèmes complexes peut
tirer parti de la modularité qu’offre Matlab
Simulink. Vous trouverez dans ce module les
fonctions et éléments nécessaires pour concevoir
les modules nécessaires à la partition de votre
problème.
Signal Routing
Vous retrouverez ici les éléments de routages, de
multiplexage etc.
Nota :
Les éléments From et Goto permettent d’éviter
les multiples connexions.
67
Simulink
Sinks
Sources.
Dans ce bloc se retrouvent les éléments de
Sous ce label sont rassemblé les principaux
sorties.
générateurs de signaux.
Par exemple, pour enregistrer vos résultats de
simulation, vous pouvez utiliser :
To File pour archiver sur fichier.
To Workspace afin de mémoriser vos résultats
dans la mémoire de travail. Ce qui permet de
visualiser ultérieurement à la simulation.
Scope ou Display pour les visualiser en cours de
simulation
68
Simulink
3
UTILISATION DE SIMULINK.
3.1
Construction d’un diagramme SIMULINK
Pour commencer, dans le menu File, on choisit New - Model. Une fenêtre de travail
« Untitled.mdl » s'ouvrira.
Ouvrir les bibliothèques de blocs en double-cliquant sur l’icône
.
Faire glisser dans la fenêtre de travail les blocs dont on a besoin pour construire le schéma de
simulation. Effectuer des liaisons entre les blocs à l'aide de la souris.
Lorsque l’on double-clique sur un bloc, une fenêtre de dialogue s'ouvrira. On peut alors changer
les paramètres de ce bloc. Une fois terminé, on ferme la fenêtre de dialogue. Après avoir achevé
la construction des différents blocs nécessaires à la simulation, le fichier correspondant dot être
sauvegardé (Onglet File avec Save ou Save as). Le fichier sauvegardé aura l’extension mdl.
Exemple :
Nous allons nous intéresser ici la commande d’un processus par un correcteur proportionnel
intégral. En procédant comme ci-dessus il est aisé d’élaborer le schéma de simulation suivant :
U
t
T o Workspace2
Clock
W
T o Workspace3
Kp*Ti.s+Kp
T i.s
Step
To Workspace
PI
G
Actionneur
c0
1
T1.s+1
T 2.s+1
Processus
Capteur
Y
To Workspace1
Figure 3-1
Lors de la construction d’un schéma sous Simulink les paramètres de simulation peuvent être
donnés sous forme numérique, cependant il est préférable, pour plus de souplesse, de les définir
algébriquement. Ainsi, dans l’exemple ci-dessus, les paramètres du processus et les réglages K p
et Ti du correcteur sont laissés libres.
Lorsque l’on souhaite renvoyer les données dans l’espace de travail Matlab, il faut préciser les
champs du bloc To Workspace.
Variable name, défini évidement le nom de
la variable à mémoriser.
Limit data points to last, fixe le nombre total
de points à mémoriser (ici l’infini).
Sample time, défini le pas de mémorisation,
ne pas le confondre avec la période
d’échantillonnage des systèmes discrets.
Attention la valeur par défaut de -1 ne
garantit pas que pour plusieurs variables
leurs tailles respectives soient identiques.
Decimation,
en fait les grandeurs de
simulation sont mémorisé aux occurrences
(Décimation)x(Sample Time).
Dans cet exemple les variables t,W,U,Y seront mémorisées à la période Tplot dans l’espace de
travail lorsque la simulation sera terminée.
69
Simulink
Avant d’aborder la simulation il est impératif d’affecter les différents paramètres du schéma que
nous venons d’élaborer. Il suffit pour y parvenir d’établir un script Matlab, ici init.m contenant
les affectations nécessaires. Vous trouverez ci-après le programme d’initialisation de l’exemple
3-1.
Init.m
%---Programme INIT.m
%
% assurant l'initialisation %
% du schéma Simulink
%
% Effacement de la mémoire %
clear,
% Pas de mémorisation
%
Tplot=0.1;
% Réglage du correcteur PI %
Kp=0.5; Ti=2;
% Paramètres du processus
%
G=25;
c0=0.0889;
T1=4.95;
T2=0.58;
Remarques :
Il
est
prudent
pour
éviter
des
dysfonctionnements (effet de bord) d’effacer
la mémoire contenant les variables (work
space) par la commande clear.
Pour exécuter ce programme sous taper son
nom sous Matlab.
>>init
Les paramètres du programme Simulink étant
initialisés, l’execution de celui-ci peut être
envisagé.
3.2
Choix des paramètres de simulation.
Cette partie peut s’avérer délicate, lorsque le système comprend une partie continue avec des
dynamiques très différentes. Dans ce cas, il est opportun de choisir une méthode d’intégration à
pas variable. Maintenant le choix d’une méthode particulière, des pas d’intégration minimum et
maximum, est une démarche réclamant une bonne expertise, si l’on désire avoir un bon
compromis précision temps de simulation.
A ce niveau, une des difficultés de la simulation par voie numérique est d’apprécier la justesse
des simulations obtenues, il est en effet difficile de discriminer des résultats faux mais plausibles.
Avant de lancer une simulation, on doit
choisir les paramètres appropriés au modèle
du système.
Dans le menu Simulation, lorsqu'on choisit
Parameters, une fenêtre Simulation
Parameters s'ouvrira. On doit alors choisir
les paramètres du Solver.
Cette fenêtre permet de fixer le temps du
début de la simulation, le temps total de la
simulation, le pas de calcul initial et
maximal, l’algorithme d’intégration, la
tolérance sur les différentes erreur.
Les options du « solveur » permettent de
choisir un algorithme d’intégration et le pas
de calcul comme indiqué ci-contre.
70
Simulink
3.3
Lancement de la simulation.
Dans le menu Simulation, on choisit Start ou le pictogramme
.
Un « bargraph » symbolise l’état d’avancement de la simulation. Lorsque celle-ci est terminée,
se placer dans la console Matlab et manipuler les données comme décrites dans la première
partie de ce document.
Visualisation des résultats.
Une alternative à une écriture d’instruction dans la fenêtre Matlab est l’utilisation d’un script de
visualisation (ici graph.m) construit comme le programme d’initialisation.
Graph.m
% Visualisation des
résultats %
Execution : >>graph
15
consigne
sortie
10
subplot(2,1,1);
plot(t,W,t,Y);
legend('consigne','sortie');
grid;xlabel('tempsd (s)');
subplot(2,1,2);
plot(t,U);
legend('commande');
grid;xlabel('tempsd (s)');
5
0
0
5
10
15
tempsd (s)
20
25
30
8
commande
6
4
2
0
0
5
71
10
15
tempsd (s)
20
25
30
Simulink
72

Documents pareils

Petite introduction à l`utilisation de Matlab/Simulink

Petite introduction à l`utilisation de Matlab/Simulink d'automatique. Bien sûr, il est possible d'illustrer un cours à l'aide de transparents qui permettent de projeter une courbe qui est la réponse du système étudié à telle excitation, un diagramme de...

Plus en détail

Etude des systèmes dans l`espace d`état

Etude des systèmes dans l`espace d`état • Prendre un générateur d'échelon sous la rubrique "Sources", une fonction de transfert/une représentation d’état sous la rubrique "Continuous". Saisir les instruments de mesure [Scope] et [ToWorks...

Plus en détail

Auteur : Serge Bedwani

Auteur : Serge Bedwani Et bien d’autres encore. Ces boîtes à outils sont simplement constituées d’un ensemble de fonctions spécialisées programmées à partir des fonctions de base de MATLAB, permettant par exemple la synt...

Plus en détail