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.