(EMI) Formation Simulink

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 152

Simulink

Formation Simulink

Pr. Khalid BENJELLOUN


Section Automatique et Informatique Industrielle
Dpartement Electrique
Ecole Mohammadia des Ingnieurs
Simulink

Sommaire
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

Anne universitaire 2006 - 2007


Simulink

1. Introduction
Simulink Introduction - 2

1.1 Plan du Cours


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

Anne universitaire 2006 -2007.


Simulink Introduction - 3

1.2 Information de Dmarrage

Ouvrir MATLAB
Double-clic sur licone
Utiliser Simulink
Taper simulink dans la fentre MATLAB

Anne universitaire 2006 -2007


Simulink Introduction - 4

1.3 Les Produits MATLAB

Stateflow Coder

Blocksets Simulink RTW

Toolboxes MATLAB Compiler

Anne universitaire 2006 -2007


Simulink Introduction - 5

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
Anne universitaire 2006 -2007
Simulink Introduction - 6

1.5 Que peut-on modliser avec


Simulink?
Ce que lon peut modliser mathmatiquement
Systmes de
Communications Systmes de
Satellites Navigation

Systmes Aronautiques

Systmes
Biologiques

Systmes
Montaires
Systmes Automobiles
Anne universitaire 2006 -2007
Simulink Introduction - 7

1.6 Excution de Simulink

Taper dans MATLAB la


commande :

>> simulink

et le navigateur SIMULINK
apparat.

Anne universitaire 2006 -2007


Simulink Introduction - 8

1.6 Excution de Simulink (cont.)

Icne
SIMULINK

Anne universitaire 2006 -2007


Simulink Introduction - 9

1.6 Excution de Simulink (cont.)

Pour avoir Simulink sous forme icnographique taper :

>> simulink3

Anne universitaire 2006 -2007


Simulink

2. Les Bibliothques
de Simulink
Simulink Les Bibliothques - 12
2.1 Gnration des Signaux
Pour ouvrir une bibliothque, double cliquer sur les blocs :

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 13

2.2 Visualisation des Signaux

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 14

2.3 Systmes Continus

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 15

2.4 Systmes Discrets

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 16

2.5 Fonctions et Tables

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 17

2.6 Oprations Mathmatiques

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 18

2.7 Non-Linarits

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 19
2.8 Gestion des Signaux & Systmes

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 20
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.

Anne universitaire 2006 -2007


Simulink Les Bibliothques - 21

2.10 Blocs Additionnels

Anne universitaire 2006 -2007


Simulink

3. Construction de
Systmes
Simulink Construction de Systmes - 24

3.1 Collection et Connection des Blocs


Rassembler les blocs
en les glissant dans le
modle
Connecter les
blocs avec la
souris (bouton
gauche)

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 25

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

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 26

3.2 Copie et Insertion de Blocs


Clic bouton droit de la souris Placer le bloc au-dessus
sur le bloc pour le copier de la ligne dinsertion

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 27

3.3 Branchement et Cheminement des


Lignes
Clic bouton droit de la souris sur la Clic bouton gauche de la souris sur la
ligne pour ajouter une branche ligne pour recheminement

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 28
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)

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 29

3.5 Mise en Place des Blocs

Voici le modle construire :

Anne universitaire 2006 -2007.


Simulink Construction de Systmes - 30

3.5 Mise en Place des Blocs (cont.)

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.

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 31

3.5 Mise en Place des Blocs (cont.)

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.

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 32

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.

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 33

3.6 Paramtrage des Blocs (cont.)

Le bloc Transfer Fcn

La fonction de transfert est :


1
s +1
Les coefficients du
numrateur et du
dnominateur sont entrs
sous forme de vecteurs par
puissance dcroissante
comme dans MATLAB.

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 34

3.6 Paramtrage des Blocs (cont.)

Le bloc Saturation

Il limite la sortie entre


les valeurs -0.5 et 0.5.

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 35

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.

Anne universitaire 2006 -2007


Simulink Construction de Systmes - 36

3.6 Paramtrage des Blocs (cont.)


Dfinir les proprits du (Ve/D)rrouillage de la
Scope : chelle, affichage, ... slection des axes

