Vous êtes sur la page 1sur 16

Matlab/Simulink

MASTER ASE 1re anne UE M1-103 :

Outils de simulation Partie : Matlab

Pierre Bonnet

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Prsentation du logiciel Matlab/Simulink(V6)


Le logiciel Matlab est un logiciel de manipulation de donnes numriques et de programmation dont le champ dapplication est essentiellement les sciences appliques. Son objectif, par rapport aux autres langages, est de simplifier au maximum la transcription en langage informatique dun problme mathmatique, en utilisant une criture la plus proche possible du langage naturel scientifique. Le logiciel fonctionne sous Windows et sous Linux. Son interface de manipulation HMI utilise les ressources usuelles du multi-fentrage. Son apprentissage nexige que la connaissance de quelques principes de base partir desquels lutilisation des fonctions volues est trs intuitive grce l'aide intgre aux fonctions. Une alternative Matlab est Scilab, logiciel libre, dont la version 5 prsente de nombreux points communs avec Matlab. De nombreuses entreprises (EDF, ...) ont fait le choix de passer sous Scilab. Le passage d'un logiciel l'autre n'est cependant pas direct, certaines fonctions ayant des comportements diffrents (ce ne sont pas des erreurs mais des choix scientifiques diffrents). Tous les logiciels de calcul rutilisent des savoir-faire scientifiques anciens et prouvs, dvelopps dans les annes 1960.

I - Introduction
Matlab est un logiciel interprt (donc sans phase prliminaire de compilation) qui excute les oprations demandes squentiellement, avec possibilit de boucle, test et saut. Il ne manipule que des donnes numriques et ne sait effectuer aucun calcul formel priori.
Ecran de base (prsentation pouvant lgrement diffrer selon version)

L'cran de base comprend l'cran de contrle Command Window ainsi que des fentres complmentaires permettant de suivre le fonctionnement gnral d'une application. Les instructions frappes (ou colles) dans la Command Windows s'excutent directement.

Les commandes peuvent tre relances dans la fentre Matlab simplement en remontant la liste par et en validant la ligne par Return . L'excution d'une ligne provoque automatiquement l'affichage des rsultats sous forme d'une liste de donnes numriques. Cette fonctionnalit peut tre bloque en mettant un ";" la fin de chaque ligne de programme (prfrable lorsque le calcul concerne une matrice de grande dimension).
USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Programme Matlab

