Poly Matlab 2007

78
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

Transcript of Poly Matlab 2007

Page 1: Poly Matlab 2007

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

Page 2: Poly Matlab 2007
Page 3: Poly Matlab 2007

SOMMAIRE

i

SOMMAIRE

MATLAB

1 INTRODUCTION. ............................................................................................................................................1 1.1 INTRODUCTION A MATLAB.......................................................................................................................2

2 L'ENVIRONNEMENT MATLAB - GENERALITES...................................................................................5 2.1 PRESENTATION DE L’INTERFACE.................................................................................................................5 2.2 TRAVAIL EN MODE INTERACTIF OU EXECUTIF .............................................................................................6 2.3 FONCTION "HELP" .......................................................................................................................................9 2.4 ESPACE DE TRAVAIL (WORKSPACE)..........................................................................................................10

3 OPERATIONS MATHEMATIQUES. ..........................................................................................................13 3.1 SCALAIRE, VECTEUR, MATRICE. ................................................................................................................13 3.2 OPERATIONS ARITHMETIQUES...................................................................................................................17 3.3 VARIABLES ET FONCTIONS........................................................................................................................18

4 GRAPHIQUES. ...............................................................................................................................................20 4.1 GRAPHIQUES 2D. ......................................................................................................................................20 4.2 GRAPHIQUES 3D. ......................................................................................................................................23

5 PROGRAMMATION AVEC MATLAB.......................................................................................................24 5.1 COMMUNICATION AVEC L’UTILISATEUR. ..................................................................................................24 5.2 OPERATEURS RELATIONNEL ET LOGIQUE. .................................................................................................24 5.3 INSTRUCTIONS DE CONTROLE....................................................................................................................25 5.4 FICHIERS *.M OU SCRIPTS..........................................................................................................................26 5.5 CREATION DE FONCTIONS MATLAB. .........................................................................................................26

6 FONCTIONS AVANCEES.............................................................................................................................27 6.1 TRAITEMENT DES POLYNOMES..................................................................................................................27 6.2 INTERPOLATIONS. .....................................................................................................................................27 6.3 INTEGRATION NUMERIQUE........................................................................................................................28 6.4 RESOLUTION DE SYSTEMES D’EQUATIONS NON-LINEAIRES. ......................................................................29 6.5 RESOLUTION DE SYSTEMES D’EQUATIONS DIFFERENTIELLES ORDINAIRES. ...............................................29

7 RESUME, NON EXHAUSTIF, DES COMMANDES MATLAB ...............................................................31 7.1 MATHEMATIQUES .....................................................................................................................................31 7.2 GRAPHIQUES.............................................................................................................................................32 7.3 CARACTERES SPECIAUX ............................................................................................................................33 7.4 ANALYSE DE DONNEES .............................................................................................................................33 7.5 PROGRAMMATION ET TYPES DE DONNEES.................................................................................................33 7.6 IMPORTATION ET EXPORTATION DE DONNEES ...........................................................................................34 7.7 OUTILS DU BUREAU ET ENVIRONNEMENT DE DEVELOPPEMENT ................................................................34

Page 4: Poly Matlab 2007

SOMMAIRE

ii

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 LES DIFFERENTES BIBLIOTHEQUES ...........................................................................................................66

3 UTILISATION DE SIMULINK....................................................................................................................69 3.1 CONSTRUCTION D’UN DIAGRAMME SIMULINK.......................................................................................69 3.2 CHOIX DES PARAMETRES DE SIMULATION.................................................................................................70 3.3 LANCEMENT DE LA SIMULATION...............................................................................................................71

Page 5: Poly Matlab 2007

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.

Page 6: Poly Matlab 2007

Résumé des commandes

Page 7: Poly Matlab 2007

Résumé des commandes

1

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 :

ANALYSE

NUMERIQUE

SIMULINK

COMMANDE DES PROCEDES CONTINUS

SIMULINK + Boîtes à outils

Spécialisées Simulink

Cours 3GEN

Noyau MATLAB

TOOLBOXES (Boîtes à outils spécialisées)

Logiciel Matlab

Cours 5GEN

CALCUL ET MODELISATION DES REACTEURS

Page 8: Poly Matlab 2007

Introduction à MATLAB

2

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.

Page 9: Poly Matlab 2007

Introduction à MATLAB

3

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.

Page 10: Poly Matlab 2007

Introduction à MATLAB

4

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.

Page 11: Poly Matlab 2007

Introduction à MATLAB

5

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

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

Fenêtre de commandes (Command Window)

Historique des commandes (Command History)

Répertoire courant (Current Directory)

Espace de travail (Workspace)

Aide de Matlab (Help)

Page 12: Poly Matlab 2007

Introduction à MATLAB

6

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 ci-dessous :

Page 13: Poly Matlab 2007

Introduction à MATLAB

7

