State machine (machine à états finis)

State machine (machine à états finis)

Une state machine (ou machine à états finis) représente un système réactif piloté par des événements qui passe d'un état à un autre si la condition qui contrôle le changement est remplie. Les state machines étaient traditionnellement utilisées pour décrire des systèmes de calcul, mais ont été étendues pour modéliser la logique complexe de systèmes dynamiques tels que les avions, les voitures, les robots et les téléphones portables.

Exemples d'opérations contenant de la logique complexe :

  • Planifier une séquence de tâches ou d'étapes d'un système
  • Définir la logique de détection de panne, d’isolement et de remise en route
  • Superviser la manière de basculer entre différents modes d'opération

Il est possible de représenter une state machine de nombreuses manières. Néanmoins, l'approche graphique est la plus courante. Un diagramme de transition d'état, également appelé diagramme d’états, désigne un diagramme qui montre un nombre fini d’états avec des règles qui déterminent quand se produisent les transitions d'un état à l'autre.

Par exemple, vous pouvez utiliser un diagramme d'états pour représenter une version simplifiée de la boîte de vitesses automatique d'une voiture. La state machine, présentée ci-dessous, contient quatre états de fonctionnement respectivement nommés first, second, third et fourth. Comme les rapports qu'ils représentent, ces états sont exclusifs. Par conséquent, il n'y a qu'un seul état actif à la fois. Cette state machine surveille la vitesse d'une voiture et passe à un autre rapport lorsque la vitesse dépasse le seuil fixé pour le rapport en cours.

Figure 1. Diagramme d'états du système d'une boîte de vitesses automatique modélisé avec Stateflow.

Il existe deux types principaux de diagrammes d'états :

  • Mealy : les sorties de la state machine dépendent non seulement des états, mais également des entrées du système. Ces dernières sont représentées en définissant les sorties de la machine dans les transitions, comme montré dans la Figure 2
  • Moore : les sorties de la state machine dépendent uniquement de l'état du système. Ce dernier est représenté en définissant les sorties de la machine pour les états, comme montré dans la Figure 3

Pour plus d'informations sur ces sémantiques, consultez la page dédiée à la Présentation des machines de Mealy et de Moore.

Pour créer une state machine qui émule un composant logiciel complexe, les blocs de base des diagrammes d'états ne suffisent pas. Les capacités supplémentaires suivantes sont nécessaires pour capturer efficacement les détails complexes d'un système :

  • Hiérarchisation : introduit un ou des états parents et structure davantage le design
  • Parallélisme ou orthogonalité : permet à un seul diagramme d'inclure plusieurs états fonctionnant simultanément
  • Diffusion d’événements : permet l'échange d'informations entre deux états ou state machines indépendants.

Lorsque ces capacités sont couplées à des diagrammes de transition d'état, les représentations sont appelées des diagrammes d'états-transitions de Harel, ou tout simplement statecharts.

State machines 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.

Vous pouvez utiliser MATLAB® pour exécuter des statecharts autonomes comme des objets MATLAB ou Simulink® afin de les simuler en tant que blocs Simulink.

Pour plus d'informations sur la modélisation et l'exécution de diagrammes Stateflow dans MATLAB ou dans Simulink, consultez la section Modéliser des machines à états finis.

Pour en savoir plus sur la modélisation des state machines, consultez les pages Stateflow et Simulink.

Voir aussi: control logic, state diagram, control systems, embedded systems