Il est toutefois prfrable de construire un programme avec un diteur de texte (Bloc-Notes sous Windows, Open Office ou l'diteur intgr), de le sauver sur disque sous le nom monappli.m .

Le programme peut tre lanc depuis la fentre d'dition en appuyant sur le bouton . D'autres boutons permettent le dboggage des programmes avec points d'arrt et excution pas pas. A noter que Matlab possde toutes les fonctionnalits d'un logiciel moderne de programmation. Tout programme enregistr sous l'extension .m peut tre lanc depuis la Commande Windows de Matlab, en frappant son nom (sous rserve que le chemin d'accs au fichier soit dclar sous Matlab voir la commande Set Path du menu Fichiers - .
Aide sur Matlab

Il existe deux types d'aides sur Matlab 6 : l'aide intgre aux fonctions (existant sur les prcdentes versions ) ou l'aide hypertexte. La commande >> help ou >> help nom-de-fonction permet d'obtenir une aide sur le logiciel en gnral, un Toolbox ou une fonction particulire. C'est pourquoi il n'est pas indispensable de connatre le manuel complet de Matlab pour s'en servir ! L'aide hypertexte est d'une trs grande richesse. Elle inclut la description des fonctions, des exemples, des dmonstrations en ligne, des rfrences bibliographiques. L'aide hypertexte est un vritable cours ! Attention au volume total de la documentation fournie, qui reprsente l'quivalent d'une encyclopdie (plus de 30 000 pages en 2003)

II - Variables Matlab
Les variables s'utilisent sans dclaration pralable de type, Matlab adoptant en interne l'objet matrice pour toutes les variables (scalaires ou non, relle ou imaginaire, chane de caractres...) . Le type (dimensionnement de la matrice) est donc gr automatiquement d'aprs l'usage (affectation) de la variable. Des calculs ou application de fonctions entre types non cohrents seront signals par un message d'erreur et blocage de l'excution du programme cette ligne.

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Exemple de dclaration:
>> A = 1 <return> A= 1 >> B = 2 + 3i <return> B= 2.0000 + 3.0000 i >> whos <return> Name Size Elements B 1 by 1 1 A 1 by 1 1

Bytes 16 8

Density Complex Full Yes Full No

Toute variable utilise est range dans l'espace mmoire appel workspace et y reste moins d'effacer le workspace par la commande clear all ou commande au menu. Le contenu du workspace peut tre affich par l'instruction who (nom seul des variables) ou whos (noms avec description du type). La valeur d'une variable s'affiche en frappant simplement son nom (sans le ";" en fin de ligne!). Son dimensionnement s'obtient par : >> size(variable) Sur la version 6, le workspace est affich dans une fentre spcifique. En cliquant sur une variable de la fentre, les valeurs apparaissent.

Certaines variables usuelles comme i , pi ou eps (epsilon de valeur 2--52 ) sont prdfinies (attention, pi peut tre modifi !). Le nombre de variables utilisables n'est limit que par la place mmoire. Les variables sont locales (sauf spcification contraire) et il n'y a aucun risque de modification d'une variable par une fonction qui utiliserait une variable interne de mme nom. Le langage Matlab manipule sans difficult toutes les variables usuelles.
Scalaires:

C'est le type le plus simple, avec la gestion implicite des complexes.


r=3 y = -99.25 theta = 1.60210E-20 u = 3 + 4*i t = 1 + 3.14E-3i

w = r * exp(i*theta)

Il est possible de dfinir une variable partir d'autres, pourvu qu'elles aient une valeur numrique, donc qu'elles aient t prcdemment dfinies :
Vecteurs et Matrices

Les vecteurs et matrices suivent l'criture naturelle, les lments tant des nombres ou des variables prcdemment dfinies.
>> x1= [-1 0 1] ; >> y1 = [-1 ; 0 ; 1 ] >> y2 = [ -1 0 1 ] ' >> z = [ 1 2 3 ; 4 5 6 ] % vecteur ligne % vecteur colonne % ' signifiant "transposition" % matrice 2 lignes x 3 colonnes

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Les vecteurs ou matrices peuvent tre gnrs suivant une loi incrmentale:
>> x = 1 : 5 <return> x= 12 3 4 >> y = 5 : -1 : 1 <return> y 5 4 3 >> z = ( 0.0 : 0.2 : 1.0 )' ; 5

2 1 % vecteur colonne 6x1 par utilisation de la transposition

Le pas peut tre spcifi, avec ventuellement une valeur ngative. Les lments des vecteurs et matrices sont accessibles individuellement ou par groupes: >> A = randn(10) ; %cre une matrice de taille 10x10 coef alatoires >> som1= A(1,1) + A(2,2) + A(3,3) ; >> x = A( 1:5 , 3 ) ; % met dans x les lments 1 5 de la colonne 3 de A
>> y = A(1:5, :) ; % met dans y les 5 premires lignes de A

Construction par Concatnation : >> z = [ x x ]


% z est une matrice 6lignes x2 colonnes

Matlab permet de gnrer directement des matrices particulires:


>> zeros(m, n) ; >> ones (m,n) ; >> randn() ; >> eye() ; >> linspace() >> logspace(n1,n2) % matrice nulle de dimension mxn % matrice de "1" %matrice lments alatoire de distribution normale, %matrice identit, %vecteurs en suite linaire %vecteurs en suite logarithmique de 10^n1 10^n2.

III - Fonctions Matlab


L'criture est voisine de l'criture informatique avec quelques variantes lorsque le rsultat ne correspond pas une mthode clairement identifie en mathmatique.
Expressions arithmtiques

Les oprateurs les plus courants sont :


+ * / ^

Attention: les variables tant ventuellement des matrices, certaines oprations doivent tre interprtes. >> nb_scalaire = 3 ;
>> A = [ 1:5 ; 2 : 6 ] ; >> B = A* nb_scalaire ; % multiplication de tous les lments de A par nb .

Fonctions mathmatiques

L'utilisateur dispose de toutes les fonctions usuelles telles abs, sqrt (racine carre), real, imag, conj, angle (phase d'un complexe) , sign, exp, log, log10 ,sin, cos, tan, asin, acos, atan, sinh ... Ces fonctions s'appliquent tout type de variables ( scalaire, complexe ou matriciel)
>> x = [0 : 0.1 : 10] ; >> alpha = 3 ; >> y = alpha * (exp ( i * x ) exp( -i * x ))/ ( 2 * i ); % dfinition vecteur x % y est un vecteur

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Calculs Matriciels