>> 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) 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,…).

ii) 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).

iii) 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.

iv) 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 :

Page 14: Poly Matlab 2007

Introduction à MATLAB

8

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

Page 15: Poly Matlab 2007

Introduction à MATLAB

9

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.

Page 16: Poly Matlab 2007

Introduction à MATLAB

10

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.

Page 17: Poly Matlab 2007

Introduction à MATLAB

11

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 Affichage des variables dans l'espace de travail. whos 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 »

Page 18: Poly Matlab 2007

Introduction à MATLAB

12

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

Page 19: Poly Matlab 2007

Introduction à MATLAB

13

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 0.8000 1.0000

Page 20: Poly Matlab 2007

Introduction à MATLAB

14

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) % variation logarithmique – 7 valeurs sont réparties

linéairement sur une échelle logarithmique dans l’intervalle donné

y = 1.0e+003 * 0.0100 0.0215 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.

Page 21: Poly Matlab 2007

Introduction à MATLAB

15

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 Matrice de 0 Ones Matrice de 1 Eye Matrice identité

Linspace Vecteur linéairement espacé Logspace Vecteur logarithmiquement espacé

rand Nombre aléatoire à répartition uniforme randn Nombre aléatoire à répartition normale

ones(N,N) définit une matrice carré contenant des 1 et de taille N×N. zeros(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

Page 22: Poly Matlab 2007

Introduction à MATLAB

16

0 5.6030 + 1.1550i 0 0 0 5.6030 - 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 50 >> D=A./B D = 0.1667 0.2857 0.3750 0.4444 0.5000

Page 23: Poly Matlab 2007

Introduction à MATLAB

17

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 % multiplication de vecteurs élément par élément V =

3 8

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.

Page 24: Poly Matlab 2007

Introduction à MATLAB

18

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 :

Max Valeur maximum Min Valeur minimum

Mean Valeur moyenne Sum Somme des éléments prod Produits des éléments Std Ecart type sort Tri par ordre croissant

3.2.4 Fonctions mathématiques élémentaires.

Abs Valeur absolue Sqrt Racine carrée Real Partie réelle imag Partie imaginaire

Round Produits des éléments Sign Signe exp Exponentielle

Log / log10 Log base e/ log base 10

3.2.5 Fonctions trigonométriques.

Sin, asin, sinh, asinh Sinus, Arcsin trigo et hyperboliqueCos, acos, cosh, acosh tan, atan, tanh, atanh

3.3 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);

Page 25: Poly Matlab 2007

Introduction à MATLAB

19

FONCTIONS MATHÉMATIQUES Les fonctions mathématiques de base sont données dans le tableau suivant : abs Valeur absolue Module (nb complexe)

angle Argument (nb complexe)

sqrt Racine carrée

real Partie réelle

imag Partie imaginaire

conj Conjuguée (nb complexe)

round arrondir

fix Arrondir (vers zéro)

floor Arrondir (vers -∞)

ceil Arrondir (vers ∞)

sign signe

rem reste

exp exponentielle

log Logarithme base e

log10 Logarithme base 10

Les fonctions trigonométriques sont données dans le tableau suivant :

sin cos tan asin acos atan sinh cosh tanh asinh acosh 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».

Page 26: Poly Matlab 2007

Introduction à MATLAB

20

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 magenta o cercle : trait pointillé c cyan x croix -. plein pointillé r rouge + plus -- trait mixte g vert * * b bleu s carré w blanc d losange k noir v triangle ^ triangle < triangle > triangle p étoile h étoile 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

Page 27: Poly Matlab 2007

Introduction à MATLAB

21

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')

Page 28: Poly Matlab 2007

Introduction à MATLAB

22

0 2 4 6 8 10 12 14 16 18 20-1

-0.5

0

0.5

1

cosi

nus

absisse (radian)

Fonction Cosinus

0 2 4 6 8 10 12 14 16 18 20-1

-0.5

0

0.5

1Fonction Sinus

absisse (radian)

sinu

s

4.1.4 Ajout du texte au graphique

title('Titre du graphique') Ajoute un titre au graphique xlabel('Temps') Étiquette de l'axe x ylabel('Tension') Étiquette de l'axe y gtext('Valeur absolue') Ajoute du texte au graphique à l’endroit pointé par la souris legend('legende 1',’legende 2’) Insertion d’une légende

4.1.5 Manipulation de graphiques

axis([-1 5 -10 10]) Choix des échelles x = (-1,5) et y = (-10,10) hold 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.

Page 29: Poly Matlab 2007

Introduction à MATLAB

23

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)

Page 30: Poly Matlab 2007

Introduction à MATLAB

