Contenu principal

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.

  1. Dans les états Charge et Discharge, supprimez les actions during.

  2. Développez les états Charge et Discharge pour 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.

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

  4. Dans FastCharge, ajoutez une action during qui incrémente la donnée charge de 4.

Ajoutez deux états représentant la charge lente et en pause.

  1. Ajoutez un état enfant nommé SlowCharge. Ajoutez une action during qui incrémente charge de 1.

  2. Ajoutez une transition de FastCharge vers SlowCharge qui s’exécute quand charge dépasse 80.

  3. Ajoutez un état enfant nommé Full.

  4. Ajoutez une transition de SlowCharge vers Full qui s’exécute quand charge est égale à 100.

Ajoutez deux états qui représentent la décharge normale et en pause.

  1. Dans Discharge, ajoutez un état enfant nommé Powered. Ajoutez une action during qui décrémente charge de 3.

  2. Ajoutez un autre état enfant nommé Empty. Ajoutez une action entry qui définit sentPower à 0.

  3. Ajoutez une transition entre Powered et Empty qui s’exécute quand charge est inférieure ou égale à 3.

Simulation du modèle

Observez la manière dont le diagramme transitionne entre les états enfant.

  1. Dans l’éditeur Simulink, vérifiez que le bloc Manual Switch est défini à 1.

  2. Dans l’onglet Simulation, cliquez sur Run pour simuler le modèle. À la première étape, Charge et FastCharge deviennent tous les deux actifs. À mesure que charge augmente, le diagramme transitionne vers les états enfant SlowCharge et Full. Dans le volet Symbols, charge ne dépasse jamais 100.

  3. Revenez dans le modèle Simulink de plus haut niveau. Basculez la valeur du bloc Manual Switch en double-cliquant sur ce dernier.

  4. Accédez au diagramme. Celui-ci active l’état Discharge et l’état enfant Powered. Quand charge devient inférieure à 3, le diagramme transitionne de Powered vers Empty. Dans le volet Symbols, charge ne descend jamais en dessous de 0.

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

Voir aussi

Rubriques