Re: Traitement d'une entrée analogique
Posté : 25 oct. 2017, 22:31
Salut,
......[N°d'Octet].[N°deBit] allant de 0.0 à 65535.7 soit :
......Codage N°d'octet sur 16 bits et codage n° de bit sur 3 bits.
Admettons tu désires charger un décalage d'adresse de 118 (dw#0000 0000 0111 0110)
si tu écrits:
L 118
T #Idx
L PIW[#Idx] <ici le décalage vaut 14.6 (14*8 +6 =...118 !
)
En fait tu vas récuper une valeur 16bit mais à partir de l'adresse PIW14.6 (dw#0000 0000 0000 1110.110)
Donc pour obtenir la bonne valeur de décalage tu décales de 3 bits vers la gauche (ou une multiplication *8) d’où le fameux SLW3.
L 118......(dw#0000 0000 0111 0|110)
SLW 3......(dw#0000 0011 1011 0|000)
T #Idx
L PIW[#Idx]
et là tu récupères ta valeur de 16 bits à partir de l'adresse PIW118 (dw#0000 0000 0111 0110.000)
Il n'y a que les zone Tempos (T), Compteur (Z) et DB qui peuvent être indexés directement sans décalage avec une valeur 16 bits:
L 118
T #Idx
AUF DB[#Idx]
Pour un très bon condensé de la programmation en Siemens(S7) je te conseille de lire cet excellent fascicule ici. Tu y trouveras qq explication supplémentaires sur la structure des pointeurs à la fin de la doc
En Siemens les pointeurs (32bits) sont construit (en autre) sur un modèle:je t'avoue ne pas trop avoir compris l'histoire du décalage aurais tu une lecture ou doc technique a me conseiller la dessus ?
......[N°d'Octet].[N°deBit] allant de 0.0 à 65535.7 soit :
......Codage N°d'octet sur 16 bits et codage n° de bit sur 3 bits.
Admettons tu désires charger un décalage d'adresse de 118 (dw#0000 0000 0111 0110)
si tu écrits:
L 118
T #Idx
L PIW[#Idx] <ici le décalage vaut 14.6 (14*8 +6 =...118 !
En fait tu vas récuper une valeur 16bit mais à partir de l'adresse PIW14.6 (dw#0000 0000 0000 1110.110)
Donc pour obtenir la bonne valeur de décalage tu décales de 3 bits vers la gauche (ou une multiplication *8) d’où le fameux SLW3.
L 118......(dw#0000 0000 0111 0|110)
SLW 3......(dw#0000 0011 1011 0|000)
T #Idx
L PIW[#Idx]
et là tu récupères ta valeur de 16 bits à partir de l'adresse PIW118 (dw#0000 0000 0111 0110.000)
Il n'y a que les zone Tempos (T), Compteur (Z) et DB qui peuvent être indexés directement sans décalage avec une valeur 16 bits:
L 118
T #Idx
AUF DB[#Idx]
Pour un très bon condensé de la programmation en Siemens(S7) je te conseille de lire cet excellent fascicule ici. Tu y trouveras qq explication supplémentaires sur la structure des pointeurs à la fin de la doc