Attributs courants des Instructions de contrôle du processus avancé et de variateurs
Recommandation générale pour les opérations mathématiques sur les
nombres à virgule flottante
Respectez les recommandations suivantes :
Lorsque vous effectuez certaines opérations mathématiques avec des nombres à
virgule flottante, il peut y avoir une perte de précision en raison de l'erreur
d'arrondi. Les processeurs à virgule flottante possèdent leur propre précision
interne qui peut avoir une incidence sur les valeurs résultantes.
N'utilisez pas les mathématiques à virgule flottante pour des valeurs concernant de
l'argent ou pour des fonctions de totalisation. Utilisez des valeurs INT ou DINT,
mettez les valeurs à l'échelle, et conservez le suivi de la position décimale (ou
utilisez une valeur INT ou DINT pour les dollars, et une deuxième valeur INT ou
DINT pour les centimes).
Ne comparez pas des nombres à virgule flottante. Vérifiez plutôt des valeurs dans
une plage. L'instruction LIM est fournie spécifiquement à cet effet.
Exemples de totalisateur
La précision du type de données REAL affecte les applications de totalisation, en
produisant par exemple des erreurs lors de l'ajout de très grands nombres à de très
petits nombres.
Par exemple, ajouter 1 un nombre pendant un certain temps. À un certain point,
l'ajout n'affectera plus le résultat, car la somme en cours est beaucoup plus grande
que 1 et il n'y a pas suffisamment de bits pour stocker la totalité du résultat. L'ajout
stocke autant de bits de poids supérieur que possible et ignore les bits de poids
inférieur restants.
Pour contourner cela, effectuez des opérations mathématiques sur de petits
nombres jusqu'à ce que le résultat devienne important. Ensuite, transférez-les vers
un autre emplacement pour effectuer des opérations mathématiques
supplémentaires sur des grands nombres. Par exemple :
x est la variable de petit incrément.
x est la variable de grand incrément.
z est le nombre total actuel pouvant être utilisé partout.
x = x+1;
if x = 100,000;
{
y = y + 100,000;
x = 0;
Publication Rockwell Automation 1756-RM006K-FR-P - Novembre 2018
Chapitre 11
569