Vous êtes sur la page 1sur 162

INTRODUCTION A

STATEFLOW
Pour les curieux et ceux qui sy intressent

Modlisation & Simulation des


Systmes Evnements
Discrets (et Continus).

Ph. Hautcoeur

Les professeurs sont faits pour les gens qui


napprendraient rien tout seuls. Le savoir qui
compte est celui quon se donne soi-me me par
curiosite , passion de savoir.

Paul Le autaud

Philippe Hautcoeur
Professeur de Sciences Industrielles de lInge nieur
Classes Pre paratoires aux Grandes Ecoles
Lyce e Clemenceau a Nantes

Ce document volue grce votre concours. >>>> contact : philippe.hautcoeur@ac-nantes.fr

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)






























Lutilisation caractre commerciale ou lhbergement sur un site de ce document sans
autorisation de lauteur est strictement interdite.

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Avant-propos
Stateflow est un module de veloppe par la socie te
ame ricaine MathWorks qui permet la simulation
de machines de tat.
Une machine de tat comporte un nombre fini de tats.
Elle mode lise le comportement de syste mes qui
passent dun e tat a un autre en re ponse a des
e ve nements. On parle alors de syste mes a
e ve nements discrets.
Comme son nom lindique, ce module permet de
tracer des diagrammes de tat ( State Chart ) et des
diagrammes de flux ( Flow Chart ).
Stateflow est inte gre a Matlab et Simulink. Les mode les construits pourront par
conse quent comporter des blocs des diffe rentes toolboxes de Simulink et/ou
appeler des fonctions Matlab et/ou des fonctions Simulink comme nous le verrons.
Ainsi le mode le global dun syste me complexe pourra comporter des modles
linaires continus construits avec Simulink sous la forme de sche ma-blocs, des
machines tat construites avec Stateflow ou encore des modles acausaux
re alise s en utilisant Simscape.
Aussi Stateflow permet de simuler le comportement de systmes hybrides cest-a dire a e ve nements discrets et continus. Cest par exemple le cas dune balle qui
rebondit sur le sol. En effet son de placement dans lair est continu alors qua chaque
rebond, conside re comme un e ve nement, sa trajectoire est modifie e. Cest encore le cas
si un robot doit e viter un obstacle pre sent sur sa trajectoire.
Une connaissance approfondie de Matlab et Simulink nest pas indispensable pour
commencer a travailler avec Stateflow. Dans la plupart des exemples traite s avec la
version 2013b, les chemins menant aux composants des bibliothe ques Simulink
utilise es sont pre cise s.
Apre s avoir pre sente les diffe rents outils et quelques applications, nous verrons
comment imple menter un programme re alise avec Stateflow vers une cible telle que
la carte Arduino Mga 2560.
Le guide de lutilisateur complet de Stateflow est te le chargeable sur le site de
MathWorks :
http://www.mathworks.com/help/pdf_doc/stateflow/sf_ug.pdf

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Table des matires


Avant propos _____________________________________________________________________________ 3
Chapitre 1 - Pour bien commencer ______________________________________________________ 7
1.1- Pre paration et pre sentation de linterface _________________________________________ 7
Chapitre 2 - Le Chart _________________________________________________________________ 11
A propos du fonctionnement de la machine de tat ______________________________ 13
2.1- State _________________________________________________________________________________
2.1.1 - Label et mots cle dun e tat _____________________________________________
A propos des transitions et des e ve nements _______________________________________
2.1.2 - Label dune transition __________________________________________________
2.1.3 - Cas particuliers de la transition re flexive et de la transition interne ___
2.1.4 - Prise en compte de lactivite dun e tat dans une transition _____________
2.1.5 - Les e ve nements exte rieurs ________________________________________________
A propos des ope rateurs temporels_________________________________________________
Lope rateur after _______________________________________________________________
Lope rateur before _____________________________________________________________
Lope rateur at __________________________________________________________________
Lope rateur every ______________________________________________________________
Lope rateur temporalCount ___________________________________________________
A propos des super-e tats ou e tats composites ____________________________________
De composition exclusive (OR) ou paralle le (AND) des e tats composites _____
Utilisation dun Subchart ______________________________________________________

14
14
15
15
17
18
18
26
27
27
28
28
28
29
29
30

2.2- Default Transition __________________________________________________________________ 31


2.3- Junction _____________________________________________________________________________ 32
A propos des Flow Charts ________________________________________________________ 35
2.4- History junction ___________________________________________________________________ 41
2.5- Box __________________________________________________________________________________ 46
2.6- Simulink Function _________________________________________________________________ 47
2.7- Graphical function _________________________________________________________________ 53
2.8 MATLAB Function __________________________________________________________________ 64
2.9 Truth table __________________________________________________________________________ 73
Chapitre 3 - Dautres exemples dapplication du Chart _______________________ 82
3.1- Initialisation de laxe line aire Mazet ____________________________________________ 82
3.2- Simulation du fonctionnement dun chronome tre ______________________________ 86
3.3- Pilotage dune plateforme omnidirectionnelle __________________________________ 97

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

3.4- Traitement des informations de livre es par un Codeur SinCos ________________ 103
Chapitre 4 - Le Chart (MATLAB) __________________________________________________ 112
4.1- Exemple de la re gulation TOR dun four ________________________________________ 112
Chapitre 5 - La State Transition Table ___________________________________________ 117
5.1- Exemple du codeur incre mental _________________________________________________ 121
Chapitre 6 - La Truth Table ________________________________________________________ 128
6.1- Exemple de la commande dun pont roulant ___________________________________ 129
Chapitre7 Prototypage _______________________________________________________________ 140
7.1 Arduino et Simulink ____________________________________________________________ 140
7.2 La carte Arduino Mega 2560 ____________________________________________________ 141
7.3 Application : le GyrodriverTM ___________________________________________________ 142
Chapitre 8 Proposition de mthodologie _________________________________________ 155
Chapitre 9 - SysML State Machine vs Stateflow ___________________________________ 158

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 1
Pour bien commencer

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 1 - Pour bien commencer


1.1- PREPARATION ET PRESENTATION DE LINTERFACE

Pour fonctionner, Stateflow ne cessite linstallation dun compilateur C.


Pour ve rifier si vous disposez dun compilateur sur votre machine ou pour linstaller, il
faut lancer Matlab puis, dans la fene tre de commande, saisir la ligne de commande
suivante et suivre les instructions propose es :
Commande a saisir

Compilateur installe sur la machine

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Dautre part, il pourra e tre pratique dinstaller Real-Time Pacer disponible en


te le chargement libre sur le site de MathWorks. Le bloc Real-Time Pacer permet
de ralentir la simulation qui peut parfois e tre trop rapide pour e tre analyse e.

Un simple glisse -de pose de ce bloc


dans le mode le Simulink suivi
dun double clic permet dajuster
le rapport temps de simulation /
temps re el. Ici ce rapport est de
50%.

La
bibliothe que
Stateflow
comporte quatre e le ments :
Chart , Chart (MATLAB) ,
State Transition Table et
enfin Truth Table .

Chart

permet

de

construire un diagramme e tat transition.

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chart (MATLAB) permet aussi la cre ation dun diagramme e tat-transition


mais en utilisant des expressions ou des structures MATLAB pour de crire un
comportement logique. Ces expressions peuvent e tre pre sentes aussi bien dans
un e tat que dans une transition.
State Transition Table ge ne re automatiquement un diagramme de tattransition a partir dune table qui pre cise tous les e tats et toutes les transitions.
Enfin Truth Table permet la cre ation de table de ve rite qui de crira le
comportement combinatoire dun syste me.

Dans ce document nous passerons en revue ces quatre e le ments de la bibliothe que de
Stateflow pour en pre senter les principes a partir dexemples.
Cependant nous nous inte resserons de manie re plus approfondie a lutilisation du bloc
Chart pour la cre ation dun mode le. Les savoir-faire alors apporte s pourront
faciliter la prise en main des trois autres e le ments mis a disposition dans la
bibliothe que Stateflow.

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 2
Le Chart

10

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 2 - Le Chart

Pour construire une machine de tat, il faut lancer Matlab puis la bibliothe que
Simulink. Ouvrir Stateflow et glisser un Chart (ou diagramme) dans la fene tre de
construction du mode le. Un double-clic sur le bloc permet dacce der a son contenu de
ce bloc cest-a -dire au digramme e tat-transition.

On pourra judicieusement ouvrir le


contenu du bloc Chart dans une
nouvelle fene tre en cliquant bouton
droit puis Open In New Window .
Cette disposition sera inte ressante au
moment de la simulation comme nous
le verrons un peu plus tard.

Votre e cran affichera alors les trois fene tres suivantes :

11

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La bibliothque
Simulink

Le modle
Simulink

La machine
dtat

Aussi, il est important de se lectionner un solveur adapte a la simulation. Ici nous


choisirons le solveur :
discrete (no continuous states) , Fixed-step, fundamental sample time 0.01
s par exemple.

La palette doutils ne cessaire a la construction dun diagramme e tat-transition par un


glisse /de pose est la suivante. Elle comporte plusieurs objets dont certains sont
graphiques:

12

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

State
Junction
Default Transition
Box
Simulink Function
Graphical Function
MATLAB Function
Truth Table
History

A propos du fonctionnement de la machine dtat

Le comportement dynamique de la machine de tat est par de faut synchronise avec


lhorloge qui de finit le temps de chantillonnage choisi pour la simulation du mode le
( sample time ), cest-a -dire le temps correspondant a un pas de calcul du solveur.
A chaque pas, un nouvel e ve nement note tick survient, il y a alors possibilite
de volution de la machine vers un nouvel e tat.
La machine peut aussi e tre soumise a des e ve nements exte rieurs autorisant le passage
a un nouvel e tat. Il est important de bien distinguer ces modes de volution de la
machine de tat.
De taillons maintenant le contenu de la palette permettant la construction de machines
de tat.

13

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.1- STATE

Cette ico ne, un rectangle aux coins arrondis, repre sente un e tat. Lactivite ou la nonactivite dun e tat de pend de ve nements et/ou de conditions.

2.1.1 - Label et mots cl dun tat

Le nom de le tat ou son e tiquette ( state label ) est saisi a la place du point
dinterrogation en haut a gauche du rectangle. Les actions associe es aux e tats peuvent
avoir lieu :

A lactivation de le tat : entry : action ; ou en : action ;


A la de sactivation de le tat : exit : action ; ou ex : action ;
Pendant lactivite de le tat : during : action ; ou du : action ;

entry , during , exit sont appele s pre fixe (prefix) ou mot-cle (keyword). Ils
peuvent se crire de manie re plus synthe tique : en pour entry , du pour
during , ex pour exit .

Si plusieurs actions sont associe es a un mot-cle , elles


seront se pare es par un point-virgule ou une virgule.
A la liste pre ce dente nous pouvons ajouter dautres
mot-cle s : on et bind .
En effet nous avons la possibilite de re aliser des
actions a loccurrence de plusieurs e ve nements. On
utilisera alors le pre fixe on pour chacun des
e ve nements de clencheurs : on vnement :
action ;
Le pre fixe bind signifie que les donne es qui
suivent le mot-cle sont lie es a le tat comportant
ce pre fixe. Dans ce cas, seul cet e tat ou des e tats
enfants peuvent modifier les donne es pre cise es.
Par contre, ces donne es peuvent e tre utilise es par
dautres e tats de la machine.
En absence de mot-cle , une action est re alise e en entrant ( entry ) dans le tat.
14

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Afin de pre ciser certains e le ments, il est aussi possible de saisir un commentaire dans
un e tat en le pre ce dant dun %comme le montre la figure pre ce dente.

Un premier petit exercice



Stateflow ouvert, vous allez cre er un premier State Chart .
Saisir le tat E1 pre ce dent pour vous familiariser avec la syntaxe.
Les couleurs des caracte res qui apparaissent dans le tat sont ge ne re es
automatiquement (vert pour les commentaires, jaune orange pour les
e ve nements, fushia pour les valeurs nume riques). Cela permet de de tecter
rapidement une faute de frappe ou de syntaxe.