24

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; %on affecte à a la valeur 2 >> b=5; %on affecte à b la valeur 5 >> c=a<b; %est-ce que a<b ? la réponse est postive, donc c vaut 1 >> d=(a>=b) %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; %on affecte à a la valeur 2 >> b=5; %on affecte à b la valeur 5 >> c=(a<b)&(a>=b); %est-ce que a<b et a>=b? la réponse est négativeve, donc c

vaut 0

Page 31: Poly Matlab 2007

Introduction à MATLAB

25

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

Page 32: Poly Matlab 2007

Introduction à MATLAB

26

5.3.4 Instruction switch

>> switch k %sélection de la valeur de k >> case 1 %cas où k=1 >> a=a+b; %instruction effectuée si k=1 >> case 2 %cas où k=2 >> a=a-b; %instruction effectuée si k=2 >> end %fin de la sélection sur k

5.4 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 :

% 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 :

[x1,x2]=bidule(1,2)

les variables x1 et x2 prendront alors les valeurs : x1 = 2 et x2 = 20.08.

Définition de la fonction.

Utilisation de la fonction bidule.

Page 33: Poly Matlab 2007

Introduction à MATLAB

27

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) % valeur de f en x = 2.5 a =

62

6.2 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.

Page 34: Poly Matlab 2007

Introduction à MATLAB

28

>> 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 dxxx∫

1

0sin 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).

Page 35: Poly Matlab 2007

Introduction à MATLAB

29

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) %définition du second membre dans la fonction fun >> dx=-x ; %second membre pour l’équation de x

Page 36: Poly Matlab 2007

Introduction à MATLAB

30

>> [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) %définition du second membre dans la fonction fun >> dx = zeros(2,1) ; %un vecteur colonne >> dx(1) = x(2) ; %second membre pour l’équation de x1 >> dx(2) = -x(1) ; %second membre pour l’équation de x2

>> [t, x] = ode45(@fun,[0 2*pi],[0 1]) ; %appel à la fonction ode45 >> plot(t, x(1, : ),’-k’,t, sin(t),’ob’) ; %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).

Page 37: Poly Matlab 2007

Introduction à MATLAB

31

7 RESUME, NON EXHAUSTIF, DES COMMANDES MATLAB

7.1 Mathématiques

Tableaux et matrices

cat concaténation d’un tableau dans une direction end indique le dernier indice d’un tableau eye matrice identité find recherche d’une valeur dans un tableau linspace génère un vecteur espacé linéairement max valeur maximale d’un tableau ou d’une matrice meshgrid génère deux matrices X et Y pour des graphiques 2D ou 3D min valeur minimale d’un tableau ou d’une matrice ones matrice constituée de 1 rand matrice de nombres aléatoires size dimension d’une matrice sum somme des éléments d’un tableau zeros matrice constituée de 0

Algèbre linéaire

det déterminant d’une matrice eig calcul des valeurs propres et vecteurs propres inv inverse d’une matrice linsolve résolution d’un système d’équations linéaires lu factorisation LU d’une matrice rank rang d’une matrice trace trace d’une matrice ′ transposée d’une matrice

Fonctions mathématiques élémentaires

atan arctangente acos arccosinus asin arcsinus conj conjugué d’un nombre complexe cos cosinus exp exponentielle floor partie entière d’un réel i nombre complexe unité imag partie imaginaire d’un nombre complexe log logarithme naturel (ou népérien) log10 logarithme décimal (en base 10) real partie réelle d’un nombre complexe round arrondi à l’entier le plus proche sin sinus sqrt racine carrée tan tangente

Page 38: Poly Matlab 2007

Introduction à MATLAB

32

Polynômes

polyfit interpolation par un polynôme polyval évaluation de la valeur d’un polynôme roots calcul des racines d’un polynôme

Interpolation

interp1 interpolation 1D interp2 interpolation 2D interp3 interpolation 3D spline interpolation par des fonctions spline

Méthodes numériques non linéaires dblquad évaluation numérique d’une intégrale double fzero recherche d’un zéro d’une fonction ode45,ode23 résolution d’équations différentielles du premier ordre quad évaluation numérique d’une intégrale

Variables prédéfinies eps précision des calculs en virgule flottante i,j nombre complexe égal à la racine carrée de -1 pi 3,14159…. inf infini NaN Not A Number

7.2 Graphiques

Graphiques élémentaires Loglog graphique en coordonnées log-log polar graphique en coordonnées polaires plot tracé d’une courbe subplot création de plusieurs graphiques dans une fenêtre

Annotation des graphiques gtext insertion d’un texte avec la souris legend insertion d’une légende title insertion du titre du graphique xlabel insertion du label de l’axe des x ylabel insertion du label de l’axe des y

Graphiques spécialisés

contour tracé d’isovaleurs d’une fonction quiver tracé d’un champ de vitesse getframe création d’une animation

Page 39: Poly Matlab 2007

Introduction à MATLAB

33

7.3 Caractères spéciaux = 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

