Main Content

after

Exécuter le diagramme après la diffusion d’un événement ou un délai spécifié

Description

after(n,E) renvoie true si l’événement E s’est produit au moins n fois depuis l’activation de l’état associé. Sinon, l’opérateur renvoie false.

exemple

after(n,tick) renvoie true si le diagramme s’est réveillé au moins n fois depuis l’activation de l’état associé. Sinon, l’opérateur renvoie false.

L’événement implicite tick n’est pas supporté lorsqu’un diagramme Stateflow® dans un modèle Simulink® possède des événements en entrée.

exemple

after(n,time_unit) renvoie true si au moins n unités de temps se sont écoulées depuis l’activation de l’état associé. Sinon, l’opérateur renvoie false.

Dans les diagrammes d’un modèle Simulink, définissez time_unit en secondes (sec), millisecondes (msec) ou microsecondes (usec). Si vous spécifiez n sous forme d’expression, le diagramme ajuste le délai temporel à mesure que l’expression change de valeur pendant la simulation.

Dans les diagrammes autonomes de MATLAB®, définissez n avec une valeur supérieure ou égale à 0.001 et time_unit en secondes (sec). L’opérateur crée un objet MATLAB timer qui génère un événement implicite pour mettre en activité le diagramme. Les objets MATLAB timer sont limités à une précision de 1 milliseconde. Pour plus d’informations, veuillez consulter Events in Standalone Charts.

  • L’objet timer est créé lorsque le diagramme finit d’exécuter les actions entry de l’état associé et de ses sous-états. Si vous spécifiez n sous la forme d’une expression dont la valeur change pendant l’exécution du diagramme, ce dernier n’ajuste pas le délai temporel de l’objet timer.

  • L’exécution de l’objet timer commence à la fin de l’étape du diagramme où l’état associé devient actif. Cette étape peut inclure l’exécution d’autres états parallèles dans le diagramme.

  • Si le diagramme est en train de traiter une autre opération lorsqu’il reçoit l’événement implicite de l’objet timer, il met l’événement en file d’attente. Une fois l’étape en cours terminée, le diagramme traite l’événement.

  • Si l’état associé à l’opérateur de logique temporelle devient inactif avant que le diagramme ne traite l’événement implicite, ce dernier ne met pas en activité le diagramme.

exemple

Exemples

développer tout

Affiche un message de statut lorsque le diagramme traite la diffusion d'un événement E en commençant à la troisième diffusion de E à compter de l’activation de l’état.

on after(3,E):
   disp("ON");

Stateflow chart that uses the after operator in a state.

Effectue une transition hors de l’état associé lorsque le diagramme traite la diffusion d'un événement E en commençant à la cinquième diffusion de E à compter de l’activation de l’état.

after(5,E)

Stateflow chart that uses the after operator in a transition.

Effectue une transition hors de l’état associé si au moins cinq diffusions de l’événement E ont eu lieu depuis que cet état est actif.

Dans les diagrammes d’un modèle Simulink, saisissez :

[after(5,E)]

Stateflow chart that uses the after operator in a transition.

La notation conditionnelle pour les opérateurs de logique temporelle n’est pas supportée dans les diagrammes autonomes de MATLAB.

Effectue une transition hors de l’état associé lorsque le diagramme se met en activité pour au moins la septième fois depuis l’activation de l’état, mais seulement si la variable temp est supérieure à 98,6.

after(7,tick)[temp > 98.6]

Stateflow chart that uses the after operator in a transition.

Définit la variable temp à LOW chaque fois que le diagramme se met en activité en commençant lorsque l’état associé est actif depuis au moins 12,3 secondes.

on after(12.3,sec):
   temp = LOW;

Stateflow chart that uses the after operator in a state.

Conseils

  • Vous pouvez utiliser des guillemets autour des mots-clés 'tick', 'sec', 'msec' et 'usec'. Par exemple, after(5,'tick') équivaut à after(5,tick).

  • Le diagramme Stateflow réinitialise le compteur utilisé par l’opérateur after chaque fois que l’état associé est réactivé.

  • Le timing des opérateurs de logique temporelle en durée absolue dépend du type de diagramme Stateflow :

    • Les diagrammes d’un modèle Simulink définissent la logique temporelle en durée absolue en termes de temps de simulation.

    • Les diagrammes autonomes de MATLAB définissent la logique temporelle en durée absolue en termes de temps d’horloge, lequel est limité à une précision de 1 milliseconde.

    Cette différence de timing peut affecter le comportement d’un diagramme. Supposons par exemple que ce diagramme exécute l’action during de l’état A.

    Stateflow chart with two states. The during action in state A calls a function f. The transition to state B uses the expression after(2,sec). The entry action in state B displays the elapsed time.

    • Dans un modèle Simulink, l’appel de la fonction f s’exécute en un seul pas de temps et ne contribue pas au temps de simulation. La transition de l’état A vers l’état B se produit la première fois que le diagramme se met en activité et que l’état A est actif depuis au moins deux secondes. La valeur affichée par l’action entry à l’état B dépend uniquement du pas de temps utilisé par le solveur Simulink.

    • Dans un diagramme autonome, l’appel de la fonction f peut prendre plusieurs secondes de temps d’horloge. Si l’appel dure plus de deux secondes, le diagramme met en file d’attente l’événement implicite associé à l’opérateur after. La transition de l’état A vers l’état B se produit lorsque la fonction f finit de s’exécuter. La valeur affichée par l’action entry à l’état B dépend de la durée de complétion de l’appel de la fonction f.

Historique des versions

Introduit dans R2014b