-Déclarer un tableau de taille 10
-Sur changement d’état de la mesure (N<>N-1) :
-Faire un décalage logique à gauche du tableau
(ça éjecte la mesure la plus ancienne et libère la case [0] du tableau pour la nouvelle mesure)
-Copier la mesure dans la première case du tableau ex : TABLEAU[0] :=Mesure
(De ce fait, le tableau contient toujours les 10 dernière mesures qui se suivent dans le temps, ça s’appelle un tableau glissant, seule solution pour une moyenne instantanée )
-Faire la somme du tableau
-Calculer la moyenne : Moyenne :=Somme/10
-Copier la mesure N dans N-1
-
---Exemple sur Unity -------
Code : Tout sélectionner
if INT_Mesure<>INT_Mesure_Mem then
(*Décalage du tableau*)
ROL_ARDINT(1, DINT_TABLEAU);
DINT_TABLEAU[0]:=INT_TO_DINT(INT_Mesure);
IF DINT_Compteur<10 then
INC(DINT_Compteur);
end_if;
DINT_Somme:=SUM_ARDINT(DINT_TABLEAU);
INT_Moyenne:=DINT_TO_INT(DINT_Somme / DINT_Compteur);
INT_Mesure_Mem:=INT_Mesure;
end_if;