7.4 Analyse de données abs valeur absolue fft transformée de Fourier discrète directe ifft transformée de Fourier discrète inverse mean moyenne d’un tableau std écart-type d’un tableau trapz intégration numérique (méthode des trapèzes) var variance d’un tableau

7.5 Programmation et types de données

Type de données

double conversion en double précision num2str conversion d’un entier en chaîne de caractères single conversion en simple précision str2num conversion d’une chaîne de caractères en entier

Programmation

else,elseif exécution conditionnelle for exécution d’un bloc d’instructions pour un nombre de fois spécifié if exécution conditionnelle d’instructions function déclaration d’une fonction global déclaration de variables globales inline construction d’une fonction en ligne pause interruption momentanée d’un programme switch sélection parmi différents cas tic, toc chronométrage while répétition d’instructions tant qu’une condition est vérifiée

Page 40: Poly Matlab 2007

Introduction à MATLAB

34

7.6 Importation et exportation de données save stockage de variables dans un fichier load lecture du contenu d’un fichier

7.7 Outils du bureau et environnement de développement cd changement de répertoire pwd affiche le répertoire courant clear suppression de variables en mémoire dir affichage du contenu d’un répertoire format définition du format de sortie (écran, fichier) help affichage de l’aide pour une fonction mkdir création d’un répertoire rmdir suppression d’un répertoire whos liste des variables en mémoire

Page 41: Poly Matlab 2007

Control System Toolbox

35

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)

La fonction de transfert sera : 2Y(p) p 2U(p) p p 10

+=

+ + (1.2)

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 Exécution %--- première possibilité ---% num=[1 2];den=[1 1 10]; Hc=tf(num,den)

Transfer function: s + 2 ------------ s^2 + s + 10

%--- seconde possibilité ---% p=tf('p'); H1c=(p+2)/(p^2+p+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.

Page 42: Poly Matlab 2007

Control System Toolbox

36

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 :

21 1

2 22

p 2 1p 1Y (p) U (p)p 5 p 4

Y (p) U (p)1 1p 5 p 2 p 1

+⎡ ⎤⎢ ⎥++ ⋅ +⎡ ⎤ ⎡ ⎤⎢ ⎥= ⋅⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦ ⎣ ⎦⎢ ⎥+ + ⋅ +⎢ ⎥⎣ ⎦

(1.3)

Représentation sous Matlab.

Comme précédemment, nous utiliserons de la fonction tf (transfer function).

Instructions Matlab Exécution 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'}) Nota : Ici sont défini dans les variables Num et Den deux matrices (2x2) contenant respectivement les vecteurs définissant les numérateurs et les dénominateurs des fonctions de transfert. Lorsque une instruction, pour sa lisibilité doit être partitionné sur plusieurs lignes il faut utiliser les points de suite (…).

Transfer function from input "U1" to output... s + 2 Y1: ------------- s^2 + 5 s + 4 1 Y2: ----- s + 5 Transfer function from input "U2" to output... 1 Y1: ----- s + 1 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.

Page 43: Poly Matlab 2007

Control System Toolbox

37

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

ici comme équations d’état : 1 1

2 2

x (t) x (t)1 2.5 1u(t)

x (t) x (t)4 0 0− −⎡ ⎤ ⎡ ⎤

= ⋅ + ⋅⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦

(1.5)

[ ] 1

2

x (t)y(t) 1 0.5

x (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 Exécution A=[-1 -2.5;4 0]; B=[1;0]; C=[1 0.5]; D=0; EEc=ss(A,B,C,D) Nota : Ici, les variables A, B, C, D sont des matrices dans lesquelles sont affectées les valeurs 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 possible de définir les noms des entrées et des sorties.

a = x1 x2 x1 -1 -2.5 x2 4 0 b = u1 x1 1 x2 0 c = x1 x2 y1 1 0.5 d = u1 y1 0

Exemple 1.3

Page 44: Poly Matlab 2007

Control System Toolbox

38

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 :

1 2

1 2 2Y(z) z 2 z z 2U(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 Exécution %--- première possibilité ---% num=[1 2]; den=[1 0.6 0.9]; Te=0.1; sys=tf(num,den,Te)

Transfer function: z + 2 ----------------- z^2 + 0.6 z + 0.9 Sampling time: 0.1

%--- seconde possibilité ---% num=[0 1 2]; den=[1 0.6 0.9]; Te=0.1; Hz1=filt(num,den,Te)

Transfer function: z^-1 + 2 z^-2 ----------------------- 1 + 0.6 z^-1 + 0.9 z^-2 Sampling time: 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.

get(Hz) num: {[0 1 2]} den: {[1 0.6 0.9]} Variable: 'z' Ts: 0.1

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.

Page 45: Poly Matlab 2007

Control System Toolbox

39

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 :

21 1

2 22

0,5 z 0,84z 0,5Y (z) U (z)z z 0,16

Y (z) U (z)z 0,9 0, 2z 0,8z 1,3 z 0, 4

−⎡ ⎤⎢ ⎥− − +⎡ ⎤ ⎡ ⎤⎢ ⎥=⎢ ⎥ ⎢ ⎥⎢ ⎥−⎣ ⎦ ⎣ ⎦⎢ ⎥−− ⋅ +⎢ ⎥⎣ ⎦

i (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] 0.2}; Den={[1 -0.5][1 -1 0.16];[1 -1.3 0.4][1 -0.8]}; Te=0.1; tf(Num,Den,Te) Nota : Ici sont définit dans les variables Num et Den deux matrices (2x2) contenant respectivement les vecteurs caractérisant les numérateurs et les dénominateurs des fonctions de transfert.

Transfer function from input 1 to output... 0.5 #1: ------- z - 0.5 z - 0.9 #2: ----------------- z^2 - 1.3 z + 0.4 Transfer function from input 2 to output... z - 0.84 #1: -------------- z^2 - z + 0.16 0.2 #2: ------- z - 0.8 Sampling time: 0.1

%--- Champs de Hz ----% Hz.InputName={'U1','U2'}; Hz.OutputName={'Y1','Y2'}; Hz.UserData='système multivarible 2x2'; get(Hz)

num: {2x2 cell} den: {2x2 cell} Variable: 'z' Ts: 0.1 InputDelay: [2x1 double] 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.

Page 46: Poly Matlab 2007

Control System Toolbox

40

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)+ = ⋅ + ⋅= ⋅ + ⋅

(1.10)

avec : U(k) Vecteur d’entrée de dimension (e,1) Y(k) Vecteur de sortie de dimension (s,1) X(k) Vecteur d’état de dimension (n,1) F Matrice d’état de dimension (n,n) H 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) La mise sous forme d’état du système multivariable précédent (Eq (1.9)) donne :