Impression
Slection des
signaux pour le
Zoom en X et Y scope volant

Scope volant
Zoom en X Restore lchelle
de laxe courant
Zoom en Y

Sauvegarde de l'chelle
courante comme chelle
Mise lchelle par dfaut, pour les
automatique Simulations venir
Anne universitaire 2006 -2007
Simulink Construction de Systmes - 37

3.6 Paramtrage des Blocs (cont.)

Anne universitaire 2006 -2007


Simulink

4. Simulation
Simulink Simulation - 40

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

Paramtres
spcifiques Choix du Solver
au solver (continus, discrets,
choisi pas fixe ou variable)

Anne universitaire 2006 -2007


Simulink Simulation - 41

4.1 Paramtres de Simulation (cont.)


Solvers pas fixe Solvers pas variable
Noms : Noms :
discrete (pour les systmes discrete (pour les systmes
purement discrets) purement discrets)
ode5, ode4, ode3, ode2, ode1 ode45, ode23, ode113 (pour les
(pour les systmes hybrides) systmes hybrides non raides)
ode15s, ode23s, ode23t, ode23tb
(pour les systmes hybrides raides)

Paramtres : Paramtres :
Fixed step size (pas fixe Max step size (pas maximum
d intgration pour toute la dintgration)
simulation) Initial step size (pas initial de
Mode (mono ou multi-tches) l intgration) Critres
Relative tolerance d adaptation du
pas d intgration
Absolute tolerance au cours de la
simulation
Anne universitaire 2006 -2007
Simulink Simulation - 42

4.1 Paramtres de Simulation

Courbe non-lisse

Anne universitaire 2006 -2007


Simulink Simulation - 43

4.2 Choix du Step Size et des Tolerances


Si le Max Step Size est en
mode auto, Simulink calcule
le step size comme suit
t stop t start
h=
50
Le choix dun step size petit
permet davoir une meilleure
rsolution

erreur en x
< 1e 3
x

erreur en x < 1e - 6
Courbe lisse

Anne universitaire 2006 -2007


Simulink Simulation - 44

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
Anne universitaire 2006 -2007
Simulink Simulation - 45

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.

Anne universitaire 2006 -2007


Simulink Simulation - 46
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 2.1 Appuyer sur licne scope volant de la
droit de la souris et le renommer barre menu du scope)
Scope Volant.
1.2 Ouvrir le Scope Volant et cocher la case 2.2 Appuyer sur licne signal selection puis
floating scope" dans les proprits slectionner les signaux visualiser.
du bloc
1.3 Lancer la simulation 2.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.

Anne universitaire 2006 -2007


Simulink Simulation - 47

Exemples
Equation de Mathieu :

d 2 x( t )
2 = 2
(1 + cos( t )) x( t )
dt

avec = 0.01 et = 0.5

Construire le schma-bloc correspondant

Anne universitaire 2006 -2007


Simulink Simulation - 48

Exemples (cont.)
Oscillateur
Construire et comparer les schmas-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
Anne universitaire 2006 -2007
Simulink Simulation - 49

Exemples (cont.)
Modulateur/Dmodulateur
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.

Anne universitaire 2006 -2007


Simulink Simulation - 50

Solution

Anne universitaire 2006 -2007


Simulink Simulation - 51

Exemples (Cont.)
Canal de communication
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
10 9 &y& + 10 3 y& + y = u
Utiliser le signal modul de lexemple prcdent.
Observer la sortie
Essayer differents solvers

Anne universitaire 2006 -2007


Simulink Simulation - 52

Solution:

Anne universitaire 2006 -2007


Simulink Simulation - 53

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]

Anne universitaire 2006 -2007


Simulink Simulation - 54

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.

Anne universitaire 2006 -2007


Simulink Simulation - 55

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


Anne universitaire 2006 -2007
Simulink Simulation - 56

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.
Anne universitaire 2006 -2007
Simulink Simulation - 57

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.

Anne universitaire 2006 -2007


Simulink Simulation - 58

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 .

Anne universitaire 2006 -2007


Simulink Simulation - 59

4.5 Les Types de Donnes (cont.)


Oprations sur les diffrents types (cont.)

