SATURATION : saturation
Traduction de la notice originale
Description de la fonction
L'ajout d'une valeur très petite ou très élevée risque de fausser le résultat. La fonction SATURATION calcule la valeur REAL maximum (L pour limite de saturation) qui donne un résultat correct après l'ajout d'une valeur REAL très petite (P pour précision). Elle fournit la valeur REAL maximum (L) et un bit d'erreur booléen qui indique si l'addition est correcte (0) ou non (1).
EN et ENO peuvent être configurés comme paramètres supplémentaires.
Formule
La formule ci-dessous explique comment est calculée la limite (valeur REAL maximum) d'une précision (valeur REAL faible) donnée. Au-delà de cette limite, la précision est perdue et le résultat de l'addition des deux valeurs est indiqué par une erreur de la fonction élémentaire (EF).
X = Int(Abs(Ln(P * 223) / Ln(2)))
L = 2X+2
Où P est la précision et L, la limite.
Représentation en FBD
Représentation :
Représentation en LD
Représentation :
Représentation en IL
Représentation :
LD Precision
SATURATION Valeur, Erreur, Limite
Représentation en ST
Représentation :
SATURATION (Précision, Valeur, Erreur, Limite);
Description des paramètres
Le tableau suivant décrit les paramètres d’entrée :
Paramètre
Type
Commentaire
Précision
Valeur REAL très petite
Valeur
Valeur REAL importante
Le tableau suivant décrit les paramètres de sortie :
Paramètre
Type
Commentaire
Erreur
Etat de la limite de saturation :
  • 0 : limite de saturation non atteinte (résultat de l'addition correct)
  • 1 : limite de saturation atteinte (résultat de l'addition incorrect)
Limite
La sortie Limite indique la limite de saturation calculée en fonction de la précision donnée, qui est également une précieuse information.
Exemple
Exemple de représentation :
Le tableau ci-dessous fournit des exemples avec des paramètres de sortie correspondant à l'addition des paramètres d'entrée :
Paramètres d’entrées
Paramètres de sorties
Valeur (REAL)
Valeur (HEX)
Précision (REAL)
Limite (REAL)
Limite (HEX)
Erreur
32767.5
16#46FF_FF00
0,001
32768.0
16#46FF_FF01
0 (résultat correct)
32768.0
16#4700_0000
0,001
32768.0
16#4700_0000
1 (résultat incorrect)
32768.5
16#4700_0080
0,001
32768.0
16#4700_0080
1 (résultat incorrect)
NOTE : la valeur REAL affichée dans la table d'animation peut différer de la valeur binaire encodée, en raison de l'arrondissement.