1 1

2 2

3 3

4 4

5 5

6 6

x (k 1) x (k)0,5 0 0 0 0 0 1 0x (k 1) x (k)0 1,3 0, 4 0 0 0 1 0x (k 1) x (k)0 1 0 0 0 0 0 0x (k 1) x (k)0 0 0 1 0,16 0 0 1x (k 1) x (k)0 0 0 1 0 0 0 0x (k 1) x (k)0 0 0 0 0 0,8 0 0,5

+⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡⎢ ⎥ ⎢ ⎥⎢ ⎥+ −⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥+

= +⎢ ⎥ ⎢ ⎥⎢ ⎥+ −⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥+⎢ ⎥ ⎢ ⎥⎢ ⎥

+ ⎢ ⎥⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣⎣ ⎦ ⎣ ⎦

i 1

2

u (k)u (k)

⎤⎢ ⎥⎢ ⎥⎢ ⎥ ⎡ ⎤⎢ ⎥ ⎢ ⎥

⎣ ⎦⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎦

i (1.11)

1

2

31

42

5

6

x (k)x (k)x (k)y (k) 0,5 0 0 1 0,84 0x (k)y (k) 0 1 0,9 0 0 0, 4x (k)x (k)

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥−⎡ ⎤ ⎡ ⎤

= ⎢ ⎥⎢ ⎥ ⎢ ⎥−⎣ ⎦⎣ ⎦ ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

i (1.12)

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;... 0 0 0 1 0 0;... 0 0 0 0 0 0.8]; 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'}) ;

A l’exécution, les différentes matrices contenues dans la variable système EEd s’affichent.

Exemple 1.6

Page 47: Poly Matlab 2007

Control System Toolbox

41

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.

Pour un processus 21Pc(p)

2 p p 1=

⋅ + + nous commandons celui-ci par un correcteur de type

proportionnel intégral de transmittance pi

1Kc(p) K 1 pT

⎛ ⎞= + ⋅⎜ ⎟

⎝ ⎠ pour les réglages

p iK 1 et T 0,1= = la fonction tf() permet de définir le correcteur. 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 Exécution 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),

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.

Page 48: Poly Matlab 2007

Control System Toolbox

42

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

fermée nous aurons pour le correcteur Kc(p) : c

1 G(p)Kc(p)P (p) 1 G(p)

= ⋅−

Instructions Matlab Exécution 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),

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.

Page 49: Poly Matlab 2007

Control System Toolbox

43

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.

Prenons la transmittance de Laplace définie en (1.2) soit : 2Y(p) p 2U(p) p p 10

+=

+ + pour laquelle

nous avons définie une variable Hc conformément à l’exemple 1-1.

Instructions Matlab Exécution num=[1 2];den=[1 1 10]; Hc=tf(num,den); EEc=ss(Hc) Nota : Ici il faut utiliser la fonction ss (state system). La variable EEc de type système contient les matrices A,B,C,D.