Anne universitaire 2006 -2007


Simulink Simulation - 60

4.6 Debugger
Le Debugger Graphique

Tools/Simulink Debugger

Anne universitaire 2006 -2007


Simulink Simulation - 61

4.6 Debugger (cont.)


Le Debugger Graphique (cont)

Affichage des entres/sorties du


Excution des blocs Arrt du mode bloc slectionn mme si celui ci
pas--pas pour un debugger n'est pas en cours d'valuation
temps de simulation
fix

Affichage des entres/sorties du bloc


Excution dun pas slectionn chaque fois qu'il est
d intgration complet valu

Lancement de la simulation en mode


Mise en place des points darrt devant
debugger - Excution en continu de
le bloc slectionn
points d arrt en points d arrt
Anne universitaire 2006 -2007
Simulink Simulation - 62

4.6 Debugger (cont.)


Le Debugger en Ligne

Commandes de gestion de la simulation


Pour lancer la simulation step Excution des blocs pas pas

en mode debugger : next Excution dun pas de temps complet


continue Excution jusquau prochain point darrt
run Excution jusqu la fin de la simulation
>> sldebug modele
quit Quitte le mode debugger

Commandes de visualisation en cours de debuggage


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
Anne universitaire 2006 -2007
Simulink Simulation - 63

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

Anne universitaire 2006 -2007


Simulink Simulation - 64

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
Anne universitaire 2006 -2007
Simulink

5. Construction de
Blocs
Simulink Construction de Blocs - 66
5.1 Construction de Sous-Systmes
Slectionner Il est possible dannuler (Undo) les effets
les blocs jusqu' 101 excutions conscutives par le
regrouper avec choix menu Edit/Undo. Les oprations
la souris (liens pouvant tre annules sont :
dentre et de
sortie inclus) Ajouter, effacer, ou dplacer un bloc, une
ligne ou une annotation
diter un nom de bloc
Crer un sous-systme
Grouper avec
le menu Pour dgrouper slectionner le
Edit/Create menu Edit/Undo Create
Subsystem Subsystem

Maintenant, un
nouveau bloc
remplace tous les
blocs qui taient
slectionns. Le
nom de ce
nouveau bloc est
par dfaut
Subsystem Anne universitaire 2006 -2007
Simulink Construction de Blocs - 67

5.1 Construction de Sous-Systmes

Enregistrer sous modele2.mdl


et renommer le bloc Subsystem
par FT et Saturation.

Double-clic

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 68

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;
Anne universitaire 2006 -2007
Simulink Construction de Blocs - 69

5.3 Le Masquage
Le masquage permet de :
Changer les caractristiques d'un bloc. Par exemple, un bloc
Zero-Pole peut tre transform en filtre de Butterworth
Personnaliser et simplifier des modles

Slectionner le bloc FT et Saturation en


cliquant dessus.
Masquer ce bloc avec le menu Edit/Mask
Subsystem et remplir les champs.

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 70

5.3 Le Masquage (cont.)

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 71

5.3 Le Masquage (cont.)


Le rsultat du masquage est le suivant :

Double-clic

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 72

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)

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 73

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. Anne universitaire 2006 -2007
Simulink Construction de Blocs - 74

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.
Anne universitaire 2006 -2007
Simulink Construction de Blocs - 75

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. Anne universitaire 2006 -2007
Simulink Construction de Blocs - 76

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

Pour la cration du fichier slblocks.m, un fichier template est fourni dans :


$matlabroot\toolbox\simulink\blocks\slblocks.m
Anne universitaire 2006 -2007
Simulink Construction de Blocs - 77

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
Anne universitaire 2006 -2007
Simulink Construction de Blocs - 78

5.5 Lisibilit (cont.)


Noms des fils (cont.)

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 79

5.5 Lisibilit (cont.)


Navigateur du modle
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).

2 1

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 80

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.

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 81

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.

Anne universitaire 2006 -2007


Simulink Construction de Blocs - 82

5.5 Lisibilit (cont.)


Bloc dInformations (cont.)

Anne universitaire 2006 -2007


Simulink

6. Etude Partir de
MATLAB
Simulink Etude Partir de MATLAB - 84

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


