La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
hasChanged
Détecter un changement depuis le dernier pas de temps dans un diagramme Stateflow
Syntaxe
Description
renvoie tf
= hasChanged(data
)1
(true
) si la valeur de data
au début du pas de temps actuel est différente de la valeur de data
au début du dernier pas de temps où le diagramme s’est activé. Sinon, l’opérateur renvoie 0
(false
).
Exemples
Arguments d'entrée
Limitations
Ne peut pas être utilisé dans un tableau de vérité Stateflow.
Conseils
Si plusieurs événements d’entrée se produisent dans le même pas de temps, l’opérateur
hasChanged
peut détecter des changements dans la valeur des données entre événements d’entrée.Si le diagramme écrit sur l’objet de données, mais ne change pas la valeur des données, l’opérateur
hasChanged
renvoiefalse
.Le type de diagramme Stateflow détermine l’étendue des données supportées par les opérateurs de détection de changements :
Diagrammes Stateflow autonomes dans MATLAB :
Local
uniquementDans les modèles Simulink®, diagrammes utilisant MATLAB comme langage d’action :
Input
uniquementDans les modèles Simulink, diagrammes utilisant le C comme langage d’action :
Input
,Output
,Local
ouData Store Memory
Dans un diagramme autonome dans MATLAB, un opérateur de détection de changements peut détecter des changements dans des données spécifiées dans un appel à la fonction
step
parce que ces changements se produisent avant le début du pas de temps actuel. Par exemple, six
est égal à zéro, l’expressionhasChanged(x)
renvoietrue
lorsque vous exécutez le diagrammech
avec la commande :En revanche, un opérateur de détection de changements ne peut pas détecter de changements dans les données causés par les affectations dans les actions d’état ou de transition dans le même pas de temps. L’opérateur détecte à la place le changement de valeur au début du prochain pas de temps.step(ch,x=1);
Dans un diagramme dans un modèle Simulink, si vous activez l’option de diagramme Initialize Outputs Every Time Chart Wakes Up, utiliser une sortie comme argument de l’opérateur
hasChanged
renvoie toujoursfalse
. Pour plus d’informations, veuillez consulter Initialize outputs every time chart wakes up.Quand la disposition de tableau Row-Major est activée dans les diagrammes utilisant
hasChanged
, la génération de code produit une erreur. Avant de générer du code dans les diagrammes utilisanthasChanged
, activez la disposition de tableau Column-major. Consultez Select Array Layout for Matrices in Generated Code.
Historique des versions
Introduit dans R2007a