Professional Documents
Culture Documents
5 Instructions Complexes
a / Oprations List. b / Oprations de calculs. c / Gestions Programme et Dcalage. d / Oprations sur Mots. e / Oprations sur laccumulateur. f / Chargement / transfert. g / Le Mot dtat. h / Adressage Indirect.
Aforest
PH.Fvrier/05
Maintenance S7
a/ Oprations List
Instructions logiques:
z z z z z z z z z z z z z O( O ON ON( U( U UN UN( X( X XN XN( )
OU dune expression OU OU NON OU PAS dune expression. ET dune expression ET ET NON ET PAS dune expression OU EXCLUSIF dune expression OU EXCLUSIF OU EXCLUSIF NON OU NON EXCLUSIF dune expression Fermer la parenthse dune expression.
Instructions et RLG:
z z z z z z CLR: SET: SAVE: NOT: FN: FP:
Mettre le RLG 0. Mettre le RLG 1. Sauver le RLG dans le RB. Inversion du RLG. Front Descendant. Front Montant.
Sorties et RLG:
z = z R z S
a/ Oprations List
Convertir un nombre DCB en un entier de 16 bits. Convertir un entier de 16 bits en un nombre DCB. Convertir un entier de 16 bits en un nombre entier de 32 bits. Convertir un nombre DCB en un entier de 32 bits. Convertir un nombre entier de 32 bits en un nombre DCB. Convertir un nombre entier de 32 bits en un nombre rel. Complment 1 dun entier de 16 bits. Complment 1 dun entier de 32 bits. Complment 2 dun entier de 16 bits. Complment 2 dun entier de 32 bits. Inverser le signe dun rel. Arrondir le nombre. Former un nombre entier. Arrondir lentier suprieur. Arrondir lentier infrieur.
EN CONT
Rq :
EN LIST
a/ Oprations List
Ouvrir un bloc de donnes. Charger longueur de DB global dans laccumulateur 1. Charger le numro de DB global dans laccumulateur 1. Charger longueur de DB dinstance dans laccumulateur 1 Charger le numro de DB dinstance dans laccumulateur 1 Permuter le DB global et le DB dinstance.
Exemple:
AUF L T
10 // Ouvrir le bloc de donnes DB10 comme bloc de donnes global. 35 // Charger dans laccumulateur 1-L la valeur du mot DBW35 22 // Transfrer le contenu de laccumulateur dans la mmoire MW22. 20 // Ouvrir le bloc DB20 comme bloc de donnes dinstance. 12 // Charger dans lACCU 1-L loctet DIB12 du DB dinstance ouvert. 37 // Transfert le contenu de lACCU 1-L dans loctet 37 du DB global ouvert.
AUF L T
a/ Oprations List
Instructions de saut,
z z z z z z z z z z z z z z z z z z z LOOP: SPA: SPB: SPBB: SPBI: SPBIN: SPBN: SPBNB: SPL: SPM: SPMZ: SPN: SPO: SPP: SPPZ: SPS: SPU: SPM: SPZ:
Boucle de programme. Saut Inconditionnel. Saut si le RLG=1 Saut si le RLG=1 avec RB Saut si le RB=1 Saut si le RB=0 Saut si le RLG=0 Saut si le RLG=0 avec RB Saut vers liste Saut si moins Saut si <= 0 Saut si diffrent de 0 Saut si DEB =1 Saut si Plus Saut si >= 0 Saut si DM = 1 Saut si Illicite Saut si moins Saut si = 0
(Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel).
Rq :
b/ Calcul
Oprations Arithmtiques
z z z z z z z z z + I - I * I / I + D - D * D / D MOD :ADD_I : :SUB_I : :MUL_I : :DIV_I : :ADD_DI: :SUB_DI: :MUL_DI: :DIV_DI: :MOD_DI:
NOMBRES ENTIERS
Addition de deux nombres entiers de 16 bits. Soustraction de deux nombres entiers de 16 bits. Multiplication de deux nombres entiers de 16 bits. Division de deux nombres entiers de 16 bits. Addition de deux nombres entiers de 32 bits. Soustraction de deux nombres entiers de 32 bits. Multiplication de deux nombres entiers de 32 bits. Division de deux nombres entiers de 32 bits. Reste de division (32 bits).
Exemple en LIST:
U L L E MW MW
* I T
MW
0.0 // Si lentre est active. 100 // Charger dans ACCU 1-L la valeur du mot MW100 102 // Charger dans ACCU 1-L la valeur du mot MW102 // Lancien contenu de lACCU1 est charg dans lACCU2. // Multiplication de ACCU2 avec ACCU1, rsultat dans ACCU1 104 // Charger la valeur de lACCU1 vers la mmoire MW104.
Exemple en CONTACT:
b/ Calcul
z z z z z z z z z z z z z z z + R - R * R / R ABS SQRT SQR LN EXP SIN COS TAN ASIN ACOS ATAN :ADD_R :SUB_R :MUL_R :DIV_R :ABS :SQRT :SQR :LN :EXP :SIN :COS :TAN :ASIN :ACOS :ATAN : : : : : : : : : : : : : : :
NOMBRES REELS
Addition de deux nombres rels. Soustraction de deux nombres rels. Multiplication de deux nombres rels. Division de deux nombres nombres rels. Valeur absolue dun nombre rel. Racine carr. Carr. Logarithme naturel. Exposant. Sinus. Cosinus. Tangente. Arc Sinus. Arc Cosinus. Arc Tangente.
Exemple en LIST:
L L MD MD
* R T
MD
100 // Charger dans ACCU 1 la valeur du mot MD100 104 // Charger dans ACCU 1 la valeur du mot MD104 // Lancien contenu de lACCU1 est charg dans lACCU2. // Multiplication de ACCU2 avec ACCU1, rsultat dans ACCU1 108 // Charger la valeur de lACCU1 vers la mmoire MD108.
c/ Gestion
LECTURE DE PROGRAMME
: : : : : : : : : : Fin de bloc. Fin de bloc inconditionnelle. Fin de bloc conditionnelle. Appel de Bloc. Appel de Bloc inconditionnel. Appel de bloc conditionnel. Sauvegarder RLG dans pile MCR, dbut de zone MCR. Fin de zone MCR. Activer la zone MCR. Dsactiver la zone MCR.
Exemple en LIST:
U CALL U BEB E FC E 0.0 // 1 //
0.1 // Si lentre E0.1 est 1. // Fin du traitement du bloc, mme si il existe en dessous des lignes de programme.On retourne au bloc dappel.
c/ Gestion
Oprations Arithmtiques
z z z z z z z z SSI SSD SLW SRW SLD SRD RLD RRD :SHR_I : :SHR_DI: :SHL_W : :SHR_W: :SHL_DW: :SHR_DW: :ROL_DW: :ROR_DW:
DECALAGE / ROTATION
Dcalage vers la droite dun nombre entier de 16 bits. Dcalage vers la droite dun nombre entier de 32 bits. Dcalage vers la gauche de 16 bits. Dcalage vers la droite de 16 bits. Dcalage vers la gauche de 32 bits. Dcalage vers la droite de 32 bits. Rotation vers la gauche de 32 bits. Rotation vers la droite de 32 bits.
Exemple en LIST:
L L MW MW 100 // 102 // // // 104 //
* SRW T MD
Charger dans ACCU 1 la valeur du mot MW100 Charger dans ACCU 1 la valeur du mot MW102 Lancien contenu de lACCU1 est charg dans lACCU2. Dcalage vers la droite de 16 bits Charger la valeur de lACCU1 vers la mmoire MW104.
Exemple en CONTACT:
N
d/ Les Mots
z z z z z z UW OW XOW UD OD XOD :WAND_W : :WOR_W : :XOW : :WAND_DW : :WOR_DW : :WXOR_DW :
OPERATIONS LOGIQUES
Opration Opration Opration Opration Opration Opration ET sur 16 bits. OU sur 16 bits OU EXCLUSIF sur 16 bits ET sur 32 bits OU sur 32 bits OU EXCLUSIF sur 32 bits
10
Exemple en LIST:
L L MD MD MD 100 // 104 // // // 108 //
* UD T
Charger dans ACCU 1 la valeur du mot MD100 Charger dans ACCU 1 la valeur du mot MD104 Lancien contenu de lACCU1 est charg dans lACCU2. ET logique entre ACCU2 et ACCU1 Charger la valeur de lACCU1 vers la mmoire MD108.
Exemple en CONTACT:
e/ Accumulateurs
z z z z z z z z z z z z BLD DEC INC NOP 0 NOP 1 POP PUSH TAK ENT LEAVE +AR1 +AR2 : : : : : : : : : : : :
TRANSFERTS
11
Opration de composition dimage (opration nulle). Dcrmenter laccumulateur 1-L-L. Incrmenter laccumulateur 1-L-L. Opration nulle (RLG 0). Opration nulle (RLG 1). Copies inverse de ACCU4=>3, 3=>2, 2=>1. Copies de ACCU1=>2, 2=>3, 3=>4. Permuter ACCU1 et ACCU2. Copies de ACCU2=>3, 3=>4. Copies de ACCU4=>3, 3=>2. Additionner ACCU1 au registre dadresse 1. Additionner ACCU1 au registre dadresse 2.
PUSH
ENT
A C C U 1 A C C U 2 A C C U 3 A C C U 4
TAK
LEAVE
POP
e/ Accumulateurs
PERMUTATIONS
12
A C C U 1
1-H-H 1-H-L 1-L-H 1-L-L
TAW
TAD
A C C U 1
TAD
1-L-H 1-L-L
1-H-H
1-H-L
e/ Accumulateurs
ROTATION
bits de lACCU1.
13
1-H
1-L
X
BI 1
X
z RRDA
BI 1
Y Y
1-H
1-L
X
BI 1
X
e/ Accumulateurs
Chargement et Transfert
14
Instructions de Chargement:
z z z z z z z z TAR : L : L STW: LAR1: LAR1 <d>: LAR1 AR2: LAR2: LAR2 <d>:
Permuter Registre dadresse 1 avec Registre dAdresse 2. Charger. Charger mot dtat dans laccumulateur 1. Charger Accumulateur1 => Registre dadresse1. Charger pointeur de 32 bits dans Registre dadresse1. Charger Registre dadresse 2 => Registre dadresse1. Charger Accumulateur1 => Registre dadresse 2. Charger pointeur de 32 bits dans Registre dadresse 2.
Instructions de Transfert:
z z z z z z z z TAR : T : T STW: TAR1: TAR1 <d>: TAR1 AR2: TAR2: TAR2 <d>:
Permuter Registre dadresse 1 avec Registre dAdresse 2. Transfrer. Transfrer laccumulateur 1 dans mot dtat. Transfrer Registre dadresse1 => Accumulateur1. Transfrer Registre dadresse1 ladresse de destination ( 32 bits). Transfrer Registre dadresse1 => Registre dadresse 2. Transfrer Registre dadresse 2 => Accumulateur1. Transfrer Registre dadresse 2 ladresse de destination (32 bits).
f/ Chargement
MW 100:
TRANSFERT
15
L MW100
STANDARD
ACCU2
23 0 0 23
TAK
14 23 23 0
MW 200: MW 200:
0
LAR1 STANDART A C C U 1
T MW200
A R 1
TAR
A R 2
g/ Mot dtat
Mot dtat:
DESCRIPTIONS
16
Le mot dtat est un registre dans la mmoire de votre CPU contenant des bits auxquels vous pouvez accder dans les oprandes de combinaisons sur bits et sur mots. Structure du mot dtat :
Vous pouvez valuer les bits avec les oprations sur les nombres entiers et virgules flottantes.
g/ Mot dtat
BITS DU MOT
17
h/ Ad. Indirect
z
EN MEMOIRE
18
Ajout de la valeur d un mot (index) une adresse donne: Si MW100= 0 Alors on travaille avec SE T0 Si MW100= 1 Alors on travaille avec SE T1 Si MW100= 10 Alors on travaille avec SE T10
L T U =
Charger la valeur du pointeur dans lACCU 1. Transfrer le pointeur dans MD2. Interroger l'tat du signal l'entre E 8.7 et Transfrer cet tat de signal la sortie A 8.7
h/ Ad. Indirect
EN MEMOIRE
19
U = L AUF
[MD 2]
z Affecter l'tat de signal du bit RLG au bit de donnes d'instance. L'adresse figure dans le double mot de donnes DBD2.
z Charger l'octet d'entre dans l'accumulateur 1. L'adresse figure dans le double mot d'instance DID4.
z Ouvrir le bloc de donnes. Le numro du bloc de donnes figure dans le mot de donnes locales LW2.
DB [LW 2]
h/ Ad. Indirect
Exemple 1 :
REGISTRE
20
z Charger la valeur du pointeur avec code de zone dans l'accumulateur 1. z Sauvegarder la zone de mmoire E et l'adresse 8.7 dans AR1. z Charger la valeur du pointeur avec code de zone dans l'accumulateur 1. z Sauvegarder la zone de mmoire A et l'adresse 8.7 dans AR2. z Interroger l'tat de signal l'entre E 8.7 (P#0.0 sert dcaler). z Le calcul dcoule de l'addition de 8.7 (AR2) + 1.1 (dcalage). Le rsultat gale 10.0 et non pas 9.8 (raisonne octal).
L L
P# E8.7
LAR1 LAR2 U =
P# A8.7
[AR1, P#0.0]
[AR2, P#1.1]
h/ Ad. Indirect
Exemple 2:
21
M002: M001:
Charger Valeur du pointeur dans ACCU1. Sauvegarder M et l'adresse 10.0 dans AR1.
Charger Valeur du pointeur dans ACCU1. Sauvegarder A et l'adresse 0.3 dans AR1.
Rq :
E 0.0 dtermine le pointeur qui sera utilis pour cette instruction. L'tat de signal en E 0.4 est affect soit au mmento M10.1 soit la sortie A0.4.
h/ Ad. Indirect
Exemple 3:
REGISTRE
22
z Effectuer une combinaison selon la table de vrit ET d'un bit. L'adresse est calcule par l'addition du contenu de AR1 + 4 octets + 3 bits. La zone de mmoire du bit est indique dans les bits 24, 25 et 26 du registre AR1. z Affecter au bit l'tat de signal du bit RLG. L'adresse figure dans le registre AR2. La zone de mmoire du bit est indique dans les bits 24, 25 et 26 du registre AR2. z Charger un octet dans l'accumulateur 1. L'adresse est calcule par l'addition du contenu de AR1 + 10 octets. La zone de mmoire du bit figure dans les bits 24, 25 et 26 du registre AR1. z Transfrer le contenu de l'accumulateur 1 dans un double mot. L'adresse est calcule par l'addition du contenu de AR2 + 53 octets. La zone de mmoire du bit figure dans les bits 24, 25 et 26 du registre AR2.
U =
[AR1,P#4.3]
[AR2, P#0.0]
L B
T D
h/ Ad. Indirect
Exemple 4 :
REGISTRE
23
z Charger le pointeur de l'accumulateur 1 dans AR1. z Interroger l'tat de signal l'entre E 8.7 , P#0.0 permet deffectuer un dcalage ou offset.
P#8.7
LAR1 U
E [AR1, P#0.0]
z L'adresse exacte 8.7 se trouve dans AR1. L'adresse exacte 10.0 est calcule par l'addition de 8.7 (AR1) plus 1.1 (Pointeur de dcalage). Le rsultat gale 10.0 et non pas 9.8 (numration octale).
A [AR1, P#1.1]
h/ Ad. Indirect
Exemple 5 :
REGISTRE
24
z Effectuer une combinaison selon la table de vrit ET avec le bit d'entre. L'adresse est calcule par l'addition du contenu de AR1 + 4 octets + 3 bits. z Affecter l'tat de signal du bit RLG au bit de donnes d'instance. L'adresse figure dans AR2. z Charger l'octet d'entre dans l'accumulateur 1. L'adresse est calcule par l'addition du contenu de AR1 + 10 octets. z Transfrer le contenu de l'accumulateur 1 dans le double mot de donnes locales. L'adresse est calcule par l'addition du contenu de AR2 + 53 octets.
U = L
E [AR1,P#4.3]
LD [AR2,P#53.0]
h/ Ad. Indirect
But :
ADRESSAGE INDIRECT
25
z Permet un accs toute la zone mmoire partir de quelques lignes dinstructions. Partie dclarative
Partie Programme
z Le Pointeur permet de dcaler: P#0.0 permet de travailler sur tous les bits. P#1.0 permet de travailler sur tous les Bytes (B). Rq : P#2.0 permet de travailler sur tous les Mots (W). P#4.0 permet de travailler sur tous les Double Mots (D).
Notes:
26
Aforest
PH.Fvrier/05
Maintenance S7
T 104 264 20
Notes:
27
Aforest
PH.Fvrier/05
Maintenance S7
T 104 264 20
Notes:
28
Aforest
PH.Fvrier/05
Maintenance S7
T 104 264 20