Anne universitaire 2006 -2007
Simulink Etude Partir de MATLAB - 85

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)

Anne universitaire 2006 -2007


Simulink Etude Partir de MATLAB - 86
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),...]

Anne universitaire 2006 -2007


Simulink Etude Partir de MATLAB - 87

6.2 Simulation (cont.)


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

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
Anne universitaire 2006 -2007
Simulink Etude Partir de MATLAB - 88

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

Anne universitaire 2006 -2007


Simulink Etude Partir de MATLAB - 89

6.3 Identification des tats


Conditions initiales
vecteur des tailles Noms des tats
>> [sizes,x0,xord]=modele4
sizes = [ sizes =
# tats continus 1
# tats discrets 0
# sorties 1 Nom du modle
# entres 0
# Reserv 0
# Couplage entre/sortie 0
# nombre de priodes 1
dchantillonnage x0 =
] 0
xord = 'modele4/FT et Saturation/
Transfer Fcn'

Anne universitaire 2006 -2007


Simulink Etude Partir de MATLAB - 90

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.


Anne universitaire 2006 -2007
Simulink Etude Partir de MATLAB - 91

6.4 Linarisation (cont.)


Exemple :

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.

>>[A,B,C,D]=linmod('modele5',2,0)

Suite la linarisation, il est par


exemple possible de tracer le
diagramme de Bode :

>> [A,B,C,D]=linmod('modele5');
>> bode(A,B,C,D)
Anne universitaire 2006 -2007.
Simulink Etude Partir de MATLAB - 92

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
Anne universitaire 2006 -2007
Simulink Etude Partir de MATLAB - 93

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

fprintf('Diagramme\nde Bode')

Dans MATLAB, taper la commande suivante :

>> set_param('modele6/Bode','OpenFcn',...
'[A,B,C,D]=linmod(''modele6'');bode(A,B,C,D)')

Anne universitaire 2006 -2007


Simulink Etude Partir de MATLAB - 94

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

Anne universitaire 2006 -2007


Simulink Etude Partir de MATLAB - 95

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.
Anne universitaire 2006 -2007
Simulink

7. Moteur
Courant Continu
Simulink Etude dun Moteur Courant Continu - 98

7.1 Equations Physiques


En mcanique, le couple en sortie du moteur s'crit sous la forme suivante :
: couple en N.m
d ( t ) J : inertie en kg.m2
( t ) = J + f ( t ) : vitesse angulaire en rad.s-1
dt
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
( t ) = Kc I( t ) I : courant d induit en A

La tension en entre du moteur s'crit :


dI( t ) r : rsistance d induit en
U( t ) = r I( t ) + L + Ke ( t ) L : inductance d induit en H
dt Ke : raction d induit en N.m.A-1

Donnes numriques :
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
Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 99

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 )

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)

Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 100

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;
Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 101

7.2 Modlisation (cont.)


Reprsentation dtat du systme (cont.)

Les paramtres de simulation sont les suivants :

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 102

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%
Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 103

7.2 Modlisation (cont.)


Reprsentation sous forme de schmas-blocs

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 transforme de Laplace de ces


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

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


( p) = I( p )
notre modle, les expressions Jp + f
prcdentes se mettent sous la forme
suivante : I( p ) =
1
Lp + r
[
U( p ) Ke ( p) ]
Anne universitaire 2006 -2007.
Simulink Etude dun Moteur Courant Continu - 104

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.

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 105

7.2 Modlisation (cont.)


Validation des modles

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

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 106

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.

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 107

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.
Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 108

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
Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 109

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.

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 110

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

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 111

7.3 Rgulation par PID (cont.)


Etude paramtrique (cont.)
Exemple 2 : Etude paramtrique
en faisant varier le gain du bloc
intgrateur :

>> etud_param

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 112

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

L'erreur de position est calcule


par la fonction suivante :

Exemple :
>> f_erreur([1 0 0])
ans =
1.5585

>> f_erreur([1 0 1])


ans =
0.9609
Anne universitaire 2006 -2007
Simulink Etude dun Moteur Courant Continu - 113

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 :

Anne universitaire 2006 -2007