Avant de construire des machines plus sophistique es, il est souhaitable de lire ce qui
suit a propos des transitions, des ope rateurs temporels, des de compositions exclusive
et paralle le.
Cette synthe se permet de comprendre les principes de base du comportement dune
machine de tat construite avec Stateflow.

A propos des transitions et des vnements

Le passage dun e tat a lautre se fait par une transition qui se mate rialise par une liaison
oriente e entre un e tat source et un e tat pointe . Nous parlerons de transition externe.
Le trace de la transition se fait naturellement en amenant le curseur de la souris sur le
contour de le tat source et en cliquant avec le bouton gauche de la souris jusquau
contour de le tat pointe .

2.1.2 - Label dune transition

15

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La transition est caracte rise e par une e tiquette ou transition


label (saisie dans la zone contenant le point dinterrogation) qui
de crit les circonstances ou les conditions de passage dun e tat a
un autre.

Le tiquette peut contenir un e ve nement et/ou une condition


et/ou une action sur condition et/ou une action sur transition.

Le format ge ne ral de le tiquette dune transition se crit alors:

Evnement [condition] {action sur condition} / action sur transition

Ce qui sinterpre te de la faon suivante :

A loccurrence de le ve nement la transition est e value e.


Si la condition est vraie alors la transition est valide et si laction sur condition
existe, elle est execute e.
Laction sur transition, si elle existe, est aussi re alise e. Si la transition est
constitue e de plusieurs segments, laction sur transition sera exe cute e
seulement lorsque la transition toute entie re aura e te franchie.

Si le ve nement nest pas pre cise dans le tiquette de la transition, la condition qui suit,
si elle existe, sera e value e a chaque pas de calcul.
Si un e ve nement exte rieur est conside re , il faudra le de finir. Il saffichera alors sur le
dessus du Chart pre alablement cre e , comme nous le verrons plus loin.
Pour expliciter une transition, il est possible dajouter un commentaire. La syntaxe
serait par exemple la suivante par :

[condition] {action sur condition}/*commentaire*/

16

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.1.3 - Cas particuliers de la transition rflexive et de la transition interne

La transition re flexive ( self loop transition ) part dun


e tat ou dun pseudo-e tat et y revient. Le tat source et le tat
pointe est donc le me me.
Quand la condition [a] est vraie alors que le tat E1 est actif,
il est de sactive puis aussito t re active au pas de calcul
suivant.

La transition interne ( inner transition ) ne sort pas de son e tat source. Elle peut
pointer un e tat enfant ou bien un pseudo-e tat.
Prenons lexemple du forage dans un e tat particulier :
Dans le cas qui nous
inte resse ici, le tat parent
E1 et le tat enfant E13 sont
actifs.
A chaque pas de calul, les
transitions associe es a
l e tat actif de plus haut
niveau hie rarchiquue sont
dabord e value es. Donc ici
la transition entre E1 et
E12 est e value e a chaque
pas de calcul.

La
condition
[ARU]
devient vraie. E13 est
alors de sactive et E12
devient actif : cest le
forage dans un e tat
donne .
On
force
lactivation
de
E12
lorsque la condition
[ARU] est vraie.
La transition interne peut pointer une jonction History (voir le paragraphe
consacre a la jonction History Junction ).

17

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Enfin lutilisation de cette transition peut aussi e tre inte ressante pour simplifier la
structure dun e tat composite ( voir le paragraphe consacre a la jonction : Junction )

2.1.4 - Prise en compte de lactivit dun tat dans une transition


La prise en compte dans une transition de lactivite dun e tat est possible si la variable in(tat
prciser avec son niveau hirarchique) est vraie, par exemple :

Ici le passage de le tat E21 a E23 se fait si le tat E12 est actif.
Le retour a le tat E21 a lieu si le tat E11 est actif.

2.1.5 - Les vnements extrieurs

Un peu de pratique
Nous allons construire une machine a e tat comportant deux e tats E1 et E2. Le passage
de lun a lautre se fera a loccurrence dun e ve nement exte rieur note top .
Pulse generator

Le ve nement pourra e tre un front montant


( rising ), un front descendant ( falling ) ou
encore un front montant ou descendant
( either ).

Scope

Scope

Dans Simulink construisons lexemple ci-contre :

18

State chart

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Dans le menu Sources de Simulink, se lectionner le bloc Pulse Generator ,


choisir un signal carre damplitude 1, dune pe riode de 1s et de largeur dimpulsion
50% de la pe riode :

Les Scopes sont extraits de la bibliothe que


Sinks de Simulink et permettent de
visualiser les re sultats de la simulation.

Pour terminer, glisser un State Chart a partir


de Stateflow.

Il faut maintenant mettre en place les entre es et sorties du Chart . On choisit


dappeler la sortie S et le ve nement exte rieur top . Loccurrence de le ve nement
top se fait sur chaque front montant du signal carre top .
Se lectionner le Chart , afficher le menu contextuel avec le bouton droit de la souris
puis se lectionner Explore . Une fene tre souvre, il sagit de lexplorateur de mode le
( Model Explorer ) :

19

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Lexplorateur de mode le va permettre la de finition des entre es, des sorties, des
e ve nements. Nous utiliserons les deux ico nes du bandeau supe rieur suivantes :

Permet lajout dun data


(entre e, sortie)

20

Permet lajout dun e ve nement

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Nous pouvons ve rifier que la sortie S est de sormais pre sente sur
le co te droit du Chart .

De la me me manie re, on de finit le ve nement top . Le signal dont on souhaite extraire


le ve nement top pointe le Chart sur le dessus. Il correspond a une entre e depuis
Simulink ( Input from Simulink ). On choisit le front descendant ( Trigger :
Falling ) du signal pour re veiller la machine.

21

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Nous pouvons ve rifier la cre ation dun port de de clenchement


( Trigger ) sur le dessus du Chart . La nature de le ve nement
est symbolise e ici par un front descendant.

Reste a relier les diffe rents blocs :

Un double clic permet douvrir le Chart . Tracer par exemple le diagramme suivant :

Cette transition est une transition par


de faut qui permet de se lectionner le tat
qui doit e tre actif lors du re veil de la
machine (voir paragraphe suivant).

22

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La simulation donne les chronogrammes suivants (double clic sur les Scopes ):

A t=1 s, le premier front descendant re veille la machine et S=0.


A t=2 s, le second front descendant autorise le changement de tat et S=1. Ainsi de
suite

Remarque : dans cet exemple les e tats sont active s a loccurrence de le ve nement
top . Laction associe e ne peut se faire quen entrant dans le tat. Ici nous avons
donc utilise le mot-cle entry .

Un retour dans lexplorateur de mode le en cliquant sur lico ne


du bandeau
supe rieur (ou clic droit Explore ) permet de visualiser larborescence du mode le
construit ainsi que le contenu du Chart :

23

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Il est tout a fait possible de combiner deux signaux dans Simulink et ge ne rer les
e ve nements qui en seraient issus. Il faut alors utiliser le bloc Mux qui se trouve dans
la bibliothe que Signal Routing de Simulink :

Mux

Dans le cas qui nous inte resse nous


conside rons que les e ve nements
clic et clac correspondent aux
fronts montants des deux signaux
obtenus gra ce aux deux ge ne rateurs
de signaux ( Pulse Generator ). Les
signaux sont de phase s dun quart de
pe riode.

Ensuite, il faut affecter un port du bloc Mux aux e ve nements que lon veurt prendre
en compte. Les ports sont nume rote s du haut vers le bas de manie re croissante.

24

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Ici, clic est affecte au port 1 et clac au port 2 :

Les re sultats de la simulation


donnent les chronogrammes
suivants :
Le premier Scope donne le
signal multiplexe en sortie du
bloc Mux . Le second donne
la sortie du Chart .
Le signal jaune est lie au port 1
du bloc Mux et correspond
donc a signal clic .
Le signal violet, de phase par
rapport au signal pre ce dent, est
lie au port 2 du bloc Mux et
correspond donc a signal
clac .
Le Chart est re veille sur le premier e ve nement, cest-a -dire a loccurence du
premier front montant. Cet e ve nement a lieu a t = 0.5 s, il sagit de le ve nement clac .
A cet instant E1 est active et S = 0.

25

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le passage de E1 a E2 se fera a loccurrence de clic (front montant du signal


clic ) soit a t = 2s, dans ce cas S = 1 jusqua loccurrence de clac (front montant du
signal clac ) et ainsi de suite.

Pour montrer limportance de la


connexion des signaux au bloc Mux ,
nous pouvons intervertir laffectation
des ports : signal clic sur le port 2 et
signal clac sur le port1.
Nous obtenons le re sultat ci-contre.

Pouvez-vous le justifier ?
Si oui, cest que vous avez compris et donc passez a la suite. Sinon il faut
relire le paragraphe pre ce dent !

A propos des oprateurs temporels

Le tiquette dune transition peut aussi contenir un ope rateur temporel : after ,
before , at , every , temporalCount .

Remarque prliminaire :

26

le temps de simulation peut sexprimer en seconde (sec), en milliseconde


(msec), en microseconde (usec). Le temps de simulation est un re el positif.
Il de pend du processeur et de ses capacite s a mener les calculs lie s au
mode le. Il ne correspond pas au temps re el.

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le temps de chantillonnage ( sample time ) du solveur sexprime en tick.


Il correspond a un pas de calcul et il est ajuste au moment de la de finition
du solveur. Le nombre de ticks est donc un nombre entier.

Loprateur after :
Dans lexemple ci-contre,
le passage de le tat E1 a
le tat E2 se fait apre s 10
pas de calcul ( ticks ) et
le passage de le tat E2 a
le tat E1 se fait lui apre s 5
secondes du temps de
simulation.
Une
modification du Sample
Time du solveur modifie la dure e du passage de E1 a E2. En effet une augmentation
du Sample Time augmente la dure e dun tick et inversement.

Loprateur before :

Ici, la transition
sera franchie si la
condition
[e==1] est vraie
avant que le temps
de
simulation
atteigne
5
secondes.

Par conse quent, un ope rateur temporel peut e tre associe a une condition.
Il peut aussi e tre pre sent dans une expression logique.
Par exemple :

[a && before(10,sec)] qui se lit a ET before(10,sec)

27

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Loprateur at :
Lope rateur
temporel
at de finit la date a
laquelle le tat E2 sera
active si E1 est active et
re ciproquement.
Les
dates ne peuvent e tre
exprime es quen tick
ce sont donc des nombres
entiers.

Loprateur every :

every(n,tick) est vrai au nie me pas de


calcul. Cet ope rateur sera exprime
obligatoirement en nombre de ticks .
Ici, on incre mente dune unite un
compteur ( compteur++ ) tous les 10
pas de calcul tant que le tat E1 est actif.

Loprateur temporalCount :
Pour e valuer la dure e de lactivite dun e tat, nous disposons de lope rateur
temporalCount . Le compteur est remis a 0 a chaque activation de le tat associe .

28

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Dans lexemple ci-dessus, quand E1 est


active un compteur de compte le temps
dactivation de le tat. Ici, ce temps est
mesure en secondes.
Lorsque le compteur atteint 1s alors la
condition
[temporalCount(sec)==1]
devient vraie, E1 est de sactive et E2 est
active .
Apre s 2s, E2 est de sactive et E1 re active .
Ainsi de suite Le scope associe a la
sortie S confirme bien ce comportement.

A propos des super-tats ou tats composites

Dcomposition exclusive (OR) ou parallle (AND) des tats composites


Dans la figure qui suit, le super-e tat E1 est un e tat paralle le. Lorsque E1 est active alors
E11 ET E12 sont actifs simultane ment.

La pre sence dune transition par de faut


