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.

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 »
Dans l’onglet Modeling, sous Design Data, sélectionnez Symbols Pane.
Cliquez sur l'icône Create Message
.Dans la ligne du nouveau message, sous Type, cliquez sur l’icône et sélectionnez :
Input MessageLocal MessageOutput Message
Modifiez le nom du message.
Pour les messages d’entrée et de sortie, cliquez sur le champ Port et choisissez un numéro de port.
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
Dans l’éditeur Stateflow, sélectionnez l’option correspondant à l’étendue du message à ajouter.
Étendue Option Entrée Dans l’onglet Modeling, sous Design Data, sélectionnez Message Input. Sortie Dans l’onglet Modeling, sous Design Data, sélectionnez Message Output. Local Dans l’onglet Modeling, sous Design Data, sélectionnez Message. 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
Dans l’onglet Modeling, sous Design Data, sélectionnez Model Explorer.
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.
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.
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
discard | forward | isvalid | receive | send | Queue (Simulink) | Sequence Viewer