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.
value
: Valeur à affecter aux variables de type sous-gammelower
: Limite inférieure de la plageupper
: 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.
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.