La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Créer des modes de fonctionnement parent et enfant
Dans les diagrammes Stateflow®, il est possible de créer des modes de fonctionnement imbriqués en plaçant un état à l’intérieur d’un état existant. L’état existant est appelé état parent. Les états qu’il contient sont appelés états enfant.
Le contenu de l’état parent se comporte comme un diagramme plus petit. Tout comme un diagramme, l’état parent contient une transition par défaut. Quand l’état parent devient actif, l’état enfant connecté à la transition par défaut devient lui aussi actif. Ensuite, le diagramme transitionne entre les états enfant. Quand l’état parent est désactivé, les états enfant sont eux aussi désactivés.
Par exemple, dans ce modèle de feux clignotants pour ambulance, l’état On contient les états enfant Red et White. Lorsque On est actif, l’ambulance alterne entre les éclairages de couleur en commençant par l’état Red. Quand On est désactivé, les deux éclairages sont désactivés.

Dans cet exemple, vous allez utiliser des états enfant pour modéliser les taux de charge variables d’un système de batterie rechargeable.
Ouvrir le modèle
Le modèle sfGetStartedBattery représente la logique de contrôle d’un système de batterie rechargeable. Pour créer le modèle, suivez les instructions des étapes précédentes du tutoriel.

Double-cliquez sur le bloc Chart pour accéder au diagramme de la batterie.

Les états Charge et Discharge représentent les modes de fonctionnement du système de batterie. La donnée d’entrée isCharging détermine l’état actif. La donnée de sortie sentPower et la donnée locale charge représentent la puissance en sortie (en watts) et le niveau de charge de la batterie.
Ajouter des états enfant à la hiérarchie du modèle
À l’heure actuelle, le système de batterie continue de se recharger quand il est plein et de se décharger quand il est vide. Pour représenter les modes de charge complète, vide et intermédiaire, il est nécessaire d’ajouter d’autres modes de fonctionnement au système de batterie :
| Mode parent | Mode enfant | Actions | Condition de sortie |
|---|---|---|---|
Charge | FastCharge | Tant que ce mode est actif, augmenter le niveau de charge à un taux de 4 % | Quand le niveau de charge est supérieur à 80 %, passer à SlowCharge |
Charge | SlowCharge | Quand ce mode est actif, augmenter le niveau de charge à un taux de 1 % | Quand le niveau de charge est égal à 100 %, passer à Full |
Charge | Full | None | None |
Discharge | Powered | Tant que ce mode est actif, diminuer le niveau de charge à un taux de 3 % | Quand le niveau de charge est inférieur ou égal à 3 %, passer à Empty |
Discharge | Empty | À l’activation de ce mode, définir la puissance en sortie à 0 | None |
Ajoutez un état représentant la charge rapide.
Dans les états
ChargeetDischarge, supprimez les actionsduring.Développez les états
ChargeetDischargepour qu’ils puissent contenir jusqu’à trois états enfant. Pour redimensionner un état, cliquez sur l’un des coins et faites-le glisser vers l’extérieur.Dans
Charge, ajoutez un état enfant nomméFastCharge. Les états enfant doivent être entièrement inclus dans l’état parent. Les bords des états enfant et parent ne peuvent pas se chevaucher.Dans
FastCharge, ajoutez une actionduringqui incrémente la donnéechargede4.

Ajoutez deux états représentant la charge lente et en pause.
Ajoutez un état enfant nommé
SlowCharge. Ajoutez une actionduringqui incrémentechargede1.Ajoutez une transition de
FastChargeversSlowChargequi s’exécute quandchargedépasse80.Ajoutez un état enfant nommé
Full.Ajoutez une transition de
SlowChargeversFullqui s’exécute quandchargeest égale à100.

Ajoutez deux états qui représentent la décharge normale et en pause.
Dans
Discharge, ajoutez un état enfant nomméPowered. Ajoutez une actionduringqui décrémentechargede3.Ajoutez un autre état enfant nommé
Empty. Ajoutez une actionentryqui définitsentPowerà0.Ajoutez une transition entre
PoweredetEmptyqui s’exécute quandchargeest inférieure ou égale à3.

Simulation du modèle
Observez la manière dont le diagramme transitionne entre les états enfant.
Dans l’éditeur Simulink, vérifiez que le bloc Manual Switch est défini à
1.Dans l’onglet Simulation, cliquez sur Run pour simuler le modèle. À la première étape,
ChargeetFastChargedeviennent tous les deux actifs. À mesure quechargeaugmente, le diagramme transitionne vers les états enfantSlowChargeetFull. Dans le volet Symbols,chargene dépasse jamais100.Revenez dans le modèle Simulink de plus haut niveau. Basculez la valeur du bloc Manual Switch en double-cliquant sur ce dernier.
Accédez au diagramme. Celui-ci active l’état
Dischargeet l’état enfantPowered. Quandchargedevient inférieure à3, le diagramme transitionne dePoweredversEmpty. Dans le volet Symbols,chargene descend jamais en dessous de0.
Le modèle de batterie est maintenant plus réaliste. Toutefois, le design pose encore quelques problèmes. Par exemple, si l’équipement connecté nécessite une puissance inférieure à 3,5 watts, la puissance générée en sortie par la batterie ne change pas.
Dans l’étape suivante du tutoriel, vous créerez un diagramme de flux faisant varier la puissance en sortie du système de batterie en fonction de la demande de l’équipement connecté.