Les oprations de bases ( + , - , * ) sappliquent implicitement aux matrices. >> A = [ 1:5 ] ;


>> B = [ 11 : 15 ] ; >> C1 = A * B ; >> C2 = B * A ; >> C3 = A * A ; % donne un scalaire % donne une matrice 5x5 % calcul impossible (erreur de dimension)

Matlab vrifie les dimensions des calculs ; certaines erreurs seront ainsi dtectes mais il arrive souvent que le calcul corresponde une expression calculable. La division matricielle de deux matrices carres de mmes dimensions correspond la fonction inverse de la multiplication:
>> C = A / B >> C = B \ A % quivalent C = A * inv(B) % quivalent C = inv(B) * A

Les oprations propres au calcul matriciel sont gnralement dfinies en Matlab comme le dterminant det(A), l'inversion inv(A), la diagonalisation diag(A) , les valeurs propres eig(A). Le polynme caractristique P dfini par det I A d'une matrice peut tre extrait et ses racines calcules. >> A = [ 1 2 3 ; 3 1 2 ; 4 6 5 ] ;
>> lambda = eig(A) ; >> k = det(A) ; >> P = poly (A) ; >> R = roots(poly(A)) >> prodrac = prod(R) % donne les valeurs propres ranges en colonne % dterminant (= produit des valeurs propres) % polynome caractristique dfini par ses coefficients % redonne les valeur propres de A ranges en colonne % redonne le dterminant

Les oprations comme la racine carre, le logarithme demandent interprtation. Par dfaut, l'opration usuelle s'applique aux lments de la matrice et donne un rsultat de mme dimension. Pour la racine carre B d'une matrice A (qui satisfait l'quation B*B = A ), on dispose de la fonction sqrtm(A) qui est diffrente de l'opration sqrt(A) qui donne la racine carre de ses lments. Un certain nombre doprations sont tendues aux matrices non-carres comme la rsolution de X = A \ B solution de A * X = B avec X vecteur qui fait appel la solution usuelle dfinie par les moindres -carrs ( X = (ATA)-1ATB )
Calculs terme terme

Matlab permet aussi des oprations point par point (ou terme terme) c'est dire en considrant les matrices comme des tableaux (array) et en n'utilisant pas les rgles du calcul matriciel. Ces oprations sont notes avec un point pour signaler ce mode de calcul. Les principales oprations point par point sont .* et ./
>> x = [0 : 0.1 : 10] ; >> y = exp(- x / 10 ) .* sin ( x ) ; % dfinition vecteur x % y est un vecteur

NB : il est important de ne pas confondre les oprations classiques et les oprations point par point .

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Traitement des donnes

Les fonctions les plus courantes sont crites comme : - abs , min , max , valeur moyenne mean , valeur mdiane median , cart-type std , le tri sort , la somme sum , le produit prod , la drive numrique diff , lhistogramme hist sur des vecteurs. - la transforme de Fourier fft et son inverse ifft - pour les signaux multiples (matrices composes de deux ou plusieurs vecteurs de mesures) le module abs , la phase angle , les coefficients de corrlation corcoef , la matrice de covariance cov la convolution conv de signaux ou la dconvolution deconv .
Fonctions graphiques

Lun des points essentiels de Matlab est la reprsentation graphique des rsultats dans une fentre graphique Windows ( qui peut tre imprime ou recopie dans le presse-papier et incluse dans une autre application Windows). Les fonctions graphiques sont trs simples, avec une trs grande souplesse dutilisation grce la possibilit dintroduction dun nombre de paramtres variable en entre de fonction. Les fonctions graphiques sont destines reprsenter des vecteurs ou des matrices vues comme une juxtaposition de vecteurs. Les graphiques 2D de base sont:
>> plot ( vecteur_y ) >> plot (matrice) % trace la courbe y avec comme abcisse le numro d'lment pour y (chelles linaires) % graphe de plusieurs courbes

