Page 1 sur 1

Variable Local FB

Posté : 06 juin 2017, 17:20
par Yacub
Bonjour,

J'ai une question sur les variables Local d'un FB.
De ce que j'ai pu comprendre ces variables sont en realiter les variables TEMP du FB.

Dans mon nouveau programme que je tente de scruter, pour comprendre les conditions de mise en marche de deux compresseur il y a une condition, qui est que si L5.0 vaut 1 je demarre mon compresseur 1 , si L5.1 vaut 1 je demarre mon compresseur 2 .

Le probleme c'est que je n'arrive pas a faire le lien entre cette variable Local et mes TEMP ( je pense que que cela correspond a la variable "AuxInt" de type integer mais je ne saurais etre sur de mon coup ) .

Re: Variable Local FB

Posté : 06 juin 2017, 17:24
par Yacub
Ce qui me fait dire que c'est la variable AuxInt c'est que sur un autre reseau, on écrit les variables local
L3.0 et L3.1 en fonction de deux entrées appelés C1_Auto_Ready et C2_Auto_Ready et que dans les variables TEMP il y une variable appelé "ready" de type word .

Ce que je ne comprends pas c'est que cette variable démarre a l'adresse 4 alors que le programme ecrit dans la variable Local 3 ... donc si je prends en compte ce "decalage" de un byte je retombe sur mes pieds avec la variable AuxInt Integer adresse 6 , alors que dans le programme pour la mise a un de mes compresseurs j'ecris les variable Local L5.0 et L5.1 ( par contre je ne connais pas la raison que ce decalage )

Re: Variable Local FB

Posté : 06 juin 2017, 19:58
par Cyril93
Salut

L5.0 avec L pour identifier la pile local. Donc c'est bien la zone TEMP d'un FB
Chez siemens le poids des octets est inversé dans un word. Pour ecrire le bit le plus a droite du WORD ready il faut donc ecrire L5.0 et non pas L4.0

L3.0 et L3.1 sont donc les deux premiers bit de activationW en partant de la droite

Re: Variable Local FB

Posté : 06 juin 2017, 20:30
par Lorent2
Tes bits viennent du mot Ready.

A voir maintenant, comment il est construit.

Re: Variable Local FB

Posté : 07 juin 2017, 09:24
par Yacub
Cyril,

tu as ecris L3.0 et L3.1 sont donc les deux premiers bit de activationW en partant de la droite . ce n'est pas plutot L5.0 et L5.1 les deux premiers bit de activationW sachant que ce Temp demarre a l'adresse 4 ?

Re: Variable Local FB

Posté : 07 juin 2017, 09:26
par Cyril93
?????

ActivationW il commence à l'octet 2 de la zone TEMP
c'est ready qui commence à l'octet 4

Re: Variable Local FB

Posté : 07 juin 2017, 12:22
par Yacub
Cyril,

j'ai peut etre fait une erreur avec la copie d'ecran (je t'ai remis la copie d'ecran pour etre sur de parler de la meme chose) . Dans mon entete je vois :

operation word 0.0
ready word 2.0
ActivationW word 4.0

dans cette config 'ready' demarre a 4.0 et ActivationW a 2.0 ???

Re: Variable Local FB

Posté : 07 juin 2017, 17:36
par Yacub
Cyril,

Alors effectivement dans le premier impEcran le TEMP ActivationW commence a 2.0 , je me suis trompé de FB dans la panique .

au final le Temp correspond a mon dernier impEcran et donc a l'adresse 4.0 .
Super, je vois enfin pourquoi on avait du mal a se comprendre, je vais tenter de voir comment est ecris cette variable .

Merci pour le coup de main !

Re: Variable Local FB

Posté : 08 juin 2017, 19:46
par Yacub
Alors apres avoir remonté les conditions sur cette variable Word j'ai trouvé cela :
Untitled.jpg
Comme vous pouvez le voir cette variable deviens "Activat_W" et le seul endroit dans le programme ou elle est ecris c'est dans ce FC95 reseau 5 .

elle est initialisé a 0 un peu plus haut dans le programme puis ensuite on vient faire un OW ( OR WORD) avec une variable appelé "Mask"

et cette variable "mask" est ecrit dans un bloc (FC79) qui lui va regarder la valeur de la variable "Actuactor" et affecter les bit de la valariable "Mask" en fonction de " Actuator" .

Par exemple :
Actuator = 0
Mask = 00000000 00000000

Actuator = 1
Mask = 00000000 00000001

Actuator = 2
Mask = 00000000 00000011

(C'est pour cela qu'ensuite le programmeur a utilisé les instructions L5.0 et L5.1 pour conditionner la mise en marche de mes compresseurs .)
Dans mon systeme je ne possède que deux compresseurs donc ce seront les seules valeurs (0,1 et 2) prises par Actuator et Mask , par contre j'aimerai savoir qui ecris "Actuator" et j'ai ce script mais je ne comprends pas a quoi cela correspond :

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