Page 1 sur 1
M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 15:07
par Noodle
Bonjour,
Je vous présente ma question :
J'ai créé un DFB dans lequel je cherche à effectuer des actions sur
"i" équipements et plutôt que d'écrire :
Equipement[1].PRIO := 1;
Equipement[2].PRIO := 2;
Equipement[X].PRIO := x;
J'ai écris ça :
Code : Tout sélectionner
FOR i := 1 TO EQ_NBR DO (*EQ_NBR => nombre d'équipement*)
IF EQUIPEMENT[i].PRIO = 0
THEN
EQUIPEMENT[i].PRIO := i;
END_IF;
END_FOR;
Le problème c'est que mon EQUIPEMENT[1].PRIO = 1 et que EQUIPEMENT[1].PRIO = 1 Aussi.
Qu'est ce que j'ai loupé ?
Merci beaucoup pour votre aide
Re: M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 15:25
par Pierro
Salut,
Pour réaffecter la priorité à ton équipement, il faut que sa priorité soit = 0, ce qui n'est pas le cas si =1, puis tu continu dans la boucle jusqu'à en sortir.
a+
Re: M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 15:34
par Noodle
Initialement, la priorité de chaque équipement est à 0 donc la boucle devrait bien attribuer la priorité "1" à l'équipement 1 lorsque i=1 puis 2 pour l'équipement 2 lorsque i=2.
Ensuite puisque plus aucune priorité n'est à 0 la boucle FOR n'est plus exécuté.
là, après avoir été effectuée la boucle FOR attribue 1 sur les deux équipements.
Re: M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 16:19
par itasoft
FOR i := 0 TO EQ_NBR-1 DO (*EQ_NBR => nombre d'équipement maxi=4 *)
IF EQUIPEMENT.PRIO = 0
THEN
EQUIPEMENT.PRIO := i+1;
END_IF;
END_FOR;
Re: M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 16:36
par Noodle
Merci itasoft pour ta réponse mais y'a t'il une raison pour laquelle tu à enlevé l'index "[ i ]" de EQUIPEMENT"[ i ]".PRIO ?
Re: M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 17:19
par itasoft
@noodle
erreur de copier/coller, il faut pas les 'enlever , LOL
Re: M340 Utilisation Index boucle FOR dans DFB
Posté : 30 mai 2024, 17:42
par Pierro
Noodle a écrit : ↑30 mai 2024, 15:34
Initialement, la priorité de chaque équipement est à 0 donc la boucle devrait bien attribuer la priorité "1" à l'équipement 1 lorsque i=1 puis 2 pour l'équipement 2 lorsque i=2.
Ensuite puisque plus aucune priorité n'est à 0 la boucle FOR n'est plus exécuté.
là, après avoir été effectuée la boucle FOR attribue 1 sur les deux équipements.
Il y a t'il une autre boucle ou autre zone dans le DFB ou Equipement[*].PRIO est écrite ? tu peux faire une référence croisée pour voir.