Vous êtes sur la page 1sur 5

IENAC-T11 Matlab 1

Matlab : TD 5

Objectifs : Introduction à Simulink.


Simulink est un environnement graphique de programmation associé à Matlab. Il permet la
représentation et la simulation de systèmes sous forme de schémas blocs, ce qui le rend populaire
auprès des automaticiens non programmeurs.

1 Exemple : système masse ressort amortisseur

Représentation de l'équation diérentielle


Dans cet exemple, nous allons modéliser dans Simulink le chariot représenté sur le schéma
suivant.

La mise en oeuvre de second principe de la dynamique devrait vous ammener à l'équation


diérentielle suivante :
F b k
ẍ = − .ẋ − .x (1)
M M M

 Ouvrir la fenêtre Simulink ( icône dans Matlab )

Cette fenêtre comporte une barre de menus ainsi qu'un ensemble de boutons représentants
les librairies disponibles.
 Créez un nouveau modèle Simulink (menu File/New/Model ).
 L'équation se présente sous la forme d'une somme de 3 termes. Ouvrez la librairie Math operations
( en double cliquant )et glissez-déposez le symbole Add ( somme ) dans votre modèle.
 Par défaut, l'élément somme possède deux entrées. Nous en avons besoin de trois. Édi-
tez le symbole somme en double cliquant et ajoutez un '+' supplémentaire dans le case
list of signs.
IENAC-T11 Matlab 2

 L'entré de notre système est la force F. Nous allons dans un premier temps la représenter
par une constante. Ajoutez à votre modèle le bloc Constant de la librairie Sources. Ajoutez
aussi un bloc Gain de la librairie Math operations pour représenter la multiplication par
1/M . Éditez le bloc Gain pour remplacer la valeur par défaut 1 par 1/M. Connectez les
diérents blocs. Votre modèle doit maintenant ressembler à la gure suivante.

b
 Le deuxième élément de la somme est
M .ẋ.
ẋ peut être obtenu à partir de ẍ en utilisant un
bloc Integrator ( dans la librairie Continuous ). Comme précédemment, utilisez un bloc
Gain pour la multiplication par
b
M.

 Ajoutez maintenant le troisième élément de la somme (x) en utilisant le même principe.


 Nous allons utiliser un Scope ( librairie Sinks ) pour visualiser la sortie de notre modèle.
IENAC-T11 Matlab 3

 Avant de pouvoir simuler notre modèle, il nous reste encore à dénir les constantes sym-
boliques que nous avons utilisées ( M, b et k ). Créez un chier Matlab ( .m) dénissant
ces constantes et exécutez le avec la commande run('mon_fichier.m'). Vériez que les
constantes sont bien dénies dans l'environnement Matlab ( workspace ).
 Nous allons maintenant pouvoir simuler notre modèle. Double-cliquez sur l'icône du scope
pour faire aparaitre la fenêtre associée. Le menu Simulation/Configuration parameters
permet d'accéder à une boite de dialogue réglant les paramètres de la simulation ( durée,
algorithme d'intégration etc...).

Dans un premier temps, conservez les valeurs par défaut. Lancez la simulation à partir du
menu Simulation/Start. Autoscale du
Lorsque la simulation est nie, utilisez le bouton
scope pour ajuster l'échelle. Le bouton save current axis settings permet de mémoriser
ces réglages pour les simulations suivantes.
IENAC-T11 Matlab 4

Création d'un sous-système


De la même façon qu'en programmation classique, on crée des fonctions pour faciliter la lisibilité
et la réutilisation, il est possible dans Simulink de créer des sous systèmes jouant le même rôle.
Avant de modéliser un correcteur par retour d'état, nous allons transformer notre chariot en sous
système.
 Remplacez le scope et la constante utilisée pour la force par des blocsIn et Out ( librairies
Sinks et Sources ). Sélectionnez l'ensemble des éléments de votre modèle puis choisissez
l'option create subsystem disponible dans le menu associé au clic droit.

Utilisation du modèle Simulink depuis Matlab


Il est parfois souhaitable d'utiliser un modèle Simulink depuis Matlab, par exemple pour pou-
voir générer une entrée sophistiquée ou pour eectuer des traitements sur les sorties. La fonction
sim() de Matlab permet cette opération.
 Essayez cette fonction dans sa version la plus simple
[t X Y] = sim('chariot');
plot(t,Y);
La réponse plate obtenue vient du fait que nous n'avons pas fourni d'entrée au modèle et
que Matlab a en conséquence pris 0 par défaut.
An de fournir une entrée non nulle au modèle, nous allons devoir utiliser la version complète
de la fonction sim().
Le script suivant génère une entrée constante de valeur 1 ainsi qu'un vecteur temps. Il utilise
ensuite la version complète de la fonction sim.
clear();
IENAC-T11 Matlab 5

M = 1;
b = 10;
k = 20;

span = 10.;
step = 0.01;

options = simget('chariot');
t = 0:step:span;
u = ones(span/step+1, 1);

[t_out X Y] = sim('chariot', span, options, [t' u]);

plot(t_out,Y);

2 Exercice : Adjonction du correcteur par retour d'état et

simulation de la réponse à un échelon.

 Réalisez dans Simulink le modèle d'un correcteur par retour d'état. Le transformer en sous
système.
 Depuis Matlab, simulez la réponse du système bouclé à un échelon de commande d'amplitude
un mètre. Tracez cette réponse. Tracez aussi la commande issue du PID.
 Modélisez les imperfections du capteur de position en utilisant un bruit aléatoire gaussien
de variance 5cm ( librairie sources) ainsi qu'un délai de 250ms ( librairie Continuous ).
 Observer la dégradation des performance de votre correcteur.
 Modélisez votre actionneur en ajoutant un saturation entre la sortie du correcteur et l'entrée
du chariot. Observez l'eet sur les performances du régulateur.

3 Pour aller plus loin

La programmation graphique, aussi attractive puisse t'elle sembler, se révèle souvent inadap-
tée au traitement de certains problèmes complexes. Le mécanisme de S-function permet d'intégrer
du code matlab dans une simulation simulink. Ce mécanisme est trop complexe pour être décrit
ici.
www.mathworks.com/help/pdf_doc/simulink/sfunctions.pdf contient la do-
L'url suivante
cumentation de référence sous forme d'un document de 600 pages. L'url www.chem.mtu.edu/
~tbco/cm416/MatlabTutorialPart5.pdf contient le sujet d'une séance de travaux pratiques met-
tant en oeuvre des S-functions.

Vous aimerez peut-être aussi