Simulink Etude dun Moteur Courant Continu - 114

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.
Anne universitaire 2006 -2007
Simulink

8. Sous-systmes
excution conditionnelle
Simulink Sous-systmes excution conditionnelle - 116

8.1 Prsentation
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

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 117

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

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 118

8.2 Exemple 1 : stockage conditionnel


>>plot(t1,s1,'x-',t2,s2,'+-')

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 119

8.2 Exemple 1: stockage conditionnel

Utilisation du IF/ELSE

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 120

8.2 Exemple 1: stockage conditionnel

Utilisation du SWITCH/CASE

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 121

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".
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 5 10 15 20

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 122

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 :
Anne universitaire 2006 -2007
Simulink Sous-systmes excution conditionnelle - 123

8.3 Exemple 2 : Compteur dvnements


Le bloc Unit Delay : la condition initiale Le bloc Trigger : l'excution est
reste 0. Le champ "Sample Time" est mis faite sur front montant.
-1 pour indiquer que ce bloc ne dpend
pas du temps, puisque le sous-systme
est trigg.

Le rsultat de la simulation est :

Anne universitaire 2006 -2007


Simulink

9. Boucles Algbriques
Simulink Boucles Algbriques - 126

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.

Anne universitaire 2006 -2007


Simulink Boucles Algbriques - 127

Exemple
Rsoudre 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 modle correspondant est prsent sous
deux formes diffrentes, l'une utilisant le bloc
Algebraic Constraint et l'autre non :

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.
Anne universitaire 2006 -2007
Simulink Boucles Algbriques - 128

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

Anne universitaire 2006 -2007


Simulink Sous-systmes excution conditionnelle - 124

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

Anne universitaire 2006 -2007


Simulink

10. S-Functions
Simulink S-Functions - 130

10.1 Introduction
Une S-Function dfinit la dynamique dun systme. Il
existe diffrent types de S-Functions :

u x y bloc Image graphique


diagramme

M-file Fonction en
S-Function language MATLAB

MEX-file Fonction en
S-Function language C
Anne universitaire 2006 -2007
Simulink S-Functions - 131

10.1 Introduction (cont.)

Les S-Functions servent :

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

Anne universitaire 2006 -2007


Simulink S-Functions - 132

10.2 Comment travaillent les S-Functions


Une S-Function est rprsente par :
des entres u
des tats x (continus, discrets, hybrides) u x y
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 : xd+1 = fd(t,x,u)
Mise jour des tats continus drivs : .
xc = fc(t,x,u)

avec :


x : les tats continus xc et discret xd

u : les entres
[]
x =
xc
xd
0.0 0.0
t : le temps te1 Offset1
t = te2 Offset2
. . . . . .
ten Offsetn
Anne universitaire 2006 -2007
Simulink S-Functions - 133

10.3 Squencement dune Simulation


Flag = 0
mdlInitializeConditions
Conditions Initiales mdlInitializeSizes
mdlInitializeSampleTimes

Calcul du prochain temps dappel Flag = 4


(seulement pour les blocs temps variable) mdlGetTimeNextVarHit

Flag = 3
Calcul des sorties
mdlOutputs

Flag = 2
Mise jour des tats discrets
mdlUpdate
Phase
dintgration
Mise jours des tats continus drivs Flag = 1
mdlDerivatives

Flag = 3
Calcul des sorties mdlOutputs

Flag = 9
Termine la simulation mdlTerminate
Anne universitaire 2006 -2007
Simulink S-Functions - 134

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 Anne universitaire 2006 -2007


Simulink S-Functions - 135

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.
Anne universitaire 2006 -2007
Simulink S-Functions - 136

10.5 Dimensionnement dun Modle


Exemple :
Pour dterminer les
>> vdp
caractristiques du modle, >> [sys,x0,xstr,ts]=vdp([],[],[],0)
on appelle la S-Function sys =
qui le reprsente partir de 2 2 tats continus
0 0 tats discrets
MATLAB avec le flag = 0. 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

Anne universitaire 2006 -2007.


Simulink S-Functions - 137

10.5 Dimensionnement dun Modle