a = x1 x2 x1 -1 -2.5 x2 4 0 b = u1 x1 1 x2 0 c = x1 x2 y1 1 0.5 d = u1 y1 0

Exemple 2.1

Nous pouvons vérifier ici que les matrices d’état obtenues correspondent aux l’équation (1.5) et (1.6)

1 1

2 2

x (t) x (t)1 2.5 1u(t)

x (t) x (t)4 0 0− −⎡ ⎤ ⎡ ⎤

= ⋅ + ⋅⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦

[ ] 1

2

x (t)y(t) 1 0.5

x (t)= ⋅

Page 50: Poly Matlab 2007

Control System Toolbox

44

2.1.2. Cas discret monovariable.

Reprenons le transfert (1.8) 1 2

1 2 2Y(z) z 2 z z 2U(z) 1 0,6 z 0,9 z z 0,6 z 0,9

− −

− −+ ⋅ +

= =+ ⋅ + ⋅ + ⋅ +

.

Nous opérerons comme précédemment.

Instructions Matlab Exécution num=[1 2]; den=[1 0.6 0.9]; Te=0.1; sys=tf(num,den,Te); EED=ss(sys) Nota : Ici il faut utiliser la fonction ss (state system). La variable EED de type système contient les matrices F, H, C, D correspondante à l’équation (1.10).

a = x1 x2 x1 -0.6 -0.45 x2 2 0 b = u1 x1 1 x2 0 c = x1 x2 y1 1 1 d = u1 y1 0 Sampling time: 0.1 Discrete-time model.0

Exemple 2.2

X(k 1) F X(k) H U(k)+ = ⋅ + ⋅

1 1 1

2 2 2

x (k 1) x (k) u (k)0,6 0, 45 0x (k 1) x (k) u (k)2 0 1

+ − −⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤= +⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥+ ⎣ ⎦ ⎣ ⎦⎣ ⎦ ⎣ ⎦ ⎣ ⎦

i i (2.1)

Y(k) C X(k)= ⋅

[ ] 1

2

x (k)y(k) 1 1

x (k)⎡ ⎤

= ⎢ ⎥⎣ ⎦i (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.

Page 51: Poly Matlab 2007

Control System Toolbox

45

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)

21 1

2 22

0,5 z 0,84z 0,5Y (z) U (z)z z 0,16

Y (z) U (z)z 0,9 0, 2z 0,8z 1,3 z 0, 4

−⎡ ⎤⎢ ⎥− − +⎡ ⎤ ⎡ ⎤⎢ ⎥=⎢ ⎥ ⎢ ⎥⎢ ⎥−⎣ ⎦ ⎣ ⎦⎢ ⎥−− ⋅ +⎢ ⎥⎣ ⎦

i

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.

Page 52: Poly Matlab 2007

Control System Toolbox

46

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 1

2 2

x (t) x (t)1 2.5 1u(t)

x (t) x (t)4 0 0− −⎡ ⎤ ⎡ ⎤

= ⋅ + ⋅⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦

[ ] 1

2

x (t)y(t) 1 0.5

x (t)= ⋅

Instructions Matlab Exécution

A=[-1 -2.5;4 0]; B=[1;0]; C=[1 0.5]; D=0; sys=ss(A,B,C,D); tf1=tf(sys) 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.

Transfer function: s + 2 ------------ s^2 + s + 10

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 :

1 1

2 2

3 3

4 4

5 5

6 6

x (k 1) x (k)0,5 0 0 0 0 0 1 0x (k 1) x (k)0 1,3 0, 4 0 0 0 1 0x (k 1) x (k)0 1 0 0 0 0 0 0x (k 1) x (k)0 0 0 1 0,16 0 0 1x (k 1) x (k)0 0 0 1 0 0 0 0x (k 1) x (k)0 0 0 0 0 0,8 0 0,5

+⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡⎢ ⎥ ⎢ ⎥⎢ ⎥+ −⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥+

= +⎢ ⎥ ⎢ ⎥⎢ ⎥+ −⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥+⎢ ⎥ ⎢ ⎥⎢ ⎥

+ ⎢ ⎥⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣⎣ ⎦ ⎣ ⎦

i 1

2

u (k)u (k)

⎤⎢ ⎥⎢ ⎥⎢ ⎥ ⎡ ⎤⎢ ⎥ ⎢ ⎥

⎣ ⎦⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎦

i (2.3)

1

2

31

42

5

6

x (k)x (k)x (k)y (k) 0,5 0 0 1 0,84 0x (k)y (k) 0 1 0,9 0 0 0, 4x (k)x (k)

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥−⎡ ⎤ ⎡ ⎤

= ⎢ ⎥⎢ ⎥ ⎢ ⎥−⎣ ⎦⎣ ⎦ ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

i (2.4)

Page 53: Poly Matlab 2007

Control System Toolbox

