Vous êtes sur la page 1sur 152

Simulink

Pr. Khalid BENJELLOUN


Section Automatique et Informatique Industrielle
Dpartement Electrique
Ecole Mohammadia des Ingnieurs
Formation Simulink
Simulink
Anne universitaire 2006 - 2007
Introduction 1
Les Bibliothques de Simulink 11
Construction de systmes 23
Simulation 39
Construction de blocs 65
Etude partir de MATLAB 83
Moteur Courant Continu 97
Sous systmes excution conditionelle 115
Boucles algbriques 125
S-function 129
Exercice : rebond d'une balle 153
Sommaire
Simulink
1. Introduction
Introduction - 2
Simulink
Anne universitaire 2006 -2007.
Les Bibliothques de Simulink
Construction de systmes
Simulation
Construction de blocs
Etude partir de MATLAB
Moteur Courant Continu
Modlisation
Rgulation
Optimisation
Sous-Systmes excution conditionnelle
Boucles algbriques
S-Function
Exercice : rebond d'une balle
1.1 Plan du Cours
Introduction - 3
Simulink
Anne universitaire 2006 -2007
1.2 Information de Dmarrage
Ouvrir MATLAB
Double-clic sur licone
Utiliser Simulink
Taper simulink dans la fentre MATLAB
Introduction - 4
Simulink
Anne universitaire 2006 -2007
1.3 Les Produits MATLAB
Stateflow Coder
Blocksets Simulink RTW
Toolboxes MATLAB Compiler
Introduction - 5
Simulink
Anne universitaire 2006 -2007
1.4 Quest-ce que Simulink?
Un outil de Simulation intgr lenvironnement
de programmation scientifique MATLAB
Ceci signifie, entre autres :
Edition de blocs
Simulation de modles non-linaires
Simulation de modles discrets ou continus
Simulation de modles hybrides
Simulation asynchrone (chantillonnage non-
uniforme)
Intraction avec Matlab, ses extensions, ses
botes outils
Introduction - 6
Simulink
Anne universitaire 2006 -2007
1.5 Que peut-on modliser avec
Simulink?
Ce que lon peut modliser mathmatiquement
Systmes de
Communications
Satellites
Systmes de
Navigation
Systmes
Montaires
Systmes Aronautiques
Systmes Automobiles
Systmes
Biologiques
Introduction - 7
Simulink
Anne universitaire 2006 -2007
1.6 Excution de Simulink
Taper dans MATLAB la
commande :
>> simulink
et le navigateur SIMULINK
apparat.
Introduction - 8
Simulink
Anne universitaire 2006 -2007
1.6 Excution de Simulink (cont.)
Icne
SIMULINK
Introduction - 9
Simulink
Anne universitaire 2006 -2007
1.6 Excution de Simulink (cont.)
Pour avoir Simulink sous forme icnographique taper :
>> simulink3
Simulink
2. Les Bibliothques
de Simulink
Les Bibliothques - 12
Simulink
Anne universitaire 2006 -2007
Pour ouvrir une bibliothque, double cliquer sur les blocs :
2.1 Gnration des Signaux
Les Bibliothques - 13
Simulink
Anne universitaire 2006 -2007
2.2 Visualisation des Signaux
Les Bibliothques - 14
Simulink
Anne universitaire 2006 -2007
2.3 Systmes Continus
Les Bibliothques - 15
Simulink
Anne universitaire 2006 -2007
2.4 Systmes Discrets
Les Bibliothques - 16
Simulink
Anne universitaire 2006 -2007
2.5 Fonctions et Tables
Les Bibliothques - 17
Simulink
Anne universitaire 2006 -2007
2.6 Oprations Mathmatiques
Les Bibliothques - 18
Simulink
Anne universitaire 2006 -2007
2.7 Non-Linarits
Les Bibliothques - 19
Simulink
Anne universitaire 2006 -2007
2.8 Gestion des Signaux & Systmes
Les Bibliothques - 20
Simulink
Anne universitaire 2006 -2007
2.9 Classes de Sous-Systmes
Il existe 2 classes des sous-systmes
1) sous-systmes virtuels: assurent une hirarchie graphique dans les modles. Ils
ninfluent pas sur l'excution du modle. Lors de l'excution du modle, Simulink aplatit
tous les sous-systmes virtuels.
2) sous-systmes non-virtuels: assurent galement la hirarchie graphique et altrent le
mode d'excution du modle . Le sous-systme non-virtuel est excut comme une
unit simple (excution atomique). Tous les sous-systmes non-virtuels sont dessins
avec un cadre gras.
Les Bibliothques - 21
Simulink
Anne universitaire 2006 -2007
2.10 Blocs Additionnels
Simulink
3. Construction de
Systmes
Construction de Systmes - 24
Simulink
Anne universitaire 2006 -2007
3.1 Collection et Connection des Blocs
Rassembler les blocs
en les glissant dans le
modle
Connecter les
blocs avec la
souris (bouton
gauche)
Construction de Systmes - 25
Simulink
Anne universitaire 2006 -2007
3.1 Collection et Connection des Blocs
Pour relier un ensemble de blocs sources (ou cibles)
un bloc cible (ou source), il suffit de slectionner les blocs sources
(ou cibles), de maintenir Ctrl enfonc et effectuer un clic bouton
gauche sur le bloc cible (ou source).
Construction de Systmes - 26
Simulink
Anne universitaire 2006 -2007
3.2 Copie et Insertion de Blocs
Placer le bloc au-dessus
de la ligne dinsertion
Clic bouton droit de la souris
sur le bloc pour le copier
Construction de Systmes - 27
Simulink
Anne universitaire 2006 -2007
3.3 Branchement et Cheminement des
Lignes
Clic bouton droit de la souris sur la
ligne pour ajouter une branche
Clic bouton gauche de la souris sur la
ligne pour recheminement
Construction de Systmes - 28
Simulink
Anne universitaire 2006 -2007
3.4 Changement de Position/Orientation
Shift et clic bouton gauche en
bougeant la souris pour
dconnecter
Ctrl-I pour une rotation de 180
(Format/Flip block)
Ctrl-R pour une rotation de 90
(Format/Rotate block)
Construction de Systmes - 29
Simulink
Anne universitaire 2006 -2007.
3.5 Mise en Place des Blocs
Voici le modle construire :
Construction de Systmes - 30
Simulink
Anne universitaire 2006 -2007
Crer un nouveau modle : File/New/Model de la fentre Simulink
Ajouter un bloc : cliquez sur le bloc dsir dans la bibliothque et
faites le glisser vers la fentre o vous voulez placer ce bloc.
Pour relier deux blocs, cliquez sur la sortie du premier bloc et
faites glisser la souris jusqu' l'entre du second bloc, puis
relchez la souris. Cette manipulation peut aussi se faire en partant
de l'entre du second bloc et en allant vers la sortie du premier. En
appuyant sur la touche SHIFT pendant la manipulation , l'extrmit
du fil suit exactement la souris.
Pour redimensionner un bloc, cliquez dans un coin du bloc et
dplacez la souris.
3.5 Mise en Place des Blocs (cont.)
Construction de Systmes - 31
Simulink
Anne universitaire 2006 -2007
Pour redimensionner un bloc, cliquez dans un coin du bloc et
dplacez la souris.
Pour copier un bloc, cliquez avec le bouton droit de la souris sur le
bloc copier. Faites glisser la souris. Le bloc est copi l'endroit
o le bouton de la souris est relch.
Pour paramtrer un bloc, double-cliquez (bouton de gauche) sur le
bloc concern ou cliquez une fois sur le bouton de droite. Un menu
apparat o le champ Parameters est alors accessible. Par cette
deuxime mthode, vous pouvez galement slectionner la
rubrique Properties pour personnaliser le bloc.
3.5 Mise en Place des Blocs (cont.)
Construction de Systmes - 32
Simulink
Anne universitaire 2006 -2007
3.6 Paramtrage des Blocs
Le bloc Sine Wave
Le sinus est d'amplitude 1,
de frquence 1 rad/s avec
une phase nulle. La
priode dchantillonnage
de 0 indique que nous
sommes dans le domaine
continu.
Construction de Systmes - 33
Simulink
Anne universitaire 2006 -2007
3.6 Paramtrage des Blocs (cont.)
Le bloc Transfer Fcn
La fonction de transfert est :
Les coefficients du
numrateur et du
dnominateur sont entrs
sous forme de vecteurs par
puissance dcroissante
comme dans MATLAB.
1
1
+ s
Construction de Systmes - 34
Simulink
Anne universitaire 2006 -2007
3.6 Paramtrage des Blocs (cont.)
Le bloc Saturation
Il limite la sortie entre
les valeurs -0.5 et 0.5.
Construction de Systmes - 35
Simulink
Anne universitaire 2006 -2007
3.6 Paramtrage des Blocs (cont.)
Le bloc To Workspace
Les 1000 derniers points
de la simulation sont
stocks dans la variable
sortie dont le format est au
choix une structure ou une
matrice.
Construction de Systmes - 36
Simulink
Anne universitaire 2006 -2007
3.6 Paramtrage des Blocs (cont.)
Zoom en X et Y
Zoom en X
Zoom en Y
Mise lchelle
automatique
Impression
Sauvegarde de l'chelle
courante comme chelle
par dfaut, pour les
Simulations venir
Dfinir les proprits du
Scope : chelle, affichage, ...
Restore lchelle
de laxe courant
Scope volant
Slection des
signaux pour le
scope volant
(Ve/D)rrouillage de la
slection des axes
Construction de Systmes - 37
Simulink
Anne universitaire 2006 -2007
3.6 Paramtrage des Blocs (cont.)
Simulink
4. Simulation
Simulation - 40
Simulink
Anne universitaire 2006 -2007
4.1 Paramtres de Simulation
Les paramtres de la simulation sont saisis dans la fentre ci-
dessous obtenue par le menu Simulation/Parameters du
systme tudi :
Instant de dpart
de la simulation
Instant final de
simulation
Choix du Solver
(continus, discrets,
pas fixe ou variable)
Paramtres
spcifiques
au solver
choisi
Simulation - 41
Simulink
Anne universitaire 2006 -2007
4.1 Paramtres de Simulation (cont.)
Solvers pas fixe Solvers pas variable
Noms :
discrete (pour les systmes
purement discrets)
ode5, ode4, ode3, ode2, ode1
(pour les systmes hybrides)
Noms :
discrete (pour les systmes
purement discrets)
ode45, ode23, ode113 (pour les
systmes hybrides non raides)
ode15s, ode23s, ode23t, ode23tb
(pour les systmes hybrides raides)
Paramtres :
Fixed step size (pas fixe
d intgration pour toute la
simulation)
Mode (mono ou multi-tches)
Paramtres :
Max step size (pas maximum
dintgration)
Initial step size (pas initial de
l intgration)
Relative tolerance
Absolute tolerance
Critres
d adaptation du
pas d intgration
au cours de la
simulation
Simulation - 42
Simulink
Anne universitaire 2006 -2007
4.1 Paramtres de Simulation
Courbe non-lisse
Simulation - 43
Simulink
Anne universitaire 2006 -2007
Si le Max Step Size est en
mode auto, Simulink calcule
le step size comme suit
Le choix dun step size petit
permet davoir une meilleure
rsolution
4.2 Choix du Step Size et des Tolerances
50
start stop
t t
h