>> [sys,x0,xstr,ts]=vdp([],[],[],0)
En ajoutant un bloc discret, la S- sys =
Function graphique vdp devient 2 2 tats continus
2 2 tats discrets (Transfert Fcn d ordre 2)
un systme hybride avec mlange 2 2 sorties (2 blocs outport)
d'tats continus et discrets. 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 Conditions initiales de la fonction de
0 transfert discrte d ordre 2

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

Echantillonnage du bloc tous les : n*Te + offset

Anne universitaire 2006 -2007


Simulink S-Functions - 138

10.6 S-Functions en langage MATLAB


Modle continu
Soit le systme 2 entres, 2 sorties et
2 tats, dcrit par :
0.09 0.01 1 7
&
x = x + 0 2 u
1 0

0 2 3 0
y = 1 5 x + 1 0 u

La S-Function est appele dans le modle


par le bloc S-Function de la bibliothque
Functions & Tables de SIMULINK.

Pour diter la S-Function, taper :


>> edit csfunc.m

Anne universitaire 2006 -2007


Simulink S-Functions - 139

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.

Pour diter la S-Function, taper :


>> edit csfunc_param.m

Anne universitaire 2006 -2007


Simulink S-Functions - 140

10.6 S-Functions en langage MATLAB


Modle continu : intgrateur limit (satur)
Le modle est exprim sous forme d'une quation diffrentielle
du 1er 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 . Pour diter la S-Function,
Dans le cas prsent, on a : taper :
lb=-0.5 lh=0.5 xi=0 >> edit intlim_m
Anne universitaire 2006 -2007
Simulink S-Functions - 141

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.
Anne universitaire 2006 -2007
Simulink S-Functions - 142

10.7 S-Functions en langage C


Introduction
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

Anne universitaire 2006 -2007


Simulink S-Functions - 143

10.7 S-Functions en langage C


Fonctions propres la S-Function

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

Anne universitaire 2006 -2007


Simulink S-Functions - 144

10.7 S-Functions en langage C


Macros d accs la structure Simstruct (initialisation)

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 ssSetNumIWork(S,numIWork)
entier
Nombre de vecteurs de travail de type ssSetNumRWork(S,numIWork)
rel
Nombre de vecteurs de travail de type ssSetNumPWork(S,numIWork)
pointeur

Il existe galement des macros pour lire ces valeurs (prfix ssGet)

Anne universitaire 2006 -2007


Simulink S-Functions - 145
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

Anne universitaire 2006 -2007


Simulink S-Functions - 146
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.
Anne universitaire 2006 -2007
Simulink S-Functions - 147

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.

Anne universitaire 2006 -2007


Simulink S-Functions - 148

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

Anne universitaire 2006 -2007


Simulink S-Functions - 149

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 :

Anne universitaire 2006 -2007


Simulink S-Functions - 150

10.8 Comparaison des diffrents types


de reprsentation (cont.)
% Comparaisons des temps de simulation ...
% des diffrentes reprsentation : ListeModele = {
% . modle graphique 'modele_graphique',
% . S-Function en langage Matlab 'modele_sfunc_m',
% . S-Function en langage C 'modele_sfunc_c'};

clear all for i=1:3


tic
A = [-0.09 -0.01 [t,x,y] = sim(
1 0]; ListeModele{i},
B = [ 1 -7]; [0:0.1:200],
C = [ 0 2 options,
1 -5]; '[sin(t),cos(t)]');
D = [-3 0 t = toc;
1 0]; disp(ListeModele{i})
disp(t)
options = simget('modele_graphique'); end
...

Pour lancer ce script, taper :


>> compare_modele

Anne universitaire 2006 -2007


Simulink S-Functions - 151

10.9 Exercice
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

Anne universitaire 2006 -2007.


Simulink

Exercice :
Rebond dune Balle
Simulink Exercice : Rebond dune Balle - 154

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

Anne universitaire 2006 -2007


Simulink Exercice : Rebond dune Balle - 155

Relation Fondamentale
Z de la Dynamique :

V0
m = Fext
z0

g Donnes Numriques :
z0 = 10 m
sol
V0 = 5 m.s-1

Anne universitaire 2006 -2007

Vous aimerez peut-être aussi