Créer une hiérarchie pour gérer la complexité du système
Ajoutez une structure à votre modèle, un sous-composant à la fois, en créant une hiérarchie d’états imbriqués. Vous pouvez ensuite contrôler plusieurs niveaux de complexité dans votre diagramme Stateflow®. Pour plus d’informations, veuillez consulter Modéliser des machines à états finis.
Hiérarchie d’états
Pour créer une hiérarchie d’états, placez un ou plusieurs états dans les limites d’un autre état. Les états intérieurs sont des états enfant (ou sous-états) de l’état extérieur. L’état extérieur est le parent (ou super-état) des états intérieurs.
Le contenu d’un état parent se comporte comme un diagramme plus petit. Lorsqu’un état parent devient actif, l’un de ses états enfant devient également actif. Lorsqu’un état parent devient inactif, tous ses états enfant deviennent également inactifs.
Exemple de hiérarchie
Cet exemple modélise un système stéréo composé d’une radio AM, d’une radio FM et d’un lecteur de CD. Pendant la simulation, vous contrôlez le système stéréo en cliquant sur les boutons de l’interface utilisateur Media Player Helper.
Le système stéréo est initialement en mode veille (OFF). Lorsque vous sélectionnez l’un des boutons Radio Request, le système stéréo active le sous-composant correspondant. Si vous sélectionnez le lecteur de CD, vous pouvez cliquer sur l’un des boutons CD Request pour choisir Play, Rewind, Fast-Forward ou Stop. Vous pouvez insérer ou éjecter un CD à tout moment de la simulation.
Implémenter un comportement au moyen de la hiérarchie des états
Au départ, l'implémentation complète de ce système stéréo semble plutôt compliquée. Cependant, si vous vous concentrez sur un seul niveau d’activité à la fois, vous pouvez définir le design global du système de manière incrémentielle. Par exemple, les conditions suivantes sont nécessaires pour que le lecteur de CD passe en mode de lecture Fast-Forward :
Vous allumez le système stéréo.
Vous allumez le lecteur de CD.
Vous lisez un CD.
Vous cliquez sur le bouton FF dans l’interface utilisateur.
Vous pouvez créer un modèle hiérarchique qui considère chacune de ces conditions individuellement. Par exemple, le niveau le plus élevé peut définir les transitions entre la mise sous tension (ON) et hors tension (OFF) du système stéréo. Les niveaux intermédiaires définissent la transition entre les différents sous-composants stéréo et entre les modes d’arrêt et de lecture du lecteur de CD. Le niveau le plus bas définit la réponse aux boutons CD Request lorsque vous remplissez toutes les autres conditions pour lire un CD.
Pour implémenter le comportement du système stéréo, sf_mediaplayer
utilise la hiérarchie des états imbriqués répertoriés par le Model Explorer sous le diagramme Mode Manager
. Pour ouvrir le Model Explorer, dans l’onglet Modeling, sélectionnez Model Explorer.
Le tableau suivant indique le rôle de chaque état dans la hiérarchie.
Niveau de hiérarchie | État | Description |
---|---|---|
Niveau supérieur (diagramme Mode Manager ) | Eject | Mode d’éjection du CD (interrompt toutes les autres fonctions stéréo) |
NormalOperation | Mode de fonctionnement normal du système stéréo | |
Activité du système stéréo (états enfant de | Standby | Le système stéréo est en mode veille (OFF) |
ON | Le système stéréo est activé (ON) | |
Sous-composants du système stéréo (états enfant de | CDMode | Le sous-composant lecteur de CD est actif |
AMMode | Le sous-composant radio AM est actif | |
FMMode | Le sous-composant radio FM est actif | |
Activité du lecteur de CD (états enfant de | Stop | Le lecteur de CD est arrêté |
Play | Le lecteur de CD lit un CD | |
Modes de lecture de CD (états enfant de | Normal | Mode de lecture normal |
Rewind | Mode de lecture retour en arrière | |
FastForward | Mode de lecture avance rapide |
Cette figure montre la disposition complète des états dans le diagramme.
Les jonctions d’historisation dans les états
NormalOperation
et ON
enregistrent le mode de fonctionnement (veille ou activé) et le sous-composant actif du lecteur multimédia (lecteur CD, radio AM ou radio FM) avant d’éjecter un CD ou d’éteindre le système.
Explorer l’exemple
L’exemple sf_mediaplayer
contient deux autres diagrammes Stateflow :
App Interface
gère l’interface avec l’interface utilisateur et transmet les entrées aux diagrammesMode Manager
etCD Player
.CD Player
reçoit la sortie des diagrammesApp Interface
etMode Manager
et imite le comportement mécanique du lecteur de CD.
Pendant la simulation, vous pouvez étudier comment chaque diagramme réagit aux interactions avec l’application Media Player Helper. Pour passer rapidement d’un diagramme à un autre, utilisez les onglets situés en haut de l’éditeur Stateflow.