adressage indirecte

Forum traitant des automates industriels de marque Siemens.
abderrahmane
Code sa première boucle
Code sa première boucle
Messages : 17
Inscription : 25 avr. 2017, 11:27

adressage indirecte

Message par abderrahmane »

Bonjour,
comment on fait pour accéder a une variable de 64 bits enregistrée sur un DB charger sur accu ou ar1 est ce que on peut charger 32 bits apres on charger 32 bits par adressage indirecte
merci d'avance
R26R
Aguerri de l'automation
Aguerri de l'automation
Messages : 90
Inscription : 19 juin 2016, 20:04

Re: adressage indirecte

Message par R26R »

Tout est faisable
Avatar de l’utilisateur
bipcoyote
Codeur fou
Codeur fou
Messages : 203
Inscription : 16 janv. 2018, 13:19
Localisation : Dunkerque

Re: adressage indirecte

Message par bipcoyote »

Bonjour,
Ce que tu appelles adressage indirect, s'appelle aussi pointeur.
Voici un exemple, que je vais ensuite t'expliquer de lecture et d'écriture, mais avant attention à la limite d'un mot (32 bits) ou double mot (64 bits).
Un pointeur utilise 3 bits de définition ce qui réduit la valeur d'un mot de 32767 à 8191, et d'un double mot de ........

Exemple d'écriture :
L 100
T DB500.DBW80 //Ecris 100 dans le mot

L DB500.DBW80 //Valeur de l'adressage du mot à écrire
SLW 3 //décalage de 3 bits pour le pointeur
LAR1 //Chargement dans l'accu 1
L L#2 //Ce que je veux écrire à l'adresse
AUF DB500 //Prise en compte de ce DB pour l'écriture
T DBD {AR1,P#0.0] //Ecriture du bloc DB500 pointer à partir de (P#0.0) donc 0, du doublemot 100 (valeur de DB500.DBW100)

Si le mot que tu dois écrire est plus loin que 8191, ne commence pas à 0 (P#0.0) mais 1000 (P#1000.0) ce qui écrira le mot DB500.DBW1100)

Exemple de lecture : Mot à lire au delà de 8191

L DB500.DBW82
L 7460
-I
SLW 3
LAR1
AUF DB500
L DBD {AR1,P#7460.0]
T MD62

Si tu as besoin de comprendre toutes les lignes, fais toi un petit programme en simulation.

Bien à toi.
Répondre