Contenu principal

Modéliser une machine à états finis

Une machine à états finis représente des systèmes réactifs pilotés par des événements qui transitionnent entre les modes de fonctionnement lorsque des conditions spécifiques sont remplies. Par exemple, il est possible de modéliser la transmission d’une voiture qui change les rapports de vitesse à mesure que vous accélérez. Comme les machines à états finis permettent de représenter des systèmes comportant plusieurs états et transitions, elles sont couramment utilisées dans des domaines comme l’ingénierie logicielle, la robotique et les télécommunications. Vous pouvez modéliser une machine à états finis en utilisant des états, des transitions et des données dans Stateflow®.

Dans l’exemple de diagramme Stateflow simple suivant, la transmission d’une voiture transitionne entre des états correspondant aux rapports de vitesse.

Chart animation showing a finite state machine.

Dans le domaine du développement logiciel, il est possible d’utiliser une machine à états finis pour gérer les interfaces utilisateur, le design des protocoles et l’automatisation des workflows. En robotique, les machines à états finis contrôlent le comportement des robots en assurant des transitions fluides entre des tâches comme la navigation, l’évitement d’obstacles et la manipulation d’objets. Dans les télécommunications, elles permettent de modéliser des protocoles de communication et des opérations réseau. Vous pouvez utiliser Stateflow pour le design, la simulation et la résolution des problèmes de performances des machines à états finis dans divers domaines.

Types de blocs Stateflow

Pour représenter les relations entre les entrées, les sorties et les modes de fonctionnement d’une machine à états finis, vous pouvez utiliser les blocs Stateflow suivants qui permettent de créer des diagrammes et tables de transition d’état ainsi que des tables de vérité.

Bloc Stateflow

Cas d’utilisation

Chart

Représentation graphique d’une machine à états finis. Dans un diagramme Stateflow, on utilise des états et des transitions pour construire un système de logique séquentielle. Les états correspondent aux modes de fonctionnement et les transitions représentent les chemins entre les états. Pour plus d’informations, veuillez consulter Représenter des modes de fonctionnement à l’aide d’états et Transition entre les modes de fonctionnement.

State Transition Table

Représentation tabulaire d’une machine à états finis pour la logique modale séquentielle. Utilisez un bloc State Transition Table pour modéliser une machine à états dans un format compact nécessitant une maintenance minimale des objets graphiques. Pour plus d’informations, veuillez consulter Model Finite State Machines Using State Transition Tables.

Truth Table

Représentation tabulaire du design de la logique combinatoire. Vous pouvez utiliser des blocs Truth Table afin de modéliser la prise de décisions pour la détection et la gestion des défaillances ainsi que la commutation de mode. Pour plus d’informations, veuillez consulter Use Truth Tables to Model Combinatorial Logic.

Implémenter des blocs Stateflow

Pour créer un diagramme Stateflow modélisant une machine à états finis, procédez comme suit :

  1. Démarrez MATLAB®. Dans la barre d’outils MATLAB, accédez à l’onglet Home et cliquez sur Simulink.

    The Simulink Start Page.

  2. Sur la page de démarrage, accédez à la section Stateflow et cliquez sur le modèle Blank Chart. Ouvrez l’éditeur Stateflow en double-cliquant sur le bloc Chart.

  3. Pour chaque mode de fonctionnement de votre système, tracez un état et implémentez des actions en ajoutant des libellés d’état.

  4. Tracez des transitions qui représentent la direction de la logique de flux entre les états. Ajoutez des libellés de transition pour implémenter les conditions de transition. Utilisez une transition par défaut pour indiquer le premier état actif.

  5. Si votre système possède des entrées ou des sorties ou s’il dépend de variables d’état, ajoutez des données d’entrée, de sortie et locales. Pour plus d’informations, veuillez consulter Ajouter des données Stateflow.

  6. Si votre système réagit à des déclencheurs par événement ou doit déclencher des actions dans votre diagramme ou dans d’autres blocs de votre modèle, ajoutez des événements d’entrée, de sortie ou locaux. Pour plus d’informations, veuillez consulter Use Events to Execute Charts.

  7. Si votre diagramme comporte des actions d’état ou conditions de transition complexes, vous pouvez ajouter des fonctions réutilisables. Faites votre choix parmi les fonctions graphiques, les fonctions MATLAB ou Simulink ou encore les tables de vérité. Vous pouvez également écrire votre propre code C ou C++ pour l’intégrer à votre diagramme. Pour plus d’informations, veuillez consulter Reuse MATLAB Code by Defining MATLAB Functions et Call Simulink Functions in States and Transitions.

  8. Connectez le diagramme aux autres blocs du modèle Simulink au moyen de ports d’entrée et de sortie.

  9. Cliquez sur Run pour simuler le modèle. Pendant la simulation, l’éditeur Stateflow anime le diagramme en mettant en évidence les états actifs et les transitions.

Les diagrammes Stateflow et les blocs State Transition Table peuvent utiliser MATLAB ou le C comme langage d’action. Les blocs Truth Table utilisent uniquement MATLAB comme langage d’action. Pour plus d’informations, veuillez consulter Differences Between MATLAB and C as Action Language Syntax.

Pour un tutoriel montrant comment créer un diagramme Stateflow, consultez Créer des diagrammes Stateflow.

Références

[1] Harel, David. "Statecharts: A Visual Formalism for Complex Systems." Science of Computer Programming 8, no.3 (June 1987): 231-74.

[2] Hatley, Derek J. and Imtiaz A. Pirbhai. Strategies for Real-Time System Specification. New York, NY: Dorset House Publishing, 1988.

Voir aussi

Fonctions

Blocs

Rubriques