Contenu principal

Activer les diagrammes Stateflow en envoyant des événements en entrée

Vous pouvez créer un diagramme Stateflow® qui s’active seulement quand le modèle Simulink® envoie un événement en entrée au diagramme. Une fois activé, le diagramme exécute ses actions.

Les modèles Simulink, les fonctions Simulink ou d’autres diagrammes 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 :

  1. Ajoutez un événement au diagramme Stateflow. Pour plus d’informations, veuillez consulter Define Events in a Chart.

  2. Dans le Property Inspector, définissez la propriété Scope de l’événement à Input from Simulink. Ce paramètre crée un port d’entrée sur le bloc Chart.

  3. Pour spécifier un événement par déclenchement par front d’impulsion, définissez Trigger sur Rising, Falling ou Either. Pour spécifier un appel de fonction, définissez Trigger sur Function call.

Vous pouvez utiliser un signal de contrôle, également appelé déclenchement par front d’impulsion, ou un appel de fonction à partir d’un bloc Simulink. 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

Les événements en entrée par déclenchement par front d’impulsion activent le diagramme Stateflow quand le signal de contrôle passe d’une valeur positive à une valeur négative, d’une valeur négative à une valeur positive, ou les deux. Les événements par déclenchement par front d’impulsion s’exécutent dans le pas de temps où le signal de contrôle change. Le paramètre de la propriété Trigger détermine le moment où le diagramme s’active :

Paramètre de la propriété Trigger

Description

Rising

Le diagramme s’active lorsque le signal de contrôle passe de zéro ou d’une valeur négative à une valeur positive.

Falling

Le diagramme s’active lorsque le signal de contrôle passe d’une valeur positive à zéro ou à une valeur négative.

Either

Le diagramme s’active lorsque le signal de contrôle passe par zéro pour devenir une valeur positive ou négative.

Pour activer l’événement par déclenchement par front d’impulsion, la valeur du signal de contrôle doit être égale à zéro ou passer par zéro. Par exemple, un signal qui passe de -1 à 1 ou de 0 à 2 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.

Il ne peut y avoir plusieurs déclenchements par front d’impulsion montant que quand deux augmentations ou deux diminutions de la valeur du signal de contrôle sont séparées par plus d’un pas de temps. En d’autres termes, le diagramme traite un signal passant de -1 à 0 puis à 1 dans des pas de temps successifs comme un seul déclenchement par front d’impulsion montant et non deux. Pour plus d’informations, veuillez consulter Using Triggered Subsystems (Simulink).

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 le modèle suivant, un événement en entrée par déclenchement par front d’impulsion active le diagramme Edge to Function à intervalles réguliers.

A model that uses edge-triggered events to activate charts. It contains two charts named Edge to Function and Loop Scheduler. A 1-second clock periodically activates the Edge to Function chart, which in turn uses an event named call to activate the Loop Scheduler chart. The Loop Scheduler chart inputs from and outputs to a subsystem named A1.

Événements en entrée par déclenchement par front d’impulsion multiples

Vous pouvez utiliser un événement en entrée par déclenchement par front d’impulsion pour activer un diagramme plusieurs fois dans le même pas de temps. À 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. Si plusieurs fronts d’impulsion se produisent au même pas de temps, le diagramme s’active plusieurs fois dans ce pas de temps.

Activer un diagramme Stateflow à l’aide d’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 le modèle suivant, un événement en entrée par appel de fonction active le diagramme Looping Scheduler.

A model that uses edge-triggered events to activate charts. It contains two charts named Edge to Function and Loop Scheduler. A 1-second clock periodically activates the Edge to Function chart, which in turn uses an event named call to activate the Loop Scheduler chart. The Loop Scheduler chart inputs from and outputs to a subsystem named A1.

Événements en entrée par appel de fonction multiples

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.

Types de données supportés pour les événements en entrée

Lorsqu’il existe 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 utiliser un bloc Mux pour combiner deux signaux d’entrée de type double et utiliser ce signal pour déclencher des événements en entrée dans un diagramme.

Simulink model that uses two signals of type double as input events to a Stateflow chart.

Vous ne pouvez pas utiliser un bloc Mux pour combiner deux signaux d’entrée de différents types de données, tels que boolean et double.

Simulink model that uses a signal of type boolean and a signal of type double as input events to a Stateflow chart. This configuration produces a run-time error.

Voir aussi

Rubriques