Contenu principal

Entrée dans un diagramme ou un état

L’entrée dans un diagramme et dans un état se produit quand :

  • Un diagramme est activé pour la première fois. C’est ce que l’on appelle l’initialisation de diagramme.

  • Une transition valide vers un état existe. Consultez Evaluate Transitions.

Workflow d’entrée dans un diagramme ou un état

Ce diagramme de flux indique la progression des événements entrepris par Stateflow® lors de l’entrée dans un diagramme ou un état. Dans ce diagramme de flux, l’état actuel fait référence à l’état dans lequel une décision ou un processus a lieu.

Flow chart that shows the steps for entering a chart or state.

Entrée dans un diagramme

La première fois que votre diagramme Stateflow devient actif s’appelle l’initialisation. Quand l’initialisation de votre diagramme se produit, on entre dans le diagramme et Stateflow exécute les transitions par défaut pour les états exclusifs (OR). Si les états du niveau supérieur de votre diagramme sont parallèles (AND), ils deviennent actifs selon leur nombre d’ordre.

Si vous souhaitez que votre diagramme effectue des transitions par défaut avant le moment t = 0, dans la boîte de dialogue des propriétés du diagramme, cochez la case Execute (enter) chart at initialization. Cette option fait que le diagramme Stateflow s’initialise en même temps que l’initialisation de Simulink®. Les trajectoires de transition par défaut du diagramme s’exécutent ensuite pendant la phase d’initialisation du modèle.

Entrée dans un état

Quand un état est signalé pour l’entrée, les actions d’entrée pour un état s’exécutent. Une fois que votre diagramme est actif et a passé l’initialisation, l’état de niveau supérieur devient actif. Un état est signalé pour l’entrée de l’une des façons suivantes :

  • Une transition entrante traverse les limites de l’état.

  • Une transition entrante se termine aux limites de l’état.

  • L’état est un état parallèle enfant d’un état actif.

Actions d’entrée

Les actions d’entrée sont précédées du préfixe entry ou en en abrégé, suivi de deux points obligatoires (:), eux-mêmes suivis d’une ou plusieurs actions. Vous séparez les différentes actions avec un retour chariot, un point-virgule (;) ou une virgule (,). Si vous ne spécifiez pas le type d’action d’état explicitement pour une instruction, le diagramme traite cette instruction comme une action entry, during.

Entrée dans un diagramme Stateflow

Dans cet exemple, la première fois que le diagramme devient actif, l’initialisation de diagramme se produit.

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

En suivant le Workflow d’entrée dans un diagramme ou un état jusqu’à ce que le diagramme passe en veille, les étapes d’initialisation du diagramme sont, dans l’ordre :

  1. Les actions de transition par défaut s’exécutent, et x = 0, y = 0 et z = 0.

  2. StateA est signalé pour l’entrée.

  3. StateA n’est pas un sous-état d’un parent inactif. Effectuez les actions entry pour StateA. À présent, x = 1.

  4. StateA est l’état qui était initialement signalé pour l’entrée.

  5. StateA ne contient pas de jonction d’historisation.

  6. Il y a une transition par défaut vers le sous-état, StateA1. Accédez au diagramme de flux « Evaluate Transitions » (Évaluer les transitions).

  7. En suivant le diagramme de flux « Evaluate Transitions », signalez StateA1 pour entry. Accédez au diagramme de flux « Exit Actions » (Actions de sortie).

  8. L’état actuel, StateA, est un super-état de l’état de destination, StateA1. Revenez au diagramme de flux « Entry Actions » (Actions d’entrée).

  9. StateA1 n’est pas un sous-état d’un parent inactif. Effectuez les actions entry pour StateA1. À présent, x = 3.

  10. StateA1 est l’état qui était initialement signalé pour l’entrée.

  11. StateA1 ne contient pas de jonction d’historisation.

  12. StateA1 ne contient pas de transition par défaut.

  13. StateA1 ne contient pas de sous-état unique.

  14. Le diagramme passe en veille.

