Académique Documents
Professionnel Documents
Culture Documents
Formation Simulink
Sommaire
• Introduction 1
• Les Bibliothèques de Simulink 11
• Construction de systèmes 23
• Simulation 39
• Construction de blocs 65
• Etude à partir de MATLAB 83
• Moteur à Courant Continu 97
• Sous systèmes à exécution conditionelle 115
• Boucles algébriques 125
• S-function 129
• Exercice : rebond d'une balle 153
1. Introduction
Simulink Introduction - 2
• Ouvrir MATLAB
Double-clic sur l’icone
• Utiliser Simulink
Taper simulink dans la fenêtre MATLAB
Stateflow Coder
Systèmes Aéronautiques
Systèmes
Biologiques
Systèmes
Monétaires
Systèmes Automobiles
Année universitaire 2006 -2007
Simulink Introduction - 7
>> simulink
et le navigateur SIMULINK
apparaît.
Icône
SIMULINK
>> simulink3
2. Les Bibliothèques
de Simulink
Simulink Les Bibliothèques - 12
2.1 Génération des Signaux
• Pour ouvrir une bibliothèque, double cliquer sur les blocs :
2.7 Non-Linéarités
3. Construction de
Systèmes
Simulink Construction de Systèmes - 24
Le bloc Saturation
Le bloc To Workspace
Impression
Sélection des
signaux pour le
Zoom en X et Y scope volant
Scope volant
Zoom en X Restore à l’échelle
de l’axe courant
Zoom en Y
Sauvegarde de l'échelle
courante comme échelle
Mise à l’échelle par défaut, pour les
automatique Simulations à venir
Année universitaire 2006 -2007
Simulink Construction de Systèmes - 37
4. Simulation
Simulink Simulation - 40
Instant de départ
de la simulation
Instant final de
simulation
Paramètres
spécifiques Choix du Solver
au solver (continus, discrets,
choisi pas fixe ou variable)
• Paramètres : • Paramètres :
• Fixed step size (pas fixe • Max step size (pas maximum
d ’intégration pour toute la d’intégration)
simulation) • Initial step size (pas initial de
• Mode (mono ou multi-tâches) l ’intégration) Critères
• Relative tolerance d ’adaptation du
pas d ’intégration
• Absolute tolerance au cours de la
simulation
Année universitaire 2006 -2007
Simulink Simulation - 42
Courbe non-lisse
erreur en x
< 1e − 3
x
erreur en x < 1e - 6
Courbe lisse
Exécution :
- menu Simulation/Start
- bouton Play
Arrêt :
- menu Simulation/Stop
- bouton Stop
- automatique lorsque le
temps final de simulation
est atteint
Année universitaire 2006 -2007
Simulink Simulation - 45
Exemples
• Equation de Mathieu :
d 2 x( t )
2 = −ω 2
(1 + ε cos( t )) x( t )
dt
Exemples (cont.)
• Oscillateur
Construire et comparer les schémas-blocs correspondant aux
équations ci-dessous :
d 2x dx
2 + 0.3 + 0.2 x = u
dt dt
U ( s)
X ( s) = 2
s + 0.3s + 0.2
⎧ ⎡ 0 1 ⎤ ⎡0⎤
⎪ x& = ⎢ ⎥ x + ⎢ ⎥u
⎨ ⎣− 0.2 − 0.3⎦ ⎣1⎦
⎪
⎩ y = [1 0] x
Année universitaire 2006 -2007
Simulink Simulation - 49
Exemples (cont.)
Modulateur/Démodulateur
• Créer un signal modulé en amplitude :
• Utiliser un signal en dent de scie unitaire comme source.
• Utiliser un signal sinusoïdal d’amplitude 1 et de pulsation 100
signal modulé =Source x Porteuse
Créer un filtre discret représenté par l’équation suivante :
y(n)-1.6y(n-1)+0.7y(n-2) = 0.04u(n)+0.08u(n-1)+0.04u(n-2)
• Utliser le signal modulé comme source.
• Multiplier le signal transmis par une forme discrete de la
porteuse (frequency=100, sample time=5 ms)
• Filtrer le signal résultant avec le filtre ci-dessus.
• Observer le signal transmis ainsi que la sortie du filtre.
Solution
Exemples (Cont.)
Canal de communication
• Implanter la dynamique d’un canal de communication :
Utiliser
• un bruit Additive "noise corruption" avec une variance de
0.01
• un bloc delay avec une taille buffer de 1024
• l’équation décrivant la dynamique du canal
10 −9 &y& + 10 −3 y& + y = u
Utiliser le signal modulé de l’exemple précédent.
• Observer la sortie
• Essayer differents solvers
Solution:
>> whos
Name Size Bytes Class
Les blocs :
•Sum
•Product
•Gain
•Data type Conversion
permettent de gérer le
dépassement du type entier .
4.6 Debugger
• Le Debugger Graphique
Tools/Simulink Debugger
5. Construction de
Blocs
Simulink Construction de Blocs - 66
5.1 Construction de Sous-Systèmes
• Sélectionner • Il est possible d’annuler (Undo) les effets
les blocs à jusqu'à 101 exécutions consécutives par le
regrouper avec choix menu Edit/Undo. Les opérations
la souris (liens pouvant être annulées sont :
d’entrée et de
sortie inclus) • Ajouter, effacer, ou déplacer un bloc, une
ligne ou une annotation
• Éditer un nom de bloc
• Créer un sous-système
• Grouper avec
le menu • Pour dégrouper sélectionner le
Edit/Create menu Edit/Undo Create
Subsystem Subsystem
Maintenant, un
nouveau bloc
remplace tous les
blocs qui étaient
sélectionnés. Le
nom de ce
nouveau bloc est
par défaut
Subsystem Année universitaire 2006 -2007
Simulink Construction de Blocs - 67
Double-clic
5.2 Paramétrage
Les blocs peuvent être paramétrés : les valeurs sont remplacées par des variables
MATLAB. Ces variables doivent être définies dans MATLAB avant le lancement de la
simulation.
5.3 Le Masquage
Le masquage permet de :
• Changer les caractéristiques d'un bloc. Par exemple, un bloc
Zero-Pole peut être transformé en filtre de Butterworth
• Personnaliser et simplifier des modèles
Double-clic
5.4 Bibliothèques
• Vocabulaire
• Rechercher la bibliothèque
Pour retrouver le bloc-library auquel est lié le bloc-référence, utiliser le
menu Edit/Go To Library Link du modèle. Alors, la bibliothèque est
ouverte avec le bloc-library déjà sélectionné. Année universitaire 2006 -2007
Simulink Construction de Blocs - 76
5.5 Lisibilité
• Noms des fils
Pour clarifier un modèle de taille importante, les fils peuvent porter un
nom. Ce nom est propagé dans le modèle lorsqu'il passe à travers les
blocs suivants :
Demux, Enable, From, Inport, Mux, Selector, Subsystem.
2 1
6. Etude à Partir de
MATLAB
Simulink Etude à Partir de MATLAB - 84
>> whos
Name Size Bytes Class
sortie 1x1 1476 struct array
>> simplot(sortie)
Syntaxe de "sim" :
>> [t,x,y] = sim('modèle',timespan)
>> [t,x,y] = sim('modèle',timespan,options,ut)
>> [t,x,y1,...,ym] = sim('modèle',timespan,options,ut)
avec : modèle : nom du modèle
timespan : instant de départ et instant final de la simulation : [TStart TFinal]
options : paramètres de simulation définis par la commande simset
ut : tableau de valeurs définissant les entrées externes : [t,u(1),u(2),...]
Syntaxe de "simget" :
>> struct_options = simget('modèle',timespan)
>> valeur_options = simget('modèle',champ)
avec : modèle : nom du modèle
champ : nom du champ désiré
struct_options : structure représentant les options
valeur_options : valeur de l ’une des options
Année universitaire 2006 -2007
Simulink Etude à Partir de MATLAB - 88
6.4 Linéarisation
• A partir d'un modèle SIMULINK, il est possible d'extraire une
représentation d’état par linéarisation autour d'un point de fonctionnement
donné :
⎧X& = AX + BU
⎨
⎩Y = CX + DU
Syntaxe :
>> [A,B,C,D] = linmod('modele')
>> [A,B,C,D] = linmod('modele',x,u)
>> [A,B,C,D] = linmod('modele',x,u,pert)
avec 'modèle' : nom du modèle à linéariser
x,u : le point de fonctionnement autour duquel le modèle linéaire doit être
extrait est défini par le vecteur d'états x et le vecteur d'entrées u.
pert : amplitude de la perturbation appliquée sur les entrées et les états.
>>[A,B,C,D]=linmod('modele5',2,0)
>> [A,B,C,D]=linmod('modele5');
>> bode(A,B,C,D)
Année universitaire 2006 -2007.
Simulink Etude à Partir de MATLAB - 92
fprintf('Diagramme\nde Bode')
>> set_param('modele6/Bode','OpenFcn',...
'[A,B,C,D]=linmod(''modele6'');bode(A,B,C,D)')
Remarque : dans le cas où l’on dispose de la toolbox CONTROL, SIMULINK donne accès à un champ
appelé Linear Analysis dans le menu Tools. Cet outil est une I.H.M. d’analyse temporelle/fréquentielle
permettant une étude complète dans ces domaines en restant dans le même environnement. Il est
nécessaire d’insérer dans le modèle des points d’accès pour les entrées/sorties de la linéarisation. Ceci
nous permet, entre autre, de réaliser un diagramme de Bode directement à partir du modèle.
Année universitaire 2006 -2007
Simulink
7. Moteur
à Courant Continu
Simulink Etude d’un Moteur à Courant Continu - 98
Données numériques :
J : 0.1 kg.m2 Kc : 0.5 N.m.A -1 r : 0.1 Ω
f : 0.01 N.m.s Ke : 0.1 N.m.A-1 L : 0.5 H
Année universitaire 2006 -2007
Simulink Etude d’un Moteur à Courant Continu - 99
7.2 Modélisation
• Représentation d’état du système
Les équations peuvent être mises sous la forme suivante :
J ⋅ ω& ( t ) + f ⋅ ω ( t ) = Kc ⋅ I ( t )
r ⋅ I ( t ) + L ⋅ I&( t ) = U ( t ) − Ke ⋅ ω ( t )
f Kc
ω& ( t ) = − ⋅ ω( t ) + ⋅ I( t )
J J
()
&I( t ) = − Ke ⋅ ω( t ) − r ⋅ I( t ) + U t
L L L
⎡ f Kc ⎤
⎡0 ⎤
d ⎡ω ( t ) ⎤ ⎢ − J J ⎥ ⋅ ⎡ω ( t ) ⎤ + ⎢ ⎥ ⋅ U (t )
⎢ ⎥= r ⎥ ⎢ I (t ) ⎥ ⎢ 1 ⎥
dt ⎣ I ( t ) ⎦ ⎢⎢ Ke
− − ⎥ ⎣ ⎦
⎣ L⎦
⎣ L L⎦
⎡ω ( t ) ⎤
[
ω (t) = 1 0 ⋅ ⎢]I ( t ) ⎥ + 0 ⋅ U (t)
⎣ ⎦
Année universitaire 2006 -2007
Simulink Etude d’un Moteur à Courant Continu - 100
>> J = 0.1;
>> f = 0.01;
>> Kc = 0.5;
>> Ke = 0.1;
>> r = 0.1;
>> L = 0.5;
Année universitaire 2006 -2007
Simulink Etude d’un Moteur à Courant Continu - 101
Xmax
X0
Exercice :
dω ( t )
J + f ⋅ ω( t ) = Kc ⋅ I( t )
Les équations du moteur sont : dt
dI( t )
r ⋅ I( t ) + L ⋅ = U( t ) − Ke ⋅ ω( t )
dt
La saturation insérée en entrée du modèle ne permet pas d’utiliser les méthodes issues de la théorie
linéaire pour le calcul des coefficients du PID (méthode de Ziegler-Nichols par exemple). Nous avons donc
recours à une méthode d ’optimisation numérique.
Année universitaire 2006 -2007
Simulink Etude d’un Moteur à Courant Continu - 108
>> Kp=1;
>> Ki=0;
>> Kd=0;
>> [t,x,y]=sim(‘ pid_process ’,35);
>> plot(t,y);grid
>> etud_param
Exemple :
>> f_erreur([1 0 0])
ans =
1.5585
8. Sous-systèmes à
exécution conditionnelle
Simulink Sous-systèmes à exécution conditionnelle - 116
8.1 Présentation
Un sous-système à exécution conditionnelle
permet de simuler des modèles SIMULINK sur
événement :
• Utilisation du IF/ELSE
• Utilisation du SWITCH/CASE
Exercice 1
• Modifier le modèle pour que le stockage des valeurs soit
déclenché lorsque le signal passe au-dessus de 0.6 et
arrêté lorsque le signal passe au-dessous de la valeur 0.
• Comment obtenir cet affichage (voir graphique ci-
dessous) : le trait épais représente la sortie du système
"enabled".
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 5 10 15 20
9. Boucles Algébriques
Simulink Boucles Algébriques - 126
Exemple
Résoudre f(z) = 0 avec f(z) = 3 + z - exp(z)
Cette équation a deux solutions. Avec le bloc
Algebraic Constraint, il est possible de donner
une valeur initiale pour permettre à l'algorithme
de se diriger vers une des solutions voulues.
Le modèle correspondant est présenté sous
deux formes différentes, l'une utilisant le bloc
Algebraic Constraint et l'autre non :
Exemple (cont.)
Ces deux valeurs sont réellement les solutions de
l'équation f(z)=0 :
>> z=yout(end,:)
z =
-2.9475 1.5052
>> Fz=3+z-exp(z)
Fz =
1.0e-015 *
-0.1943 0
Exercice 2
10. S-Functions
Simulink S-Functions - 130
10.1 Introduction
Une S-Function définit la dynamique d’un système. Il
existe différent types de S-Functions :
M-file Fonction en
S-Function language MATLAB
MEX-file Fonction en
S-Function language C
Année universitaire 2006 -2007
Simulink S-Functions - 131
avec :
•
•
x : les états continus xc et discret xd
u : les entrées
[]
x =
xc
xd
0.0 0.0
• t : le temps te1 Offset1
t = te2 Offset2
. . . . . .
ten Offsetn
Année universitaire 2006 -2007
Simulink S-Functions - 133
Flag = 3
Calcul des sorties
mdlOutputs
Flag = 2
Mise à jour des états discrets
mdlUpdate
Phase
d’intégration
Mise à jours des états continus dérivés Flag = 1
mdlDerivatives
Flag = 3
Calcul des sorties mdlOutputs
Flag = 9
Termine la simulation mdlTerminate
Année universitaire 2006 -2007
Simulink S-Functions - 134
x0 =
2 conditions initiales de l’état integrator1
0 conditions initiales de l’état integrator2
xstr =
‘vdp/x1’ le premier état s’appelle x1
‘vdp/x2’ le deuxième état s’appelle x2
ts =
0 0 le système est continu
x0 =
2 conditions initiales de l ’état integrator1
0 conditions initiales de l ’état integrator2
0 Conditions initiales de la fonction de
0 transfert discrète d ’ordre 2
xstr =
‘vdp/x1’ le premier état s’appelle x1
‘vdp/x2’ le deuxième état s’appelle x2
‘vdp/Discrete Transfert Fcn’
‘vdp/Discrete Transfert Fcn’
ts =
0 0 partie continue
0.700 0.0200 partie discrète
• Initialisation - mdlInitializeSizes
- mdlInitializeSampletimes
- mdlInitializeConditions
• Calcul des sorties - mdlOutputs
• Mise à jour des états discrets - mdlUpdate
• Calcul du prochain temps - mdlGetTimeOfNextVarHit
d’appel (option)
• Mise à jour des états - mdlDerivatives
continus dérivés
• Tâches de fin de simulation - mdlTerminate
• Il existe également des macros pour lire ces valeurs (préfix ssGet)
Double clic
Le modèle modele_graphique
correspond à la représentation
sous forme de bloc graphique
• Le modèle modele_sfunc_m
correspond à la S-Function
en langage MATLAB :
• Le modèle modele_sfunc_c
correspond à la S-Function en
langage C :
10.9 Exercice
• Écrivez une S-Function pour créer un bloc ayant deux ports d’entrées
et un port de sortie. La largeur des ports d’entrée et du port de sortie
est identique.
• Le vecteur de sortie est la somme des deux vecteurs d’entrées
Exercice :
Rebond d’une Balle
Simulink Exercice : Rebond d’une Balle - 154
• Modéliser la chute libre d'une balle sur un sol, sachant que la hauteur
initiale est de 10 m, la vitesse initiale est de 5m/s vers le haut et
l'amortissement du sol est de 0.8
• Compléter le modèle de manière à ce que la simulation s'arrête
lorsque l'amplitude des rebonds est "faible" (par exemple, amplitude
inférieure à 5 cm)
• Compléter le modèle pour représenter une balle qui se déplace dans
un plan vertical avec une vitesse initiale colinéaire au sol de 0.1 m/s,
entre les abscisses 0 m et 5 m. Utiliser le bloc XY Graph pour
l'affichage. Les murs sont considérés sans amortissement
• Compléter le modèle pour représenter une balle qui se déplace dans
un cube dont les quatre murs sont placés à 5 m l'un de l'autre. La balle
est placée à l'origine à une hauteur de 10 m. Les murs sont considérés
sans amortissement. Puis, créer une S-Function en langage MATLAB
pour l'affichage
• Relation Fondamentale
Z de la Dynamique :
V0
mΓ = Σ Fext
z0
g • Données Numériques :
• z0 = 10 m
sol
• V0 = 5 m.s-1