>> plot (vecteur_x,vecteur_y) %graphe de y=f(x) si x et y ont mme longueur!

Les autres graphes sont :


>> semilogy ( vecteur_x,vecteur_y) >> semilogx (vecteur_x,vecteur_y ) >> loglog (vecteur_x,vecteur_y )

Les graphes 2D peuvent tre enrichis par les instructions suivantes: >> axis(xmin, xmax, ymin, ymax) dfinition manuelle des chelles (avant linstruction plot) >> title(Titre) >> xlabel(titre abcisse) >> ylabel(titre ordonnes) >> text(x,y,texte) place un texte aux coordonnes (x,y) du graphique >> gtext(texte) place le texte la souris >> grid on fait apparatre la grille sur le graphe. >> hold on permet de tracer plusieurs courbes successivement sur le mme graphe avec remise lchelle automatique chaque nouvelle courbes. Les courbes doivent comporter le mme nombre de points. Hold off annule la superposition . >> subplot permet de subdiviser la fentre graphique et de tracer plusieurs courbes. Sur Matlab 6, les graphiques sont des objets part entire, dans lesquels sont inclus les donnes graphiques. L'utilisateur peut modifier la reprsentation des donnes sans r-excution du calcul.

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Exemple de programme sous Matlab

Rsultat graphique:

Le graphique est modifiable "ditable" avec un outil de retouche [ trs diffrent d'une version l'autre de Matlab]. Cet outil existe aussi sous Scilab [version prsente].
USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

Tests et Contrle de boucles Instruction conditionnelle if

Le test suit les rgles usuelles des langages de programmation. La syntaxe des conditions est celle du langage C :
if condition1 instruction1, elseif condition2 instruction2, else instruction3; end

La condition est construite autour d'un oprateur de relation du type == , > , < , >= etc . La condition peut tre compose de plusieurs tests relationnels relis par "&" ou par " | " ; chaque condition peut tre inverse par complmentation (signe " ~ "). Exemple :
if (nombre > 10) & ~(nombre > 11 ) disp( 'nombre compris entre 10 et 11'); end

Boucle while

La boucle while est tout aussi simple:


while condition instruction1, instruction2, end

Boucle for

La boucle for a une structure naturelle. Le pas est optionnel; les boucles peuvent tre imbriques.
for i = valdeb : pas : valfin instruction1, instruction2; end

Exemple:
omega = 0.5 ; delta_t = 0.1 ; for k= 1:50 % debut de boucle t(k) = k * delta_t ; % construction du vecteur temps y(k) = sin ( omega * t(k) ); % construction du vecteur de sortie end % fin de boucle plot( t , y ) % trac graphique

Il est possible de dfinir k comme un vecteur et de le donner paramtre du for.


t = [1 : delta_t : 50] ; for t ....... end

Attention: dans ce cas, ne pas indicer une variable avec t dans la boucle (indice non-entier).

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

10

Cration de nouvelles fonctions

La programmation MATLAB repose sur des fichiers textes. Tout ensemble d'instructions peut tre transform en fonction pour une meilleure criture et une rutilisation dans d'autres programmes. Pour transformer un ensemble d'instruction dites sous le bloc-notes en fonction, 1) ajouter l'entte suivant au texte :
function [param_retour1, param_retour2,...] = ma_fonction ( param_entree1, param_entree2,...) % Lignes de commentaires qui serviront de "help"

debut instructions fonction


instruction1 instruction2....

fin fonction 2) sauvegarder le texte avec comme nom de fichier le nom ma_fonction . m (extension .m obligatoire pour tre reconnue comme fonction) dans un rpertoire accessible Matlab. Une fois sauvegarde, la fonction est utilisable dans tout programme, comme toute autre fonction du noyau Matlab. Exemple:
function [a,b,c,d] = ord2(wn, z) % [A,B,C,D] = ORD2(Wn, Z) retourne les matrices A,B,C,D reprsentant sous forme % tat continu un systme du second ordre de frquence propre Wn et d'amortissement Z. % [commentaire affich par le "help" de la fonction] if nargout==4, b = [0;1]; c = [1 0]; d = 0; end % Vrification prsence paramtres de retour a = [0 1;-wn*wn, -2*z*wn];

