Diagramme d’états
Un diagramme d’états (ou diagramme d’états-transitions) est une représentation graphique du nombre fini d’états d’une machine à états, des transitions d’état et des règles qui régissent les transitions. Les diagrammes d’états sont des représentations de haut niveau utilisées comme points de départ pour le design de software complexe, car leur simplicité permet d’illustrer clairement les différents modes de fonctionnement.
Dans un diagramme d’états :
- Les boites représentent des états ou différents modes de fonctionnement.
- Les flèches illustrent la transition d’un état à un autre.
- Le texte associé à chaque flèche représente la règle qui régit la transition.
Les sorties ou actions d’une machine à états sont des descriptions du comportement de chaque état du système. Les deux types de machines à états, Moore et Mealy, sont classés selon la manière dont la sortie de la machine est définie.
Implémentation de Moore d'un diagramme d’états
Dans ce type de machine à états, les sorties ne dépendent que de l’état du système et sont définies comme des actions d’état. Quelle que soit la façon d’arriver à un état donné, l’action de l’état reste la même. Par exemple, dans le diagramme d’états de la figure 2, la sortie de Heating reste la même, que la transition soit effectuée à partir de l’état Idling ou OFF.
Implémentation de Mealy d'un diagramme d’états
Dans ce type de machine à états, les sorties dépendent non seulement de l’état du système, mais aussi de ses entrées. Comme le montre le diagramme d’états de la figure 3, dans l'implémentation de Mealy, les sorties sont définies au niveau des transitions.
Avec l'implémentation de Mealy, les diagrammes d’états peuvent être réorganisés et simplifiés en ajoutant des boucles pour mettre à jour les sorties de la machine. Plus les designs sont complexes, plus cette implémentation est avantageuse.
Les machines de Mealy et de Moore sont toutes deux populaires pour leur simplicité et leur clarté. Les deux styles sont souvent mélangés dans un même diagramme d’états.
Statecharts : diagrammes d’états améliorés
Les blocs de base des diagrammes d’états ne sont pas suffisants pour qu’un seul diagramme puisse représenter des systèmes logiques complexes. Vous avez besoin de capacités supplémentaires pour capturer efficacement les détails complexes d’un design. Les statecharts, connus également sous le nom de diagramme d'états-transitions de Harel, ajoutent des capacités telles que la hiérarchisation, le parallélisme ou l’orthogonalité ainsi que la diffusion d’événements.
La capacité de hiérarchisation permet de compartimenter davantage le design et potentiellement de réduire le nombre de lignes de transition nécessaires entre les états. Il est possible d’introduire des états parents pour créer une hiérarchie dans les machines à états. Par exemple, dans le statechart de la figure 5, l’état parent Baking comprend les sous-états Heating et Idle, ainsi que le diagramme d’états associé.
Grâce aux capacités de parallélisme ou d’orthogonalité, un seul statechart peut inclure plusieurs états fonctionnant simultanément. Par exemple, dans le statechart de la figure 6, nous pouvons considérer Oven et Oven_Light comme deux machines à états indépendantes qui fonctionnent simultanément. Le diagramme représente l'ensemble du système dans un seul graphique contenant deux machines à états parallèles.
Les possibilités de diffusion d’événements étendent la capacité du système en permettant l’échange d’informations entre deux états ou machines à états indépendants. Dans le scénario précédent, les deux machines à états étaient indépendantes, car le fonctionnement de l’éclairage du four ne dépendait pas de son système de chauffage. Avec la diffusion d’événements, une fonctionnalité qui éteint la lumière du four lorsque la cuisson est terminée peut être ajoutée grâce à une simple commande dans la logique de l’état Oven, comme l’illustre le statechart de la figure 7.
Les statecharts avec des capacités de hiérarchisation, de parallélisme et de diffusion permettent de représenter des fonctionnalités de systèmes complexes en évitant les diagrammes d'états surchargés.
Diagrammes d’états et statecharts avec Stateflow
Stateflow® est un environnement de programmation graphique basé sur les machines à états finis. Avec Stateflow, vous pouvez partir de diagrammes d’états simples et élaborer des statecharts pour modéliser la logique complexe des systèmes dynamiques tels que les transmissions automatiques, les systèmes robotiques, les smartphones, etc. Voici des applications de cette logique complexe :
Si vous avez besoin de la logique créée pour contrôler un composant software, vous pouvez utiliser les capacités de génération automatique de code de Simulink pour convertir le statechart en code C, HDL ou PLC pour le déploiement.
Pour en savoir plus sur la modélisation des diagrammes d’états, y compris sur ces techniques avancées, consultez les pages dédiées à Stateflow et à Simulink. L’exemple Modeling a Security System illustre les capacités de hiérarchisation, de parallélisme et de diffusion d’événements de Stateflow.
Exemples et démonstrations
Références logicielles
FAQ sur le Diagramme d’états
Un diagramme d’états est une représentation graphique d'une machine à états : son nombre fini d'états, ses transitions d'état et les règles qui régissent ces transitions. Il utilise des boîtes pour représenter des états ou des modes de fonctionnement, des flèches pour indiquer les transitions et du texte sur les flèches pour représenter les règles de transition.
Les diagrammes d’états représentent différents modes de fonctionnement et les transitions entre eux dans un système, tandis que les diagrammes de flux montrent généralement des étapes de processus séquentielles. Les diagrammes d’états sont utilisés comme point de départ de haut niveau pour la conception de logiciels complexes, car leur simplicité permet de communiquer clairement les différents modes de fonctionnement.
Dans les machines de Moore, les sorties ne dépendent que de l'état courant et sont définies comme des actions d'état. Dans les machines de Mealy, les sorties dépendent à la fois de l'état et des entrées et sont définies au niveau des transitions.
Les diagrammes d’états hiérarchiques, également appelés diagrammes de Harel, sont des versions enrichies des diagrammes d’états qui ajoutent des fonctionnalités telles que la hiérarchie, le parallélisme (ou orthogonalité) et la diffusion d’événements afin de représenter des détails de conception complexes dans des systèmes logiques élaborés.
Stateflow est un environnement de programmation graphique basé sur les machines à états finis qui permet de modéliser une logique complexe dans des systèmes dynamiques pour des applications telles que la commande de supervision, la gestion des défauts, l’ordonnancement des tâches, la logique d’interface et les protocoles de communication.
Oui. Les diagrammes d’états hiérarchiques permettent la hiérarchie grâce à des états parents contenant des sous-états, ce qui aide à structurer la conception et à réduire le nombre de transitions nécessaires entre les états.
Le parallélisme, ou orthogonalité, permet à un même diagramme d’états d'inclure plusieurs états fonctionnant simultanément, représentant ainsi l'ensemble du système dans un seul diagramme contenant deux machines à états parallèles ou davantage.
La diffusion d’événements permet l'échange d'informations entre deux états indépendants ou entre deux machines à états. Lorsqu'un événement est diffusé, il peut déclencher des transitions, des actions ou des appels de fonctions.
Oui. Vous pouvez utiliser les capacités de génération automatique de code de Simulink pour convertir des diagrammes d’états en code C, HDL ou PLC destiné au déploiement.
Voir aussi: Modélisation événementielle, Systèmes de contrôle, logique de contrôle, machine à états, systèmes de contrôle, systèmes embarqués, FDIR