affecte e a E11 ou E22 na pas lieu de tre
du fait de la simultane ite de lactivation
des e tats.

De composition paralle le (AND)

Ces sous-e tats pre sentent un contour


en pointille s.
On acce de a la de composition en
se lectionnant le super-e tat par un clic
gauche,
puis
clic
droit,
Decomposition
De composition exclusive (OR)

Les quelques notions de base concernant les e tats et les transitions expose es jusquici
sont a connatre pour construire des machines de tat.

29

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Utilisation dun Subchart

Si un super-e tat ou e tat


composite
contient
de
nombreux e tats il est possible
de re duire le diagramme en
masquant le contenu de le tat
composite. On transforme le
surper-e tat en Subchart :
Afficher le menu contextuel par
un clic droit, puis se lectionner
Subchart & Group puis
Subchart .
Un
double-clic
sur
le
Subchart ainsi cre e permet
dafficher le tat composite dont
le contenu a e te masque .

Subchart

30

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.2- DEFAULT TRANSITION

Une transition par de faut impose lactivation dun e tat en cas dambiguite .
Cette transition pointe un e tat mais na pas de tat source apparent. Le format de
le tiquette est identique a celui dune transition ordinaire. Elle est obligatoire de s que
le diagramme comporte au moins deux e tats.

Dans lexemple ci-dessous lorsque la machine est excite e, E1 est active .

Transition par de faut

Quand la transition entre E1


et E2 est franchie, le supere tat ou e tat composite E2 est
active et E1 de sactive .
Au moment de lactivation
de E2, E21 est alors active
Remarque :
Ici le super-e tat E2 est le
parent des sous-e tats E21 et
E22.

Transition par de faut

E1 et E2 ont le me me niveau
hie rarchique.
E21 et E22 ont eux aussi le
me me niveau hie rarchique.

Ce sont les e tats enfants de E2.

31

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.3- JUNCTION

La jonction ( Junction ) est un pseudo-e tat utilise par exemple pour factoriser des
expressions boole ennes associe es a des conditions.
Dans
lexemple
ci-contre,
lorsque la condition [a] est
vraie, la jonction devient active
(cest un pseudo-e tat) mais E1
nest pas de sactive pour autant.
E2 sera active si [b] devient
vraie.
E1
est
alors
simultane ment de sactive .
Ou bien E3 sera active si [c]
devient vraie. E1 est alors
simultane ment de sactive .

Le comportement pre ce dent est identique au suivant :

On remarquera que dans le


premier cas le valuation de [b] se
fait avant celle de [c] (transition
dont la source est repe re e 1 sur
la jonction). Par conse quent en
cas de simultane ite , lactivite de
E2 sera prioritaire.
Cette priorite est retrouve e dans
le second cas (transition dont la
source est repe re e 1). La
condition [a||b] est e value e avant
[a||c].

32

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

e quivaut a .
[a||b]

a+b

[a&&b]

a.b

Info : la syntaxe utilise e est celle du langage C :

[!a]

Lordre
de valuation
des
transitions peut e tre modifie en
se lectionnant
la
ou
les
transitions a modifier, clic droit,
Properties .
Se lectionner
lordre de valuation dans la liste
de roulante
Evaluation
order .

Un autre exemple de
simplification utilisant une
transition interne :

Le cas ci-contre pre sente


un nombre de transitions
important ce qui pre sente
linconve nient dalourdir le
diagramme.
Ici
une
simplification
est
envisageable en utilisant
une transition interne,
comme on peut le voir sur
la figure qui suit.

33

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Prenons le cas du passage de


le tat E11, conside re actif, a le tat
E13. Le passage se fera a
loccurence de le ve nement e et a
condition que [b] soit vraie. Sur le
premier diagramme la transition
est clairement identifiable. Sur le
second elle ne lest pas.
Ne anmoins nous savons que si
E11 est actif alors que
le ve nement e survient, cet e tat
est de sactive et la jonction re active e, et si [b] est vraie alors
le tat E13 devient actif.

Un petit exercice de saisie et de simulation

Switch
Bloc Constant

A titre dexercice, vous


pouvez assez facilement
ve rifier la similitude des
comportements
des
deux machines.
Ci-contre se trouve le
mode le
Simulink
permettant de simuler et
de
comparer
le
comportement des deux
machines
de tat
simultane ment.
Les Switches se
trouvent dans le menu
Signal Routing de

Simulink.
Les blocs 0 et 1 sont des blocs Constant qui se trouvent dans le menu Commonly
Used Blocks .

34

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour la simulation choisir un temps de simulation infini en saisissant inf dans le


champ correspondant du bandeau supe rieur :
Ve rifier le comportement des
machines de tat en double cliquant
sur les Switches pendant la
simulation pour les faire commuter.

A propos des Flow Charts

Les Flow Charts ou diagrammes de flux sont pratiques pour de crire les structures
algorithmiques de base comme les structures alternatives ou de choix, et les structures
ite ratives ou re pe titives.

Le diagramme de flux contrairement aux diagrammes de tat ( State Chart ) ne


comporte pas de tat mais uniquement des transitions et des jonctions.

35

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Exemple de diagramme de flux :


Il sagit la dune structure alternative :
Si u>0 alors S=1000 sinon S=0

Lentre e du diagramme se fait par une


transition par de faut qui pointe une
jonction. La structure se termine
obligatoirement par une jonction.

Cet exemple peut e tre inte gre a une boucle de re gulation TOR de la tempe rature dun
four industriel :

Le syste me thermodynamique est mode lise par une fonction de transfert du premier
ordre de gain unitaire et de constante de temps 60s.
La sortie S du re gulateur Tout Ou Rien (TOR) correspond a la puissance e lectrique
ne cessaire au chauffage des re sistances. La puissance maximale admissible est 1000
W.
La consigne est un e chelon de tempe rature de 700 C.

36

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le re sultat de la simulation saffiche


dans le Scope :
Si la tempe rature de consigne nest
pas atteinte, le cart u est positif et
dans ce cas les re sistances sont
alimente es.
Quand le cart est nul les re sistances
ne sont plus alimente es.
En absence de perturbation cest-a dire sans injection dair frais, la
tempe rature du four reste constante.

Le trace du diagramme de flux pre ce dent peut se faire par glisse -de pose de jonctions
et en reliant ces diffe rentes jonctions les unes aux autres. Reste alors a saisir les
conditions et les actions.

Stateflow
propose
un
outil
qui
ge ne re
automatiquement les structures algorithmiques. Pour
ajouter une structure dans un diagramme on peut
utiliser la commande Add Pattern In Chart du
menu contextuel.

Un second menu souvre proposant diffe rentes


structures algorithmiques:
Decision : structures
alternatives,
Loop :
re pe titives.

structures

Dans notre cas nous allons cliquer sur Decision et choisir la structure alternative
if-else :

37

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La fene tre ci-contre souvre :

Il suffit de la remplir comme suit pour ge ne rer


automatiquement la structure souhaite e en cliquant
sur le bouton OK.

38

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Nous obtenons bien le diagramme attendu :

Dans la pratique on introduit une plage de mise en


service du re gulateur TOR autour dun point de
fonctionnement en introduisant un hyste re sis.
Celui-ci peut e tre ajustable ou bien fixe. Il est donne
commune ment par les constructeurs en pourcentage de
la pleine e chelle de la sortie.
Par exemple, pour le re gulateur OMRON E5CSV en
mode TOR (ON-OFF) le constructeur annonce un
hyste re sis de 0.2% de la pleine e chelle (Full Scale : FS) :

Introduisons alors un hyste re sis dans le


mode le du re gulateur:

39

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Une structure If-Elseif convient :

La simulation donne le re sultat suivant :

La tempe rature e volue a plus


ou moins 10 C autour de 700
C.
Ce

re sultat

se

retrouve

aise ment par un calcul simple.


La simulation a e te effectue e sur 200s avec un solveur ode5 a pas fixe de 0.1s.

40

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.4- HISTORY JUNCTION

Il sagit dun pseudo-e tat qui me morise lactivite des sous-e tats dun super-e tat ou e tat
composite. Cela permet donc de re activer un e tat dans la situation dans laquelle on la
quitte . Les proprie te s de la History junction ne sappliquent quau niveau de
hie rarchie dans lequel elle apparait.

Conside rons que le tat E0 et le tat E2 soient actifs. Si la condition [c] est vraie, E3 est
alors active et E0 de sactive .
La jonction History permet de me moriser lactivation des sous-e tats au moment de
la de sactivation de E0, ici on a me morise lactivation de E2. Si bien que lorsque la
condition [!c] devient vraie, E3 est de sactive et E0 est active a nouveau mais la pre sence
de la jonction History permet de re -activer E2.

41

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

On notera quen absence de la jonction History , la transition par de faut pointant


le tat E1 imposerait lactivation de cet e tat a la re activation de le tat E0.
Autre exemple :

Nous retrouvons maintenant dans le diagramme ci-dessus deux jonctions History .


Elles apparaissent a deux niveaux hie rarchiques diffe rents.
42

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Imaginons que E0, E2, E22 soient actifs. Quand la condition [c] est vraie, E3 est active
alors que les trois e tats pre ce dents sont de sactive s. Lorsque la condition [!c] devient
vraie a son tour on retrouve la situation quitte e cest-a -dire E0, E2, E22 actifs.

43

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Remarque : si la jonction History nexistait pas dans le tat E2, E22 ne serait pas
active mais ce serait bien le tat E21 compte tenu de la pre sence de la transition par
de faut sur E21.

Un autre petit exercice de saisie et de simulation


Des simulations sont possibles en disposant des jonctions History ou vous le
souhaitez. Ci-dessous le mode le Simulink correspondant :

Dans le paragraphe consacre aux transitions internes, nous avons e voque la situation
ou celle-ci pouvait pointer une jonction History .
Ce sera le cas lorsquon souhaite par exemple figer la machine dans son e tat courant :
44

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

En effet dans cet exemple, si la


condition [STOP] est vraie alors
quun des quatre e tats E11, E12,
E13, E14 est actif celui reste actif.
Lactivite de le tat courant a e te
me morise e.
De s que la condition [STOP] nest
plus vraie le tat E1 reprend son
mode de volution normal.

45

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.5- BOX

La bote ( Box ) est un e le ment qui permet le regroupement dobjets graphiques de


Stateflow comme des e tats, des fonctions Les Boxes peuvent e tre re utilise es
dans dautre mode les.
Par exemple, ci-dessous le Chart fait appel a quatre fonctions MATLAB qui sont
range es par paires dans deux boxes : signaux_carres et
detection_fronts .
Nous construirons et commenterons un peu plus tard ce diagramme.

46

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.6- SIMULINK FUNCTION

Cet outil permet lintroduction de fonctions utilisant des sche mas blocs construits avec
les diffe rentes bibliothe ques de Simulink.

Une fonction Simulink est repre sente e par un bloc


rectangulaire glisse -de pose dans un Chart . :

Prenons un exemple simple pour illustrer la de marche.


Nous allons conside rer une machine a e tat constitue e de deux e tats : Phase1 et Phase2

Le tat Phase1 est initialement actif. Lactivation de le tat Phase2 se fait si la


condition [a] est vraie. Inversement la re activation de le tat Phase1 se fait si la
condition [ !a] est vraie.
La phase 1 consiste a ajouter 5 a lentre e du syste me conside re e comme constante et
valant 10. La phase 2 multiplie par 3 la me me entre e.
Linterface Simulink sera alors la suivante :

47

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Un double-clic sur le Chart affiche le diagramme de ja pre sente quelques lignes plus
hautes.
Nous allons inse rer deux fonctions Simulink qui permettront de re aliser les deux
phases de crites pre ce demment :

En cliquant sur le point dinterrogation on pre cise la signature de la fonction qui sera
appele e par le tat qui de clenchera le ou les calculs souhaite s.

