questions diverses

Forum traitant des automates industriels de marque Siemens.
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: questions diverses

Message par djé »

Mick1903 a écrit : 19 mars 2019, 22:11 A chaque fois il charge un P## et il le transfert dans le registre d'adresse 1 a 0.0
Bonjour,

AR1 est un registre d'adresse de la CPU.

LAR1 P##T_Stoerung_ein : Charge l'adresse de début du pointeur ANY (format octet.bit) dans le registre d'adresse AR1
L #Stoerung_ein : Charge la valeur de Stoerung_ein dans la valeur de l'accumulateur 1 de la CPU
T LB [AR1,P#0.0] : Transfert la valeur de l'accumulateur 1 dans l'octet de la zone mémoire locale à l'adresse 0.0 décalée de AR1

C'est une écriture indexée ou adressage indirect
Index = AR1

Chacun des pointeurs chargés dans LAR1 a forcément une valeur de décalage différente . (Par ex: 2.0, 4.0, 6.0) à vérifier dans ton programme.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

Salut Djé,

Pour le pointeur ANY, je ne le retrouve pas dans les déclarations des variables en tant que parametre ANY.

Pour les pointeurs je ne retrouve pas dans mon bloc les valeur de décalage.

Cordialement,
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

J'ai vraiment du mal a assimiler les parametres ANY
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: questions diverses

Message par djé »

Salut,

oui je comprends que c'est déroutant.

En fait l'instruction LAR1 P# "XXXX" charge l'adresse absolue de n'importe qu'elle variable dans le registre AR1 du CPU.

LAR1 P##T_Stoerung_ein

La variable locale #T_Stoerung_ein peut être de n'importe quel type.
On récupère dans le registre d'adresse AR1 l'adresse de la variable.

J'avoue, il y a certaine utilisation que je n'avais jamais vu/imaginé.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: questions diverses

Message par djé »

Mick1903 a écrit : 20 mars 2019, 22:46 J'ai vraiment du mal a assimiler les parametres ANY
Disons pour simplifier que :
  1. La variable de type ANY est un POINTEUR en 2D : on connait son adresse, sa zone mémoire et sa taille.
  2. Le type POINTER lui, ne fait que donner l'adresse et/ou la zone mémoire.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

Bonsoir,



Pour le paramètre ANY P##Val_mesurees quelle valeur vient-il mettre dans l'AR1 dans cet exemple.

Merci pour vos réponses.

Cordialement,
Pièces jointes
any123.PNG
any111.PNG
any111.PNG (48.43 Kio) Consulté 5430 fois
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: questions diverses

Message par djé »

Salut,

Il va charger l'adresse absolue de la variable qui est contenue dans l’accumulateur, en l’occurrence la variable P##Val_Mesurees. (ici P# signifie que tu la traites comme un pointeur).

exemple que l'on retrouve souvent:

Code : Tout sélectionner

L 10  // charge la valeur 10 dans ACCU1
SLW 3	// effectue un décalage de 3 vers la gauche de la valeur de ACCU1 pour mise au format pointeur Siemens (octet.bit)
LAR1 // charge la valeur de ACCU1 dans le registre d'adresse AR1 (10.0)
Admettons #val_mesurees est une variable ANY d'adresse DB43.DBX0.0 de taille 8 réels, comme sur la première pj (je suppose que tu ne l'as pas mis ici par hasard) et bien dans le registre d'adresse AR1 il y aura l'adresse absolue 0.0


edit: je ne sais pas trop ce que tu fais (décortiquer des programmes?) mais si tu as l'occasion, met toi en mode simulation et regarde les registres de CPU online tu verras pas mal de choses qui t'aideront à la compréhension. (choisi les colonnes à droite que tu souhaites afficher, notamment le registre d'adresse AR1, s'il n'y figure pas déjà)
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

Salut Djé,

Encore merci pour les explications, oui effectivement je décortique enfin j'essais pour la compréhension,et en parallèle je suis en formation sur step 7. Je progresse, mais ce n'est pas forcément évident, je m'accroche.Cette notion de pointeur est pour moi loin d’être évidente. A force d'y travailler ça commence a rentrer. Le forum m'aide beaucoup, encore merci.Dans mes programmes tout est en Allemand, et je pense par moment qui ont fait les choses bien compliqué.

Bonne journée et à bientôt

Cdlt
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

Bonjour à tous,

Existe -il une fonction qui permet de détecter si un bit est a 1 dans un DB. Ce DB correspond à une liste de défaut sur une machine et je recherche un défaut pour exécuter une action.

Merci de vos réponses

Cordialement,

Mickael
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: questions diverses

Message par djé »

Salut,

Tu cherches à savoir si dans un DB de défaut il y a présence d'au moins un bit à 1, c'est çà ?
Il n' y a a pas de fonction toute faite en bibliothèque à ma connaissance.
Il faut la créer soi-même.
C'est un bon exercice soit-dit en passant. ; )
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Répondre