47

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;... 0 0 0 1 0 0;... 0 0 0 0 0 0.8]; 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; Sys=ss(F,H,C,D,Te); H=tf(Sys) Nota :Nous retrouvons bien ici la matrice de transfert que nous recherchions.

Transfer function from input 1 to output... 0.5 #1: ------- z - 0.5 z - 0.9 #2: ----------------- z^2 - 1.3 z + 0.4 Transfer function from input 2 to output... z - 0.84 #1: -------------- z^2 - z + 0.16 0.2 #2: ------- z - 0.8 Sampling time: 0.1

Exemple 2.6

Page 54: Poly Matlab 2007

Control System Toolbox

48

3. DISCRETISATION D’UN SYSTEME CONTINU.

3.1. Discrétisation d’une fonction de transfert.

Reprenons un système défini par la transmittance (1.2) 2Y(p) p 2U(p) p p 10

+=

+ +, nous allons

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 :

Te p

2 21 e p 2 0,1032 z 0,08431

p p p 10 z 1,81 z 0,9048

− ⋅⎡ ⎤⎛ ⎞− + ⋅ −⋅ =⎢ ⎥⎜ ⎟⎜ ⎟⎢ ⎥+ + − ⋅ +⎝ ⎠⎣ ⎦

Z (2.5)

Pour calculer la fonction de transfert en z sous Matlab il faut utiliser la fonction c2d (continous to discrete).

Instructions Matlab Exécution num=[1 2];den=[1 1 10]; sys=tf(num,den); Te=0.1; Hz=c2d(sys,Te,'zoh') 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).

Transfer function: 0.1032 z - 0.08431 --------------------- z^2 - 1.81 z + 0.9048 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).

21 1

2 22

p 2 1p 1Y (p) U (p)p 5 p 4

Y (p) U (p)1 1p 5 p 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)

Page 55: Poly Matlab 2007

Control System Toolbox

49

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 0 0 0 0.90484 0 0 x5 0 0 0 0 0.81435 -0.090484 x6 0 0 0 0 0.090484 0.99532 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 = x1 x2 x3 x4 x5 x6 y1 1 1 0 1 0 0 y2 0 0 1 0 0 1 d = u1 u2 y1 0 0 y2 0 0 Sampling time: 0.1 Discrete-time model..

Exemple 3.2

Page 56: Poly Matlab 2007

Control System Toolbox

50

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. Te p

2 21 e p 2 0,1032 z 0,08431

p p p 10 z 1,81 z 0,9048

− ⋅⎡ ⎤⎛ ⎞− + ⋅ −⋅ =⎢ ⎥⎜ ⎟⎜ ⎟⎢ ⎥+ + − ⋅ +⎝ ⎠⎣ ⎦

Z

Opérons maintenant l’opération inverse.

Instructions Matlab Exécution Numz=[0.1032 -0.08431] Denz=[1 -1.81 0.9048] Te=0.1; Hz=tf(Numz,Denz,Te); Hc=d2c(Hz)

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 :

( ) ( ) ( )( ) ( ) ( )

1 2 m

1 2 m

p z p z p zY(p) kU(p) p p p p p p

− ⋅ − −=

− ⋅ − − dans le cas continu (5.1)

( ) ( ) ( )( ) ( ) ( )

1 2 m

1 2 m

z z z z z zY(z) kU(z) z p z p z p

− ⋅ − −=

− ⋅ − − dans le cas discret (5.2)

Les i ip et les z 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.

Page 57: Poly Matlab 2007

Control System Toolbox

51

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 :

2Y(p) p 2U(p) p p 10

+=

+ +

Pour une période d’échantillonnage Te=0,1s l’équivalent discret est le suivant :

Te p

2 21 e p 2 0,1032 z 0,08431

p p p 10 z 1,81 z 0,9048

− ⋅⎡ ⎤⎛ ⎞− + ⋅ −⋅ =⎢ ⎥⎜ ⎟⎜ ⎟⎢ ⎥+ + − ⋅ +⎝ ⎠⎣ ⎦

Z

Instructions Matlab Exécution

%--- cas continu ----% num=[1 2];den=[1 1 10]; Hc=tf(num,den); [Z,P,K] = zpkdata(Hc,'v')

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

Page 58: Poly Matlab 2007

Control System Toolbox

52

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))

21 1

2 22

p 2 1p 1Y (p) U (p)p 5 p 4

Y (p) U (p)1 1p 5 p 2 p 1

+⎡ ⎤⎢ ⎥++ ⋅ +⎡ ⎤ ⎡ ⎤⎢ ⎥= ⋅⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦ ⎣ ⎦⎢ ⎥+ + ⋅ +⎢ ⎥⎣ ⎦

= ( ) ( )

( ) ( )

1

2

p 2 1p 1 p 4 p 1 U (p)