La signature de la fonction pre cise son nom, ses arguments et sa valeur de retour :
tache_i est le nom de la fonction, u son argument et y sa valeur de retour :

48

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Dune manie re ge ne rale la syntaxe est la suivante : (r1, r2,rn)= nom(a1, a2,an)

Linvocation de la fonction, ou son appel, se fait pendant lactivite de le tat Phase1


ou Phase2 . A un e tat correspond une fonction particulie re. Par conse quent les
fonctions sont inse re es dans les e tats correspondants :

Reste a de finir les mode les Simulink associe s aux fonctions en double-cliquant sur les
blocs Simulink Function :

On constate la ge ne ration automatique de


largument de la fonction et de la valeur de
retour qui correspondent respectivement a
lentre e et a la sortie du mode le Simulink.
Dautre part saffiche un bloc pre cisant que
le sous-syste me fait appel a une fonction.

49

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pre parons le mode le Simulink


associe a la premie re phase :

On ajoute 5 a lentre e u :

Pendant la seconde phase, u est multiplie


par 3 :

Le mode le global comporte donc les e le ments


suivants :

Interface
Simulink

Chart

Fonctions
Simulink

50

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Lexplorateur du mode le donne son arborescence :

Pour la simulation il convient de choisir un solveur autre que discrete (no


continuous state) On pourra prendre par exemple le solveur ode5 avec un pas
fixe de 0.01 s et un temps de simulation infini:

Pour exploiter pleinement les avantages de cet outil une bonne connaissance de
Simulink est indispensable.

Ve rifions les re sultats obtenus :

51

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le tat Phase1 est actif. Pendant toute la dure e de son activite , on ajoute 5 a lentre e.
On obtient donc en sortie 15.

Si la condition [a] est vraie, le tat Phase2 est actif et on multiplie par 3 lentre e. On
obtient 30 en sortie :

Enfin si la condition [ !a] est vraie, on obtient a nouveau en sortie 15 :

52

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.7- GRAPHICAL FUNCTION

Comme son nom lindique, cet outil va permettre la programmation de fonctions de


manie re graphique.
Une fonction graphique est repre sente e par un rectangle La
programmation se fait en cre ant un diagramme de flux ( Flow
Chart ) constitue uniquement de transitions et de jonctions.
En cliquant sur le point dinterrogation on pre cise la fonction a
programmer qui sera appele e par le tat qui de clenchera le ou
les calculs souhaite s.

Illustrons la de marche de mise en uvre de cet outil avec un exemple.

Nous
souhaitons
observer en sortie du
Chart la somme
de deux signaux
carre s damplitude
unitaire, de pe riode 2
s et dont un des deux
est de phase dun
quart de pe riode, soit
0.5 s.

Le contenu du Chart est


compose dun e tat (rectangle
aux coins arrondis) et dune
fonction
graphique
(rectangle).
Comme nous lavons vu
pre ce demment
pour
la
Simulink Function , la
signature de la fonction

53

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

pre cise son nom, ses arguments et sa valeur de retour : somme est le nom de la
fonction, a et b ses arguments et f1 sa valeur de retour.

Linvocation de la fonction, ou son appel, se fait pendant lactivite de le tat E1.

Notons que la somme des arguments se fait ici sur une transition par de faut qui pointe
une jonction. Le calcul est lance a loccurrence de le ve nement qui re veille la machine.

Le re sultat correspond a laffichage de


la variable y_out .
On remarquera que le premier re sultat
est donne apre s le premier pas de
calcul. Ici le Sample Time du
solveur est re gle sur 0.1s.

Lexplorateur de mode le ci-dessous affiche dans la colonne de droite le nom de la


fonction.
Les entre es et les sorties sont pre cise es ainsi que la variable locale y .

54

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Voici un petit exercice qui va enrichir le prcdent : on souhaite toujours


faire la somme des me mes signaux que pre ce demment mais cette somme sera
multiplie e par deux. Ce facteur sera donc une entre e du Chart .

Elments de rponse :

Lutilisation des fonctions graphiques dans un mode le Stateflow permet aussi de


simuler le comportement de syste mes continus. Prenons par exemple le cas dun
moteur a courant continu.
Linterface Simulink que nous allons mettre en place est la suivante :

55

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le moteur sera sollicite par un e chelon de tension. Un premier Switch permet


dinverser son sens de rotation, le second autorise ou pas lalimentation du moteur.
La premie re e tape consiste a tracer le diagramme de tats traduisant le comportement
du moteur au cours de son fonctionnement :

La variable dir donne le sens de rotation du moteur et on autorise ou non la


marche du moteur. Le moteur peut tourner dans un sens ou dans lautre suivant le tat
du Switch correspondant. Par conse quent dans le tat Marche la transition par
de faut pointe une jonction qui va tester la valeur daffectation de la variable dir .
Si dir vaut 1 le moteur tourne dans le sens trigonome trique sinon il tournera dans
le sens horaire.

56

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Maintenant il faut prendre en compte le comportement du moteur. Ecrivons alors le


mode le par repre sentation de tat dun moteur a courant continu.

Petit rappel sur la reprsentation dtat et les quations du moteur courant


continu :
Dun point de vue mathe matique nous de finirons des variables dentre, des
variables de sortie et des variables dtat. Ces dernie res sont observables a
chaque instant et donc mesurables. Les valeurs des variables de sortie vont
de pendre de celles des variables dentre e et des variables de tat. Les e quations liant
ces variables sont appele es quations de sortie. Par contre, elles ne suffisent pas
pour de crire le comportement dynamique du syste me. Cette dynamique correspond
a la variation des variables de tat au cours du temps de pendante des variables
dentre e et des variables de tat a un instant ante rieur. Dans le cas dun
comportement line aire ces e quations sont des e quations diffe rentielles. Elles
se crivent de la manie re suivante :

Ou U est un vecteur caracte ristique des variables dentre e, X des variables de tat et
Y des variables de sortie. A, B, C et D sont des matrices.
La premie re e quation traduit la dynamique du syste me line aire alors que la seconde
donne le volution de la sortie.
Concernant le moteur a courant continu, on rappelle les quatre e quations qui
de crivent son comportement dynamique :

La premie re issue de la loi dOhm :

La seconde issue de lapplication du the ore me du moment dynamique au


rotor :

La troisie me et la quatrie me qui correspondent aux e quations de couplage


e lectro-me caniques :
et
Ici,
est la tension aux bornes du moteur et
parcourt.
et
du rotor.

57

le courant qui le

sont respectivement le couple moteur et la vitesse de rotation

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

R est la re sistance de linduit et L linductance.


f est le coefficient de frottement visqueux.
kt et ke sont respectivement la constante de couple et la constante de force
e lectromotrice.
Nous allons remanier les e quations pre ce dentes pour se ramener a la
repre sentation de tat rappele e quelques lignes plus hautes. On trouve :

Et

!" #
!#
!$ #
!#

&

'
(

)#
+

0 1 9

)*