A la diffrence des langages usuels, le nombre de paramtres d'entre ou de sortie dans une fonction peut tre variable. Le nombre de paramtres passs se teste par les fonctions nargin et nargout . Cette fonctionnalit permet de dfinir un usage multiple d'une mme fonction, selon le nombre de paramtres introduits l'appel de la fonction. Le type des paramtres (scalaire, matrice...) n'est pas non plus prcis ce qui offre une grande souplesse. Par un test (isnumeric, ischar, iscomplex...) l'intrieur mme de la fonction, il est possible de modifier le comportement de la fonction selon le type. Il est donc possible de crer des nouvelles fonctions trs facilement partir des fonctions existantes pour constituer une bibliothque dans un domaine d'application appele Toolbox ( Signal Processing Toolbox , Control Toolbox... ). Une bibliothque est donc un ensemble de fichier textes modifiables ventuellement par l'utilisateur pour ses propres besoins. Elle peut comprendre aussi des fonctions compiles dont la vitesse d'excution est plus grande .

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

11

IV - Les systmes en Automatique


Matlab permet reprsenter directement les systmes dcrits par leur fonction de transfert. Plusieurs reprsentations sont possibles : polynomiale, ples et zros ou tat; le logiciel dispose des outils ncessaires pour passer d'une forme l'autre et pour tudier les rponses de ces systmes. Ces outils sont applicables sur les systmes continus et les systmes discrets.
Forme polynomiale

On considre que la fonction de transfert G p est crite sous la forme : G p = b m pm bm1 p


m1 m1

.. . b0

a n p n a n1 p n1 .. . a 0

Cette fonction de transfert se dfini en Matlab sous forme de deux vecteurs ligne reprsentatifs des coefficients des polynmes du numrateur et du dnominateur. >> nume = [ bm bm1 .. . . b 0 ] et >> deno = [ a n a n1 .. . a 0 ] Les noms utiliss pour la description sont gnriques (vous pouvez donner un autre nom au numrateur ou au dnominateur) La fonction TF permet de dfinir un systme partir de sa forme polynomiale
>> mon_systeme = TF(nume, deno).

Le systme devient une entit objet qui pourra tre manipule directement. Par dfaut, le systme est suppos reprsenter un systme continu de la variable 'p' ou 's' pour les anglophones. La reprsentation supporte les systmes MIMO . Note: Sous Scilab, les systmes ont une reprsentation directe qui s'appuie sur la reprsentation symbolique des polynmes. Un polynme de la variable x est dfini symboliquement par :
-->x = poly( 0 , 'x') ; //dfinition de la variable symbolique du polynome -->mon_poly = 3*x^2 + 10*x + 1 ; Un systme dcrit par fonction de transfert est une fraction rationnelle de 2 polynmes: -->H = (5*x)/( 3*x^2 + 10*x + 1 ) ; mon_syst = syslin('c', H ) ; //option 'c' pour systme continu

Systme retard pur

Il est frquent qu'un systme comporte physiquement un retard pur (par exemple coulement d'un fluide dans un canal de transport) ; de plus, les modles de reprsentation usuels (Broda, Strejc) font intervenir un retard pur dans la fonction de transfert. Matlab prend en compte un retard en indiquant cette proprit dans la description du systme; cette proprit peut tre ajoute ds la description initiale ou ultrieurement.
>> mon_systeme = TF(nume, deno, 'iodelay' , valeur_retard ).

ou
>> mon_systeme = TF(nume, deno)

puis >> set(mon_systeme,'iodelay', valeur_retard)

Pour Scilab, consulter le document de L. Povy page 152

Forme zros-ples

Dans cette reprsentation, on considre que G p est reprsente sous la forme : G p = K p z 1 . .. p z n p p1 .. . p p n

Cette fonction de transfert se dfini en Matlab sous forme de deux vecteurs lignes reprsentatifs des racines du numrateur et du dnominateur.
USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

12

>> mes_zeros = [ z 1 z 2 .. .. z n ] et >> mes_poles = [ p 1 p 2 .. . pn ]. L'entit systme se dfinit partir des zros et ples par la fonction ZPK :
mon_systeme = ZPK(mes_zeros, mes_poles, K)

