La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Connecter les transitions pour créer des trajectoires et des diagrammes de flux
Il est possible de connecter plusieurs transitions pour créer une trajectoire unique, une trajectoire de branchement ou un diagramme de flux en utilisant des jonctions.
Dans Stateflow®, une trajectoire désigne une ou plusieurs transitions qui connectent une source à une destination. Vous pouvez créer une trajectoire avec plusieurs transitions en connectant chaque transition à une jonction. Les jonctions sont des objets graphiques qui représentent un point de décision. Elles apparaissent sous forme de cercles sur le canevas. Par exemple, dans le diagramme ci-dessous, plusieurs transitions et jonctions forment une trajectoire unique entre deux états.

Lorsqu’un diagramme évalue une trajectoire, il évalue chaque transition connectée dans le même pas de temps, dans l’ordre allant de la source à la destination, et exécute toutes les actions conditionnelles qu’il rencontre. Si le diagramme rencontre une condition fausse, il arrête d’évaluer la trajectoire. S’il ne rencontre aucune condition fausse sur la trajectoire, il avance de la source à la destination.
Par exemple, dans le diagramme ci-dessus, une trajectoire comportant plusieurs transitions connecte un état source à un état de destination. Si toutes les conditions de la trajectoire sont vraies, le diagramme définit x à 0, puis à 1, et puis à 2. Ensuite, dans le même pas de temps, il quitte l’état source et passe à l’état de destination.
En revanche, si a et c sont supérieurs à 0 mais que b ne l’est pas, le diagramme définit plutôt x à 0 et arrête d’évaluer la trajectoire.
Vous pouvez créer plusieurs transitions vers ou depuis un état ou une jonction. Si un état ou une jonction comportent plusieurs transitions sortantes, le diagramme affiche l’ordre d’évaluation. Si le diagramme suit l’une des trajectoires, il n’évalue pas les autres. Vous pouvez modifier l’ordre en faisant un clic droit sur la transition, en cliquant sur Execution Order et en sélectionnant un autre ordre.
Par exemple, le diagramme ci-dessous évalue la trajectoire allant de l’état A à l’état B avant la trajectoire allant de l’état A à l’état C.

Dans Stateflow, un diagramme de flux désigne un diagramme ou un état dont les sous-éléments sont uniquement constitués de jonctions et de transitions. Toutes les trajectoires d’un diagramme de flux doivent aboutir à une seule jonction commune. Vous pouvez créer un diagramme de flux à n’importe quel niveau de la hiérarchie du diagramme.

Dans cet exemple, vous allez ajouter un diagramme de flux au modèle d’un système de batterie rechargeable. Le diagramme de flux fait correspondre la puissance en sortie du système de batterie à la demande de l’équipement connecté sans dépasser les limites de la batterie.
Ouvrir le modèle
Pour créer le modèle, suivez les instructions de l’étape précédente du tutoriel. Vous pouvez également utiliser le bouton Open Model (Ouvrir le modèle) ci-dessus et ouvrir le modèle sfGetStartedFlowchart.

Double-cliquez sur le bloc Chart pour accéder au diagramme Battery.

Les états Charge et Discharge représentent les modes de fonctionnement du système de batterie. Chaque état contient des états enfant qui représentent les taux de charge et de décharge de la batterie lorsqu’elle se remplit ou se vide. L’entrée isCharging détermine l’état actif. Les données sentPower et charge représentent la puissance en sortie (en watts) et le niveau de charge de la batterie.
Créer un diagramme de flux
À l’heure actuelle, quand la batterie se décharge en même temps qu’elle est alimentée, elle génère toujours la même puissance en sortie. Dans l’état Powered, créez un diagramme de flux faisant correspondre la puissance en sortie de la batterie à la demande de l’équipement connecté sans dépasser une valeur maximale.
Ajoutez une trajectoire qui représente le cas où l’équipement demande plus de puissance que ce que peut générer la batterie.
Dans l’état
Discharge, supprimez l’actionentry.Dans l’état
Powered, supprimez l’actionduring.Dans l’état
Powered, ajoutez la première jonction. Dans la palette, cliquez sur l’icône Junction. Placez la jonction dans l’étatPowered.Ajoutez une deuxième jonction à droite de la première.
Ajoutez une troisième jonction sous la deuxième.
Ajoutez une transition de la première jonction vers la deuxième. Ajoutez la condition
[deviceDemand>maxPower].Ajoutez une transition de la deuxième jonction vers la troisième. Ajoutez l’action
{sentPower=maxPower;}.

