Calcul cumul information capteur sur une plage de temps
Calcul cumul information capteur sur une plage de temps
Bonjour,
Je souhaiterais faire un calcul avec un capteur analogique sur une plage de temps donnée.
En gros mon capteur me donne une valeur entre 0 et 10, le rafraichissement de la donnée est aléatoire (entre 100 et 500ms).
Je voudrais additionner la valeur dans une variable et au bout de 60min il faudrait soustraire la toute premiere mesure et additionner la plus récente et enchainer de même avec les mesures suivantes.
Dans le style d'une pile fifo, sauf que là j'ai peur d'avoir un tableau à beaucoup de variables.
Avez vous une idée si une fonction siemens fait déjà ce travail? je suis en Tia portal V16 et avec une CPU S7-1500
Merci
Je souhaiterais faire un calcul avec un capteur analogique sur une plage de temps donnée.
En gros mon capteur me donne une valeur entre 0 et 10, le rafraichissement de la donnée est aléatoire (entre 100 et 500ms).
Je voudrais additionner la valeur dans une variable et au bout de 60min il faudrait soustraire la toute premiere mesure et additionner la plus récente et enchainer de même avec les mesures suivantes.
Dans le style d'une pile fifo, sauf que là j'ai peur d'avoir un tableau à beaucoup de variables.
Avez vous une idée si une fonction siemens fait déjà ce travail? je suis en Tia portal V16 et avec une CPU S7-1500
Merci
Re: Calcul cumul information capteur sur une plage de temps
Bonjour,
Pour ma part, je n'ai pas souvenir d'avoir vu une FIFO qui somme automatiquement son contenue (mais je ne connais pas très bien TIA portal).
Pour le coup, je pense que tu sera obliger de crée ta propre FB, avec un tableau interne de 36 000 valeurs (car dans le pire cas tu as 10 valeur pas seconde).
Si j'ai bien compris, tu veux faire une somme en continue des valeurs enregistrées sur les 60 derniers minutes? ou c'est une somme toute les 60 minutes ?
Bien cordialement;
Pour ma part, je n'ai pas souvenir d'avoir vu une FIFO qui somme automatiquement son contenue (mais je ne connais pas très bien TIA portal).
Pour le coup, je pense que tu sera obliger de crée ta propre FB, avec un tableau interne de 36 000 valeurs (car dans le pire cas tu as 10 valeur pas seconde).
Si j'ai bien compris, tu veux faire une somme en continue des valeurs enregistrées sur les 60 derniers minutes? ou c'est une somme toute les 60 minutes ?
Bien cordialement;
<< La vie d'un homme passe par trois phases : apprentissage, apprentissage et apprentissage. >>
Et j'ai même pas fini la première phase
Re: Calcul cumul information capteur sur une plage de temps
Merci de votre retour,
J'étais aussi parti dans l'optique de développer mon propre FB, mais bon au cas où un bloc similaire existerait en Siemens.
Oui c'est bien ça, ma variable doit contenir la somme des données sur les dernières 60min.
J'étais aussi parti dans l'optique de développer mon propre FB, mais bon au cas où un bloc similaire existerait en Siemens.
Oui c'est bien ça, ma variable doit contenir la somme des données sur les dernières 60min.
Re: Calcul cumul information capteur sur une plage de temps
36000 valeurs ca va pomper la memoireAC23 a écrit : ↑01 déc. 2021, 17:26 Bonjour,
Pour ma part, je n'ai pas souvenir d'avoir vu une FIFO qui somme automatiquement son contenue (mais je ne connais pas très bien TIA portal).
Pour le coup, je pense que tu sera obliger de crée ta propre FB, avec un tableau interne de 36 000 valeurs (car dans le pire cas tu as 10 valeur pas seconde).
Si j'ai bien compris, tu veux faire une somme en continue des valeurs enregistrées sur les 60 derniers minutes? ou c'est une somme toute les 60 minutes ?
Bien cordialement;
Re: Calcul cumul information capteur sur une plage de temps
Salut,
C'est fait en 3 lignes de code ...
Voici un exemple pour une moyenne glissante :
Au lieu d'avoir "Moyenne" en sortie, tu mets "Somme" à la place (que tu supprimes de "Static")
Tu supprimes aussi la ligne où est faite la division
Plus qu'à adapter la constante "TAILLE" a ton besoin...
@+
C'est fait en 3 lignes de code ...
Voici un exemple pour une moyenne glissante :
Au lieu d'avoir "Moyenne" en sortie, tu mets "Somme" à la place (que tu supprimes de "Static")
Tu supprimes aussi la ligne où est faite la division
Plus qu'à adapter la constante "TAILLE" a ton besoin...
@+
Re: Calcul cumul information capteur sur une plage de temps
Combien de fois as-tu besoin d'utiliser cette somme par heure ? Peut-être pas 36000 fois ...
Fais un premier cumul chaque 10 secondes par exemple, tu n'auras que 360 valeurs à stocker ; au prix d'une actualisation plus lente de ta somme
Quoique 36000 valeurs de nos jours ...
@+
Fais un premier cumul chaque 10 secondes par exemple, tu n'auras que 360 valeurs à stocker ; au prix d'une actualisation plus lente de ta somme
Quoique 36000 valeurs de nos jours ...
@+
Re: Calcul cumul information capteur sur une plage de temps
Salut
En complément,. La problématique étant les 36000 points de mesures.... Pour moi ça n'a aucun intérêt de faire une moyenne sur une période d'une heure avec un échantillonnage de 100ms....
Perso je ferais une moyenne par ex sur 100points (10 secondes) puis je pousserais ça dans le calcul de moyenne glissante....
On perdra un tout petit peu de précision mais surtout on divisera par 100 la taille mémoire consommée (un peu du genre format JPEG/bitmap)
A+
Édit: Steph est passé avant lol
En complément,. La problématique étant les 36000 points de mesures.... Pour moi ça n'a aucun intérêt de faire une moyenne sur une période d'une heure avec un échantillonnage de 100ms....
Perso je ferais une moyenne par ex sur 100points (10 secondes) puis je pousserais ça dans le calcul de moyenne glissante....
On perdra un tout petit peu de précision mais surtout on divisera par 100 la taille mémoire consommée (un peu du genre format JPEG/bitmap)
A+
Édit: Steph est passé avant lol
Re: Calcul cumul information capteur sur une plage de temps
Je pense que cette solution est viable dans le cas où le nombre d'échantillons par 60 min est fix et connue par avance. En effet, le coter aléatoire de l'échantillonnage :steph68 a écrit : ↑01 déc. 2021, 23:16 Salut,
C'est fait en 3 lignes de code ...
Voici un exemple pour une moyenne glissante :
moyenne_glissante.jpg
Au lieu d'avoir "Moyenne" en sortie, tu mets "Somme" à la place (que tu supprimes de "Static")
Tu supprimes aussi la ligne où est faite la division
Plus qu'à adapter la constante "TAILLE" a ton besoin...
@+
Ne permet pas de fixer par avance la fenêtre d'addition (la somme voulue n'est pas forcément la somme totale du tableau).
Donc en complément à la solution donnée j'aurais mis deux pointeurs, le premier pour indiquer le point de départ d'addition (ce dernier s'incrémente tous les 60 min) et le deuxième pointeur pour indiquer la position du dernier échantillon. Et avec le modulo la dernière valeur en entrée finira par écraser les toutes premiers valeurs reçu et obsolètes.
Mais malheureusement, même avec cette solution tu ne peux pas échapper aux 36 000 valeurs.
Bien cordialement;
<< La vie d'un homme passe par trois phases : apprentissage, apprentissage et apprentissage. >>
Et j'ai même pas fini la première phase
Re: Calcul cumul information capteur sur une plage de temps
Bonjoursteph68 a écrit : ↑01 déc. 2021, 23:16 Salut,
C'est fait en 3 lignes de code ...
Voici un exemple pour une moyenne glissante :
moyenne_glissante.jpg
Au lieu d'avoir "Moyenne" en sortie, tu mets "Somme" à la place (que tu supprimes de "Static")
Tu supprimes aussi la ligne où est faite la division
Plus qu'à adapter la constante "TAILLE" a ton besoin...
@+
Merci du code, je cherchais un fonction de moyenne glissante.
J'ai juste du adapter la dernière ligne pour que le calcul soit bon
#Moyenne := #Somme /( #TAILLE + 1 );