Instructions sur flottants. Schneider Electric Twido TWD USE 10AE
Instructions avancées
17.5
Instructions sur flottants
Présentation
Objet de ce souschapitre
Ce sous-chapitre décrit les instructions avancées sur flottants (Voir Objets flottants
et mots doubles, p. 32) du langage TwidoSoft.
Les instructions de comparaisons et d’affectations sont décrites dans la section
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Instructions arithmétiques sur flottant
Instructions Trigonométriques
Instructions de conversion
Instructions de conversion Entier <-> Flottant
Page
TWD USE 10AE
567
Instructions avancées
Instructions arithmétiques sur flottant
Généralités
Ces instructions permettent de réaliser une opération arithmétique entre deux opérandes ou sur un opérande.
/
*
+
-
LOG
LN
addition de deux opérandes
SQRT
soustraction de deux opérandes
ABS
multiplication de deux opérandes
TRUNC
division de deux opérandes
EXP
logarithme base 10 logarithme népérien
EXPT
racine carré d'un opérande valeur absolue d'un opérande partie entière d'une valeur flottante exponentielle naturelle
Puissance d’un entier par un réel
Structure
Langage à contacts
%M0
%MF0:=%MF10+129.7
%I3.2
%MF1:=SQRT(%MF10)
%I3.3
P
%I3.5
P
%MF2:=ABS(%MF20)
%MF8:=TRUNC(%MF2)
Langage liste d’instructions
LD %M0
[%MF0:=%MF10+129.7]
LD %I3.2
[%MF1:=SQRT(%MF10)]
LDR %I3.3
[%MF2:=ABS(%MF20)]
LDR %I3.5
[%MF8:=TRUNC(%MF2)]
568
TWD USE 10AE
TWD USE 10AE
Langage à contacts
%M0
%I3.2
%I3.3
P
%I3.4
P
%MF0:=LOG(%MF10)
%MF2:=LN(%MF20)
%MF4:=EXP(%MF40)
%MF6:=EXPT(%MF50,%MW52)
Langage liste d’instructions
LD %M0
[%MF0:=LOG(%MF10]
LD %I3.2
[%MF2:=LN(%MF20)]
LDR %I3.3
[%MF4:=EXP(%MF40)]
LDR %I3.4
[%MF6:=EXPT(%MF50,%MW52)]
Instructions avancées
569
Instructions avancées
Syntaxe
Opérateurs et syntaxe des instructions arithmétiques sur flottant
Opérateurs
+, - *, /
SQRT, ABS, TRUNC, LOG, EXP, LN
EXPT
Syntaxe
Op1:=Op2 Opérateur Op3
Op1:=Opérateur(Op2)
Op1:=Opérateur (Op2,Op3)
Note : Lorsqu’on effectue une addition ou une soustraction entre 2 nombres flottants, les 2 opérandes doivent respecter la condition
– 24
, avec
Op1>Op2. Si cette condition n’est pas respectée le résultat est égal à l’opérande
1 (Op1). Ce comportement est sans grande conséquence lorsqu’ils s’agit d’une opération isolée, puisque l’erreur résultante est trés faible (
2
– 24
), mais a des conséquences innatendues s’il s’agit d’un calcul itératif.
Ex : soit l’instruction %MF2:= %MF2 + %MF0 répétée indéfiniment. Si les conditions initiales sont %MF0 = 1.0 et %MF2= 0, on observe un blocage de la valeur de %MF2 à 16777216.
Il est donc déconseillé de programmer sans précaution des calculs itératifs. Si on souhaite néanmoins programmer ce type de calcul, il appartient à l’applicatif client de gérer les erreurs de troncature.
Opérandes des instructions arithmétiques sur flottant:
Opérateurs
+, - *, /
Opérande 1 (Op1) Opérande 2 (Op2)
%MFi
Opérande 3 (Op3)
%MFi, %KFi, valeur immédiate %MFi, %KFi, valeur immédiate
SQRT, ABS, LOG, EXP, LN %MFi
TRUNC %MFi
EXPT %MFi
%MFi, %KFi
%MFi, %KFi
%MFi, %KFi
[-]
[-]
%MWi, %KWi, valeur immédiate
Règles d’utilisation
z z z les opérations sur flottants et sur entiers ne peuvent pas être mixées directement.
Les opérations de conversion (Voir Instructions de conversion Entier <-> Flottant,
p. 574) assurent la conversion dans l'un ou l'autre de ces formats.)
le bit système %S18 est géré de façon identique aux opérations sur entier (Voir
Instructions arithmétiques sur entiers, p. 422), le mot %SW17 (Voir Mots système
(%SW), p. 604) indique la cause du défaut.
lorsque l'opérande de la fonction est une valeur invalide (exemple : logarithme d'un nombre négatif), elle produit un résultat indéterminé ou infini et fait passer le bit %S18 à 1,le mot %SW17 indique la cause du défaut.
570
TWD USE 10AE
Instructions avancées
Instructions Trigonométriques
Généralités
Ces instructions permettent de réaliser des opérations trigonométriques.
SIN
sinus d'un angle exprimé en radian,
COS
cosinus d'un angle exprimé en radian,
TAN
tangente d'un angle exprimée en radian.
ASIN
ACOS
ATAN
arc sinus (résultat entre
-π
et
π
2
) arc cosinus (résultat entre 0 et
π
) arc tangente (résultat entre
-π
et
π
2
)
Structure
Langage à contacts
%M0
%MF0:=SIN(%MF10)
%I3.2
%MF2:=TAN(%MF10)
%I3.3
P
%MF4:=ATAN(%MF20)
Langage liste d’instructions
LD %M0
[%MF0:=SIN(%MF10)]
LD %I3.2
[%MF2:=TAN(%MF10)]
LDR %I3.3
[%MF4:=ATAN(%MF20)]
TWD USE 10AE
571
Instructions avancées
Langage littéral structuré
IF %M0 THEN
%MF0:=SIN(%MF10);
END_IF;
IF %I3.2 THEN
%MF2:=TAN(%MF10);
END_IF;
IF %I3.3 THEN
%MF4:=ATAN(%MF20);
END_IF;
Syntaxe
Opérateurs, opérandes et syntaxe des instructions opérations trigonométriques:
Opérateurs
SIN, COS, TAN, ASIN, ACOS, ATAN
Syntaxe
Op1:=Opérateur(Op2)
Opérande 1 (Op1)
%MFi
Opérande 2 (Op2)
%MFi, %KFi
Règles d’utilisation
z z lorsque l'opérande de la fonction est une valeur invalide (exemple : arc cosinus d'un nombre supérieur à 1), elle produit un résultat indéterminé ou infini et fait passer le bit %S18 à 1, le mot %SW17 (Voir
indique la cause du défaut.
les fonctions SIN/COS/TAN admettent en paramètre un angle entre
4096
π
– 4096 π
et
mais leur précision décroît progressivement pour les angles en dehors de l'intervalle
– 2 π
et
+2 π
en raison de l'imprécision apportée par le modulo effectué sur le paramètre avant toute opération.
2
π
572
TWD USE 10AE
Instructions avancées
Instructions de conversion
Généralités
Ces instructions permettent de réaliser des opérations de conversion.
DEG_TO_RAD
conversion de degré en radian, le résultat est la valeur de l'angle compris entre 0 et
2
π
RAD_TO_DEG
conversion d'un angle exprimée en radian, le résultat est la valeur de l'angle compris entre 0 et 360 degrés
Structure
Langage à contacts
%M0
%MF0:=DEG_TO_RAD(%MF10)
%M2
%MF2:=RAD_TO_DEG(%MF20)
Langage liste d'instructions
LD %M0
[%MF0:=DEG_TO_RAD(%MF10)]
LD %M2
[%MF2:=RAD_TO_DEG(%MF20)]
Langage littéral structuré
IF %M0 THEN
%MF0:=DEG_TO_RAD(%MF10);
END_IF;
IF %M2 THEN
%MF2:=RAD_TO_DEG(%MF20);
END_IF;
Syntaxe
Opérateurs, opérandes et syntaxe des instructions de conversion:
Opérateurs
DEG_TO_RAD RAD_TO_DEG
Syntaxe
Op1:=Opérateur(Op2)
Opérande 1 (Op1)
%MFi
Opérande 2 (Op2)
%MFi, %KFi
Règles d'utilisation
L'angle à convertir doit être compris entre –737280,0 et +737280,0 (pour les conversions
DEG_TO_RAD) ou entre
– 4096
π
et
4096
π
(pour les conversions RAD_TO_DEG).
Pour des valeurs non comprises entre ces bornes le résultat affiché sera + 1.#NAN, les bits %S18 et %SW17:X0 étant positionnés à 1.
TWD USE 10AE
573
Instructions avancées
Instructions de conversion Entier <-> Flottant
Généralités
Quatre instructions de conversion sont proposées.
Liste des instructions de conversion entier<-> flottant :
INT_TO_REAL
conversion d'un mot entier --> flottant
DINT_TO_REAL conversion d'un mot double (entier) --> flottant
REAL_TO_INT
conversion d'un flottant --> mot entier (le résultat est la valeur algébrique la plus proche)
REAL_TO_DINT conversion d'un flottant --> mot double entier (le résultat est la valeur algébrique la plus proche)
Structure
Langage à contacts
%MF0:=INT_TO_REAL(%MW10)
%I1.8
%MD4:=REAL_TO_DINT(%MF9)
Langage liste d'instructions
LD TRUE
[%MF0:=INT_TO_REAL(%MW10)]
LD I1.8
[%MD4:=REAL_TO_DINT(%MF9)]
Langage littéral structuré
%MF0:=INT_TO_REAL(%MW10)
;
IF %I1.8 THEN
%MD4:=REAL_TO_DINT(%MF9);
END_IF;
574
TWD USE 10AE
Syntaxe
Instructions avancées
Opérateurs et syntaxe (conversion d'un mot entier --> flottant) :
Opérateurs
INT_TO_REAL
Syntaxe
Op1=INT_TO_REAL(Op2)
Opérandes (conversion d'un mot entier --> flottant) :
Opérande 1 (Op1) Opérande 2 (Op2)
%MFi %MWi,%KWi
Exemple : conversion mot entier --> flottant : 147 --> 1,47e+02
Opérateurs et syntaxe (conversion mot double entier --> flottant) :
Opérateurs
DINT_TO_REAL
Syntaxe
Op1=DINT_TO_REAL(Op2)
Opérandes (conversion mot double entier --> flottant) :
Opérande 1 (Op1) Opérande 2 (Op2)
%MFi %MDi,%KDi
Exemple : conversion mot double entier --> flottant : 68905000 --> 6,8905e+07
Opérateurs et syntaxe (conversion flottant --> mot entier ou mot double entier) :
Opérateurs
REAL_TO_INT
REAL_TO_DINT
Syntaxe
Op1=Opérateur(Op2)
Opérandes (conversion flottant --> mot entier ou mot double entier) :
Type Opérande 1 (Op1) Opérande 2 (Op2)
Mots %MWi
Mots doubles %MDi %MFi, %KFi
Exemple : conversion flottant --> mot entier : 5978,6 --> 5979 conversion flottant --> mot double entier : –1235978,6 --> -1235979
Note : Si, lors d'une conversion réel vers entier (ou réel vers entier mot double), la valeur flottante est en dehors des bornes du mot (ou du mot double), le bit %S18 est positionné à 1.
TWD USE 10AE
575
Instructions avancées
Précision d'arrondi
La norme IEEE 754 définit 4 modes d'arrondi pour les opérations sur flottant.
Le mode utilisé par les instructions ci-dessus est le mode "arrondi au plus près":
"si les valeurs représentables les plus proches sont à égale distance du résultat théorique, la valeur founie sera celle dont le bit de poids faible est égal à 0".
Dans certains cas, le résultat de l'arrondi peut donc prendre une valeur par défaut ou un valeur par excès.
Par exemple :
Arrondi de la valeur 10,5 -> 10
Arrondi de la valeur 11,5 -> 12
576
TWD USE 10AE

Lien public mis à jour
Le lien public vers votre chat a été mis à jour.