La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Définir le comportement des diagrammes au moyen d’actions
Les actions d’état et de transition sont des instructions que vous écrivez dans un état ou suite à une transition pour définir le comportement d’un diagramme Stateflow® pendant la simulation. Pour plus d’informations, veuillez consulter Modéliser des machines à états finis.
Exemple d’actions d’état et de transition
Les actions présentées dans ce diagramme définissent une machine à états qui vérifie de manière empirique une instance de la conjecture de Collatz. Pour une entrée numérique donnée , le diagramme calcule la séquence de Hailstone
… en itérant cette règle :
Si
est pair, alors
.
Si
est impair, alors
.
Selon la conjecture de Collatz, tout nombre entier positif possède une séquence de Hailstone qui finit par atteindre le chiffre 1.
Le diagramme comprend trois états. Au début de la simulation, l’état Init
initialise les données du diagramme :
La donnée locale
n
est définie à la valeur de l’entréeu
.La donnée locale
n2
est définie comme étant le reste de la division den
par deux.La donnée de sortie
y
est définie àfalse
.
Suivant de la parité de l’entrée, le diagramme bascule sur l’état Even
ou Odd
. Comme l’activité de l’état bascule entre les états Even
et Odd
, le diagramme calcule les nombres de la séquence de Hailstone. Lorsque la séquence atteint la valeur 1, la donnée de sortie y
devient true
et déclenche un bloc Stop Simulation (Simulink) dans le modèle Simulink®.
Types d’actions d’état
Les actions d’état définissent l’action d’un diagramme Stateflow lorsqu’un état est actif. Les types d’actions d’état les plus courants sont les actions entry
, during
et exit
.
Type d’action d’état | Abréviation | Description |
---|---|---|
entry | en | L’action se produit à un pas de temps où l’état devient actif. |
during | du | L’action se produit à un pas de temps où l’état est déjà actif et le diagramme ne transitionne pas hors de cet état. |
exit | ex | L’action se produit à un pas de temps où le diagramme transitionne hors de l’état. |
Vous pouvez spécifier le type d’une action d’état au moyen de son mot-clé complet (entry
, during
, exit
) ou de son abréviation (en
, du
, ex
). Vous pouvez également combiner des types d’actions d’état à l’aide de virgules. Par exemple, une action de type combiné entry,during
se produit à un pas de temps où l’état devient actif et à chaque pas de temps suivant tant que l’état reste actif.
Le tableau suivant indique le résultat de chaque action d’état dans le diagramme de Hailstone.
État | Action | Résultat |
---|---|---|
Init |
entry: n2 = rem(n,2); y = false; | Lorsque Init devient actif au début de la simulation, détermine la parité de n et définit y à false . |
exit: y = isequal(n,1); | Lors de la sortie d’Init après un pas de temps, détermine si n est égal à 1. | |
Even |
entry,during: n = n/2; n2 = rem(n,2); | Calcule le nombre suivant de la séquence de Hailstone (
|
Odd |
entry,during: n = 3*(n-y)+1; n2 = rem(n,2); | Calcule le nombre suivant de la séquence de Hailstone (3
|
Types d’actions de transition
Les actions de transition définissent l’action d’un diagramme Stateflow lorsqu’il quitte un état actif. Les types d’actions de transition les plus courants sont les conditions et les actions conditionnelles. Pour spécifier les actions de transition, utilisez un libellé avec la syntaxe suivante :
[condition]{conditional_action}
condition
est une expression booléenne qui détermine si la transition se produit. Sans indication, la condition est implicitement évaluée comme étant vraie.
conditional_action
est une instruction qui s’exécute lorsque la condition qui garantie la transition est définie comme étant vraie. L’action conditionnelle intervient après la condition mais avant les actions d’état exit
ou entry
.
Le tableau suivant indique le résultat de chaque action de transition dans le diagramme de Hailstone.
Transition | Action | Type d’action | Résultat |
---|---|---|---|
Transition par défaut vers Init |
n = u | Action conditionnelle | Au début de la simulation, affecte la donnée d’entrée u à la donnée locale n . |
Transition de Init vers Even |
n2 == 0 | Condition | Lorsque n est pair, la transition se produit. Le chiffre 1 à la source de cette transition indique qu’elle est évaluée avant la transition vers Odd . |
Transition de Init vers Odd | Aucune | Lorsque n est impair, la transition se produit. Le chiffre 2 à la source de cette transition indique qu’elle est évaluée après la transition vers Even . | |
Transition de Odd vers Even |
n2 == 0 | Condition | Lorsque n est pair, la transition se produit. |
Transition de Even vers Odd |
n2 ~= 0 | Condition | Lorsque n est impair, la transition se produit. |
y = isequal(n,1) | Action conditionnelle | Lorsque la transition se produit, détermine si n est égal à 1. |
Examiner le comportement des diagrammes
Supposons que vous souhaitez calculer la séquence de Hailstone commençant par la valeur 9.
Dans le bloc Constant (Simulink), saisissez la valeur
9
.Dans l’onglet Simulation, cliquez sur Run
.
Le diagramme répond avec les actions suivantes :
À t = 0, la transition par défaut vers
Init
se produit.L’action de transition définit la valeur de
n
à 9.L’état
Init
devient actif.Les actions
entry
dansInit
définissentn2
à 1 ety
àfalse
.
Au pas de temps t = 1, la condition
n2 == 0
est fausse donc le diagramme prépare la transition versOdd
.L’action
exit
dansInit
définity
àfalse
.L’état
Init
devient inactif.L’état
Odd
devient actif.Les actions
entry
dansOdd
définissentn
à 28 etn2
à 0.
Au pas de temps t = 2, la condition
n2 == 0
est vraie donc le diagramme prépare la transition versEven
.L’état
Odd
devient inactif.L’état
Even
devient actif.Les actions
entry
dansEven
définissentn
à 14 etn2
à 0.
Au pas de temps t = 3, la condition
n2 ~= 0
est fausse donc le diagramme ne prépare pas la transition.L’état
Even
reste actif.Les actions
during
dansEven
définissentn
à 7 etn2
à 1.
Au pas de temps t = 4, la condition
n2 ~= 0
est vraie donc le diagramme prépare la transition versOdd
.L’action de transition définit
y
àfalse
.L’état
Even
devient inactif.L’état
Odd
devient actif.Les actions
entry
dansOdd
définissentn
à 22 etn2
à 0.
Le diagramme continue de calculer la séquence de Hailstone jusqu’à ce qu'il arrive à une valeur de
n
= 1 au pas de temps t = 19.Au pas de temps t = 20, le diagramme prépare la transition de
Even
versOdd
.Avant que l’état
Even
devienne inactif, l’action de transition définity
àtrue
.L’état
Odd
devient actif.Les actions
entry
dansOdd
ne modifient nin
nin2
.Le bloc Stop Simulation (Simulink) connecté au signal de sortie
y
interrompt la simulation.
Dans l’onglet Simulation, sous Review Results, cliquez sur Data Inspector
.
Pour afficher les valeurs de la séquence de Hailstone, dans Simulation Data Inspector, sélectionnez le signal enregistré
n
.
La séquence de Hailstone atteint une valeur de 1 après 19 itérations.