[M340] Code qui fait ramer le PLC

Forum traitant des automates industriels de marque Schneider - Telemecanique
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: [M340] Code qui fait ramer le PLC

Message par DurandO »

Bonjour,
andala a écrit : 17 janv. 2024, 08:32 Je ne pèse qu'une seul fois chaque meule et j'ai besoin du nombre car il me faut une moyenne de poids total pesé
Ton tableau fini par être plein au cours de la semaine et l'index repasse à 0 pour ecraser les valeurs précédentes.
Donc, de ce que je comprends, le nb meule ne peut servir que pendant la phase de remplissage du tableau.

Pour moi le code se limite à ceci : après tu peux compliquer si c'est trop simple!

Code : Tout sélectionner

(*Traitement du pesage des meules dans la BDD*)

IF BDD_poids.poids_mesure <= (BDD_poids.Poids_a_vide + 0.200 ;(*Aucune meule detecté, +0.200 à affiner*)
	THEN 	BDD_poids.Top_mesure := FALSE ; (*Raz du Top mesure*)
END_IF;

IF BDD_poids.poids_mesure > (BDD_poids.Poids_a_vide + 0.800) AND BDD_poids.Poids_stable AND NOT(BDD_poids.Top_mesure) 
(*Si le poids mesuré est superieur au poids minimum attendu et et que le poids est stable et qu'on a pas encore enregistré la mesure*)
(*On s'en fout de savoir si la valeur de la BDD correspondante est bien vide (a 0), que j'autorise une mesure, qu'il n'y a pas de defaut de discordance )
	THEN 	
		BDD_poids.BDD_poids_enregistrement[BDD_poids.index_poids] := BDD_poids.poids_mesure; (*Alors, je mets le poids en cours dans la BDD*)
		
		(* BDD_poids.BDD_poids_enregistrement[BDD_poids.index_poids + 1] := 0; non prévoir un init on tu raz le tableau et nb meule*)
		BDD_poids.index_poids := BDD_poids.index_poids + 1; (*Incrementation de l'index*)
		BDD_poids.Top_mesure := TRUE ; (*Memo TOP mesure *)
END_IF;

(*Recalage index *)
IF BDD_poids.index_poids>=1300 
	THEN BDD_poids.index_poids :=0;  
END_IF;

(*Nb Meules*)
IF BDD_poids.Nb_meule_dans_BDD < BDD_poids.index_poids
	THEN BDD_poids.Nb_meule_dans_BDD := BDD_poids.index_poids;(*pour permettre calcul moyenneavec tableau non plein*)   
END_IF;

(*Moyenne si au moins une valeur*)
IF BDD_poids.Nb_meule_dans_BDD > 0 THEN
BDD_poids.Poids_total_BDD:= SUM_ARREAL(BDD_poids.BDD_poids_enregistrement); (*Calcul du poids total*)
BDD_poids.Poids_moyen_BDD:= SUM_ARREAL(BDD_poids.BDD_poids_enregistrement)/BDD_poids.Nb_meule_dans_BDD; (*Calcul du poids moyen avec nb Meules*)
END_IF;

If Init 
	THEN
 		BDD_poids.index_poids :=0;  
		BDD_poids.Nb_meule_dans_BDD :=0;
		(*Raz le tableau aussi *)
END_IF;
J'avais oublié la mémorisation du top mesure dans l'enregistrement de la mesure

Code : Tout sélectionner

BDD_poids.Top_mesure := TRUE ; (*Memo TOP mesure *)
tuscaonline
Forcené des structures
Forcené des structures
Messages : 178
Enregistré le : 04 nov. 2015, 04:25

Re: [M340] Code qui fait ramer le PLC

Message par tuscaonline »

Il y a plein de belle fonction a étudier dans la bibliotheque Control.
Et cette mode du ST... c'est vraiment pas glop
Répondre