U (p)1 1p 5 p 1 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

Page 59: Poly Matlab 2007

Control System Toolbox

53

6. ANALYSE FREQUENTIELLE. Les outils d’analyse qu’offre Matlab dans le domaine fréquentiel sont les suivants : Nom de la fonction Descrition bode(sys) Calcule la ou les représentations dans les

plans de Bode du système considéré. nichols(sys) Représentation dans le plan de Black nyquist(sys) Représentation dans le plan de Nyquist sigma(sys) Calcul des valeurs singulières 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) 1U(p) 10 p 1

=⋅ +

et (6.1)

Pour une période d’échantillonnage de Te=2 s nous avons le transfert en z suivant : Te p 1

11 e 1 0,1813 z

p 10 p 1 1 0,8187 z

− ⋅ −

⎡ ⎤⎛ ⎞− ⋅⋅ =⎢ ⎥⎜ ⎟⎜ ⎟ ⋅ +⎢ ⎥ − ⋅⎝ ⎠⎣ ⎦

Z (6.2)

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)

Frequency (rad/sec)

Bode Diagrams

-60

-40

-20

0

20From: U(1)

10-2 10-1 100 101-200

-150

-100

-50

0

50

Real Axis

Nyquist Diagrams

-0.2 0 0.2 0.4 0.6 0.8 1

-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

From: U(1)

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 / sTeπ

ω = = . Dans le plan de Nyquist nous constatons que la représentation

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.

Page 60: Poly Matlab 2007

Control System Toolbox

54

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 Description impulse(sys) Calcul de la réponse impulsionnelle lsim(sys) Calcul à une entrée définie Step(sys) Calcul de la réponse indicielle

A titre d’exemple prenons la transmittance (Eq (1.2)) 2Y(p) p 2U(p) p p 10

+=

+ +

et son équivalent discret (Eq (2.5)) 2Y(z) 0,1032 z 0,08431U(z) z 1,81 z 0,9048

⋅ −=

− ⋅ +

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)

Time (sec.)

Impulse Response

0 2 4 6 8 10 12-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1.2From: U(1)

Time (sec.)

Step Response

0 2 4 6 8 10 120

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5From: U(1)

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.

Page 61: Poly Matlab 2007

Control System Toolbox

55

8. EXEMPLE POUR UNE FONCTION DE TRANSFERT CONTINUE DU SECOND ORDRE.

Nous considérerons ici la fonction de transfert : 210

10 p 2 p 1⋅ + ⋅ + pour laquelle nous allons

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.

Page 62: Poly Matlab 2007

Control System Toolbox

56

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.

Page 63: Poly Matlab 2007

Control System Toolbox

57

9. SOMMAIRE DES PRINCIPALES FONCTIONS. bode

Syntaxe. bode(sys) Représentation de Bode d’un système.

bode(sys,w) 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) Méthode ‘zoh’ par défaut. sysd = c2d(sys,Ts,method) 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.

Page 64: Poly Matlab 2007

Control System Toolbox

58

d2c Syntaxe. sysc = d2c(sysd) Méthode ‘zoh’ par défaut. sysc = d2c(sysd,method) 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.

Page 65: Poly Matlab 2007

Control System Toolbox

59

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.

Page 66: Poly Matlab 2007

Control System Toolbox

60

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.

Page 67: Poly Matlab 2007

Control System Toolbox

61

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.

Page 68: Poly Matlab 2007

Control System Toolbox

62

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.

Page 69: Poly Matlab 2007

Control System Toolbox

63

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.

Page 70: Poly Matlab 2007

Control System Toolbox

64

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.

Page 71: Poly Matlab 2007

Simulink

65

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 »).

Page 72: Poly Matlab 2007

Simulink

66

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.

Page 73: Poly Matlab 2007

Simulink

67

Math Opérations Dans ce module se retrouve les principales opérations arithmétiques et logiques.

Model Verification. 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.

Page 74: Poly Matlab 2007

Simulink

68

Sinks Dans ce bloc se retrouvent les éléments de sorties. 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

Sources. Sous ce label sont rassemblé les principaux générateurs de signaux.

Page 75: Poly Matlab 2007

Simulink

69

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 :

W To Workspace3

U To Workspace2

Y

To Workspace1

t

To Workspace

Step

c0

T1.s+1

Processus

Kp*Ti.s+Kp

Ti.s

PI

Clock

1

T2.s+1

Capteur

G

Actionneur

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 pK

et iT 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.

Page 76: Poly Matlab 2007

Simulink

70

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.

Page 77: Poly Matlab 2007

Simulink

71

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 % 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)');

Execution : >>graph

0 5 10 15 20 25 300

5

10

15

tempsd (s)

consignesortie

0 5 10 15 20 25 300

2

4

6

8

tempsd (s)

commande

Page 78: Poly Matlab 2007

Simulink

72