Contenu principal

Représenter des modes de fonctionnement à l’aide d’états

Un état décrit un mode de fonctionnement d’un système réactif. Dans un diagramme Stateflow®, les états sont utilisés pour le design séquentiel pour créer des diagrammes de transition d’état.

Pendant la simulation, les états peuvent être actifs ou inactifs. L’activité d’un état change en fonction des événements et des conditions. Les événements dirigent l’exécution d’un diagramme de transition d’état en rendant les états actifs ou inactifs. Pour plus d’informations, veuillez consulter Exécution d’un diagramme Stateflow.

Pour représenter plusieurs niveaux de composants dans un système, créez une hiérarchie d’états en imbriquant des sous-états dans des super-états. Pour plus d’informations, veuillez consulter Utiliser la hiérarchie d’état pour concevoir des états complexes à plusieurs niveaux.

Pour modéliser des modes de fonctionnement mutuellement exclusifs, activez la décomposition exclusive (OR) dans un état afin qu’un de ses sous-états au maximum soit actif à la fois. Pour implémenter des modes de fonctionnement qui s’exécutent simultanément, activez la décomposition parallèle (AND) dans un état afin que tous ses sous-états soient actifs en même temps. Pour plus d’informations, veuillez consulter Définir des modes exclusifs et parallèles à l’aide de la décomposition des états.

Par exemple, dans ce diagramme, les états PowerOn et PowerOff représentent les modes marche et arrêt d’un système de contrôleur de l’air. Dans l’état PowerOn, les sous-états parallèles FAN1 et FAN2 représentent les modes de fonctionnement de deux ventilateurs. Chacun de ces états contient des sous-états exclusifs appelés On et Off. Pour plus d’informations sur cet exemple, veuillez consulter Execute States in Parallel.

Chart that contains a hierarchy of exclusive and parallel states that represent the operating modes of an air controller system.

Créer un état

Pour ajouter un état à un diagramme Stateflow :

  1. Ouvrez le diagramme.

  2. Dans la palette d’objets, cliquez sur l’icône État .

  3. Sur la trame du graphique, cliquez sur l’emplacement du nouvel état.

  4. Saisissez un libellé pour l’état et cliquez en dehors de l’état. Le libellé spécifie le nom de l’état et toute action optionnelle que l’état exécute pendant la simulation. Pour plus d’informations, veuillez consulter Définir les actions dans un état.

Après avoir créé un état, vous pouvez utiliser l’éditeur Stateflow pour modifier la taille, la position et le contenu de l’état :

  • Pour redimensionner l’état, cliquez sur le coin de l’état et faites-le glisser.

  • Pour déplacer l’état, cliquez sur l’intérieur de l’état et faites-le glisser.

  • Pour modifier le libellé de l’état, cliquez sur le texte du libellé à côté de la position du caractère que vous souhaitez modifier.

Conseil

Un état parent doit être assez grand graphiquement pour accueillir tous ses sous-états, il vous faudra donc peut-être redimensionner un état parent avant d’y faire glisser un nouveau sous-état. Vous pouvez également convertir un super-état en sous-diagramme. Pour plus d’informations, veuillez consulter Encapsulate Modal Logic by Using Subcharts.

Définir les actions dans un état

Le libellé pour un état spécifie le nom de l’état et toute action optionnelle que l’état exécute pendant la simulation. Un libellé d’état figure sur le coin supérieur gauche de l’état et se présente sous ce format général :

name
entry: entry_actions
during: during_actions
exit: exit_actions
on event_name: on_event_actions
on message_name: on_message_actions
bind: event_name, data_name

Les actions d’état peuvent apparaître dans n’importe quel ordre. Pour chaque type d’action, vous pouvez spécifier plus d’une instruction en saisissant chaque instruction sur une ligne distincte. Pour séparer plusieurs instructions, vous pouvez également utiliser une virgule ou un point-virgule. Vous pouvez également combiner les actions entry, during et exit qui exécutent les mêmes instructions. Pour plus d’informations, veuillez consulter Éliminer du code redondant en combinant des actions d’état.

Conseil

Si vous ajoutez des instructions directement après le nom de l’état, le diagramme interprète ces instructions comme étant des actions entry et during combinées.

Nom de l’état

Un libellé d’état commence par le nom de l’état, suivi d’une barre oblique (/) optionnelle. Les noms d’états sont sensibles à la casse et sont composés d’une combinaison de caractères alphanumériques et de traits de soulignement. Pour plus d’informations, veuillez consulter Consignes concernant le nommage des objets Stateflow.

Pour éviter les conflits de noms, n’attribuez pas le même nom à des états frères. Cependant, vous pouvez utiliser le même nom d’état pour plusieurs états si le nom complet de chaque état est unique. Le nom complet d’un état est composé de la séquence de noms d’ancêtres dans la hiérarchie de l’état, séparés par des points. Par exemple, dans l’exemple précédent, les états FAN1 et FAN2 sont identifiés par ces noms complets uniques :

  • PowerOn.FAN1.On

  • PowerOn.FAN1.Off

  • PowerOn.FAN2.On

  • PowerOn.FAN2.Off