(
/
, - .0
+

1+

0 5
%4 6 7
0 0
2
(

0 0 9

Nous allons utiliser ces e quations dans la machine de tat. Pour ce faire il faudra
inse rer des fonctions graphiques ( Graphical Function ) qui seront appele es
par les e tats correspondants ( Arret, Marche.Sens_trigo et
Marche.Sens_horaire ).
On obtient donc le diagramme comple te suivant:

58

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Attention : pour la simulation il faut changer de solveur car nous simulons


le comportement dun syste me continu.
Le solveur : discrete ne convient plus. On pourra prendre par exemple le
solveur ode15s avec un pas variable variable-step :

Prenons par exemple, le cas du moteur Maxxon DCX32 dont voici les
caracte ristiques (http://www.maxonmotor.com/maxon/view/catalog/):

La cre ation dun masque permet de saisir les caracte ristiques du moteur choisi :

59

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour un e chelon de tension de 24V nous obtenons le re sultat suivant:

On retrouve bien les


donne es du constructeur :
en re gime permanent
le moteur atteint une
vitesse de 866 rd/s soit
8270 tr/min.
La constante de temps
est de 3.2 ms.

Comment crer un masque :


Lavantage du masque est le ventuelle re utilisation du mode le mais pour un moteur
qui posse de des caracte ristiques diffe rentes.

60

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Se lectionner le Chart , cliquer avec le bouton droit de la souris pour ouvrir le menu
contextuel et se lectionner successivement les commandes Mask puis Create
Mask :

Le diteur de masque saffiche :

Se lectionner longlet Parameters & Dialog :

61

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Saisir un premier champ du masque en cliquant sur lico ne Edit du panneau de


contro le :
Ajoute un champ

Ce qui saffiche
dans le masque

62

Valeur de la variable par de faut

Variable de finie
dans le mode le

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Les diffe rents champs du masque sont cre e s en cliquant successivement sur Edit .

Le dition du masque est termine e lorsque les six champs de notre exemple sont
de clare s.

En cliquant sur OK le masque est


en place.

63

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.8 MATLAB FUNCTION

Comme nous venons de le voir dans le paragraphe pre ce dent, il est possible dans un
Chart de faire appel a une fonction graphique.
Nous allons voir maintenant quil est aussi possible dappeler
une fonction directement programme e en langage MATLAB.
Ces fonctions sont appele es Embedded MATLAB
Functions . Elles sont repre sente es par un rectangle.

Un double-clic sur le bloc permet douvrir le diteur ( Editor ) de fonction dans lequel
il faut programmer la fonction de sire e :

Illustrons la me thode de mise en uvre de ces fonctions a


partir de lexemple du traitement des signaux sinusodaux
dun codeur SinCos Hyperface.

Ces capteurs optiques analogiques e quipent les


servomoteurs a dynamique e leve e pouvant donc e voluer
aussi bien a vitesse tre s lente qua vitesse tre s e leve e.

64

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Linformation image de la position est constamment disponible. La valeur de la


position est obtenue par le calcul nume rique de la fonction arc-tangente apre s
conversion des signaux sinus et cosinus. Ce calcul consiste en une interpolation fine
de pendante de la position grossie re du rotor :

La position grossie re du rotor correspond a sa position angulaire de termine e par le


comptage dimpulsions de la me me manie re que pour un codeur incre mental.
Lobjet de cette application est la mise en forme des trains dimpulsions ne cessaires a
la de termination de la position grossie re.
Pour ce faire nous allons construire un Chart comprenant quatre fonctions
MATLAB.
Pre parons linterface Simulink. Elle comprend deux e le ments principaux :

65

Le codeur qui de livre les signaux sinus et cosinus,


Linterpolateur qui ge ne re le train dimpulsions ne cessaire.

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour mettre en place le


bloc qui mode lise le
codeur nous allons
cre er un sous-syste me.
Se lectionner les sources
sinusodales, clic droit
et Create Subsystem
from Selection :

On obtient une
interface dont la
forme
est
la
suivante :

Un double clic sur le


bloc CodeurSinCos fait apparatre les signaux pre alablement saisis que nous allons
configurer :

66

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

On conside rera un signal damplitude lunite et de


pulsation 100 rad/sec

Un double-clic sur le Chart fait apparaitre le diagramme (de ja vu pre ce demment


lorsque nous avons de fini la Box ) que nous allons maintenant construire et
commenter :

67

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le diagramme comporte une transition par de faut pointant vers une jonction. Laction
associe e fait appel a quatre fonctions MATLAB inse re es dans deux Boxes . Attention
a bien indique le chemin des fonctions en pre cisant le label de la Box qui la
contient :
Dans la Box signaux_carres se trouvent les fonctions f1 et f2 qui vont
construire les signaux carre s de me me pe riode que les signaux sinusodaux dentre e.
Dans la Box detection_fronts se trouvent les fonctions detect_f1 et
detect_f2 qui vont ge ne rer les trains dimpulsions qui correspondent aux
changements de niveau logique des signaux carre s
Les fonctions f1 et f2 sappliquant aux deux entre es sinusodales sont similaires.
De me me que detect_f1 et detect_f2 .

Un double-clic sur la fonction f1 ouvre le diteur de fonction :

68

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La fonction programme e affecte la valeur 1 a la variable locale y1 si lentre e


u1 est positive sinon la valeur 0.

De me me pour f2 :

Concernant la de tection des fronts, un doubleclic sur la fonction detect_f1 ouvre


le diteur :
Si la valeur de la variable locale y1 est
diffe rente de sa valeur au pas de calcul
pre ce dent alors la sortie imp_1 prend la
valeur 1 sinon 0. Apre s le test la variable locale
y1_prec prend la valeur de la variable
locale y1 .

69

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

De me me pour la fonction detect_f2 :

Lexplorateur donne la
hie rarchie du mode le
construit. On y trouve :
Les Boxes ,
Les
fonctions
MATLAB,

On
y
trouve
aussi
les
caracte ristiques des diffe rentes
variables :

70

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour cette application nous avons choisi le solveur discrete (no continuous
states) avec un pas fixe de 0.001 s:La simulation sur 0.5 secondes affiche les re sultats ci-

contre.

On retrouve le train dimpulsions similaire a


celui quon aurait obtenu avec un codeur
incre mental.

71

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La pre sentation de lensemble peut e tre ame liore e en cre ant un masque qui inte gre
une image dans les blocs qui mode lisent le codeur et linterpolateur (voir la mise en
uvre dans lexemple du pont roulant au chapitre 5 consacre a la table de ve rite ) :

Remarque : un mode le e quivalent pourrait e tre construit sous Simulink. En effet


les blocs dont nous venons de programmer la logique existent :

72

le bloc Relay pour construire le signal carre (bibliothe que


Discontinuities ),
le bloc Detect Change pour en extraire les fronts (bibliothe que Logic
and Bit Operations .

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

2.9 TRUTH TABLE

Stateflow offre la possibilite dinse rer dans un mode le une


table de ve rite qui va traduire le comportement
combinatoire dun syste me ou dun sous-syste me. Cette
table de ve rite peut simplifier conside rablement les
diagrammes.
Une table de ve rite est repre sente e par un rectangle.
Un double-clic sur ce rectangle ouvre une fene tre dans laquelle apparaissent deux
tableaux : le tableau des conditions ( Condition Table ) et le tableau des actions
( Action Table ).
Dans ces tables nous trouvons : des conditions, des de cisions et des actions :

Condition

De cision

Action

73

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chaque table posse de aussi une colonne Description . Elle est destine e aux
commentaires. Comple ter ces champs nest pas obligatoire.
Dans la seconde colonne de la Condition Table apparaissent les conditions
auxquelles sont associe es des actions. La condition peut e tre vraie ( True :T ), fausse
( False :F ), vraie ou fausse ( - ).
Une Decision (Di) correspond a une colonne dans laquelle on prend en compte
le tat des conditions. A chaque de cision correspond une action repe re e par le nume ro
de ligne de l Action Table lie e a cette action.
Si nous prenons lexemple ci-dessus, la de cision D6 conside re (a_vraie ET b_vraie ET
c_fausse). Dans ce cas laction associe e est de finie a la quatrie me ligne de l Action
Table : send(OFF,E0), cest-a -dire quon de clenche le ve nement OFF qui se trouve
dans le tat E0 etc
Une premire application
De veloppons davantage lexemple pre sente plus haut.

74

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Dans Simulink nous


allons saisir le mode le
ci-contre constitue dun
Chart ,
de
trois
Switches affectant la
valeur 0 ou 1 aux trois
variables binaires a, b et
c.

Le diagramme de tat obtenu en double-cliquant sur le Chart est le suivant :

E0 est un e tat composite


dans lequel se trouvent les
trois e tats ON, OFF et
STOP.

Afin de limiter le nombre


de transitions et donc de
simplifier le diagramme il
est inte ressant dutiliser
une table de ve rite qui
renvoie ici les e ve nements
de type local start,
stop, on et off (en orange ).

Le fonctionnement est de crit dans la table de ve rite qui suit. Il est propre a le tat E0. La
table sera donc inse re e dans le tat E0.

On conside re la table de ve rite suivante pour traduire le comportement logique du


syste me :

75

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

c
0
0
0
0
1
1
1
1

b
0
0
1
1
0
0
1
1

a
0
1
0
1
0
1
0
1

Evnement associ
stop
on
on
off
off
on
on
start

Etat point
E0.STOP
E0.ON
E0.ON
E0.OFF
E0.OFF
E0.ON
E0.ON
E0.ON

Apre s avoir glisse -de pose la table de ve rite , nous allons saisir son e tiquette ( label ) :
arret_marche a la place du point dinterrogation :

76

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Un double-clic sur le
rectangle ouvre la
table de ve rite quil
faut
comple ter
conforme ment
au
mode
de
fonctionnement
normal
de
notre
syste me. Nous devons
ajouter des lignes et
des colonnes :

Ces ico nes du bandeau


supe rieur permettent
de le faire.

77

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La table de
est

ve rite

maintenant remplie.

Or pendant la simulation
il faut appeler la table de
ve rite alors que le tat E0
est actif.

On utilise ici le mot cle


on
vnement :
action ; .

La table de ve rite sera


appele e a chaque pas de
calcul.
Le ve nement de clencheur sera donc tick .

78

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La simulation est de sormais pre te a e tre lance e :

Au de marrage le tat STOP


est actif.

Le tat ON sera active a


loccurrence
de
le ve nement start, cesta -dire pour a, b, et c vrais.

Le tat OFF sera active a


loccurrence de le ve nement off,
cest-a -dire pour a et b vrais puis
c faux.

79

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Ainsi de suite

80

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 3
Dautres exemples
dapplication
du Chart

81

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 3 - Dautres exemples dapplication du


Chart
3.1- INITIALISATION DE LAXE LINEAIRE MAZET
Capteur
droit

Capteur
gauche

Laxe Mazet est un axe line aire didactise


commercialise par la socie te HTCR
Didactic.
Deux capteurs TOR de fin de course sont
monte s sur cet axe asservi en position: un
a lextre mite gauche et un a lextre mite
droite. Ils sont dispose s juste avant les
bute es e lastiques gauche et droite.

Les deux capteurs sont utilise s pour le


lancement d'une routine de se curite afin
que le moteur ne soit jamais alimente
rotor bloque sur les bute es. De plus, le capteur de gauche est utilise pour l'initialisation
du compteur associe au codeur qui assure lasservissement en position.
Dans cette application, on sinte resse a la phase dinitialisation de laxe.
Linitialisation doit respecter le cahier des charges suivant :

Apre s appui sur le bouton dinitialisation si le capteur gauche na pas de tecte la


pre sence du chariot celui-ci se translate a vitesse rapide en boucle ouverte sur la
gauche. De s que la pre sence du chariot est de tecte e a gauche il repart a droite a
vitesse lente toujours en boucle ouverte jusqua ce que le capteur gauche commute
a nouveau.
Si au moment de lappui sur le bouton dinitialisation, le chariot est a gauche et
donc que le capteur gauche a de tecte sa pre sence, il se de place vers la droite a
vitesse lente en boucle ouverte jusqua ce que le capteur gauche commute.
Au moment de la commutation du capteur gauche lorsque le chariot se de place
vers la droite, la boucle en position est ferme e et la consigne de position impose e
nulle. Le compteur associe au codeur est simultane ment initialise . Le compteur est
incre mente pour un de placement vers la droite et de cre mente pour un
de placement vers la gauche.
Le cycle dinitialisation de laxe peut e tre repre sente par lalgorigramme suivant :

82

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

De but

Initialiser

Capteur
gauche
Aller a gauche a
vitesse rapide (BO)

Capteur
gauche

Aller a droite a
vitesse lente (BO)

Capteur
gauche
Initialiser le
compteur

Fin

83

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Mettons linterface Simulink en place :

En entre e du Chart (Carte) nous retrouvons les informations binaires transmises


par le capteur fin de course gauche et le bouton poussoir dinitialisation, la valeur du
compteur associe au codeur avant linitialisation. En sortie sont affiche es la commande
du moteur (rotation rapide dans un sens : M=-10, lente dans lautre : M=1, arre t : M=0),
le tat dune variable binaire de gestion de la boucle dasservissement (boucle ferme e :
BF=1, boucle ouverte BF=0), et la valeur courante du compteur.
Lasservissement en position est de fini par le sche ma-blocs :

84

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Une solution possible pour la phase dinitialisation qui reprend le cahier des charges
peut e tre celle qui suit :

85

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

3.2- SIMULATION DU FONCTIONNEMENT DUN CHRONOMETRE


Les smartphones du marche disposent tous
dhorloges diverses personnalisables, de
re veil, de chronome tre, de compteur a
rebours etc
Nous nous inte ressons dans le cadre de cet
exercice au chronome tre dun smartphone
et en particulier au lancement du
chronome trage, au chronome trage, a larre t
du chronome trage, a laffichage du temps
interme diaires et du nombre de tours, ainsi
qua la remise a ze ro.
Nous disposons de trois affichages : le premier pour le chronome trage, le second pour
les temps interme diaires auquel est associe
le troisie me qui affiche le nombre de tours
effectue s.
Les temps sont affiche s en heures, minutes,
secondes et centie mes de seconde.

Le fonctionnement du chronome tre est le suivant :

Un premier appui sur le bouton Sart/Stop lance le chronome tre. Un second


appui arre te le chronome tre.
Lappui sur le bouton Lap Time affiche un temps interme diaire et le tour
( lap ) correspondant.
A chaque instant, lappui sur RESET remet le chronome tre a ze ro.

Pre parons maintenant linterface Simulink qui servira pour la simulation.


Une ide e consiste a se parer les fonctions afficher le temps chronomtr et
afficher le temps intermdiaire et le nombre de tours . Nous aurons par
conse quent deux Charts a construire.
Dautre part, il faut de finir les entre es et sorties de chaque Chart .

86

Concernant les entre es du premier : les informations lie es aux actions


sur les boutons de commande (Start/Stop, Reset) et un signal dhorloge
pour construire le temps chronome tre .

Concernant les sorties du premier : le temps chronome tre .

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Concernant les entre es du second : le temps chronome tre , linformation


Reset et linformation Lap Time .

Concernant les sorties du second : le temps interme diaire, le nombre de


tours.

Nous pouvons synthe tiser lensemble dans le tableau qui suit :


Entres
Chart 1
Start/Stop
Reset
Lap Time
Signal dhorloge
Temps chronomtr
Temps intermdiaire
Nombre de tours

Sorties
Chart 2

Chart 1

Chart 2

vnement. ext.

Linterface peut avoir la forme suivante :


Affichages

Signal dhorloge

Commande

Chart 1

Chart 2

87

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour la fonction chronome trage,


soit
le
Chart
1 :
Chronomtre , une solution
possible est celle expose e cidessous :

88

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le diagramme est compose des e tats initialisation , arret et du sousdiagramme ( Subchart ) chronomtrage .

Lutilisation du Subchart permet de


condenser les diagrammes afin de faciliter
leur lecture.

Pour cre er un Subchart , se lectionner les


e tats qui en feront partie. Clic droit pour
ouvrir
le
menu
contextuel
puis
Subchart :

Affichage

Lorsque cet e tat est active


laffichage du chronome tre est
initialise ainsi que les variables
qui seront incre mente es pour la
de termination
du
temps
chronome tre .

Variables

89

Linitialisation :

Les modes de marche :

Les figures ci-dessous reprennent


les diffe rents modes de marche du
chronome tre tels quils ont e te
de crits plus haut.

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

90

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Inte ressons-nous maintenant au chronome trage :


Ce bloc doit permettre
laffichage du temps
chronome tre exprime
en heures, minutes,
secondes et centie mes
de seconde.
Comme nous pouvons
le voir sur la figure qui
suit,
chronometrage
est un e tat compose de
quatre e tats paralle les.
Chacun de ces e tats
permet le de compte
respectivement
des
centie mes de seconde,
des secondes, des
minutes et des heures.

91

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le de compte des centie mes de seconde :

Lorsque le tat compteur_centime_sec est active , le tat C_csec est lui aussi active .
La pe riode du signal dhorloge est de 0.01s et la largeur dimpulsion est de 50% de la
pe riode.
A chaque e ve nement clk , cest-a -dire a chaque front montant du signal dhorloge
(tous les 0.01 s), les transitions 1 et 2 sont e value es. Dabord la transition 1 et ensuite
la transition 2.
La transition 1 est valide lorsque sur un front montant du signal dhorloge le nombre
de centie mes de seconde vaut 99. Dans ce cas la variable csec est initialise e.
Sinon, a chaque front montant du signal dhorloge la variable csec est incre mente e
dune unite .
La sortie csecondes affiche e vaut csec a chaque instant que dure lactivite de
le tat compteur_centieme_sec .

Remarque : il faut noter quici lordre de valuation de la validite des deux transitions
est important. Inverser cet ordre ne conduit pas au re sultat attendu. En effet, si tel est
le cas, un front montant du signal dhorloge sera toujours de tecte , ainsi la transition
devenue la premie re sera toujours valide, alors que la deuxie me transition ne le sera
jamais.

92

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le de compte des secondes :

Pendant le de compte des centie mes de seconde, le tat attente est active . De s que
99 centie mes de seconde sont affiche s, le tat C_sec est active . Le de compte des
secondes commence. Il se fait de la me me manie re que pour les centie mes de seconde
tout comme les de comptes des minutes et des heures.
Nous avons vu comment re aliser le chronome trage et afficher le temps chronome tre .

Quen est-il de la fonction


afficher
le
temps
intermdiaire et le nombre
de tours ?

93

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Voici une proposition de solution :

Nous distinguons ici deux e tats: un e tat dinitialisation et un e tat composite pour
laffichage du temps interme diaire et du nombre de tours.
Laffichage du temps interme diaire est obtenu en figeant le temps chronome tre . Pour
ce faire il suffit de de sactiver le tat temps_intermdiaire lors de lappui sur la
touche lap . Se faisant on incre mente dune unite la variable N dont la valeur
correspondra au nombre de tours effectue s.
Le tat dinitialisation est active lors de lappui sur le bouton Reset . A cet instant, la
variable N vaut ze ro et laffichage est initialise .
Affichons maintenant lexplorateur de mode le :

Dun co te larborescence comple te du mode le est affiche e :

94

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

De lautre lensemble des entre es, sorties, e ve nement, pour chacun des diagrammes :

Ici pour le
Chart1 :

Chronomtre

95

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Et ci-dessous pour le Chart2 : Temps intermdiaire & Tours :

96

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

3.3- PILOTAGE DUNE PLATEFORME OMNIDIRECTIONNELLE


La socie te franaise Sovam installe e a
Parthenay met au point et fabrique
des e quipements destine s a la
maintenance ae ronautique.
La plateforme omnidirectionnelle
Easymovx en fait partie et peut e tre
utilise e dans des ateliers de peinture
par exemple.
Sa base est e quipe e de quatre roues
Mecanum
(ou
sue doises)
inde pendamment motorise es.
Des
batteries
permettent
lalimentation
e lectrique
des
diffe rents
composants
et
en
particulier des moteurs. Une centrale
hydraulique permet lalimentation
des deux ve rins permettant a la
plateforme de voluer verticalement
dune hauteur de 1m a 8m par
rapport au sol.

Le pilotage de la plateforme se fait en


agissant sur deux joysticks ; un pour
commander la monte e et la descente
de la plateforme et le second pour
commander le de placement de la
base.

97

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le de placement de la base est


omnidirectionnel, cest a dire
qu elle peut se de placer
suivant toutes les directions et
en particulier late ralement ou
en diagonal, ou bien encore en
rotation autour dun axe
vertical passant par le centre
de la base. Toutes les
combinaisons sont possibles
sans roues directrices.

Cette base est mue par quatre roues Mecanum motorise es.
Elles sont constitue es de deux flancs solidaires du moyeu
entre lesquels des galets oriente s a 45 par rapport a laxe de
la roue peuvent tourner librement par rapport a leur axe
longitudal.

Le but de cette application est de laborer un mode le de commande des moteurs pour
les de placements longitudinaux, late raux, diagonaux et de rotation autour de laxe
vertical.
Auparavant, une e tude cine matique doit e tre mene e pour e tablir le mode le
cine matique inverse qui met en relation le de placement de la plateforme avec la
rotation des moteurs qui entrainent les roues.
Le parame trage choisit pour e crire ce mode le est le suivant :

98

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

En formulant lhypothe se de roulement


sans glissement des galets par rapport au
sol, on montre que le mode le inverse
se crit :
&

<
=

1
1
>
1
1

1
1
1
1

?
BC
?
@ ABD E
?
?

Inte ressons-nous maintenant a la commande des moteurs pour diffe rents


de placement de la plateforme.
Compte tenu du parame trage pre ce dent, nous affecterons la valeur 1 a la variable Mi
associe e a la rotation dune roue i lorsque celle-ci tourne dans le sens direct, -1 pour
une rotation dans le sens indirect, et O lorsque la roue est a larre t.
Ainsi la plateforme avancera suivant Y si : M1 = M2 = M3 = M4 = -1
Dautre part on conside rera que les moteurs, lorsquils tournent, le font a la me me
vitesse.
Linterface Simulink se pre sente de la manie re suivante :

99

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

On y retrouve les mode les associe s au pupitre de commande, et a la commande des


moteurs.

Un double-clic sur le bloc Pupitre de


commande ouvre la fene tre ci-contre:
La sortie 1 correspond a la mise en service de
la commande des de placements.
Les sorties repe re es 2 a 11 autorisent les dix
mouvements possibles de la plateforme :
longitudinaux, late raux, diagonaux et de
rotation.

En sortie du bloc Plateforme


EasymovX on retrouve les quatre
roues motorise es inde pendamment
les unes des autres.
La valeur de la variable associe e au
sens de rotation des roues donc des
moteurs saffiche dans le rectangle
jaune. Pour ce faire, il faut
se lectionner la liaison entre la sortie
du bloc Plateforme EasymovX
et lentre e du bloc Roue puis
clic droit et se lectionner la ligne du
menu contextuel : Show Value
Label of Selected Port .

100

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Concernant maintenant la
commande des moteurs, un
double-clic sur la bloc
Plateforme EasymovX
permet
dacce der
au
Chart suivant :

101

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La simulation pour un de placement late ral droit donne les re sultats suivants :

Pour comple ter cet exercice, il peut e tre


inte ressant dajouter la gestion de la monte e
et de la descente de la plateforme en ajoutant
le deuxie me joystick du pupitre de commande
et en combinant les diffe rents mouvements
alors envisageables.

102

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

3.4- TRAITEMENT DES INFORMATIONS DELIVREES PAR UN CODEUR


SINCOS

Reprenons lexemple du codeur SinCos


Hiperface de ja pre sente au chapitre 4
lorsque nous avons introduit la fonction
MATLAB.
Nous avons vu comment ge ne rer le train
dimpulsions servant a la de termination de la
position angulaire grossie re du rotor du
capteur.

Nous allons maintenant construire les diagrammes qui donneront a la fois la position
grossie re et la position fine pour un seul sens de rotation.
La position fine est obtenue au moyen de la fonction arc-tangente interpole e par un
algorithme entre deux positions grossie res conse cutives. Cette interpolation nest pas
prise en compte ici.

Inte ressons-nous a la de termination de la position grossie re et pre parons linterface


Simulink :

Goto

Mettons tout dabord en place les signaux


sinusodaux de livre s par le codeur. Les sorties
des blocs sont relie es a des blocs Goto pour
alle ger le mode le en limitant le nombre de
liaisons. Ce bloc permet de transmettre le
signal a un bloc From qui portera le me me
nom.
Ces deux blocs se trouvent dans la
bibliothe que Signal Routing de Simulink.

103

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Ensuite vient le Chart qui reprend la structure vue au chapitre 4:

From

Nous disposons a lentre e du Chart des trains dimpulsions imp_cos et


imp_sin qui vont permettre dobtenir en sortie la position angulaire S_pos_gros
en radians qui sera convertie en degre s. Le codeur de livre 512 pe riodes. Une impulsion
correspond a un quart de pe riode comme nous lavons de ja vu.
Dou le diagramme :

On initialise la
comptage i .

variable

de

Apre s de tection dune impulsion


on affiche la rotation en radians
du rotor du codeur.
A chaque impulsion le compteur
est incre mente dune unite .

La simulation dune dure e de 0.03s donne les re sultats suivants :

104

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour une pulsation des signaux


sinusodaux de 100 rad/s le
rotor du codeur a atteint ici une
position angulaire de 35,14.

105

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Inte ressons-nous maintenant a la de termination de la position fine a partir de la


fonction arc-tangente.
Pre parons linterface Simulink correspondante:

Pour afficher la position angulaire fine du rotor du capteur il est ne cessaire :

de diviser le sinus par le cosinus (bloc Divide dans la bibliothe que Math
Operations de Simulink) et dextraire langle avec la fonction arc-tangente
(bloc atan dans la bibliothe que Math Operations de Simulink),
de connatre le signe du sinus et du cosinus pour connaitre le quadrant dans
lequel se situe langle a afficher (bloc Sign dans la bibliothe que Math
Operations de Simulink).
Le re sultat que donne la
fonction atan met
clairement en e vidence
son changement de
signe a chaque quart de
pe riode des signaux
dentre e, tous les /2
radians. On note aussi
une
discontinuite
lorsque le cosinus est
nul.

Par
conse quent
la
position fine de pend du
signe du cosinus et du
signe du sinus qui de finit
ainsi le quadrant de volution de la position angulaire du rotor.

106

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La sortie du bloc Sign vaut 1 si son entre e est positive, -1 si elle est ne gative, sinon
elle vaut 0.

Pour comple ter linterface Simulink nous


allons synthe tiser les re sultats de la
simulation dans un me me Scope en
utilisant le bloc Mux :

Linterface globale aura alors lallure suivante :

107

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Linterface Simulink mise en place nous allons tracer le diagramme qui permet
dobtenir la position fine. Comme nous lavons vu pre ce demment il faut identifier les
quatre quadrants et adapter la position donne e par la fonction arc-tangente pour
chacun des quadrants. Lope ration consiste a translater les valeurs retourne es de
ou 2 suivant le cas.
Une solution possible est donne e ci-dessous, elle fait appel a une fonction graphique :

Quatrie me quadrant

Premier quadrant
Initialisation des variables

Deuxie me quadrant

Troisie me quadrant

Fonction graphique

Apportons quelques commentaires sur ce diagramme :


Si le sinus et le cosinus sont positifs la position e volue dans le premier quadrant et vaut
la valeur retourne e par le bloc atan jusqua ce que le cosinus change de signe.
A linstant ou le cosinus change de signe, la position e volue dans le second quadrant.
Il faut alors ajouter a la valeur retourne e par la fonction arc-tangente jusqua ce que
le sinus change de signe.
A linstant ou le sinus change de signe, la position e volue dans le troisie me quadrant. Il
faut alors ajouter a la valeur retourne e par la fonction arc-tangente jusqua ce que le
cosinus change de signe.
A linstant ou le cosinus change de signe, la position e volue dans le quatrie me quadrant.
Il faut alors ajouter 2 a la valeur retourne e par la fonction arc-tangente jusqua ce que
le sinus change de signe.
Les quatre quadrants e tant parcourus, la variable N est incre mente e dune unite etc

108

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour la simulation nous allons choisir un solveur Discrete a pas variable avec un
pas maximal de 0.0001s. Ce solveur est adapte lorsque le passage dun e tat a lautre
doit se faire rapidement. De plus il diminue le temps de calcul de la simulation :

La simulation donne les re sultats suivants :

Pour cette simulation nous disposons entre deux positions grossie res conse cutives de
cinquante positions fines interme diaires.
Les positions grossie re et fine du rotor du codeur affiche es en degre s sont donne es
ci-dessous :

109

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Remarque : la de marche serait identique pour le traitement des signaux sinusodaux


de sortie dun re solveur.

110

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 4
Le Chart (MATLAB)

111

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 4 - Le Chart (MATLAB)

Le Chart (MATLAB) permet dutiliser directement la syntaxe Matlab dans un e tat


ou dans le tiquette dune transition. Il est donc possible de programmer des structures
algorithmiques de base dans un e tat.

4.1- EXEMPLE DE LA REGULATION TOR DUN FOUR


Reprenons lexemple de la re gulation TOR de la tempe rature dun four industriel :

On conside re un re gulateur TOR avec hyste re sis.


Nous avions programme la logique de commande en utilisant un Flow Chart :

112

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le re sultat de la simulation e tait celui-ci :

Nous
allons
reprendre
le
sche ma-blocs
et
remplacer
le
Chart par un
Chart(MATLAB) .

Il faut cre er lentre e u et la sortie S du Chart(MATLAB) . Pour ce faire lancer


lexplorateur de mode le et les inse rer dans le mode le :

113

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Reconstruire le sche ma-blocs :

Un double-clic sur le Chart (MATLAB) permet de louvrir :

Lico ne MATLAB apparait en


bas a gauche de la fene tre
indiquant ainsi la nature du
Chart .

On retrouve les me mes objets


graphiques que ceux utilise s
pour le trace dun diagramme
ordinaire .

Nous allons cre er un e tat dans lequel nous allons saisir les lignes de code Matlab
correspondant au comportement logique du re gulateur TOR avec hyste re sis.
Dans le cas pre ce dent nous avions utilise une structure If-elseif . Nous allons faire
de me me ici en respectant la syntaxe Matlab:

114

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le re sultat de la simulation est bien identique a celui obtenu pre ce demment :

Pour exploiter pleinement les avantages de cet outil une connaissance approfondie de
Matlab est indispensable.

115

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 5
La State Transition
Table

116

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 5 - La State Transition Table

Inte ressons-nous maintenant a la table e tat-transition.


Apre s un glisse -de pose , un double-clic sur le bloc State Transition Table ouvre la
fene tre suivante :

Par de faut, la table comporte deux lignes et trois colonnes. Dans la premie re colonne
sont repre sente s les e tats. Dans la seconde et la troisie me seront de finies les
transitions.
Il est possible dajouter des lignes et des colonnes en cliquant sur les ico nes :

117

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Lorsquon inse re une ligne il est possible de prendre en compte la hie rarchie des e tats
inse re s :

Un clic sur lico ne

du menu permet la visualisation du diagramme trace .

Par de faut :

Exemple non pris en compte dans


le trace du diagramme.

118

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour ajouter une transition entre ces deux e tats, il faut remplir la case adjacente au
premier e tat :
Si [a] est vraie, la transition pointe vers le tat suivant.

Comple tons cette table en introduisant une deuxie me transition : si [a] est vraie alors
la transition pointe le tat 2, sinon si [b] est vraie la transition pointe le tat 3 quil faut
ajouter ( State Row ) :

119

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour construire un e tat composite, il faut introduire des e tats enfants ( Child State
Row ) :
Cliquer sur le tat 3 et inse rer deux e tats enfants et les transitions suivantes :

Etat composite masque

Les actions associe es aux e tats se saisissent directement dans les e tats en utilisant les
mots-cle s correspondants :

120

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Nous venons de voir succinctement les principes de base de la construction dune table
e tat-transition.
Concentrons-nous de sormais sur lapplication qui suit

5.1- EXEMPLE DU CODEUR INCREMENTAL

Nous allons conside rer le codeur incre mental AEDB9140-F12 fabrique par la socie te AVAGO
Technologies.

121

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Ce codeur posse de trois voies : une voie A et


une voie B en quadrature, une voie Z
permettant le comptage des tours du disque.

La re solution de ce codeur est de 500 points


par tour.

Lobjectif de cette application est de de terminer la position angulaire du disque en


fonction des signaux A et B reus. On conside re que ces signaux sont des signaux carre s.
Le de compte du nombre de tours nest pas aborde ici.
Pre parons linterface Simulink :

Ce mode le comprend les signaux A et B en quadrature, des blocs permettant la


de tection des fronts montants et descendants sur ces signaux, la table e tat-transition,
un convertisseur du nombre dimpulsions en degre s et laffichage de langle de rotation
du disque.
De finition des signaux A et B (bloc Pulse Generator dans le menu Sources de
Simulink) :

122

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Les signaux ont une amplitude unitaire et une pe riode de 0.1 s.


La de tection des fronts (bloc Detect Change dans le menu Logic and Bit
Operations de Simulink ):

123

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour la de termination de langle de rotation du disque on propose le diagramme e tattransition suivant :

Il sagit de mettre en place un


compteur en introduisant la
variable i qui est incre mente e a la
de tection dun front sur A ou B.
Un calcul rapide permet de
valider la simulation. En effet la
pe riode des signaux e tant de 0.1 s
une simulation sur 10 s ge ne re 4
impulsions fois 100, soit 400
impulsions. En convertissant le
nombre dimpulsions en degre s
on trouve une rotation du disque
qui vaut 288.

Ce que donne bien la simulation avec le diagramme pre ce dent :

124

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Mettons maintenant en place la table e tat-transition :

125

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La simulation donne bien le re sultat attendu :

126

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 6
La Truth Table

127

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 6 - La Truth Table


Si le syste me dont nous voulons simuler le comportement est un syste me combinatoire
nous pouvons inse rer dans le mode le Simulink une table de ve rite sans construire de
machine de tat, cest-a -dire sans cre er de Chart .

En
effet
dans
la
bibliothe que de Stateflow
apparait lico ne dune table
de ve rite ( Truth Table ).

Un simple glisse -de pose fait


apparaitre la table de ve rite
dans le mode le Simulink.

Un double clic sur le composant


ouvre la table de ve rite (elle est
pre -remplie a titre dexemple).
Celle-ci est rigoureusement
identique a celle dont il a e te
donne
une
description
pre ce demment.



Cest loccasion de traiter une
nouvelle application.

128

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

6.1- EXEMPLE DE LA COMMANDE DUN PONT ROULANT

Nous allons construire un mode le de


la commande dun pont roulant pour
le de placement de faibles charges.
(2t maxi)
La charge se de place dans un plan
vertical. Elle peut monter, descendre,
se de placer a droite, se de placer a
gauche.
Il sagit dun palan ABUS de la
gamme HB (www.abus-levage.fr)
Lope rateur
dispose
dune
commande filaire a quatre boutons
pour de placer la charge.

Nous allons donc e laborer e tape par e tape le mode le suivant :

Dans cet exercice nous ne prenons pas en compte leffet des capteurs fin de course
haut, bas, droite et gauche. Vous pourrez ulte rieurement comple ter le mode le si vous
le souhaitez.

129

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Les de placements de la charge sont assure s par une commande filaire a quatre
boutons :

d , commande le sens D,
g , commande le sens G,
m , commande la monte e M,
b , commande la descente B.

Des conditions particulie res sont envisage es :

si par erreur on actionne simultane ment


d et g la priorite est accorde e au
sens gauche G,
si par erreur on actionne simultane ment
m et b la priorite est accorde e a la
monte e de la charge,
si les quatre boutons sont appuye s toutes
les commandes sont annule es.

La table de ve rite ci-contre de finit lensemble les


conditions dexploitation du pont roulant.

Le codage binaire re fle chi est ici adopte pour


faciliter la simulation qui suivra. En effet, un seul
Switch sera manipule a chaque changement
de ligne de la table au cours de la phase de test.

10

11

12

13

14

15

16

En lisant la table de ve rite qui est donne e, nous pouvons nous apercevoir qua des
combinaisons des variables dentre es diffe rentes peuvent correspondre une me me
action. Cest le cas par exemple pour les lignes 8 et 9 ou 1 et 11 Cette remarque devra
e tre prise en compte au moment de la cre ation de la table de ve rite sous Stateflow.

Pre parons tout dabord linterface Simulink.


La table de ve rite dispose de quatre variables dentre e et de quatre variables de sortie
pouvant prendre la valeur 0 ou 1.

130

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

A partir de lexplorateur de mode le il convient dajouter ces entre es et ces sorties au


bloc pre alablement mis en place dans le mode le.

Lexplorateur est accessible par lico ne

pre sente dans le bandeau supe rieur.

On rappelle que lajout de donne es ( data ) se fait en


cliquant sur lico ne add data au milieu du bandeau
supe rieur de lexplorateur.
On ve rifie bien que les entre es et les sorties ont e te cre e es.
On ajoute ensuite les quatre Switches (bibliothe que
Signal Routing de Simulink) et les quatre Display
Blocks (bibliothe que Sinks de Simulink) qui afficheront
les valeurs de leur entre e.
Switch

131

Display Block

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Une fois linterface Simulink pre te nous nous inte ressons a la table de ve rite :

Cette table contient :

les quatre conditions b = 1, m = 1, g = 1, d = 1,


seize de cisions (repe re es de D1 a D16) correspondant aux seize lignes de la
table de ve rite donne e,
neuf actions (repe re es de 1 a 9).

Rappel sur la lecture de la table : a une combinaison des entre es, par exemple la
de cision D5 (F, T, T, F), correspond une action, ici laction 4, qui consiste a affecter les
valeurs 0 a B, 1 a M, 1 a G et 0 a D.

132

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La table de ve rite ainsi remplie permet de lancer une simulation et de ve rifier la validite
du mode le.

Choisir un temps de simulation infini et double-cliquer sur les Switches pendant la


simulation pour valider le comportement du pont roulant.

Pour ame liorer la pre sentation graphique du mode le il est possible dajouter de la
couleur aux e le ments ou de cre er un masque sur la table de ve rite et y ajouter une
photo repre sentative du syste me mode lise .


Pour ajouter de la couleur :
Se lectionner le bloc a colorier, afficher le menu contextuel par un clic droit, puis
Format , Background Color . Choisir une des couleurs propose es ou bien
personnalise e la en cliquant sur Custom .

Pour cre er un masque sur la table de ve rite et y inse rer une photo :

133

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Se lectionner
la
table de ve rite , puis
clic droit, Mask ,
Create Mask
La fene tre suivante
souvre. Il sagit de
le diteur
de
masque ( Mask
Editor

134

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Au bas de le diteur
se lectionner :
image (show a
picture on the
block)

135

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La syntaxe qui permet laffichage dune image apparat en bas a gauche de la fene tre.
Le fichier de limage est nomme pont_roulant .

Attention : pour que limage saffiche, ce fichier doit obligatoirement e tre pre sent dans
le Path cest-a -dire a lendroit au le fichier Simulink est sauvegarde .
Il suffit alors de saisir la commande : image ( pont_roulant.jpg )

Limage doit apparaitre dans le bloc. Pour supprimer le masque, il faut louvrir et
cliquer sur le bouton Unmask en bas a gauche de la fene tre.

136

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Validation du mode le :

Ligne 1 de la
table de ve rite :

Ligne 3 de la
table de ve rite :

137

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Ligne 11 de la
table de ve rite :

Etc

138

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 7
Le prototypage

139

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre7 Prototypage
Dans ce chapitre consacre au prototypage, nous proposons une application prenant
comme support cible une carte Arduino Mega 2560.

7.1 ARDUINO ET SIMULINK


Pour pouvoir communiquer avec la carte Arduino il faut te le charger et installer
Simulink Support Package for Arduino Hardware disponible sur le site de
Mathworks :

Sont mis a disposition deux bibliothe ques : Common et Ethernet Shield ainsi
que quelques exemples.

La bibliothe que Common regroupe lensemble des e le ments permettant la


re alisation dun programme qui une fois compile pourra e tre charge dans la
cible comme nous le verrons au paragraphe qui suit:

140

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La bibliothe que Ethernet Shield contient des e le ments pour des applications sur
le protocole Ethernet :

Nous ne nous inte resserons pas a cette bibliothe que dans le cadre de ce document.

7.2 LA CARTE ARDUINO MEGA 2560


Lutilisation de cette plateforme de prototypage est inte ressante, dune part, pour son
faible cou t et, dautre part, pour un fonctionnement en mode externe. Ainsi, les
Switches saisis dans le mode le Simulink permettent un contro le en direct de la
cible suite a leur commutation.
Quelques caracte ristiques :
Microcontrleur
Tension de fonctionnement
Tension d'alimentation (recommande)
Tension d'alimentation (limites)
Nombre d'E/S
Nb ports "Analogique/Numrique"
Courant max. par E/S
Courant pour broches 3.3 V
Mmoire Flash
SRAM

141

ATmega2560
5V
7- 1 2 V
6 - 20V
54 (dont 14 pouvant gnrer des
signaux PWM)
16
40 mA
50 mA
256 KB (ATmega328) dont 8 KB utilis par
le bootloader
8 KB (ATmega328)

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

EEPROM
Vitesse horloge

4 KB (ATmega328)
16 MHz

ATmega 2560
Port USB

Entre es / sorties nume riques

LED pin 13

Boutons
Reset

Alimentation
externe

LED de
communication

Entre es
analogiques

7.3 APPLICATION : LE GYRODRIVERTM


Le support choisi est un tournevis intuitif sans fil :
le Gyro DriverTM BDCS36G Black & Decker qui
inte gre une LED qui, dune part, e claire les zones
de vissage ou de vissage sombres et, dautre part,
renseigne lutilisateur sur le tat de loutil.
Ce tournevis innovant est, e galement, e quipe
dune batterie Lithium Ion de 3.6 V.

142

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Bouton poussoir

La mise en service du Gyro DriverTM est


assure e en appuyant sur le bouton
poussoir au dos de la poigne e.
Le contro le de la vitesse de rotation et le
sens de vissage sont obtenus par la
rotation du poignet de lutilisateur. Un
gyrome tre permet de ge ne rer le signal de
commande du moteur.

La LED monte e sur lavant de loutil assure


deux fonctions : e clairer la zone de travail
en appuyant sur le bouton poussoir et
informer lutilisateur de le tat du
gyrome tre :

LED

tmoin
de
batterie
faible :
clignotement rapide de 5 secondes
lorsque la charge de la batterie
commence a faiblir.
tmoin de surchauffe : quand la
tempe rature du circuit (pont en H) est trop e leve e, la LED clignote 5 secondes en
alternant un clignotement court et un clignotement long. Dans ce cas il convient
de laisser refroidir le tournevis pour quil atteigne la tempe rature de
fonctionnement optimale denviron 24.
Arrt automatique : pour pre server la charge de la batterie en cas dactivation
fortuite, le tournevis se teint automatiquement apre s 45 secondes de
fonctionnement continu. La LED clignote alors rapidement pendant 5 secondes
avant extinction.
Cette application a pour but de valider un mode le de commande en chargeant le
programme correspondant dans la carte Arduino Mega 2560 dont une pre sentation
sommaire a e te faite pre ce demment.
Nous allons nous inte resser a la gestion de la LED et de lalimentation du moteur du
Gyro DriverTM.
Commenons par un montage simple qui consiste a allumer et e teindre la LED au
moyen dun Switch . Linterface Simulink sera donc la suivante :

143

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La LED sera ici branche e sur la sortie 8 de la carte. Laccompagner dune re sistance en
se rie nest pas indispensable.

Et le Chart :

144

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Le solveur choisi est discret a pas fixe de 0.1 s. Dans notre exemple, le pas de calcul na
pas lieu de tre trop fin. Le temps de simulation doit e tre infini pour profiter du mode
externe :

Le
mode
externe
( external ) est se lectionne
dans le menu de roulant a
droite
du
temps
de
simulation :

Pour charger le programme une fois compile il faut ve rifier les parame tres de
configuration de la cible en cliquant sur la me me ico ne du bandeau supe rieur que celle
permettant dacce der au choix du solveur :
Dans le menu de gauche, se lectionner longlet : Run on Target Hardware .
Choix de la carte.

De tection automatique du port COM.


A cocher pour ve rifier le
fonctionnement en temps
re el.

145

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

La compilation et la ge ne ration du code se font en cliquant sur lico ne Deploy to


Hardware du bandeau supe rieur:

Au moment du te le chargement les LED Rx et Tx de la carte clignotent :

Une fois le programme charge cliquer sur le bouton Run


et agir sur le
Switch . La LED sallume et se teint conforme ment au Chart saisi
pre ce demment.
Modifions le diagramme pour que la LED clignote toutes les secondes lorsque le
Switch est sur 1 :

146

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Une fois le programme te le charge , le comportement de la LED est bien celui attendu.

Apre s se tre inte resse au ca blage de la LED, nous allons voir comment piloter le moteur.
Commenons par un programme simple identique au pre ce dent : lorsque le Switch
est a 1 le moteur tourne lorsquil est a 0 le moteur sarre te. Nous ne conside rerons
quun seul sens de rotation.
Linterface Simulink est la me me en remplaant LED par moteur :

147

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Pour le ca blage du moteur nous avons besoin des composants suivants :

une platine dexpe rimentation ( breadboard ),


un moteur a courant continu de faible puissance,
une alimentation externe (facultatif si le moteur est de faible puissance)
un transistor MOSFET (IRF520 par exemple) qui permettra la commande du
moteur comme le ferait un simple interrupteur,
et une diode (1N4007) pour prote ger le MOSFET des e ventuels retours de
courant lors de larre t du moteur.

Ces composants courants sont fournis avec les diffe rents kits du marche .

148

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Moteur CC

Diode

MOSFET

Alimentation externe

Ce montage est re alise a partir du sche ma e lectrique suivant :


M
MEGA
2560
8

9V

+
-

GND

Une fois le programme charge , le comportement du moteur est bien celui attendu.

149

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Nous venons de voir les deux montages de base qui vont nous servir pour construire
un prototype de tournevis. En effet nous aurons besoin dallumer une LED et de faire
tourner un moteur (dans un seul sens pour ce prototype).
Dans un nouveau diagramme, nous allons prendre en compte, par exemple, la tension
de la batterie qui doit e tre suffisante pour utiliser le tournevis. Pour informer
lutilisateur de dune tension trop faible, la LED devra clignoter toutes les secondes
pendant cinq secondes.
Linterface Simulink sera donc la suivante :

Lalimentation du moteur se fait a partir de la sortie 8 (Pin 8) de la carte et celle de la


LED a partir de la sortie 9 (Pin 9).
On conside rera que pour une tension e gale ou infe rieure a 2V le tournevis nest plus
en e tat de fonctionner. La tension de service est ici de 3V.
La simulation de la perte de tension se fait en commutant le Switch tension batterie.
Le montage e lectrique a re aliser est une synthe se des deux montages vu
pre ce demment.
Afin de respecter le cahier des charges, nous proposons le diagramme qui suit :

150

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Attention a lordre
de valuation des
transitions

La jonction e vite un
conflit si [bp==1] et
[u<=2] sont vraies
simultane ment !

Nous avons choisi une structure comportant deux e tats orthogonaux (de composition
en ET). Cette structure permet de se parer distinctement chaque fonction : tension
faible, surchauffe, arre t automatique.
Avant de charger le programme, une simulation en mode normal peut e tre
effectue e. Lorsque le re sultat de la simulation est valide , le chargement du programme
peut alors se faire.
Une fois le programme charge , nous constatons que le comportement de lensemble
correspond bien a celui attendu.
Prenons maintenant en compte la surchauffe du pont en H. Nous conside rerons quil y
a surchauffe au-dela de 50C.
La structure demeure identique a la pre ce dente. On ajoute un Switch pour simuler
laugmentation de tempe rature et un e tat Surchauffe au diagramme pre ce dent:

151

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Continuons a comple ter ce mode le en prenant en compte maintenant larre t


automatique du tournevis. Larre t a lieu si le bouton poussoir est enclenche depuis
quarante-cinq secondes. Il faut alors de senclencher et re enclencher le bouton poussoir
pour mettre a nouveau le tournevis en service :
Proposition de solution :

152

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Nous venons de re aliser un prototype simplifie du Gyro DriverTM BDCS36G Black &
Decker en utilisant comme cible une carte Arduino Mega 2560.

153

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 8
Proposition
de me thodologie

154

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 8 Proposition de me thodologie


Dans ce document les diffe rents mode les ont e te construits en mettant en uvre la
de marche qui suit :

La premie re e tape consiste a cre er linterface Simulink permettant de simuler le


mode le envisage en inse rant des blocs tels que des Sources pour ge ne rer les
signaux dentre e, des Sinks pour visualiser les re sultats, des Switches pour
commander la machine a e tat etc
La de finition des e tats caracte ristiques des modes ope ratoires est donne e au cours de
la seconde e tape du processus de mode lisation.
Les variables dentre e, de sortie ou encore locales sont cre e es au cours de la troisie me
e tape.
La quatrie me e tape consiste a mettre en place les actions et les transitions entre les
e tats pre alablement envisage s.
Ensuite, il est ne cessaire de choisir un solveur en phase avec le mode le que lon
souhaite simuler. Est-ce un mode le continu, discret ou hybride ? Cest lobjet de la
cinquie me et avant dernie re e tape.

155

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Enfin, la simulation peut avoir lieu. Au cours de cette dernie re e tape il sera bien
souvent ne cessaire de debugger la machine a e tat et de reprendre une partie des
e tapes pre ce dentes.
Quand le mode le est valide , il peut e tre inte ressant de retravailler sa forme en inse rant
des images par le biais de masques, de colorer certains e le ments ou encore ajouter des
commentaires pour une meilleure lisibilite .
Aussi le programme e crit avec cet outil graphique peut e tre charge dans une cible
apre s avoir e te compile . Ce qui permet de valider avec un prototype les fonctions
de finies dans le cahier des charges.

156

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 9
SysML State Machine
vs
Stateflow

157

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Chapitre 9 - SysML State Machine vs


Stateflow
Dans ce dernier chapitre, nous allons mettre en paralle le les objets graphiques utilise s
dans la construction des diagrammes de tat avec le langage SysML (Systems Modeling
Language) et avec Stateflow.
SysML est une extension du langage UML (Unified Modeling Language). Il est de die a
linge nierie syste me. Ce langage est articule autour de diagrammes propres
(diagrammes des exigences, parame trique) et de diagrammes issus de UML (cas
dutilisation, diagramme de se quence, diagramme de tat).
Pour plus de renseignements sur le langage SysML consulter le site officiel :
http://www.omgsysml.org/
Ici nous nous inte resserons uniquement au diagramme de tat (note stm : state
machine ) dont les principaux e le ments syntaxiques sont tre s proches de ceux dun
diagramme Stateflow :

SysML stm

Stateflow

evt [condition]/action

evt
[condition]{action}/action

Etat

Transition

avec :
/action : action sur transition

avec :
{action} :
action
sur
condition
/action : action sur transition

Etat initial
ou jonction
par dfaut

158

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Etat final

Point
dcision

inexistant

de

Pseudo-tat
historique

Pseudo-tat
historique
Profond

H*

inexistant

Etat
composite

Etat
composite
masqu

Points
de
connexion

159

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

entre e

sortie

entre e

sortie

Etat
orthogonal







Barre
de
divergence
inexistant

Barre
de
convergence
inexistant

160

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)

Aout 2014 V3

161

Ph. Hautcoeur Stateflow: modlisation et simulation des systmes discrets (et continus)