M340 Utilisation Index boucle FOR dans DFB

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
Noodle
Apprend le binaire
Apprend le binaire
Messages : 5
Enregistré le : 30 mai 2024, 14:52

M340 Utilisation Index boucle FOR dans DFB

Message 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
Fichiers joints
EQ_STRUCT.PNG
Pierro
Première mise en service
Première mise en service
Messages : 61
Enregistré le : 17 mars 2020, 16:58
Localisation : 127.0.0.1

Re: M340 Utilisation Index boucle FOR dans DFB

Message 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+
Noodle
Apprend le binaire
Apprend le binaire
Messages : 5
Enregistré le : 30 mai 2024, 14:52

Re: M340 Utilisation Index boucle FOR dans DFB

Message 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.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7805
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: M340 Utilisation Index boucle FOR dans DFB

Message 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;
Automaticien privé (de tout)
itasoft@free.fr
Noodle
Apprend le binaire
Apprend le binaire
Messages : 5
Enregistré le : 30 mai 2024, 14:52

Re: M340 Utilisation Index boucle FOR dans DFB

Message 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 ?
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7805
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: M340 Utilisation Index boucle FOR dans DFB

Message par itasoft »

@noodle
erreur de copier/coller, il faut pas les 'enlever , LOL
Modifié en dernier par itasoft le 30 mai 2024, 17:53, modifié 5 fois.
Automaticien privé (de tout)
itasoft@free.fr
Pierro
Première mise en service
Première mise en service
Messages : 61
Enregistré le : 17 mars 2020, 16:58
Localisation : 127.0.0.1

Re: M340 Utilisation Index boucle FOR dans DFB

Message 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.
Répondre