Les étapes 1 à 14 se produisent dans le pas de temps initial. Cela met fin au processus d’initialisation du diagramme.

Entrée dans un état à l’aide de jonctions d’historisation

Si vous souhaitez que votre diagramme Stateflow garde en mémoire et revienne à un sous-état précédemment actif, indépendamment d’une transition par défaut, utilisez une jonction d’historisation. Placer une jonction d’historisation au sein d’un état remplace la transition par défaut amenant aux sous-états exclusifs (OR). Après avoir placé une jonction d’historisation au sein d’un état, dès l’entrée, votre diagramme Stateflow garde en mémoire et entre dans le sous-état précédemment actif. La jonction d’historisation ne s’applique qu’au niveau de hiérarchie où elle apparaît.

Dans cet exemple, une lumière peut être allumée ou éteinte. Ces options sont indiquées par les états Power_on et Power_off. Les options sont contrôlées par les événements d’entrée switch_on et switch_off. Quand la lumière est allumée, elle peut être faible ou vive. Ces options sont indiquées par les états Low et High et sont contrôlées par les événements d’entrée switch_low et switch_high.

Au départ, le diagramme est en veille. L’état Power_off est actif. Quand l’état Power_on était actif pour la dernière fois, High était le sous-état précédemment actif. L’événement switch_on se produit et l’état Power_on est signalé pour l’entrée. À ce stade, p = 0.

Stateflow chart with top-level states called Power_off and Power_on. Power_on has a history junction and substates Low and High.

En suivant le Workflow d’entrée dans un diagramme ou un état jusqu’à ce que le diagramme passe en veille, les étapes d’exécution pour entrer dans l’état Power_on sont, dans l’ordre :

  1. Power_on n’est pas l’enfant d’un parent inactif.

  2. Il n’y a pas d’action d’entrée pour Power_on.

  3. Power_on est l’état qui était initialement signalé pour l’entrée.

  4. Il y a des jonctions d’historisation dans Power_on.

  5. High était le sous-état précédemment actif. À présent, p = 2.

  6. High ne contient pas de jonction d’historisation.

  7. High ne contient pas de transition par défaut.

  8. High ne contient pas de sous-état unique.

  9. Le diagramme passe en veille.

Cela met fin aux actions entry pour Power_on et High.

Entrée dans un état à l’aide de super-transitions

Une super-transition est une transition entre différents niveaux dans un diagramme. Une super-transition peut se produire entre un état dans un diagramme de niveau supérieur et un état dans l’un de ses sous-diagrammes, ou entre états stockés dans différents sous-diagrammes au même niveau ou à des niveaux différents dans un diagramme. Vous pouvez créer des super-transitions couvrant le nombre de niveaux souhaité dans votre diagramme.

Quand on entre dans un état via une super-transition, avant que les actions d’entrée pour la destination finale ne s’exécutent, ses super-états doivent être signalés comme actifs et leurs actions d’entrée doivent être exécutées. Dans cet exemple, StateB1 a été signalé pour l’entrée depuis StateA2. À ce stade, x = 5, y = 5 et z = 1.

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

En suivant le Workflow d’entrée dans un diagramme ou un état jusqu’à ce que le diagramme passe en veille, les étapes d’exécution pour entrer dans l’état StateB1 sont, dans l’ordre :

  1. StateB1 est le sous-état d’un parent inactif (StateB).

  2. StateB est signalé comme actif.

  3. StateB n’est pas le sous-état d’un parent inactif.

  4. Effectuez les actions d’entrée pour StateB. À présent, x = 4.

  5. StateB n’est pas l’état qui était initialement signalé pour l’entrée.

  6. Effectuez les actions d’entrée pour StateB1. À présent, x = 3.

  7. StateB1 est l’état qui était initialement signalé pour l’entrée.

  8. StateB1 n’a pas de jonction d’historisation.

  9. StateB1 ne contient pas de transition par défaut.

  10. StateB1 ne contient pas de sous-état unique.

  11. Le diagramme passe en veille.

Cela met fin aux actions entry pour StateB et StateB1.

Voir aussi

Rubriques