. La fonction pzmap permet de reprsenter les ples et zros dans le plan complexe.
Cette forme de reprsentation n'est pas utilise sous Scilab

Forme tat

Dans cette reprsentation, le systme continu est dcrit par les matrices A,B,C et D : X =AX Bu Y =C X Du Matlab est tout particulirement adapt cette reprsentation. Il suffit donc de dfinir les matrices caractristiques et de construire le systme avec la fonction ss :
mon_systeme_etat = SS ( A, B, C, D) ; Sous Scilab, un systme continu est dcrit par : mon_systeme_etat = syslin( 'c' , A, B, C, D) ;

Changement de reprsentation

Depuis les versions 5 et 6 incluant la notion de systme, le changement de reprsentation des systmes continus est trs facile puisqu'il suffit de dfinir le nouveau systme partir de l'ancien.
mon_systeme = tf(nume, deno) syst_etat = tf2ss(mon_systeme) syst_zp = ss2zpk(syst_etat) ou syst_zp = zp(mon_systeme)

Les ples et zros d'un systme sont donns directement par zpkdata(sys)
Passage continu <-> chantillonn

Tout systme continu peut tre transform en systme discret quivalent.


systeme_discret = c2d( systeme_continu, Tech, 'Method')

Les mthodes proposes sont des approximations (Euler, trapze, Tustin..). Elles ne correspondent pas au mthodes exactes dfinies dans les cours d'Automatique (exponentielle de la matrice ou transforme en z) . Rponse temporelle La rponse temporelle est obtenue sur un systme quelconque par simulation. Les diffrentes possibilits offertes par Matlab sont:
y=impulse(systeme,t ) y=step(systeme, t) y=lsim(systeme,u,t) calcul de la rponse impulsionnelle pour les instants dfinis par le vecteur t calcul de la rponse indicielle pour les instants dfinis par le vecteur t calcul de la rponse l'entre u pour les instants dfinis par le vecteur t

Note: la dfinition du vecteur temps est optionnelle; en l'absence de vecteur temps, la fonction arrte le calcul lorsque le rgime final est atteint.

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

13

Rponses frquentielles

Les diffrentes rponses frquentielles usuelles


bode(systeme,w) nyquist(systeme,w) nichols(systeme,w) [margeGain,margePhase,Wcg,Wcp] = margin(systeme) lieu de Bode pour les pulsations du vecteur w lieu de Nyquist pour les pulsations du vecteur w lieu de Black pour les pulsations du vecteur w ; ngrid permet de faire apparatre les valeurs de la boucle ouverte calcul des marges de gain et de phase, ainsi que de leur pulsations associes

Note: la dfinition du vecteur frquence est optionnelle; en l'absence de vecteur frquence, la fonction arrte le calcul lorsque la rponse frquentielle atteint une asymptote.

Cascade de fonctions de transfert et boucle

Matlab permet de dterminer les fonctions de transfert de systmes en cascade, en parallle, boucl en retour unitaire ou boucl par un transfert quelconque.
systeme3 = series(systeme1,systeme2) systeme3 = parallel(systeme1,systeme2) systemebf = cloop(systeme,sign) systeme3 = feedback (systeme1,systeme2,sign) mise en cascade de deux fonctions de transfert mise en parallle de deux fonctions de transfert calcul de la fonction de transfert boucle pour un retour unitaire calcul de la fonction de transfert boucle pour un retour quelconque

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

14

V - Simulink
Le Toolbox Simulink est une fonction lance depuis Matlab qui donne accs une description graphique des problmes avec application au traitement du signal, lautomatique classique, la logique floue... La base est une description en schma-bloc hirarchique, chaque bloc tant une fonction dcrite en langage Matlab ou partir dautres blocs. Pour lutilisateur, la description et lexcution de Matlab est transparente dans les problmes usuels. Il ne se proccupe que de la construction graphique de son problme avec ventuellement cration de nouveaux blocs pour les problmes avancs. La sauvegarde des applications Simulink est un fichier texte d'extension m . Pour dmarrer Simulink, frapper dans la fentre de commande :
>> simulink

ou bien appuyer sur le bouton

de la fentre principale de Matlab.

Ds le lancement, Simulink propose dans une fentre la bibliothque des structures prdfinies usuellement rencontres, ainsi que les objets graphiques dfinis dans les Toolbox.

