Activer un diagramme Stateflow en envoyant des événements en entrée
Les modèles Simulink® contiennent des diagrammes Stateflow®, mais ces diagrammes ne sont pas forcément actifs pour la durée de l’exécution du modèle. Une façon de rendre un diagramme actif est de recevoir un événement en entrée depuis Simulink. Une fois que les diagrammes Stateflow sont actifs, le diagramme exécute ses actions.
Un événement en entrée se produit en dehors d’un diagramme Stateflow. Un modèle Simulink, une fonction Simulink ou un autre diagramme Stateflow peuvent générer des événements en entrée.
Définir un événement en entrée
Pour définir un événement en entrée :
Ajoutez un événement au diagramme Stateflow. Pour plus d’informations, veuillez consulter Define Events in a Chart.
Dans le Property Inspector, définissez la propriété Scope de l’événement à
Input from Simulink. Un seul port de déclenchement apparaît en haut du bloc Stateflow dans le modèle Simulink.
Un événement en entrée peut activer un diagramme Stateflow via une modification du signal de contrôle ou d’un appel de fonction d’un bloc Simulink. La modification d’un signal de contrôle est également appelée un déclenchement par front d’impulsion. Vous ne pouvez pas utiliser à la fois des événements en entrée par déclenchement par front d’impulsion et par appel de fonction dans le même diagramme Stateflow. L’utilisation de ces événements en entrée ensemble engendre une erreur au moment de la compilation.
Activer un diagramme Stateflow à l’aide de déclenchements par front d’impulsion
Un événement en entrée par déclenchement par front d’impulsion provoque l’exécution par le diagramme Stateflow durant le pas de temps réel de la simulation. Avec ce type d’événement en entrée, une modification dans le signal de contrôle fait office de déclenchement.
Pour préciser un événement en entrée par appel de fonction, définissez la propriété Trigger à Function call.
Type de déclenchement par front d’impulsion | Description |
|---|---|
| Déclenchement par front d’impulsion montant. Le diagramme est activé lorsque le signal de contrôle passe de zéro ou d’une valeur négative à une valeur positive. |
| Déclenchement par front d’impulsion descendant. Le diagramme est activé lorsque le signal de contrôle passe d’une valeur positive à zéro ou à une valeur négative. |
| Déclenchement par front d’impulsion montant ou descendant. Le diagramme est activé lorsque le signal de contrôle passe par zéro pour devenir une valeur positive ou négative. |
Dans tous les cas, la valeur du signal de contrôle doit être égale à zéro ou passer par zéro pour constituer un déclenchement par front d’impulsion valide. Par exemple, un signal qui passe de -1 à 1 est un déclenchement par front d’impulsion montant valide. Un signal qui passe de 1 à 2 n’est pas un déclenchement par front d’impulsion montant valide. Un signal qui passe de 0 à 2 est un déclenchement par front d’impulsion montant valide.
Quand utiliser les événements en entrée déclenchés par front d’impulsion
Utilisez un événement en entrée par déclenchement par front d’impulsion pour activer un diagramme lorsque votre modèle requiert une exécution de diagramme régulière ou périodique. Par exemple, dans ce modèle, un événement en entrée par déclenchement par front d’impulsion active le diagramme Edge to Function à des intervalles réguliers.

Comportement de plusieurs événements en entrée par déclenchement par front d’impulsion
À chaque pas de temps, Stateflow vérifie les événements en entrée dans l’ordre ascendant selon leurs numéros de port. Le diagramme s’active une fois pour chaque événement valide. Pour les événements en entrée par déclenchement par front d’impulsion, plusieurs fronts d’impulsion peuvent se produire au même pas de temps, activant le diagramme plusieurs fois dans ce pas de temps.
Activer un diagramme Stateflow à l’aide des appels de fonction
Un événement en entrée par appel de fonction provoque l’exécution du diagramme Stateflow pendant le pas de temps réel de la simulation.
Quand utiliser les événements en entrée par appel de fonction
Utilisez un événement en entrée par appel de fonction pour activer un diagramme lorsque votre modèle nécessite l’accès aux données de sortie depuis le diagramme dans le même pas de temps que l’appel de fonction. Par exemple, dans ce modèle, un événement en entrée par appel de fonction active le diagramme Looping Scheduler.

Comportement de plusieurs événements en entrée par appel de fonction
Pour les événements en entrée par appel de fonction, un seul événement déclencheur existe. L’appelant de l’événement appelle explicitement et exécute le diagramme.
Association d’événements en entrée avec des signaux de contrôle
Lorsque vous définissez un ou plusieurs événements en entrée dans un diagramme, un seul port de déclenchement apparaît en haut du bloc de diagramme. Plusieurs blocs Simulink externes peuvent déclencher les événements en entrée via un vecteur de signaux connecté au port de déclenchement. La propriété Port d’un événement en entrée précise l’index dans le vecteur de signal de contrôle qui est connecté au port de déclenchement.
Par défaut, les valeurs Port apparaissent dans l’ordre dans lequel vous avez ajouté les événements en entrée. Vous pouvez modifier ces affectations en modifiant la propriété Port de ces événements. Lorsque vous modifiez la propriété Port pour un événement en entrée, les valeurs Port des événements en entrée restants sont automatiquement renumérotées.
Types de données autorisés pour les événements en entrée
Pour plusieurs événements en entrée sur un port de déclenchement, tous les signaux doivent posséder le même type de données. L’utilisation de signaux de différents types de données en tant qu’événements en entrée provoque une erreur durant la simulation. Par exemple, vous pouvez multiplexer deux signaux d’entrée de type double que vous utiliserez comme événements en entrée dans un diagramme.

Vous ne pouvez pas multiplexer deux signaux d’entrée de différents types de données, tels que boolean et double.
