Skip to main content

POU : CheckRangeUnsigned

Fonction de surveillance des limites de gamme d'un type de sous-gamme de type UDINT

Pour un exemple de mise en œuvre de la surveillance de plage, consultez la page d'aide de la CheckRangeSigned une fonction.

Limites de la plage de surveillance

Ce fonction de surveillance est responsable de la manipulation appropriée des violations des limites de portée. Des exemples de réactions aux violations incluent la définition d'indicateurs d'erreur et la modification de valeurs. Les fonctions sont appelées implicitement lorsqu'une valeur est affectée à une variable de type sous-plage.

Attention

Pour obtenir la fonctionnalité de surveillance des fonctions, ne modifiez pas la partie déclaration. Cependant, vous êtes autorisé à ajouter des variables locales.

. Lorsque la fonction est appelée, elle reçoit les paramètres d'entrée suivants :
  • value: Valeur à affecter aux variables de type sous-gamme

  • lower: Limite inférieure de la plage

  • upper: Limite supérieure de la plage

La valeur de retour est la valeur d'affectation tant qu'elle se trouve dans la plage valide. Si ce n'est pas le cas, la limite supérieure ou inférieure est renvoyée, selon le seuil qui a été violé.

Par exemple, l'affectation i := 10*y est remplacé implicitement par i := CheckRangeSigned(10*y, -4095, 4095);

Si y est "1000", alors "10*1000=10000" n'est pas affecté à i comme dans le code d'origine. Au lieu de cela, la limite supérieure de la plage de "4095" est attribuée.

Il en est de même pour CheckRangeUnsigned une fonction.

Important

Si les fonctions ne sont pas disponibles, la sous-gamme n'est pas vérifiée pour les variables respectives lors de l'exécution. Dans ce cas, vous pouvez affecter n'importe quelle valeur entre -2147483648 et +2147483648 (ou entre 0 et 4294967295) à une variable de type sous-plage DINT/UDINT. Vous pouvez affecter n'importe quelle valeur entre -9223372036854775808 et +9223372036854775807 (ou entre 0 et 18446744073709551615) à une variable d'un type de sous-plage LINT/ULINT.

Attention

La liaison des fonctions de surveillance de zone peut conduire à des boucles infinies. Par exemple, une boucle infinie peut se produire si la variable de compteur d'une boucle FOR est de type sous-plage et que la plage de comptage de la boucle sort de la sous-plage définie.

Exemple 536. Exemple de boucle infinie :
VAR
        ui : UINT (0..10000);
 ...
END_VAR
FOR ui:=0 TO 10000 DO
        ...
END_FOR

Le programme ne quitte jamais la boucle FOR car le CheckRangeSigned la fonction de surveillance empêche ui d'être fixé à une valeur supérieure à 10000.