Re: [M340] Code qui fait ramer le PLC
Posté : 17 janv. 2024, 10:04
Bonjour,
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!
J'avais oublié la mémorisation du top mesure dans l'enregistrement de la mesure
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;Code : Tout sélectionner
BDD_poids.Top_mesure := TRUE ; (*Memo TOP mesure *)