Page 1 sur 2

Pointeur

Posté : 10 juin 2017, 15:47
par Yacub
Bonjour,

Puis je savoir quelle opération execute ce script sur ma variable de type Word "Actuator" ?

L DBW [AR1, P#0.0]
T #Actuator

Re: Pointeur

Posté : 10 juin 2017, 18:47
par djé
Salut,
Ça charge le contenu du mot DBW d'adresse indexée par la valeur du pointeur AR1, avec le décalage 0.0, dans la variable # actuator.
Le numéro de la DB affectée est celui de la dernière DB ouverte ( par l'instruction AUF DB ou par la dernière affectation explicite à un élément de DB.)

Re: Pointeur

Posté : 10 juin 2017, 20:36
par Yacub
merci djé,
Comment puis connaitre la valeur du pointeur "AR1"

Re: Pointeur

Posté : 11 juin 2017, 14:25
par djé
Soit en ligne en affichant la visu colonne AR1 soit en analysant les parties de codes qui précèdent.

Re: Pointeur

Posté : 11 juin 2017, 16:57
par djé
Salut,
Réponse à ce sujet à partir du sujet Variable Local FB

........L #Act_Step : chargement du compteur de boucle
next: T #Cycle : initialisation - mise à jour du compteur de boucle / début de la boucle

........L DBW [AR1, P#0.0] : chargement de DB?.DBW[adresse définie par le Registre d'Adresse indirecte "AR1" à partir de DB?.DW0 (P#0.0)]

traitement.....

........+AR1 P#2.0 : ajout de +2 au Registre d'Adresse AR1 (+2.0 (16 bits) pour lire de mot en en mot )
........L #Cycle : Chargement du compteur de boucle
........LOOP next : boucle sur next tant que #Cycle >0

Vérifie en amont de ton code ou est ce que le registre AR1 est affecté pour connaitre la valeur de celui-ci au moment de rentrer dans la boucle

Pour plus d'information sur le langage LIST tu peux télécharger le manuel de référence LIST de SIEMENS ici ou cet excellent petit condensé de l'essentiel

Re: Pointeur

Posté : 15 juin 2017, 18:39
par Yacub
djé,

Merci beaucoup, je vais tenter de remonter la valeur contenu de ce fameux registre et je reviens vers toi (concernant la syntaxe) si cela ne te dérange pas .

Re: Pointeur

Posté : 18 juin 2017, 13:44
par Yacub
djé,

quel est l’intérêt d'utiliser cette "memoire indirect AR1 et AR2 " par rapport a un Accu ou encore plus simple
un MW / DBW ?

Re: Pointeur

Posté : 19 juin 2017, 08:29
par djé
Bonjour,

Chez siemens pour faire de l'adressage indirect tu as deux solutions:

en SCL: il peut être réalisé simplement en mode "Schneider Like" c'est à dire en mettant la valeur l'adresse entre crochet: ex : DB1.DBW[MW10]. MW10 représente l'adresse indirecte: si MW10=52 alors on va s'adresser à DB1.DBW52
La gestion est implicite.

en LIST: il faut explicitement construire l'index (registre d'adresse indirecte) à l'aide du registre AR (AR1 ou AR2). En LIST on est au plus près du langage machine, vraiment bas niveau. Il faut tout faire à la mano.
(exception les tempo "T" par exemple peuvent être adressées directement ex: T[MW10])

Jette un coup d'oeil à la doc dont je t'ai fourni le lien plus haut (la deuxième) dans les trois-quatre dernières pages.

Re: Pointeur

Posté : 19 juin 2017, 13:05
par Mantysse
djé a écrit : 19 juin 2017, 08:29 en SCL: il peut être réalisé simplement en mode "Schneider Like" c'est à dire en mettant la valeur l'adresse entre crochet: ex : DB1.DBW[MW10]. MW10 représente l'adresse indirecte: si MW10=52 alors on va s'adresser à DB1.DBW52
La gestion est implicite.
C'est aussi valable en Ladder ;)

A+

Re: Pointeur

Posté : 19 juin 2017, 13:21
par djé
Mantysse a écrit : 19 juin 2017, 13:05 djé a écrit : ↑
19 juin 2017, 08:29
en SCL: il peut être réalisé simplement en mode "Schneider Like" c'est à dire en mettant la valeur l'adresse entre crochet: ex : DB1.DBW[MW10]. MW10 représente l'adresse indirecte: si MW10=52 alors on va s'adresser à DB1.DBW52
La gestion est implicite.

C'est aussi valable en Ladder ;)

A+
T'en es sûr?