Contenu principal

Communiquer avec les diagrammes Stateflow en envoyant des messages

Pour communiquer dans et entre les diagrammes Stateflow® d’un modèle Simulink®, utilisez des messages. Un message est un objet Stateflow qui communique des données en local ou entre les diagrammes. Vous pouvez envoyer ou transférer un message contenant des données à partir d’un diagramme d’expéditeur. Dans le diagramme de réception, une file d’attente reçoit le message et le conserve jusqu’à ce que le diagramme puisse l’évaluer.

Simulink model with two Stateflow charts that communicate using a message.

Les messages associent certaines fonctionnalités des données et des événements. Comme les données, ils peuvent transmettre des informations numériques et textuelles. Comme les événements, ils peuvent déclencher des actions de transition et d’état. Cependant :

  • Les messages ne déclenchent pas l’activation des diagrammes. Au lieu de cela, ils sont mis en file d’attente jusqu’à ce que le diagramme s’active. Une fois activé, le diagramme peut répondre aux messages en file d’attente.

  • Les messages ne sont pas perdus si le diagramme de récepteur ne peut pas y répondre immédiatement.

Pour plus d’informations, veuillez consulter Afficher les différences entre les messages, événements et données Stateflow.

Quand une transition ou une action d’état évalue un message, le diagramme détermine si la file d’attente contient des messages. Si c’est le cas, il supprime le message de la file d’attente. Le message reste valide jusqu’à la fin du pas de temps ou jusqu’à ce que le diagramme le transfère ou l’ignore. Tant que le message est valide, les autres transitions ou actions peuvent accéder aux données qu’il contient et le diagramme ne supprime aucun autre message de la file d’attente. Le diagramme détruit tous les messages valides à la fin du pas de temps actuel.

Définir des messages dans un diagramme

Vous pouvez ajouter des messages à un diagramme Stateflow au moyen du volet Symbols, du menu de l’éditeur Stateflow ou du Model Explorer.

Ajouter des messages au moyen du volet « Symbols »

  1. Dans l’onglet Modeling, sous Design Data, sélectionnez Symbols Pane.

  2. Cliquez sur l'icône Create Message .

  3. Dans la ligne du nouveau message, sous Type, cliquez sur l’icône et sélectionnez :

    • Input Message

    • Local Message

    • Output Message

  4. Modifiez le nom du message.

  5. Pour les messages d’entrée et de sortie, cliquez sur le champ Port et choisissez un numéro de port.

  6. Pour spécifier les propriétés du message, ouvrez le Property Inspector. Dans le volet Symbols, faites un clic droit sur la ligne correspondant au message et sélectionnez Explore. Pour plus d’informations, veuillez consulter Set Properties for a Message.

Ajouter des messages au moyen du menu de l’éditeur Stateflow

  1. Dans l’éditeur Stateflow, sélectionnez l’option correspondant à l’étendue du message à ajouter.

    ÉtendueOption
    EntréeDans l’onglet Modeling, sous Design Data, sélectionnez Message Input.
    SortieDans l’onglet Modeling, sous Design Data, sélectionnez Message Output.
    LocalDans l’onglet Modeling, sous Design Data, sélectionnez Message.

  2. Dans la boîte de dialogue « Message », spécifiez les propriétés des données. Pour plus d’informations, veuillez consulter Set Properties for a Message.

Ajouter des messages au moyen du Model Explorer

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

  2. Dans le volet Model Hierarchy, sélectionnez l’objet dans la hiérarchie Stateflow dans laquelle le nouveau message doit être visible. L’objet que vous sélectionnez devient le parent du nouveau message.

  3. Dans le menu du Model Explorer, sélectionnez Add > Message. Le nouveau message avec une définition par défaut apparaît dans le volet Contents du Model Explorer.

  4. Dans le volet Message, spécifiez les propriétés du message. Pour plus d’informations, veuillez consulter Set Properties for a Message.

Durée de vie d’un message Stateflow

Un message Stateflow a une durée de vie limitée. Cette durée est comptabilisée à partir du moment où vous envoyez un message à une file d’attente de réception avec l’opérateur send. Le message reste en file d’attente jusqu’à ce qu’une action de transition ou d’état on l’évalue ou que le diagramme le reçoive au moyen de l’opérateur receive.

Un message devient valide quand un diagramme l’évalue ou le reçoit. Il reste valide jusqu’à ce que :

  • Le pas de temps actuel prenne fin, après quoi le diagramme détruit tous les messages valides restants.

  • Le diagramme transfère le message à une autre file d’attente au moyen de l’opérateur forward. La durée de vie du message se poursuit dans la nouvelle file d’attente.

  • Le diagramme ignore le message au moyen de l’opérateur discard.

Tant qu’un message est valide, les autres transitions et actions peuvent l’évaluer et accéder aux données qu’il contient. Pour vérifier si un message est valide, utilisez l’opérateur isvalid.

Pour visualiser les échanges de messages pendant la simulation, ajoutez un bloc Sequence Viewer à votre modèle Simulink. Le bloc Sequence Viewer affiche les messages suivants :

  • Messages envoyés

  • Messages reçus

  • Messages transférés

  • Messages abandonnés

  • Messages détruits

  • Messages ignorés

Pour plus d’informations, veuillez consulter Use the Sequence Viewer to Visualize Messages, Events, and Entities.

Limitations applicables aux messages

Il est impossible d’utiliser des messages dans :

  • Les diagrammes de Moore

  • Les sous-diagrammes atomiques

  • Les expressions de condition de point d’arrêt

  • Les actions d’entrée

  • Les transitions par défaut avec l’option Execute (enter) Chart At Initialization activée

Dans les diagrammes utilisant le C comme langage d’action, les messages ne supportent pas les données virgule fixe contenant plusieurs mots.

Les diagrammes qui contiennent des messages locaux ne supportent pas la simulation en mode externe ou en mode Rapid Accelerator.

Voir aussi

| | | | | (Simulink) |

Rubriques