Ajoutez une trajectoire représentant une demande de puissance dans les limites de la batterie.
Ajoutez une quatrième jonction sous la première.
Ajoutez une transition de la première jonction vers la quatrième. Ajoutez l’action
{sentPower=deviceDemand;}.Créez une transition de la troisième jonction vers la quatrième.
Les chiffres sur la première jonction indiquent l’ordre d’évaluation. La transition libellée [deviceDemand>maxPower] a le libellé d’ordre 1 qui indique qu’elle est évaluée en premier. La transition libellée {sentPower=deviceDemand;} a le libellé d’ordre 2 qui indique qu’elle est évaluée en deuxième.

Une jonction terminale est une jonction sans transition sortante. Connectez les deux trajectoires à une jonction terminale commune. Dans la transition vers la jonction terminale, diminuez la charge de la batterie proportionnellement à la puissance en sortie.
Ajoutez une cinquième jonction sous la quatrième.
Créez une transition de la quatrième jonction vers la cinquième. Ajoutez l’action
{charge=charge-sentPower;}.

Évaluer les étapes durant lesquelles l’état est actif avec des transitions internes
Les transitions internes sont l’équivalent graphique d’une action during. Lorsqu’un état contient une transition interne, cette dernière est évaluée à chaque étape où l’état est actif, mais pas aux étapes où l’état devient actif ou inactif. Si un état contient à la fois des transitions internes et des transitions entre des états enfant, les transitions internes sont évaluées en premier. Vous pouvez créer une transition interne en ajoutant une transition allant du bord d’un état jusqu’à un objet à l’intérieur de cet état.
Ajoutez une transition allant du bord de l’état Powered jusqu’à la première jonction.

Définir les données du diagramme
Définissez les données que vous avez créées dans le diagramme de flux.
Dans le volet Symbols, dans la ligne
maxPower, sous Type, cliquez sur l’icône et sélectionnezLocal Data. Définissez Value à3.5.Dans la ligne
deviceDemand, sous Type, cliquez sur l’icône et sélectionnezInput Data.Dans la ligne
charge, définissez Value à100.

Ajoutez un bloc connecté au port d’entrée deviceDemand.
Ouvrez le modèle de plus haut niveau.
Ajoutez un bloc Sine Wave. Connectez le port de sortie au port deviceDemand du diagramme
Battery.Spécifiez que l’onde sinusoïdale commence à
0et atteint une valeur maximale égale à5. Double-cliquez sur le bloc pour ouvrir sa boîte de dialogue puis définissez les paramètres Amplitude et Bias à2.5. Définissez le paramètre Phase à-pi/4.Faites un clic droit sur la ligne de signal allant du bloc Sine Wave au diagramme
Batteryet cliquez sur Log selected signals. Répétez cette étape pour la ligne de signal allant du diagrammeBatteryau bloc Scope.

Simuler le modèle
Simulez le modèle et observez les résultats.
Pour simuler le modèle, accédez à l’onglet Simulation et cliquez sur Run.
Pour ouvrir Simulation Data Inspector, accédez à l’onglet Simulation et cliquez sur Data Inspector.
Dans l’onglet Inspect, sélectionnez
Battery:1etSine Wave:1.

La puissance en sortie de la batterie augmente et diminue en même temps que la consommation d’énergie sans dépasser le maximum de 3.5. Vers la fin de la simulation, la batterie est épuisée et la puissance en sortie chute à 0.
Le système de batterie génère la puissance attendue. Toutefois, si la batterie est épuisée, le système ne peut plus fonctionner.
Dans l’étape suivante du tutoriel, vous ajouterez une batterie de secours non rechargeable qui maintient les fonctions essentielles si la batterie principale est vide. Pour modéliser le fonctionnement simultané de ces batteries, vous utiliserez des états parallèles et des événements.