=
Courbe lisse
3 1
x
en x erreur
< e
6 - 1e en x erreur <
Simulation - 44
Simulink
Anne universitaire 2006 -2007
4.2 Gestion de la Simulation
Excution :
- menu Simulation/Start
- bouton Play
Arrt :
- menu Simulation/Stop
- bouton Stop
- automatique lorsque le
temps final de simulation
est atteint
Simulation - 45
Simulink
Anne universitaire 2006 -2007
4.3 Simulation Intractive
Pendant la simulation, les paramtres des blocs peuvent tre
modifis. Par contre, il est impossible de :
ajouter ou d'enlever un bloc
modifier le nombre d'tats, d'entres et de sorties
changer la taille des vecteurs
Exemple : la borne suprieure de
la saturation passe de 0.5 1 en
cours de simulation.
Simulation - 46
Simulink
Anne universitaire 2006 -2007
4.4 Le Scope Volant
Le Scope Volant est utilis pour visualiser la sortie d'un bloc en cours
de simulation sans faire de branchement. Il peut tre utilis de 2 faons :
1.1 Copier le bloc Scope avec le bouton
droit de la souris et le renommer
Scope Volant.
1.2 Ouvrir le Scope Volant et cocher la case
floating scope" dans les proprits
du bloc
1.3 Lancer la simulation
1.4 Cliquer sur l'un des fils : son contenu
apparat dans le Scope Volant
1.5 Cliquer sur un autre fil en tenant appuy
le bouton SHIFT : tous les fils
slectionns sont visualiss dans le
Scope Volant.
2.1 Appuyer sur licne scope volant de la
barre menu du scope)
2.2 Appuyer sur licne signal selection puis
slectionner les signaux visualiser.
2.3 Lancer la simulation
Simulation - 47
Simulink
Anne universitaire 2006 -2007
Exemples
Equation de Mathieu :
d x t
dt
t x t
2
2
2
1
( )
( cos( )) ( ) = +
= 0 01 .
= 05 . avec et
Construire le schma-bloc correspondant
Simulation - 48
Simulink
Anne universitaire 2006 -2007
Exemples (cont.)
Oscillateur
d x
dt
dx
dt
x u
2
2
03 0 2 + + = . .
X s
U s
s s
( )
( )
. .
=
+ +
2
03 0 2
| |
&
. .
x x u
y x
=

