Traitement numérique. Schneider Electric Twido TWD USE 10AE
Instructions élémentaires
16.3
Traitement numérique
Présentation
Objet de ce souschapitre
Ce sous-chapitre offre une introduction au traitement numérique, qui s'appuie sur des descriptions et des directives de programmation.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Introduction aux instructions numériques
Instructions d'affectation
Instructions de comparaison
Instructions arithmétiques sur entiers
Instructions logiques
Instructions de décalage
Instructions de conversion
Instructions de conversion entre mots simples et doubles
Page
TWD USE 10AE
413
Instructions élémentaires
Introduction aux instructions numériques
Présentation
Les instructions numériques s'appliquent généralement aux mots de 16 bits (voir section
Objets mots, p. 29) et aux doubles mots de 32 bits (Voir Objets flottants et
mots doubles, p. 32). Ces instructions apparaissent entre crochets. Si le résultat de
l'opération logique précédente est Vraie (accumulateur booléen = 1), l'instruction numérique est exécutée. Si ce résultat est Faux (accumulateur booléen = 0), l'instruction numérique n'est pas exécutée et l'opérande reste inchangé.
414
TWD USE 10AE
Instructions élémentaires
Instructions d'affectation
Introduction
Affectation
Les instructions d'affectation permettent de charger l'opérande Op2 dans l'opérande
Op1.
Syntaxe des instructions d'affectation
[
Op1:=Op2
] <=>
Op2 -> Op1
Affectation de chaînes de bits
z z z z z z
Les opérations d'affectation peuvent être exécutées sur : z des chaînes de bits
Mots
Doubles mots
Flottants des tables de mots des tables de doubles mots des tables de flottants z z z z
Les opérations peuvent être exécutées sur les chaînes de bits suivantes (voir souschapitre
Chaîne de bit -> chaîne de bit (Exemple 1)
Chaîne de bit -> mot (Exemple 2) ou double mot (indexé)
Mot ou double mot (indexé) -> chaîne de bit (Exemple 3)
Valeur immédiate -> chaîne de bit
TWD USE 10AE
415
Instructions élémentaires
Exemples
Exemples d'affectations de chaînes de bits
%Q0:8:=%M64:8
%I0.2
%I0.3
P
%MW100:=%I0:16
%M104:16:=%KW0
LD 1
[%Q0:8:=%M64:8]
LD %I0.2
[%MW100:=%I0:16]
LDR %I0.3
[%M104:16:=%KW0]
(Ex. 1)
(Ex. 2)
(Ex. 3)
Règles d'utilisation : z z
Pour l'affectation chaîne de bit -> mot : les bits de la chaîne sont transférés vers le mot en commençant par la droite (premier bit de la chaîne vers bit 0 du mot) et les bits mot non concernés par le transfert (longueur
≤16) sont réglés sur 0.
Pour l'affectation mot -> chaîne de bits : les bits mot sont transférés en partant de la droite (bit mot 0 vers premier bit de la chaîne).
Affectations de chaînes de bits
Syntaxe des affectations de chaînes de bits
Opérateur Syntaxe
:= [Op1 : = Op2 ]
L'opérande 1 (Op1) prend la valeur de l'opérande 2 (Op2).
Opérande 1 (Op1)
%MWi,%QWi,
%QWAi,%SWi
%MWi[%MWi], %MDi,
%MDi[%MWi]
%Mi:L, %Qi:L, %Si:L, %Xi:L
Opérande 2 (Op2)
Valeur immédiate, %MWi, %KWi,
%IW,%IWAi, %INWi, %QWi, %QWAi
%QNWi, %SWi, %BLK.x,
%MWi[%MWi], %KWi[%MWi],
%MDi[%MWi], %KDi[%MWi],
%Mi:L,%Qi:L, %Si:L, %Xi:L, %Ii:L
Note : L'abréviation %BLK.x (%C0.P, par exemple) est utilisée pour décrire tout mot de bloc fonction.
416
TWD USE 10AE
Affectation de mots
Exemples
Instructions élémentaires z z z z z z z
Les opérations d'affectation peuvent être exécutées sur les mots et doubles mots suivants :
Mot (indexé) -> mot (Exemple 2) (indexé ou non)
Double mot (indexé) -> Double mot (indexé ou non)
Valeur entière immédiate -> mot (Exemple 3) ou double mot (indexés ou non)
Chaîne de bit -> mot ou double mot
Flottant (indexé ou non)-> flottant (indexé ou non)
Mot ou double mot -> chaîne de bit
Valeur flottante immédiate -> flottant (indexé ou non)
Exemples d'affectations de mots
%SW112:=%MW100
LD 1
[%SW112:=%MW100]
(Ex. 1)
%I0.2
%MW0[%MW10]:=%KW0[%MW20]
LD %I0.2
[%MW0[%MW10]:=
%KW0[%MW20]]
(Ex. 2)
%I0.3
P
%MW10:=100
LDR %I0.3
[%MW10:=100]
(Ex. 3)
TWD USE 10AE
417
Instructions élémentaires
Syntaxe
Syntaxe des affectations de mots
Opérateur Syntaxe
:= [Op1 : = Op2 ]
L'opérande 1 (Op1) prend la valeur de l'opérande 2 (Op2).
Le tableau suivant détaille les opérandes :
Type
mot, double mot, chaîne de bits
Flottant
Opérande 1 (Op1)
%BLK.x, %MWi, %QWi,
%QWAi, %SWi
%MWi[MWi, %MDi,
%MDi[%MWj]],
%Mi:L, %Qi:L, %Si:L, %Xi:L
%MFi, %MFi[%MWj]
Opérande 2 (Op2)
Valeur immédiate, %MWi, %KWi, %IW,
%IWAi, %QWi, %QWAi, %SWi, %MWi[MWi],
%KWi[MWi], %MDi, %MDi[%MWj], %KDi,
%KDi[MWj] , %INW, %Mi:L, %Qi:L, %QNW,
%Si:L, %Xi:L, %Ii:L
valeur flottante immédiate, %MFi,
%MFi[%MWj], %KFi, %KFi[%MWj]
Note : L'abréviation %BLK.x (%R3.I, par exemple) est utilisée pour décrire tout mot de bloc fonction. Pour les chaînes de bits %Mi:L, %Si:L et %Xi:L, le repère de base du premier bit de la chaîne doit être un multiple de 8 (0, 8, 16, ..., 96, ...).
Affectation de tables de mots, doubles mots ou flottants
z z z z z
Les opérations d'affectation peuvent être exécutées sur les tables d’objets suivantes
(voir sous-chapitre
z
Valeur entière immédiate -> table de mots (Exemple 1) ou de mots doubles z Mot -> table de mots (Exemple 2) z Table de mots -> table de mots (Exemple 3)
La longueur de la table (L) doit être la même pour les deux tables.
Double mot -> table de doubles mots
Table de doubles mots -> table de doubles mots
La longueur de la table (L) doit être la même pour les deux tables.
Valeur flottante immédiate -> table de flottants
Flottant -> table de flottants
Table de flottants -> table de flottants
La longueur de la table (L) doit être la même pour les deux tables.
418
TWD USE 10AE
Exemples
Syntaxe
Instructions élémentaires
Exemples d'affectations de tables de mots
%MW0:10:=100
%I0.2
%I0.3
P
%MW0:10:=%MW11
%MW10:20:=%KW30:20
LD 1
[%MW0:10:=100]
LD %I0.2
[%MW0:10:=%MW11]
(Ex. 1)
(Ex. 2)
LDR %I0.3
[%MW10:20:=%KW30:20]
(Ex. 3)
Syntaxe des affectations de tables de mots, doubles mots et flottants
Opérateur Syntaxe
:= [Op1 : = Op2 ]
L'opérande 1 (Op1) prend la valeur de l'opérande 2 (Op2).
Le tableau suivant détaille les opérandes :
Type
tableau de mots
Opérande 1 (Op1)
%MWi:L, %SWi:L
tableau de doubles mots tableau de flottants
%MDi:L
%MFi:L]
Opérande 2 (Op2)
%MWi:L, %SWi:L, Valeur entière immédiate, %MWi, %KWi, %IW, %QW,
%IWA, %QWA, %SWi, %BLK.x
valeur entière immédiate, %MDi,
%KDi,%MDi:L, %KDi:L valeur flottante immédiate, %MFi,
%KFi, %MFi:L, %KFi:L
Note : L'abréviation %BLK.x (%R3.I, par exemple) est utilisée pour décrire tout mot de bloc fonction.
TWD USE 10AE
419
Instructions élémentaires
Instructions de comparaison
Introduction
Les instructions de comparaison permettent de comparer deux opérandes.
Le tableau suivant répertorie les différents types d'instructions de comparaison.
<=
=
<>
Instruction
>
>=
<
Fonction
Teste si l'opérande 1 est supérieur à l'opérande 2.
Teste si l'opérande 1 est supérieur ou égale à l'opérande 2.
Teste si l'opérande 1 est inférieur à l'opérande 2.
Teste si l'opérande 1 est inférieur ou égal à l'opérande 2.
Teste si l'opérande 1 est égal à l'opérande 2.
Teste si l'opérande 1 est différent de l'opérande 2.
Structure
La comparaison s'effectue entre les crochets qui suivent les instructions LD, AND et
OR. Le résultat est 1 lorsque le résultat de la comparaison requise est Vrai.
Exemples d'instructions de comparaison
%Q0.3
%M0
%I0.2
%MW10>100
%MW20<%KW35
%Q0.2
%Q0.4
LD [%MW10 > 100]
ST %Q0.3
LD %M0
AND [%MW20 < %KW35]
ST %Q0.2
LD %I0.2
OR [%MF30>=%MF40]
ST %Q0.4
%MF30>=%MF40
420
TWD USE 10AE
Syntaxe
Instructions élémentaires
Syntaxe des instructions de comparaison :
Opérateur
>, >=, <, <=, =, <>
Syntaxe
LD [Op1 Opérateur Op2]
AND [Op1 Opérateur Op2]
OR [Op1 Opérateur Op2]
Opérandes :
Type
Mots
Opérande 1 (Op1) Opérande 2 (Op2)
%MWi, %KWi, %INWi, %IW,
%IWAi, %QNWi, %QWi, %QWAi,
%QNWi, %SWi, %BLK.x
Valeur immédiate, %MWi, %KWi, %INWi,
%IW, %IWAi, %QNWi, %QW, %QWAi, %SWi,
%BLK.x, %MWi [%MWi], %KWi [%MWi]
Doubles mots %MDi, %KDi
Flottants %MFi, %KFi
Valeur immédiate, %MDi, %KDi, %MDi
[%MWi], %KD [%MWi]
Valeur flottante immédiate, %MFi, %KFi,
%MFi [%MWi], %KFi [%MWi]
Note : Les instructions de comparaison peuvent être utilisées au sein de parenthèses.
Exemple d'utilisation d'une instruction de comparaison entre parenthèses
LD %M0
AND( [%MF20 > 10.0]
)
OR
ST
%I0.0
%Q0.1
TWD USE 10AE
421
Instructions élémentaires
Instructions arithmétiques sur entiers
Introduction
Les instructions arithmétiques permettent d'effectuer des opérations arithmétiques entre deux opérandes entiers ou sur un opérande entier.
Le tableau suivant répertorie les différents types d'instructions arithmétiques.
-
*
Instruction Fonction
+ Addition de deux opérandes
Soustraction de deux opérandes
Multiplication de deux opérandes
/
REM
SQRT
INC
DEC
ABS
Division de deux opérandes
Reste de la division de deux opérandes
Racine carrée d'un opérande
Incrémentation d'un opérande
Décrémentation d'un opérande
Valeur absolue d'un opérande
Structure
Les opérations arithmétiques sont effectuées de la façon suivante :
%M0
%MW0:=%MW10+100
LD %M0
[%MW0:=%MW10 + 100]
%I0.2
%MW0:=SQRT(%MW10)
LD %I0.2
[%MW0:=SQRT(%MW10)]
%I0.3
P
INC %MW100
LDR %I0.3
[INC %MW100]
422
TWD USE 10AE
Syntaxe
Instructions élémentaires
La syntaxe dépend des opérateurs utilisés, tel que l'indique le tableau ci-dessous.
Opérateur
+, -, *, /, REM
INC, DEC
SQRT (1)
ABS (1)
Syntaxe
[Op1: = Op 2 Opérateur Op3]
[Opérateur Op1]
[Op1: = SQRT(Op2)]
[Op1: = ABS(Op2)]
Opérandes :
Type
Mots
Doubles mots
Opérande 1 (Op1) Opérandes 2 et 3 (Op2 & 3) (1)
%MWi, %QWi,
%QWAi, %SWi
%MDi
Valeur immédiate , %MWi, %KWi, %INW, %IW,
%IWAi, %QNW, %QW, %QWAi, %SWi, %BLK.x
Valeur immédiate, %MDi, %KDi
Note : (1) Avec cet opérateur, Op2 ne peut pas être une valeur immédiate.
La fonction ABS n'est utilisable qu'avec des doubles mots (%MD et %KD) et des flottants (%MF et %KF). Par conséquent OP1 et OP2 doivent être des doubles mots ou des flottants.
TWD USE 10AE
423
Instructions élémentaires
Débordement et conditions d'erreurs
Addition
z Débordement pendant l'opération sur mots
Si le résultat dépasse les limites de -32 768 ou de +32 767, le bit %S18
(débordement) est mis à 1. Le résultat est alors non significatif (voir Exemple 1 page suivante). Le programme utilisateur gère le bit %S18.
Remarque :
Pour les doubles mots, les limites sont -2 147 483 648 et 21 474 836 487.
Multiplication
z Débordement pendant l'opération
Si le résultat dépasse la capacité du mot de résultat, le bit %S18 (débordement) est mis à 1 et le résultat n'est pas significatif.
Division / reste
z
Division par 0
Si le dividende est 0, la division est impossible et le bit système %S18 est mis à z
1. Le résultat est alors incorrect.
Débordement pendant l'opération
Si le quotient de la division dépasse la capacité du mot de résultat, le bit système
%S18 est mis à 1.
Calcul de la racine carrée
z Débordement pendant l'opération
Le calcul de la racine carrée est uniquement effectué sur les valeurs positives. Le résultat est, par conséquent, toujours positif. Si l'opérande de racine carrée est négatif, le bit système %S18 est mis à 1 et le résultat est incorrect.
Note : Le programme utilisateur gère les bits système %S17 et %S18. L'automate les règle sur 1. Ils doivent être remis à 0 par le programme afin de pouvoir être réutilisés (voir exemple page précédente).
424
TWD USE 10AE
Exemples
Instructions élémentaires
Exemple 1 : débordement lors de l'addition
%M0
%MW0:=%MW1+%MW2
LD %M0
[%MW0:=%MW1 + %MW2]
%S18
/
%MW10:=%MW0
LDN %S18
[%MW10:=%MW0]
%S18
%MW10:=32767
LD %S18
[%MW10:=32767]
R %S18
%S18
R
Si %MW1 =23 241 et %MW2=21 853, le résultat réel (45 094) ne peut pas être exprimé par un mot de 16 bits, le bit %S18 est réglé sur 1 et le résultat obtenu (-
20 442) est incorrect. Dans cet exemple, la valeur est fixée à 32 767 lorsque le résultat est supérieur à cette valeur.
TWD USE 10AE
425
Instructions élémentaires
Instructions logiques
Introduction
Les instructions logiques permettent d'effectuer des opérations logiques entre deux opérandes ou sur un opérande.
Le tableau suivant répertorie les différents types d'instructions logiques :
Instruction
AND
OR
XOR
NOT
Fonction
AND (bit à bit) entre deux opérandes
OR logique (bit à bit) entre deux opérandes
OR exclusif (bit à bit) entre deux opérandes
Complément logique (bit à bit) d'un opérande
Structure
Les opérations logiques sont effectuées de la façon suivante :
%M0
%MW0:=%MW10 AND 16#FF00
LD %M0
[%MW0:=%MW10 AND 16#FF00]
LD 1
[%MW0:=%KW5 OR %MW10]
[%MW0:=%KW5 OR %MW10]
%I0.3
%MW102:=NOT (%MW100)
LD %I0.3
[%MW102:=NOT(%MW100)]
Syntaxe
La syntaxe dépend des opérateurs utilisés :
Opérateur Syntaxe Opérande 1 (Op1) Opérandes 2 et 3 (Op2 et 3)
AND, OR, XOR [Op1: = Op2 Opérateur Op3] %MWi, %QWi,
NOT [Op1:=NOT(Op2)]
%QWAi, %SWi
Valeur immédiate (1), %MWi, %KWi, %IW,
%IWAi, %QW, %QWAi, %SWi, %BLK.x
Exemple
Note : (1) Avec NOT, Op2 ne peut pas être une valeur immédiate.
L'exemple suivant présente une instruction AND logique.
[%MW15:=%MW32 AND %MW12]
426
TWD USE 10AE
Instructions élémentaires
Instructions de décalage
Introduction
Les instructions de décalage déplacent les bits d'un opérande d'un certain nombre de positions vers la droite ou vers la gauche.
Le tableau suivant répertorie les différents types d'instructions de décalage.
Instruction Fonction
Décalage logique
SHL(op2,i) Décalage logique de i positions vers la gauche
F 0
SHR(op2,i) Décalage logique de i positions vers la droite
F
%S17
0
%S17
Décalage circulaire
ROL(op2,i) Décalage circulaire de i positions vers la gauche
F 0
ROL(op2,i) Décalage circulaire de i positions vers la droite
F
%S17
0
%S17
Note : Le bit système %S17 (Voir
Bits système (%S), p. 596) est utilisé pour le
dépassement de capacité.
TWD USE 10AE
427
Instructions élémentaires
Structure
Les opérations de décalage sont effectuées de la façon suivante :
%I0.1
P %MW0:=SHL(%MW10, 5)
LDR %I0.1
[%MW0 :=SHL(%MW10, 5)]
%I0.2
P
%MW10:=ROR(%KW9, 8)
LDR %I0.2
[%MW10 :=ROR(%KW9, 8)]
Syntaxe
La syntaxe dépend des opérateurs utilisés, tel que l'indique le tableau ci-dessous.
Opérateur
SHL, SHR
ROL, ROR
Syntaxe
[Op1 : = Opérateur (Op2,i)]
Opérandes :
Types
Mots
Double mots
Opérande 1 (Op1) Opérande 2 (Op2)
%MWi, %QWi,
%QWAi, %SWi
%MDi
%MWi, %KWi, %IW, %IWAi, %QW,
%QWAi, %SWi, %BLK.x
%MDi, %KDi
428
TWD USE 10AE
Instructions élémentaires
Instructions de conversion
Introduction
Les instructions de conversion permettent d'effectuer la conversion entre les différentes représentations numériques.
Le tableau suivant répertorie les différents types d'instructions de conversion.
Instruction
BTI
ITB
Fonction
BCD --> Conversion binaire
Binaire --> Conversion BCD
Révision du code
BCD
Le codage BCD (Binary Coded Decimal - décimal codé binaire) représente les décimaux (entre 0 et 9) par un code à quatre bits. Un objet mot de 16 bits peut ainsi contenir un nombre exprimé par quatre chiffres (0000 - 9999), et un objet double mot de 32 bits peut ainsi contenir un nombre exprimé par huit chiffres.
Lors d'une conversion, le bit système %S18 est mis à 1 si la valeur n'est pas BCD.
Ce bit doit être testé et remis à 0 par le programme.
Représentation BCD des décimaux :
Décimal
BCD
0 1 2 3 4 5 6 7 8 9
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Exemples : z
Le mot %MW5 exprime la valeur BCD "2450", qui correspond à la valeur binaire
: 0010 0100 0101 0000 z Le mot %MW12 exprime la valeur décimale "2450", qui correspond à la valeur binaire : 0000 1001 1001 0010
Le mot %MW5 est converti en mot %MW12 à l'aide de l'instruction BTI.
Le mot %MW12 est converti en mot %MW5 à l'aide de l'instruction ITB.
Structure
Les opérations de conversion sont effectuées de la façon suivante :
%M0
%MW0:=BTI(%MW10)
LD %M0
[%MW0 :=BTI(%MW10)]
%I0.2
%MW10:=ITB(%KW9)
LD %I0.2
[%MW10 :=ITB(%KW9)]
TWD USE 10AE
429
Instructions élémentaires
Syntaxe
La syntaxe dépend des opérateurs utilisés, tel que l'indique le tableau ci-dessous.
Opérateur
BTI, ITB
Syntaxe
[Op1 : = Opérateur (Op2)]
Opérandes :
Type
Mots
Mots double
Opérande 1 (Op1) Opérande 2 (Op2)
%MWi, %QWi,
%QWAi, %SWi
%MDi
%MWi, %KWi, %IW, %IWAi,
%QW, %QWAi, %SWi, %BLK.x
%MDi, %KDi
Exemples d'application :
L'instruction BTI peut être utilisée pour traiter une valeur de consigne aux entrées de l'automate via des roues codeuses en BCD.
L'instruction peut être utilisée pour afficher des valeurs numériques sur des afficheurs codés en BCD (résultat d'un calcul, valeur courante d'un bloc fonction, par exemple).
430
TWD USE 10AE
Instructions élémentaires
Instructions de conversion entre mots simples et doubles
Inroduction
Le tableau suivant décrit les instructions de conversions entre les mots simples et doubles :
Instruction
LW
HW
CONCATW
DWORD
Fonction
Extrait l’octet de poids faible d’un double mot vers un mot.
Extrait l’octet de poids fort d’un double mot vers un mot.
Concatène deux mots pour constituer un double mot.
Convertit un mot de 16 bits en un double mot de 32 bits.
Structure
Les opérations de conversion sont effectuées de la façon suivante :
%M0
%MW0:=HW(%MD10)
LD %M0
[%MW0 :=HW(%MD10)]
%I0.2
%MD10:=DWORD(%KW9)
LD %I0.2
[%MD10 :=DWORD(%KW9)]
%I0.3
%MD11:=CONCATW(%MW10, %MW5)
LD %I0.3
[%MD11:=CONCATW(%MW10,%MW5)]
Syntaxe
La syntaxe dépend des opérateurs utilisés, tele que l’indique le tableau suivant : l
Opérateur Syntaxe
LW, HW Op1 = Opérateur (Op2)
Opérande 1 (Op1) Opérande 2 (Op2)
%MWi
CONCATW Op1 = Opérateur (Op2, Op3)) %MDi
%MDi, %KDi
DWORD Op1 = Opérateur (Op2) %MDi
%MWi, %KWi, valeur immédiate
%MWi, %KWi
Opérande 3 (Op3)
[-]
%MWi, %KWi, valeur immédiate
[-]
TWD USE 10AE
431

Link público atualizado
O link público para o seu chat foi atualizado.