Nouvelle feuille

Par appui sur File ->new, une fentre vide est ouverte pour construire le schma graphique. La construction graphique se fait par "drag and drop" depuis les lments de la bibliothque. Un doubleclic sur un lment permet d'en faire apparatre les proprits.
USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

15

Menus

Ces menus donnent accs au contrle gnral de l'application. menu "file": permet de crer une fentre vide pour un nouveau schma , de rappeler un schma prcdent ou de faire une sauvegarde.

menu "simulation" : permet de fixer les paramtres d'une simulation, de la lancer ou de la stopper. Le pas de calcul et le temps total de simulation doivent tre adapts au problme traiter (chelle des temps matriser).
Liaisons

La liaison entre les blocs se fait par cblage la souris dont le fonctionnement est implicite en labsence de toute slection souris. Les entres de bloc sont gnralement gauche et les sorties droite, les liaisons tant orientes sortie-bloc-prcdent vers entre-bloc-suivant . Un branchement (jonction) se fait en pointant la liaison sur laquelle le branchement se fait, puis en maintenant la touche "control" du clavier enfonce, en dplaant la souris . L'amaorce du branchement est alors faite.
multiplexeur et dmultiplexeur

C'est un bloc particulier; il permet de passer plusieurs signaux dans une mme liaison. Il est indispensable pour certains blocs prdfinis (blocs entre ou sortie du type vecteur), utile pour visualiser deux signaux sur le scope , ou passer simplement plusieurs paramtres vers Matlab. Le dmultiplexeur excute la fonction inverse. Lensemble de ces outils permettent de crer trs rapidement un schma de simulation incluant des fonctions du 1er ordre, 2me ordre, des gains, des sommateurs des boucles. La simulation elle-mme se lance par le menu simulation, aprs avoir dfini la mthode de rsolution des quations diffrentielles caractrisant certains blocs ( Euler, Range-Kuta dordre 23 ou 45, Adams...) et la prcision souhaite. Exemple de construction d'un schma de simulation: Lancement de la simulation

USTL - Master ASE M1 Outils de simulation - 2009-2010

Matlab/Simulink

16

Communication avec Matlab

La communication avec Matlab se fait avec des blocs workspace d'entre ou de sortie dans lesquels l'utilisateur donne le nom du vecteur utilis sous Matlab . Dans les versions actuelles, deux approches possibles (la deuxime est prfrable parce que plus explicite et plus gnrale): - placer un bloc in ou out dans le schma et paramtrer la simulation partir du menu simulation --> parameters . La taille du workspace de sortie doit tre adapt au nombre de points de calculs (fix par dfaut 1000, valeur presque toujours insuffisante). La mthode de simulation tant gnralement pas variable, il est conseill de renvoyer le vecteur des instants de simulation (inutile si ce vecteur a t donn en entre!). - placer un bloc from workspace ou to workspace et le paramtrer. L'utilisateur retrouve dans le workspace de sortie les valeurs issues du rsultat numrique de la simulation pour chaque instant, sous forme d'un tableau (array) de rsultats de simulation. Le mode "structure" permet de retrouver le signal par notation objet, en incluant les instants de simulation si ncessaire.

Pour retrouver les lments dans la structure de donnes, il suffit de parcourir l'arborescence de l'objet. Dans l'exemple ci-dessus, la structure est la suivante :
sim_data = time: [ 54x1 double] signals: [ 1x1 struct] blockName: 'ma_simulation/To Workspace'

Les valeurs de la sortie de la fonction de transfert sont accessibles par :


A = sim_data.signals.values( : , 2 )

Il est ainsi possible de mixer des calculs fait sous Matlab avec d'autres mens en simulation. Parmi les nombreuses autres fonctionnalits utiles, il est possible de retrouver une reprsentation de type tat ou transfert d'une simulation Simulink linarise autour d'un point de fonctionnement par [num,den] = linmod('sys', x, u) o x est l'tat initial et u un vecteur d'entre amenant le systme un point de fonctionnement donn. Simulink offre aussi des perspectives de programmation classique, grce des fonctions de test (bloc if et case), de boucle (blocs for et while )et de contrle de structure (bloc call ).

USTL - Master ASE M1 Outils de simulation - 2009-2010