(
+

(
=

0 1
02 03
0
1
1 0
Construire et comparer les schmas-blocs correspondant aux
quations ci-dessous :
Simulation - 49
Simulink
Anne universitaire 2006 -2007
Crer un signal modul en amplitude :
Utiliser un signal en dent de scie unitaire comme source.
Utiliser un signal sinusodal damplitude 1 et de pulsation 100
signal modul =Source x Porteuse
Crer un filtre discret reprsent par lquation 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 rsultant avec le filtre ci-dessus.
Observer le signal transmis ainsi que la sortie du filtre.
Exemples (cont.)
Modulateur/Dmodulateur
Simulation - 50
Simulink
Anne universitaire 2006 -2007
Solution
Simulation - 51
Simulink
Anne universitaire 2006 -2007
Exemples (Cont.)
Implanter la dynamique dun canal de communication :
Utiliser
un bruit Additive "noise corruption" avec une variance de
0.01
un bloc delay avec une taille buffer de 1024
lquation dcrivant la dynamique du canal
Utiliser le signal modul de lexemple prcdent.
Observer la sortie
Essayer differents solvers
u y y 10 y 10
3 9
= + +

& & &
Canal de communication
Simulation - 52
Simulink
Anne universitaire 2006 -2007
Solution:
Simulation - 53
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes
Les tailles des signaux
Les tableaux 2D [mxn]
Les vecteurs lignes 2D [1xn]
Les vecteurs colonnes 2D [mx1]
Les vecteurs 1D [n]
Les scalaires 1D [1]
Les scalaires 2D [1x1]
Les Frames [mx1]
Simulation - 54
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes (cont.)
Les diffrents types de donnes
SIMULINK travaille par dfaut en double prcision. Il est possible de
choisir le type de donnes qui sont vhicules et traites dans le schma-
blocs. Ce typage permet de rduire le stockage et de travailler avec des
types de donnes appropris.
Voici les diffrents types de donnes disponibles :
boolean 1 octet,
int8, uint8 1 octet,
int16, uint16 2 octets,
int32, uint32 4 octets,
single 4 octets,
double 8 octets.
Simulation - 55
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes (cont.)
Les diffrents types de donnes (cont.)
SIMULINK supporte le type de
donnes complexes.
>> whos
Name Size Bytes Class
sortie 11x1 22 int8 array
(complex)
tout 11x1 88 double array
Grand total is 22 elements using 110 bytes
Simulation - 56
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes (cont.)
Les diffrents types de donnes (cont.)
Dans un mme schma SIMULINK,
plusieurs types peuvent cohabiter. Il est, par
exemple, possible de mixer des types
diffrents sur un mme lien ou de les
convertir.
Simulation - 57
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes (cont.)
Oprations sur les diffrents types
Pour les blocs :
Sum,
Product,
Relational Operator,
Merge,
Switch,
Manuel Switch,
Multiport Switch,
Logical Operator,
tous les types en entre doivent tre identiques
et le type de donnes en sortie est le mme
que celui en entre du bloc.
Simulation - 58
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes (cont.)
Oprations sur les diffrents types (cont.)
Les blocs :
Sum
Product
Gain
Data type Conversion
permettent de grer le
dpassement du type entier.
Simulation - 59
Simulink
Anne universitaire 2006 -2007
4.5 Les Types de Donnes (cont.)
Oprations sur les diffrents types (cont.)
Simulation - 60
Simulink
Anne universitaire 2006 -2007
4.6 Debugger
Le Debugger Graphique
Tools/Simulink Debugger
Simulation - 61
Simulink
Anne universitaire 2006 -2007
4.6 Debugger (cont.)
Le Debugger Graphique (cont)
Excution des blocs
pas--pas pour un
temps de simulation
fix
Excution dun pas
d intgration complet
Lancement de la simulation en mode
debugger - Excution en continu de
points d arrt en points d arrt
Arrt du mode
debugger
Mise en place des points darrt devant
le bloc slectionn
Affichage des entres/sorties du bloc
slectionn chaque fois qu'il est
valu
Affichage des entres/sorties du
bloc slectionn mme si celui ci
n'est pas en cours d'valuation
Simulation - 62
Simulink
Anne universitaire 2006 -2007
4.6 Debugger (cont.)
Le Debugger en Ligne
step Excution des blocs pas pas
next Excution dun pas de temps complet
continue Excution jusquau prochain point darrt
run Excution jusqu la fin de la simulation
quit Quitte le mode debugger
slist Liste des blocs dans leur ordre dexcution
systems
Liste des systmes concerns
break gcb ou break s:b Mise en place des points darrt
disp gcb ou disp s:b Affichage des grandeurs dun bloc
states Affichage des tats du modle
status
Etat de la simulation
Pour lancer la simulation
en mode debugger :
>> sldebug modele
Commandes de gestion de la simulation
Commandes de visualisation en cours de debuggage
Simulation - 63
Simulink
Anne universitaire 2006 -2007
4.6 Debugger (cont.)
Le Debugger en Ligne (cont.)
>> sldebug 'modele1'
[Tm=0 ] **Start** of system 'modele1' outputs
(sldebug @0:0 'modele1/Transfer Fcn'): slist
---- Sorted list for 'modele1' [6 blocks, 6 nonvirtual blocks, directFeed=0]
0:0 'modele1/Transfer Fcn' (TransferFcn)
0:1 'modele1/Saturation' (Saturate)
0:2 'modele1/Scope' (Scope)
0:3 'modele1/Sine Wave' (Sin)
0:4 'modele1/To Workspace' (ToWorkspace)
0:5 'modele1/Scope Volant' (Scope)
(sldebug @0:0 'modele1/Transfer Fcn'): next
[Tm=0.2 ] **Start** of system 'modele1' outputs
Simulation - 64
Simulink
Anne universitaire 2006 -2007
4.6 Debugger (cont.)
Le Debugger en Ligne (cont.)
(sldebug @0:0 'modele1/Transfer Fcn'): next
[Tm=0.2 ] **Start** of system 'modele1' outputs
(sldebug @0:0 'modele1/Transfer Fcn'): states
Continuous state vector (value,index,name):
0.01866677260531322 0 (0:0 'modele1/Transfer Fcn')
(sldebug @0:0 'modele1/Transfer Fcn'): disp 0:1
Display of block 0:1 'modele1/Saturation' installed.
(sldebug @0:0 'modele1/Transfer Fcn'): next
[Tm=0.4 ] I/O of block 0:1 'modele1/Saturation'
U1 = [0.06933872878056514]
Y1 = [0.06933872878056514]
[Tm=0.4 ] **Start** of system 'modele1' outputs
Simulink
5. Construction de
Blocs
Construction de Blocs - 66
Simulink
Anne universitaire 2006 -2007
5.1 Construction de Sous-Systmes
Slectionner
les blocs
regrouper avec
la souris (liens
dentre et de
sortie inclus)
Grouper avec
le menu
Edit/Create
Subsystem
Maintenant, un
nouveau bloc
remplace tous les
blocs qui taient
slectionns. Le
nom de ce
nouveau bloc est
par dfaut
Subsystem
Pour dgrouper slectionner le
menu Edit/Undo Create
Subsystem
Il est possible dannuler (Undo) les effets
jusqu' 101 excutions conscutives par le
choix menu Edit/Undo. Les oprations
pouvant tre annules sont :
Ajouter, effacer, ou dplacer un bloc, une
ligne ou une annotation
diter un nom de bloc
Crer un sous-systme
Construction de Blocs - 67
Simulink
Anne universitaire 2006 -2007
5.1 Construction de Sous-Systmes
Enregistrer sous modele2.mdl
et renommer le bloc Subsystem
par FT et Saturation.
Double-clic
Construction de Blocs - 68
Simulink
Anne universitaire 2006 -2007
5.2 Paramtrage
Les blocs peuvent tre paramtrs : les valeurs sont remplaces par des variables
MATLAB. Ces variables doivent tre dfinies dans MATLAB avant le lancement de la
simulation.
Les variables den et sup sont
dfinies dans MATLAB :
>> den = [1 1];
>> sup = 0.5;
Construction de Blocs - 69
Simulink
Anne universitaire 2006 -2007
5.3 Le Masquage
Changer les caractristiques d'un bloc. Par exemple, un bloc
Zero-Pole peut tre transform en filtre de Butterworth
Personnaliser et simplifier des modles
Le masquage permet de :
Slectionner le bloc FT et Saturation en
cliquant dessus.
Masquer ce bloc avec le menu Edit/Mask
Subsystemet remplir les champs.
Construction de Blocs - 70
Simulink
Anne universitaire 2006 -2007
5.3 Le Masquage (cont.)
Construction de Blocs - 71
Simulink
Anne universitaire 2006 -2007
5.3 Le Masquage (cont.)
Le rsultat du masquage est le suivant :
Double-clic
Construction de Blocs - 72
Simulink
Anne universitaire 2006 -2007
5.3 Le Masquage (cont.)
La commande iconedit permet de construire une icne graphique : le
champ du masque "Drawing commands" est complt automatiquement avec
la commande plot :
>> iconedit
Name of block window: modele2 nom du fichier
Name of block: FT et Saturation nom au-dessous du bloc (respecter
les majuscules, minuscules, et blancs)
Construction de Blocs - 73
Simulink
Anne universitaire 2006 -2007
5.4 Bibliothques
Vocabulaire
Library : ensemble de blocs. Une bibliothque est cre
uniquement avec le menu File/New/Library d'une fentre
SIMULINK.
bloc-library : bloc dans une bibliothque.
bloc-rfrence : copie d'un bloc-library. Un bloc-rfrence est li
un bloc-library. Une modification du bloc-library entrane
automatiquement une modification du bloc-rfrence.
Lien : connexion entre le bloc-rfrence et son bloc-library. Le lien
permet une modification du bloc-library dentraner
automatiquement une modification du bloc-rfrence.
Copie : opration qui cre un bloc-rfrence partir soit d'un bloc-
library, soit d'un autre bloc-rfrence.
Construction de Blocs - 74
Simulink
Anne universitaire 2006 -2007
5.4 Bibliothques (cont.)
Crer une Bibliothque
Crer une bibliothque avec le
menu File/New/Library.
Placer le bloc FT et Saturation,
et sauvegarder la bibliothque
sous le nom : biblio_perso.mdl.
Modifier une Bibliothque
Lorsquune bibliothque est ouverte (par exemple >>biblio_perso),
elle est automatiquement verrouille. Les blocs ne sont pas
modifiables.
Pour dverrouiller la bibliothque, et ainsi pouvoir modifier son
contenu, utiliser le menu Edit/Unlock Library de la bibliothque. Elle
sera de nouveau verrouille automatiquement sa fermeture.
Construction de Blocs - 75
Simulink
Anne universitaire 2006 -2007
5.4 Bibliothques (cont.)
Copier un bloc-library dans un modle
En copiant un bloc-library dans un modle, un lien est cr entre le
bloc-library et le bloc-rfrence. Les paramtres du bloc sont
modifiables, mais pas son masque, ni le contenu du sous-systme s'il
existe.
Supprimer le lien vers le bloc-library
Le lien entre le bloc-rfrence et le bloc-library peut tre supprim :
pour modifier la bibliothque sans influencer le modle,
pour avoir un modle autonome, sans appel la bibliothque.
La suppression du lien est faite avec le menu Edit/Break Library Link
du modle.
Rechercher la bibliothque
Pour retrouver le bloc-library auquel est li le bloc-rfrence, utiliser le
menu Edit/Go To Library Link du modle. Alors, la bibliothque est
ouverte avec le bloc-library dj slectionn.
Construction de Blocs - 76
Simulink
Anne universitaire 2006 -2007
5.4 Bibliothques (cont.)
Rfrencer sa propre bibliothque dans
linterface Simulink
Pour utiliser sa propre bibliothque au mme titre que les bibliothques de base
de SIMULINK, il faut la rfrencer. Pour cela, il faut ajouter, dans le rpertoire o
se trouve la bibliothque, le fichier slblocks.m que lon aura personnalis.
Pour la cration du fichier slblocks.m, un fichier template est fourni dans :
$matlabroot\toolbox\simulink\blocks\slblocks.m
Pour que ceci soit pris en compte
au dmarrage, il est ncessaire que
le chemin de slblocks.m soit connu :
soit rfrenc dans le path MATLAB,
soit dans le rpertoire courant.
Construction de Blocs - 77
Simulink
Anne universitaire 2006 -2007
5.5 Lisibilit
Noms des fils
Pour clarifier un modle de taille importante, les fils peuvent porter un
nom. Ce nom est propag dans le modle lorsqu'il passe travers les
blocs suivants :
Demux, Enable, From, Inport, Mux, Selector, Subsystem.
Pour associer un nom un fil :
double-cliquer sur le fil
saisir le nom
Pour obtenir le nom d'un fil, si celui-ci a dj t dfini :
double_cliquer sur le fil
saisir le caractre < (infrieur)
mettre jour le modle avec le menu Edit/Update Diagram
Construction de Blocs - 78
Simulink
Anne universitaire 2006 -2007
5.5 Lisibilit (cont.)
Noms des fils (cont.)
Construction de Blocs - 79
Simulink
Anne universitaire 2006 -2007
5.5 Lisibilit (cont.)
Le navigateur du modle, lidentique du navigateur SIMULINK, permet de se
dplacer dans larborescence du modle parmi les sous-systmes.
Pour activer cette option, il faut cliquer sur View/Model Browser Options/Model
Browser puis sur View/Model Browser Options/Look Under Masks si certains
blocs sont masqus. L'autre possibilit est de cliquer sur l'icne Toggle model
browser (1) puis sur l'icne Browse masked subsystems (2).
Navigateur du modle
2
1
Construction de Blocs - 80
Simulink
Anne universitaire 2006 -2007
5.5 Lisibilit (cont.)
Zoom sur le modle
Le zoom sur le modle est accessible partir du mme menu que
prcdemment : View/Zoom In (touche R) et View/Zoom Out (touche V)
Les menus View/Fit System to View et View/Normal (100%) mettent
respectivement le modle lchelle de la fentre et sa taille dorigine.
Construction de Blocs - 81
Simulink
Anne universitaire 2006 -2007
5.5 Lisibilit (cont.)
Bloc dInformations
Le bloc Model Info regroupe toutes les informations ncessaires
lidentification du modle : date, auteur, version, mise jour, etc. Ces
diffrents champs auront t complts au pralable dans le menu
File/Model Properties.
Construction de Blocs - 82
Simulink
Anne universitaire 2006 -2007
5.5 Lisibilit (cont.)
Bloc dInformations (cont.)
Simulink
6. Etude Partir de
MATLAB
Etude Partir de MATLAB - 84
Simulink
Anne universitaire 2006 -2007
6.1 Post-traitement dans MATLAB
Limiter la simulation de modele1
20s.
Fixer le champ "Sample time" du
bloc To Workspace 0.2s.
En arrtant la simulation, la variable
sortie du bloc To Workspace est
disponible dans MATLAB :
>> whos
Name Size Bytes Class
sortie 1x1 1476 struct array
Grand total is 127 elements using 1476 bytes
Etude Partir de MATLAB - 85
Simulink
Anne universitaire 2006 -2007
6.1 Post-traitement dans MATLAB
La commande simplot permet de rcuprer les informations de la
structure sortie pour tracer le rsultat de la simulation dans une
fentre MATLAB :
>> simplot(sortie)
Etude Partir de MATLAB - 86
Simulink
Anne universitaire 2006 -2007
6.2 Simulation
La simulation peut tre lance partir de MATLAB avec les
commandes suivantes :
sim
Simulation
simset
Dfinition des paramtres de la simulation
simget
Lecture des paramtres de la simulation
Syntaxe de "sim" :
>> [t,x,y] = sim('modle',timespan)
>> [t,x,y] = sim('modle',timespan,options,ut)
>> [t,x,y1,...,ym] = sim('modle',timespan,options,ut)
avec : modle : nom du modle
timespan : instant de dpart et instant final de la simulation : [TStart TFinal]
options : paramtres de simulation dfinis par la commande simset
ut : tableau de valeurs dfinissant les entres externes : [t,u(1),u(2),...]
Etude Partir de MATLAB - 87
Simulink
Anne universitaire 2006 -2007
6.2 Simulation (cont.)
Syntaxe de "simget" :
>> struct_options = simget('modle',timespan)
>> valeur_options = simget('modle',champ)
avec : modle : nom du modle
champ : nom du champ dsir
struct_options : structure reprsentant les options
valeur_options : valeur de l une des options
Syntaxe de "simset" :
>> options = simset
>> options = simset(champ,valeur,...)
>> options = simset(anciennes_options,champ,valeur,...)
avec : champ : nom du champ
valeur : valeur associe au champ
Etude Partir de MATLAB - 88
Simulink
Anne universitaire 2006 -2007
6.2 Simulation (cont.)
Reprendre le modle prcdent en ajoutant un bloc Outport pour indiquer la
sortie, puis taper :
>> options = simget('modele4')
>> mes_options = simset(options,'MaxRows',100,'refine',2)
>> [t,x,y]=sim('modele4',30,mes_options);
>> plot(t,y); grid
Etude Partir de MATLAB - 89
Simulink
Anne universitaire 2006 -2007
>> [sizes,x0,xord]=modele4
sizes =
1
0
1
0
0
0
1
x0 =
0
xord = 'modele4/FT et Saturation/
Transfer Fcn'
6.3 Identification des tats
sizes = [
# tats continus
# tats discrets
# sorties
# entres
# Reserv
# Couplage entre/sortie
# nombre de priodes
dchantillonnage
]
Nom du modle
Conditions initiales
Noms des tats
vecteur des tailles
Etude Partir de MATLAB - 90
Simulink
Anne universitaire 2006 -2007
6.4 Linarisation
A partir d'un modle SIMULINK, il est possible d'extraire une
reprsentation dtat par linarisation 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 'modle' : nom du modle linariser
x,u : le point de fonctionnement autour duquel le modle linaire doit tre
extrait est dfini par le vecteur d'tats x et le vecteur d'entres u.
pert : amplitude de la perturbation applique sur les entres et les tats.
Dans le cas de systmes discrets ou hybrides, utiliser le commande dlinmod.
Etude Partir de MATLAB - 91
Simulink
Anne universitaire 2006 -2007.
6.4 Linarisation (cont.)
Exemple :
>>[A,B,C,D]=linmod('modele5',2,0)
>> [A,B,C,D]=linmod('modele5');
>> bode(A,B,C,D)
L'entre et la sortie du modle sont
spcifies par les blocs Inport et Ouport.
Linarisation autour de 0 (par dfaut) :
>>[A,B,C,D]=linmod('modele5')
Linarisation autour de 2 pour l'tat et
0 pour l'entre. La saturation
intervient, donc le systme n'est plus
linaire : C et D sont nulles.
Suite la linarisation, il est par
exemple possible de tracer le
diagramme de Bode :
Etude Partir de MATLAB - 92
Simulink
Anne universitaire 2006 -2007
6.5 Actions sur un modle ou un bloc
Des commandes MATLAB peuvent tres associes aux blocs et aux
modles. Ces commandes sont excutes avant ou aprs certaines actions
telles que l'ouverture, la copie ou la sauvegarde du modle ou du bloc.
Syntaxe :
set_param('modle/bloc','paramtre','action')
avec 'modle/bloc' : nom du bloc appartenant au modle.
'paramtre' : nom du paramtre.
'action' : commande MATLAB associer au paramtre du bloc.
Paramtre
Action excuter quand ?
PreLoadFcn avant le chargement du modle
PostLoadFcn aprs le chargement du modle
CloseFcn la fermeture du modle ou du bloc
DeleteFcn la suppression du bloc
OpenFcn l'ouverture du bloc
Etude Partir de MATLAB - 93
Simulink
Anne universitaire 2006 -2007
6.5 Actions sur un modle ou un bloc
Exemple : Ralisation d'un bouton de commande
pour tracer le diagramme de Bode du modle.
Reprendre le modle prcdent.
Ajouter un bloc Subsystem.
Masquer ce bloc en compltant uniquement
le champ "Drawing commands" par
Dans MATLAB, taper la commande suivante :
fprintf('Diagramme\nde Bode')
>> set_param('modele6/Bode','OpenFcn',...
'[A,B,C,D]=linmod(''modele6'');bode(A,B,C,D)')
Etude Partir de MATLAB - 94
Simulink
Anne universitaire 2006 -2007
6.6 Commandes de construction
Des commandes sont utilises partir de MATLAB pour modifier un
modle :
open_system
Ouverture d'un systme
find_system
Recherche d'un bloc
add_block
Ajout d'un bloc
add_line Ajout d'une ligne
get_param Lecture du paramtre d'un bloc
set_param Ecriture du paramtre d'un bloc
add_param
Ajout de parameters au modle
delete-param
Efface les paramtres ajouts par add_param.
gcb
Lecture du nom du bloc courant
gcs
Lecture du nom du systme courant
gcbh
Retourne le handle du bloc courant
Etude Partir de MATLAB - 95
Simulink
Anne universitaire 2006 -2007
6.6 Commandes de construction
Exemple :
En reprenant le bouton qui cre le diagramme
de Bode, dans le modle modele6.
La commande associe au bouton est :
>>cmd = get_param('modele6/Bode','OpenFcn')
cmd =
[A,B,C,D]=linmod('modele6');bode(A,B,C,D)
Si le modle est renomm, la commande associe au bouton devrait tre
redfinie. Pour viter cela, il suffit d'utiliser gcs la place de 'modele6 :
>> set_param('modele6/Bode','OpenFcn',...
[A,B,C,D]=linmod(gcs);bode(A,B,C,D)')
Remarque : dans le cas o lon dispose de la toolbox CONTROL, SIMULINK donne accs un champ
appel Linear Analysis dans le menu Tools. Cet outil est une I.H.M. danalyse temporelle/frquentielle
permettant une tude complte dans ces domaines en restant dans le mme environnement. Il est
ncessaire dinsrer dans le modle des points daccs pour les entres/sorties de la linarisation. Ceci
nous permet, entre autre, de raliser un diagramme de Bode directement partir du modle.
Simulink
7. Moteur
Courant Continu
Etude dun Moteur Courant Continu - 98
Simulink
Anne universitaire 2006 -2007
7.1 Equations Physiques
( )
( )
( )
t J
d t
dt
f t = +

( ) ( )
t Kc I t =
( ) ( )
( )
( )
U t r I t L
dI t
dt
Ke t = + +
En mcanique, le couple en sortie du moteur s'crit sous la forme suivante :
: couple en N.m
J : inertie en kg.m
2
: vitesse angulaire en rad.s
-1
f : coef. de frottement visqueux en N.m.s
En lectricit, l'expression du couple est la suivante :
Kc : constante de couple en N.m.A
-1
I : courant d induit en A
La tension en entre du moteur s'crit :
r : rsistance d induit en
L : inductance d induit en H
Ke : raction d induit en N.m.A
-1
Donnes numriques :
J : 0.1 kg.m
2
f : 0.01 N.m.s
Kc : 0.5 N.m.A
-1
Ke : 0.1 N.m.A
-1
r : 0.1
L : 0.5 H
Etude dun Moteur Courant Continu - 99
Simulink
Anne universitaire 2006 -2007
7.2 Modlisation
Reprsentation dtat du systme
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
+ =
+ =
&
&

( ) ( ) ( )
( ) ( ) ( )
( )
&
&

t
f
J
t
Kc
J
I t
I t
Ke
L
t
r
L
I t
U t
L
= +
= +
( )
( )
( )
( )
( )
| |
( )
( )
( )
d
dt
t
I t
f
J
Kc
J
Ke
L
r
L
t
I t
L
U t
t
t
I t
U t

(
=

(
(
(

(
+

(
(

(
+
0
1
1 0 0
( )
Etude dun Moteur Courant Continu - 100
Simulink
Anne universitaire 2006 -2007
7.2 Modlisation (cont.)
Reprsentation dtat du systme (cont.)
Le modle suivant est cr :
>> J = 0.1;
>> f = 0.01;
>> Kc = 0.5;
>> Ke = 0.1;
>> r = 0.1;
>> L = 0.5;
Etude dun Moteur Courant Continu - 101
Simulink
Anne universitaire 2006 -2007
7.2 Modlisation (cont.)
Reprsentation dtat du systme (cont.)
Les paramtres de simulation sont les suivants :
Etude dun Moteur Courant Continu - 102
Simulink
Anne universitaire 2006 -2007
7.2 Modlisation (cont.)
Reprsentation dtat du systme (cont.)
Xmax
X0
Exercice :
Mesurer le dpassement de la rponse indicielle du
moteur : d=(Xmax-X0)/X0
Mesurer le temps de rponse 5%
Etude dun Moteur Courant Continu - 103
Simulink
Anne universitaire 2006 -2007.
7.2 Modlisation (cont.)
Reprsentation sous forme de schmas-blocs
Les quations du moteur sont :
( )
( ) ( )
( )
( )
( ) ( )
J
d t
dt
f t Kc I t
r I t L
dI t
dt
U t Ke t

+ =
+ =
La transforme de Laplace de ces
quations, avec (t=0+)=0 et
(t=0+)=0, s'crit :
( ) ( ) ( )
( ) ( ) ( ) ( )
J p p f p Kc I p
r I p L p I p U p Ke p
+ =
+ =

Soit U(t) l'entre et (t) la sortie de


notre modle, les expressions
prcdentes se mettent sous la forme
suivante :
( ) ( )
( ) ( ) ( )
| |

p
Kc
J p f
I p
I p
L p r
U p Ke p
=
+

=
+

1
Etude dun Moteur Courant Continu - 104
Simulink
Anne universitaire 2006 -2007
7.2 Modlisation (cont.)
Reprsentation sous forme de schmas-blocs
A partir des expressions
prcdentes, le modle
suivant est cr :
En conservant les paramtres dfinis
prcdemment, la rponse indicielle du
moteur est la mme.
Etude dun Moteur Courant Continu - 105
Simulink
Anne universitaire 2006 -2007
Aprs avoir cr diffrents modles, nous allons
maintenant les valider par lintermdiaire du bloc
Configurable Subsystem.
Il faut dabord crer une bibliothque pour
rassembler nos modles :
7.2 Modlisation (cont.)
Validation des modles
Slectionner File\New\Library
Dposer, dans cette bibliothque, les
modles du moteur courant continu
Dposer le bloc Configurable
Subsystem de la bibliothque
Signals&Systems dans la bibliothque
en cours de construction
Enregistrer le tout sous biblio_moteur
Etude dun Moteur Courant Continu - 106
Simulink
Anne universitaire 2006 -2007
7.2 Modlisation (cont.)
Validation des modles (cont.)
Il nous reste crer le modle avec
les 3 blocs Sine Wave, Configurable
Subsystem et Scope, puis configurer
le sous-systme comme ci-contre.
Nous disposons, maintenant, dun systme
qui nous permet de choisir un bloc dans la
bibliothque et de le configurer sans
dplacement de blocs.
Etude dun Moteur Courant Continu - 107
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID
Le problme
La condition suivante est prendre en compte : la tension l'entre du moteur
ne peut pas dpasser la valeur de 0.5 V (elle sature).
La rponse indicielle oscille trop, c'est pourquoi un contrleur PID est utilis
pour stabiliser le procd. Quelles doivent tre les valeurs des trois gains du
PID vrifiant le critre de la minimisation de l'erreur quadratique moyenne ?
Considrons la boucle de rgulation suivante :
La saturation insre en entre du modle ne permet pas dutiliser les mthodes issues de la thorie
linaire pour le calcul des coefficients du PID (mthode de Ziegler-Nichols par exemple). Nous avons donc
recours une mthode d optimisation numrique.
Etude dun Moteur Courant Continu - 108
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Le problme (cont.)
L'chelon passe de l'amplitude 0
l'amplitude 1 T=0s
Le rgulateur PID vient de la bibliothque Simulink_Extras/
Additional_Linear. C'est un bloc masqu constitu, d'un gain,
d'un intgrateur et d'un drivateur. Il est paramtr avec les trois
variables :
Kp : gain du bloc proportionnel
Ki : gain du bloc intgrateur
Kd : gain du bloc drivateur
Etude dun Moteur Courant Continu - 109
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Le problme (cont.)
Le bloc Saturation limite sa
sortie entre -0.5 et 0.5
Exercice : dans le bloc PID Controller,
remplacez les trois paramtres par des
valeurs de manire stabiliser le
systme. Par exemple, vous pouvez
commencer par remplacer Kp, Ki et Kd
par 1, 0 et 0.
Etude dun Moteur Courant Continu - 110
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Etude paramtrique
Exemple 1 : Simulation avec Kp, Ki et Kd fixs 1, 0 et 0.
>> Kp=1;
>> Ki=0;
>> Kd=0;
>> [t,x,y]=sim( pid_process ,35);
>> plot(t,y);grid
Etude dun Moteur Courant Continu - 111
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Etude paramtrique (cont.)
Exemple 2 : Etude paramtrique
en faisant varier le gain du bloc
intgrateur :
>> etud_param
Etude dun Moteur Courant Continu - 112
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Optimisation numrique de la rgulation
MATLAB va tre utilis pour dterminer les trois gains du PID, Kp Ki Kd,
qui minimisent l'erreur de position, c'est--dire l'cart entre l'entre du
systme (chelon) et la sortie du systme (rponse l'chelon).
Exemple :
>> f_erreur([1 0 0])
ans =
1.5585
>> f_erreur([1 0 1])
ans =
0.9609
L'erreur de position est calcule
par la fonction suivante :
Etude dun Moteur Courant Continu - 113
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Optimisation numrique de la rgulation (cont.)
L'optimisation du PID se fait par la fonction fminsearch : minimisation
d'une fonction multivariable.
Le programme d'optimisation est le suivant :
Etude dun Moteur Courant Continu - 114
Simulink
Anne universitaire 2006 -2007
7.3 Rgulation par PID (cont.)
Optimisation numrique de la rgulation (cont.)
En lanant optimise_pid, les rsultats
obtenus sont :
2.8055 0.2177 0.6120
La rponse indicielle est alors :
>> Kp=pid(1);
>> Ki=pid(2);
>> Kd=pid(3);
>> [t,x,y] = sim('pid_process',35);
>> plot(t,y);grid
Remarque : fminsearch utilise un algorithme doptimisation sans contrainte pouvant
conduire des valeurs de gains ngatives. Pour prendre en compte les contraintes il faut
utiliser fmincon de la optimization toolbox.
Simulink
8. Sous-systmes
excution conditionnelle
Sous-systmes excution conditionnelle - 116
Simulink
Anne universitaire 2006 -2007
Un sous-systme excution conditionnelle
permet de simuler des modles SIMULINK sur
vnement :
Sur niveau : bloc Enable
Sur front montant ou descendant : bloc Trigger
Sur test : blocs IF/ELSE, bloc SWITCH CASE
8.1 Prsentation
Sous-systmes excution conditionnelle - 117
Simulink
Anne universitaire 2006 -2007
8.2 Exemple 1 : stockage conditionnel
Les valeurs sont enregistres uniquement lorsque
le signal sortant du gnrateur de signaux est
suprieur 0.3.
Utilisation du Enabled subsystem
Sous-systmes excution conditionnelle - 118
Simulink
Anne universitaire 2006 -2007
8.2 Exemple 1 : stockage conditionnel
>>plot(t1,s1,'x-',t2,s2,'+-')
Sous-systmes excution conditionnelle - 119
Simulink
Anne universitaire 2006 -2007
8.2 Exemple 1: stockage conditionnel
Utilisation du IF/ELSE
Sous-systmes excution conditionnelle - 120
Simulink
Anne universitaire 2006 -2007
8.2 Exemple 1: stockage conditionnel
Utilisation du SWITCH/CASE
Sous-systmes excution conditionnelle - 121
Simulink
Anne universitaire 2006 -2007
Exercice 1
Modifier le modle pour que le stockage des valeurs soit
dclench lorsque le signal passe au-dessus de 0.6 et
arrt lorsque le signal passe au-dessous de la valeur 0.
Comment obtenir cet affichage (voir graphique ci-
dessous) : le trait pais reprsente la sortie du systme
"enabled".
0 5 10 15 20
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Sous-systmes excution conditionnelle - 122
Simulink
Anne universitaire 2006 -2007
8.3 Exemple 2 : Compteur dvnements
Les blocs triggs peuvent tre utiliss
pour la ralisation d'un compteur
d'vnements sur fronts montants et/ou
descendants.
Le schma utilisant le compteur est le
suivant :
Le signal dclenchant le compteur est
celui issu du bloc relationnel : le signal
est compar la valeur 0.3.
Le compteur est reprsent par le
Subsystem qui contient le bloc Trigger :
Sous-systmes excution conditionnelle - 123
Simulink
Anne universitaire 2006 -2007
8.3 Exemple 2 : Compteur dvnements
Le bloc Trigger : l'excution est
faite sur front montant.
Le bloc Unit Delay : la condition initiale
reste 0. Le champ "Sample Time" est mis
-1 pour indiquer que ce bloc ne dpend
pas du temps, puisque le sous-systme
est trigg.
Le rsultat de la simulation est :
Simulink
9. Boucles Algbriques
Boucles Algbriques - 126
Simulink
Anne universitaire 2006 -2007
Certains blocs de SIMULINK ont la
particularit d'avoir la sortie qui dpend
directement de l'entre. C'est le cas pour
les blocs Gain, Sum, Product, ...
Dans certains cas, l'utilisation de ces
blocs gnre une boucle algbrique.
La difficult est de savoir quelle est la valeur de Z
un instant donn.
Mathmatiquement, la solution est simple :
Z = U-Z Z = U/2
Parfois, la rsolution de ce type de problme
ncessite d'utiliser le bloc Algebraic Constraint de la
bibliothque Math pour contraindre l'algorithme de
rsolution.
Boucles Algbriques - 127
Simulink
Anne universitaire 2006 -2007
Exemple
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 modle correspondant est prsent sous
deux formes diffrentes, l'une utilisant le bloc
Algebraic Constraint et l'autre non :
Rsoudre f(z) = 0 avec f(z) = 3 + z - exp(z)
La courbe mauve (courbe du haut) est la solution
de l'quation donne par la partie du modle
utilisant le bloc Algebraic Constraint . La courbe
jaune (courbe du bas) est la solution de l'quation
donne par l'autre partie du modle.
Boucles Algbriques - 128
Simulink
Anne universitaire 2006 -2007
Exemple (cont.)
Ces deux valeurs sont rellement 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
Sous-systmes excution conditionnelle - 124
Simulink
Anne universitaire 2006 -2007
Exercice 2
Modifier le modle pour que :
le compteur dmarre de 0 et s'incrmente
avec un pas de 2
le compteur dmarre de 10 et se dcrmente
avec un pas de 1
le compteur dmarre de 10, se dcrmente
avec un pas de 1, et la simulation s'arrte
lorsque le compteur atteint 0
Simulink
10. S-Functions
S-Functions - 130
Simulink
Anne universitaire 2006 -2007
10.1 Introduction
u u x x y y
bloc bloc
diagramme diagramme
M M- -file file
S S- -Function Function
MEX MEX- -file file
S S- -Function Function
Image Image graphique graphique
Fonction Fonction en en
language MATLAB language MATLAB
Fonction Fonction en en
language C language C
Une S-Function dfinit la dynamique dun systme. Il
existe diffrent types de S-Functions :
S-Functions - 131
Simulink
Anne universitaire 2006 -2007
10.1 Introduction (cont.)
Crr de nouveaux blocs
Incorporer des fonctions C dans SIMULINK
Dcrire des systmes mathmatiques tels
que quations, boucles,...
Incorporer du graphique MATLAB dans un
modle Simulink
Les S-Functions servent :
S-Functions - 132
Simulink
Anne universitaire 2006 -2007
10.2 Comment travaillent les S-Functions
u u x x y y
Une S-Function est rprsente par :
des entres u
des tats x (continus, discrets, hybrides)
des sorties y
Durant la simulation, chaque pas de calcul, SIMULINK appelle chaque bloc du
modle et calcule les sorties, met jour les tats discrets et intgre les tats drivs :
Calcul des sorties : y = f(t,x,u)
Mise jour des tats discrets : x
d+1
= f
d
(t,x,u)
Mise jour des tats continus drivs : x
c
= f
c
(t,x,u)
.
avec :
x : les tats continus x
c
et discret x
d
u : les entres
t : le temps
x =
[
x
c
x
d
]
t =
0.0 0.0
te
1
Offset
1
te
2
Offset
2
. . . . . .
te
n
Offset
n
S-Functions - 133
Simulink
Anne universitaire 2006 -2007
Calcul du prochain temps dappel
(seulement pour les blocs temps variable)
Conditions Initiales
Phase
dintgration
Flag = 0
mdlInitializeConditions
mdlInitializeSizes
mdlInitializeSampleTimes
Flag = 4
mdlGetTimeNextVarHit
Flag = 3
mdlOutputs
Flag = 3
mdlOutputs
Flag = 2
mdlUpdate
Flag = 1
mdlDerivatives
Flag = 9
mdlTerminate
10.3 Squencement dune Simulation
Termine la simulation
Calcul des sorties
Mise jour des tats discrets
Mise jours des tats continus drivs
Calcul des sorties
S-Functions - 134
Simulink
Anne universitaire 2006 -2007
10.4 Les S-Functions en M-File
Les S-Functions en M-File ne sont pas optimales pour la vitesse
ou la gnration de code, mais sont utiles pour le prototypage
rapide dalgorithme
Utiliser le fichier template pour construire des S-Functions en
langage MATLAB : $matlab/toolbox/simulink/sfuntmpl.m
Utiliser la variable flag pour ragir aux diffrents appels
Structurer la S-Function avec des instructions switch/case et
des appels des sous fonctions
Dclarer la fonction avec les variables dentre/sortie dans
cette ordre (obligatoire) :
function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)
%SFUNTMPL General M-file S-function template
% With M-file S-functions, you can define you own ordinary differential
% equations (ODEs), discrete system equations, and/or just about
% any type of algorithm to be used within a Simulink block diagram.
>> edit sfuntmpl
S-Functions - 135
Simulink
Anne universitaire 2006 -2007
10.4 Les S-Functions en M-File
La syntaxe est la suivante :
function [sys,x0,xstr,ts,xts] = modele(t,x,u,flag)
avec :
Paramtres d'entre :
t : temps courant de simulation,
x : vecteur d'tat,
u : vecteur d'entre,
flag : variable de contrle de la simulation.
Paramtres de sortie :
sys : variable de sortie dpendante de flag,
x0 : conditions initiales des tats,
xstr : descriptif des tats,
ts : priodes d'chantillonnage,
xts : priodes d'chantillonnage de chaque tat.
S-Functions - 136
Simulink
Anne universitaire 2006 -2007.
10.5 Dimensionnement dun Modle
Pour dterminer les
caractristiques du modle,
on appelle la S-Function
qui le reprsente partir de
MATLAB avec le flag = 0.
Exemple :
>> vdp
>> [sys,x0,xstr,ts]=vdp([],[],[],0)
sys =
2 2 tats continus
0 0 tats discrets
2 2 sorties (2 blocs outport)
0 0 entre (0 bloc inport)
0 inutilis
0 pas de boucle algbrique
1 une seule priode dchant. gale 0
x0 =
2 conditions initiales de ltat integrator1
0 conditions initiales de ltat integrator2
xstr =
vdp/x1 le premier tat sappelle x1
vdp/x2 le deuxime tat sappelle x2
ts =
0 0 le systme est continu
S-Functions - 137
Simulink
Anne universitaire 2006 -2007
10.5 Dimensionnement dun Modle
En ajoutant un bloc discret, la S-
Function graphique vdp devient
un systme hybride avec mlange
d'tats continus et discrets.
>> [sys,x0,xstr,ts]=vdp([],[],[],0)
sys =
2 2 tats continus
2 2 tats discrets (Transfert Fcn d ordre 2)
2 2 sorties (2 blocs outport)
0 0 entre (0 bloc inport)
0 inutilis
0 pas de boucle algbrique
2 2 priodes dchant. gales 0 et 0.7
x0 =
2 conditions initiales de l tat integrator1
0 conditions initiales de l tat integrator2
0
0
xstr =
vdp/x1 le premier tat sappelle x1
vdp/x2 le deuxime tat sappelle x2
vdp/Discrete Transfert Fcn
vdp/Discrete Transfert Fcn
ts =
0 0 partie continue
0.700 0.0200 partie discrte
Conditions initiales de la fonction de
transfert discrte d ordre 2
Echantillonnage du bloc tous les : n*Te + offset
S-Functions - 138
Simulink
Anne universitaire 2006 -2007
10.6 S-Functions en langage MATLAB
Modle continu
&
. .
x x u
y x u
=

(
+

(
=

(
+

0 09 0 01
1 0
1 7
0 2
0 2
1 5
3 0
1 0
Soit le systme 2 entres, 2 sorties et
2 tats, dcrit par :
La S-Function est appele dans le modle
par le bloc S-Function de la bibliothque
Functions & Tables de SIMULINK.
>> edit csfunc.m
Pour diter la S-Function, taper :
S-Functions - 139
Simulink
Anne universitaire 2006 -2007
10.6 S-Functions en langage MATLAB
Modle continu avec passage de paramtres
Le modle sous forme d'espace d'tats est repris, mais cette fois-ci
les quatres matrices A, B, C, D sont dfinies l'extrieur de la S-
Function. Ces quatres matrices sont des paramtres.
>> edit csfunc_param.m
Pour diter la S-Function, taper :
S-Functions - 140
Simulink
Anne universitaire 2006 -2007
10.6 S-Functions en langage MATLAB
Modle continu : intgrateur limit (satur)
Le modle est exprim sous forme d'une quation diffrentielle
du 1
er
ordre :
si (x <= lb et u < 0) ou (x >= lh et u > 0) alors
x = 0
sinon
x = u
o lb est la limite basse et lh la
limite haute de saturation de
lintgration.
les paramtres de la S-Function
lb, lh et xi sont dfinis dans le
champ Function parameters .
Dans le cas prsent, on a :
lb=-0.5 lh=0.5 xi=0
>> edit intlim_m
Pour diter la S-Function,
taper :
S-Functions - 141
Simulink
Anne universitaire 2006 -2007
10.6 S-Functions en langage MATLAB
Modle discret : retard pur
Cette S-Function exemple applique
un retard pur de 0.3 s sur le signal
d entre. Pour diter la S-Function,
taper :
>> edit retpur_m
La courbe mauve correspond au sinus
dentre, la courbe jaune au sinus
retard de 0.3 s.
Le scope dtecte le fait que les deux
signaux sont discrets : laffichage est
fait en escalier.
S-Functions - 142
Simulink
Anne universitaire 2006 -2007
10.7 S-Functions en langage C
Les S-Functions en langage C sont optimales pour la
vitesse ou la gnration de code
Utiliser le fichier template pour construire des S-Functions
en langage C :
matlabroot\simulink\src\sfuntmpl.c
Utiliser des macros pour accder aux paramtres
optionnels et aux signaux de sortie
Un compilateur ANSI C est ncessaire
Configurer la commande mex en tapant :
>> mex -setup
Compiler la S-Function C en invoquant le compilateur C
par la commande mex :
>> mex ma_fonction_C.c
Introduction
S-Functions - 143
Simulink
Anne universitaire 2006 -2007
10.7 S-Functions en langage C
Initialisation - mdlInitializeSizes
- mdlInitializeSampletimes
- mdlInitializeConditions
Calcul des sorties - mdlOutputs
Mise jour des tats discrets - mdlUpdate
Calcul du prochain temps - mdlGetTimeOfNextVarHit
dappel (option)
Mise jour des tats - mdlDerivatives
continus drivs
Tches de fin de simulation - mdlTerminate
Fonctions propres la S-Function
S-Functions - 144
Simulink
Anne universitaire 2006 -2007
10.7 S-Functions en langage C
Champ de la Structure Macro pour appliquer une valeur
Nombre d'tats continus
ssSetNumContStates(S, numContStates)
Nombre d'tats discrets
ssSetNumDiscStates(S, numDiscStates)
Nombre de sorties
ssSetNumOutputs(S, numOutputs)
Nombre d'entres
ssSetNumInputs(S, numInputs)
Flag pour boucle algbrique
ssSetDirectFeedthrough(S, dirFeedThru)
Nombre de priodes d'chantillonnage
ssSetNumSampleTimes(S, numSamplesTimes)
Nombre d'arguments d'entre
ssSetNumInputArgs(S, numInputArgs)
Nombre de vecteurs de travail de type
entier
ssSetNumIWork(S,numIWork)
Nombre de vecteurs de travail de type
rel
ssSetNumRWork(S,numIWork)
Nombre de vecteurs de travail de type
pointeur
ssSetNumPWork(S,numIWork)
Macros d accs la structure Simstruct (initialisation)
Il existe galement des macros pour lire ces valeurs (prfix ssGet)
S-Functions - 145
Simulink
Anne universitaire 2006 -2007
10.7.1 Constructeur de S-Function
Le constructeur de S-Function (S-Function Builder) est un bloc
Simulink qui construit une S-Function partir des caractristiques et du
code de C fournis par lutilisateur.
Pour construire une S-Function avec le S-Function Builder :
1. Basculez du rpertoire MATLAB courant au rpertoire dans
lequel vous voulez crer la S-Function.
2. Placez une copie du bloc S-Function Builder de la
bibliothque Functions&Tables dans le modle simulink.
Double clic
S-Functions - 146
Simulink
Anne universitaire 2006 -2007
10.7.1 Constructeur de S-Function
Ecrivez le nom de la S-Function dans le champs S-function name.
Si la S-Function a des paramtres, crivez les valeurs par dfaut
pour les paramtres dans le champ S-Function parameters.
Utilisez les panneaux de spcification et du code sur la bote de
dialogue du bloc S-Function Builder pour inscrire le code source
utilisateur
Aprs configuration du mex (mex setup) cliquez sur Build.
Simulink construit le MEX-File qui met en application la S-Function et
sauvegarde le fichier dans le rpertoire courant.
S-Functions - 147
Simulink
Anne universitaire 2006 -2007
10.7 S-Functions en langage C
Exemple
On reprend le modle continu sous forme d'espace d'tat :
>> edit csfunc.c
La compilation se fait par la
commande :
>> mex csfunc.c
qui cre le fichier csfunc.dll.
Cette S-Function est appele dans
SIMULINK avec le bloc S-Function.
S-Functions - 148
Simulink
Anne universitaire 2006 -2007
10.8 Comparaison des diffrents types
de reprsentation
Les trois types de reprsentation (bloc graphique, S-Function en
langage MATLAB, S-Function en langage C) sont appels de
MATLAB en mesurant le temps d'excution.
L'exemple utilis est un modle
sous forme d'espace d'tat dfini
par A, B, C, D.
Le modle modele_graphique
correspond la reprsentation
sous forme de bloc graphique
S-Functions - 149
Simulink
Anne universitaire 2006 -2007
10.8 Comparaison des diffrents types
de reprsentation (cont.)
Le modle modele_sfunc_m
correspond la S-Function
en langage MATLAB :
Le modle modele_sfunc_c
correspond la S-Function en
langage C :
S-Functions - 150
Simulink
Anne universitaire 2006 -2007
10.8 Comparaison des diffrents types
de reprsentation (cont.)
% Comparaisons des temps de simulation
% des diffrentes reprsentation :
% . modle graphique
% . S-Function en langage Matlab
% . S-Function en langage C
clear all
A = [-0.09 -0.01
1 0];
B = [ 1 -7];
C = [ 0 2
1 -5];
D = [-3 0
1 0];
options = simget('modele_graphique');
...
...
ListeModele = {
'modele_graphique',
'modele_sfunc_m',
'modele_sfunc_c'};
for i=1:3
tic
[t,x,y] = sim(
ListeModele{i},
[0:0.1:200],
options,
'[sin(t),cos(t)]');
t = toc;
disp(ListeModele{i})
disp(t)
end
Pour lancer ce script, taper :
>> compare_modele
S-Functions - 151
Simulink
Anne universitaire 2006 -2007.
crivez une S-Function pour crer un bloc ayant deux ports dentres
et un port de sortie. La largeur des ports dentre et du port de sortie
est identique.
Le vecteur de sortie est la somme des deux vecteurs dentres
10.9 Exercice
Simulink
Exercice :
Rebond dune Balle
Exercice : Rebond dune Balle - 154
Simulink
Anne universitaire 2006 -2007
Lobjectif de cet exercice est d utiliser toutes les particularits du bloc
Integrator de la bibliothque Continuous.
Modliser 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
Complter le modle de manire ce que la simulation s'arrte
lorsque l'amplitude des rebonds est "faible" (par exemple, amplitude
infrieure 5 cm)
Complter le modle pour reprsenter une balle qui se dplace dans
un plan vertical avec une vitesse initiale colinaire 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 considrs sans amortissement
Complter le modle pour reprsenter une balle qui se dplace dans
un cube dont les quatre murs sont placs 5 m l'un de l'autre. La balle
est place l'origine une hauteur de 10 m. Les murs sont considrs
sans amortissement. Puis, crer une S-Function en langage MATLAB
pour l'affichage
Exercice : Rebond dune Balle - 155
Simulink
Anne universitaire 2006 -2007
sol
z
0
g
V
0
P
Z
Relation Fondamentale
de la Dynamique :
Donnes Numriques :
z
0
= 10 m
V
0
= 5 m.s
-1
m = F
ext

Vous aimerez peut-être aussi