Page 1 sur 1
[STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 02 oct. 2025, 10:55
par Tartuffe
Bonjour,
En Step7 classique, j'ai créé un FB dans lequel je souhaite copier toute la plage d'entrées d'une carte de comptage dans les variables statiques.
Je pourrais mettre un BLKMOV avec en entrée
P#E 280.0 BYTE 16 et en sortie une variable statique, mais ce que je veux c'est passer l'adresse de périphérie (280) via une entrée du FB car bien sure je compte appeler le FB plusieurs fois.
Je n'a pas trouvé la syntaxe qui fonctionne.

Re: [STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 02 oct. 2025, 18:06
par djé
Salut,
Il faut passer par un pointeur de zone dans un bout de code en List,
Code : Tout sélectionner
Explication
L "idxAdress" //(idxAdress: variable DWord ou DINT en entrée de bloc = adresse que tu souhaites lire)
SLD 3 // mise au format POINTER Siemens adres.bit et charger le pointeur dans l'ACCu
LAR1 // Charger le contenu de l'accumulateur 1 dans le registre d'adresse 1
L EW [AR1,P#0.0] //Charger la valeur du mot EW[idxAdress+0] et transférer dans ta variable STAT DWORD/DINT
T "Tag_Value0"
L EW [AR1,P#4.0] //Charger la valeur du mot EW[idxAdress+4] et transférer dans ta variable STAT
T "Tag_Value1"
L EW [AR1,P#8.0] //Charger la valeur du mot EW[idxAdress+8] et transférer dans ta variable STAT
T "Tag_Value2"
L EW [AR1,P#12.0] //Charger la valeur du mot EW[idxAdress+12] et transférer dans ta variable STAT
T "Tag_Value3"
Re: [STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 02 oct. 2025, 18:22
par djé
sinon en SCL:
#idxAdr: Input de type INT
#var0 := %EW(#idxAdr);
#var1 := %EW(#idxAdr+4);
#var2 := %EW(#idxAdr+8);
#var3 := %EW(#idxAdr+12);
Re: [STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 07 oct. 2025, 09:11
par Tartuffe
Merci pour le code,
je vais tester ça demain

Re: [STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 08 oct. 2025, 08:38
par Tartuffe
En fait, mes variables stat sont un UDT comprenant plusieurs types.
Pour les DINT ça fonctionne très bien:
Mais pour les BOOL est ce qu'il y a plus simple que de me taper du ligne à ligne?
Code : Tout sélectionner
U E [AR1,P#12.0]
= #CPT.ENTREES.POWER_ERROR
U E [AR1,P#12.1]
= #CPT.ENTREES.STS_READY
...
J'en ai 32 consécutifs, si je pouvais copier directement
ED [AR1,P#12.0] à par tir de la variable
#CPT.ENTREES.POWER_ERROR ça m'arrangerait bien.
Re: [STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 08 oct. 2025, 10:59
par djé
Oui je comprends.
Tu peux tenter de transférer dans une variable temporaire ("tempVal" de type DWORD ) et ensuite avec un Block_Move balancer dans ta structure (Test.Info_i)
Code : Tout sélectionner
L ID [ AR1 , P#0.0 ]
T #tempVal
CALL BLKMOV
blk_type:=Any
SRCBLK :=#tempVal
RET_VAL :=#ret_val
DSTBLK :=#test.Info_i
Re: [STEP7 v5] Copier une plage d'entrées périphériques dans les STAT d'un FB
Posté : 10 oct. 2025, 16:05
par Tartuffe
Merci, ça devrait le faire.
En tout cas il n'y a pas d'erreur de code, je testerai lundi en réel.