Actions d’entrée

Pour ajouter une action entry, saisissez entry ou en, suivi de deux points (:) et d’une ou plusieurs instructions. Le diagramme exécute ces instructions lorsque l’état devient actif. Par exemple, dans ce diagramme, l’action entry dans l’état PowerOff définit la valeur de airflow sur zéro quand le système de contrôleur de l’air s’éteint. Pour plus d’informations, veuillez consulter Entrée dans un diagramme ou un état.

State with entry action.

Pendant des actions

Pour ajouter une action during, saisissez during ou du, suivi de deux points (:) et d’une ou plusieurs instructions. Le diagramme exécute ces instructions lorsque l’état est actif et en l’absence de transitions valides vers un autre état. Par exemple, dans ce diagramme, l’action during dans l’état PowerOn calcule la valeur de airflow quand le système de contrôleur de l’air est allumé. Pour plus d’informations, veuillez consulter Exécution d’un diagramme Stateflow.

State with during action.

Actions de sortie

Pour ajouter une action exit, saisissez exit ou ex, suivi de deux points (:) et d’une ou plusieurs instructions. Le diagramme exécute ces instructions lorsque l’état est actif et qu’une transition hors de l’état se produit. Par exemple, dans ce diagramme, l’action exit dans l’état PowerOn définit la valeur de airflow sur zéro quand le système de contrôleur de l’air s’éteint. Pour plus d’informations, veuillez consulter Sortir d’un état.

State with exit action.

Actions « On »

Pour ajouter une action on, saisissez on, suivi du nom d’un événement ou d’un message, de deux points (:) et d’une ou plusieurs instructions. Le diagramme exécute ces instructions lorsque l’état est actif et qu’il reçoit l’événement ou message spécifié. Pour plus d’informations, veuillez consulter Synchronize Model Components by Broadcasting Events et Communicate with Stateflow Charts by Sending Messages.

Vous pouvez spécifier les actions on pour plus d’un événement ou message. Par exemple, cet état contient plusieurs actions on pour les événements E1 et E2.

State with multiple on actions.

Si plusieurs événements se produisent en même temps, les actions on correspondantes s’exécutent dans leur ordre d’apparition dans le libellé d’état. Pour plus d’informations, veuillez consulter Exécution d’un diagramme Stateflow.

Conseil

Vous pouvez utiliser des événements implicites (comme change, enter ou exit) et des opérateurs logiques temporels (comme after, at, before ou every) afin de déclencher des actions on dans les états. Pour plus d’informations, veuillez consulter Control Chart Behavior by Using Implicit Events et Control Chart Execution by Using Temporal Logic.

Actions « Bind »

Pour ajouter une action bind, saisissez bind, suivi de deux points (:) et du nom d’un ou plusieurs événements ou objets de données. Pour séparer plusieurs événements et données, utilisez des points-virgules ou des virgules ou saisissez les événements et données sur des lignes distinctes. Par exemple, dans ce diagramme, l’état A contient une action bind qui lie l’événement E et l’objet de données x à l’état.

State with bind action that binds an event and a data object to the state.

Une action bind s’applique indépendamment du fait que l’état soit actif ou inactif. D’autres états peuvent lire les données liées ou écouter les événements liés, mais seuls l’état et ses enfants peuvent changer la valeur des données liées ou diffuser les événements liés. Sinon, une erreur au moment de la compilation se produit.

Lier un événement par appel de fonction à un état lie également le sous-système d’appel de fonction que l’événement appelle. Le sous-système d’appel de fonction est activé quand l’état qui lie est actif, et désactivé quand l’état qui lie est inactif. Pour plus d’informations, veuillez consulter Control Function-Call Subsystems by Using bind Actions.

Si un diagramme comprend des actions qui lient les mêmes données ou événements à plusieurs états, une erreur au moment de la compilation se produit.

Les diagrammes Stateflow autonomes dans MATLAB® ne prennent pas en charge les actions bind.

Grouper des états

Vous pouvez simplifier l’édition d’un diagramme en groupant les contenus graphiques d’un état afin qu’ils agissent comme une unité unique. Par exemple, déplacer un état groupé déplace également les sous-états, les transitions et les autres objets graphiques au sein de cet état. Pour grouper un état, faites un clic droit sur l’état et sélectionnez Group & Subchart > Group dans le menu contextuel.

Vous devez dégrouper un état avant de sélectionner des objets au sein de l’état ou de déplacer d’autres objets graphiques dans l’état. Par exemple, essayer de déplacer un état ou une fonction graphique dans un état groupé provoque une erreur d’intersection invalide. Pour dégrouper un état, faites un clic droit sur l’état et désélectionnez Group & Subchart > Group dans le menu contextuel.

Dans l’éditeur Stateflow, les états groupés apparaissent plus foncés que les états non groupés. Par exemple, dans ce diagramme, l’état FAN1 est groupé tandis que l’état FAN2 n’est pas groupé.

Stateflow chart that contains a grouped state called FAN1 and an ungrouped state called FAN2.

Spécifier les propriétés pour les états

Les propriétés indiquées ci-dessous vous permettent de préciser la manière dont un état interagit avec les autres composants dans votre diagramme Stateflow. Vous pouvez modifier ces propriétés dans le Property Inspector, le Model Explorer ou la boîte de dialogue des propriétés de l’état.

Pour utiliser le Property Inspector :

  1. Dans l’onglet Modeling, sous Design Data, sélectionnez Property Inspector.

  2. Dans l’éditeur Stateflow, sélectionnez l’état.

  3. Dans le Property Inspector, modifiez les propriétés de l’état.

Pour utiliser le Model Explorer :

  1. Dans l’onglet Modeling, sous Design Data, sélectionnez Model Explorer.

  2. Dans le volet Model Hierarchy, sélectionnez l’état.

  3. Dans le volet Dialog, modifiez les propriétés de l’état.

Pour utiliser la boîte de dialogue des propriétés de l’état :

  1. Dans l’éditeur Stateflow, faites un clic droit sur l’état.

  2. Sélectionnez Properties.

  3. Dans la boîte de dialogue des propriétés, modifiez les propriétés de l’état.

Vous pouvez également modifier les propriétés de l’état de manière programmatique en utilisant les objets Stateflow.State. Pour plus d’informations sur l’interface programmatique de Stateflow, consultez Overview of the Stateflow API.

Nom

Nom de l’état. Cette propriété est en lecture seule. Lorsque vous cliquez sur le lien hypertexte du nom de l’état dans le Model Explorer et la boîte de dialogue des propriétés de l’état, l’éditeur Stateflow affiche l’état au premier plan.

Ordre d’exécution

Ordre d’exécution pour un état parallèle (AND). Cette propriété n’apparaît pas pour les états exclusifs (OR). Pour plus d’informations, veuillez consulter Ordre d’exécution des états parallèles.

Créer une sortie pour surveillance

Création ou non d’un port de sortie de données d’état actif pour l’état. Consultez Monitor State Activity Through Active State Data.

Option en ligne de fonction

Apparence des fonctions d’état dans le code généré. Exemples d’options :

  • Auto — Un calcul interne détermine l’apparence des fonctions d’état dans le code généré.

  • Inline — Les appels aux fonctions d’état sont remplacés par du code tant que la fonction ne fait pas partie d’une récursion.

  • Function — Les fonctions d’état sont implémentées en tant que fonctions statiques distinctes.

Pour plus d’informations, veuillez consulter Inline State Functions in Generated Code (Simulink Coder). Cette propriété n’est pas disponible dans le Property Inspector.

Libellé

Libellé de l’état. Pour plus d’informations, veuillez consulter Définir les actions dans un état. Cette propriété n’est pas disponible dans le Property Inspector.

Enregistrement (log) de l’activité autonome

Activation ou non de la labellisation des signaux. La labellisation des signaux sauvegarde l’activité autonome de l’état dans l’espace de travail MATLAB pendant la simulation. Pour plus d’informations, veuillez consulter Log Simulation Output for States and Data.

Nom d’enregistrement

Nom du signal utilisé pour enregistrer l’activité d’état.

  • Pour utiliser le nom de l’état, sélectionnez Use state name.

  • Pour spécifier un nom différent, sélectionnez Custom et saisissez le nom d’enregistrement personnalisé.

Limiter les points de données aux derniers

Limiter ou non le nombre de points de données enregistrés au maximum spécifié. Par exemple, si vous définissez le nombre maximal de points de données sur 5 000, le diagramme n’enregistre que les 5 000 derniers points de données générés par la simulation.

Décimation

Limiter ou non la quantité de données enregistrées en omettant des échantillons à l’aide de l’intervalle de décimation spécifié. Par exemple, si vous définissez un intervalle de décimation de 2, le diagramme enregistrera un échantillon sur deux.

Point de test

Définir ou non l’état comme point de test que vous pouvez surveiller avec un scope flottant pendant la simulation. Vous pouvez également enregistrer des valeurs de points de test dans l’espace de travail MATLAB. Pour plus d’informations, veuillez consulter Configure Signals as Test Points (Simulink).

Description

Description de l’état.

Lien vers le document

Lien vers la documentation en ligne pour l’état. Vous pouvez saisir une adresse web URL ou une commande MATLAB qui affiche la documentation en tant que fichier HTML ou texte dans la fenêtre de commande MATLAB. Lorsque vous cliquez sur le lien hypertexte Document link, Stateflow évalue le lien et affiche la documentation.

Voir aussi

Objets

Outils

Rubriques