calcul de moyenne (de vitesse de vent) en CONT

Forum traitant des automates industriels de marque Siemens.
Répondre
Avatar de l’utilisateur
neonavy
Aguerri de l'automation
Aguerri de l'automation
Messages : 76
Inscription : 05 févr. 2016, 14:03

calcul de moyenne (de vitesse de vent) en CONT

Message par neonavy »

Bonjour,
Je dois calculer la vitesse moyenne du vent ainsi que la vitesse max sur les 10 dernières minutes
Dans mes recherches je suis tombé sur le bloc « Average » ( https://support.industry.siemens.com/cs ... 0&lc=fr-FR ) qui semblait répondre à mon besoin mais son utilisation ne semble pas aussi simple/logique que prévu : tel que j’ai compris la chose, la patte d’entrée « Value » est prévu pour la valeur dont on doit faire la moyenne (la vitesse du vent dans mon cas), la patte « change value » permet de n’effectuer le calcul de la moyenne que si la valeur d’entrée change, et la patte reset remet la moyenne à 0 !... Mais je ne vois pas comment donner de « top » pour qu’il enregistre une valeur, je ne vois pas non plus de limite de temps ni de fréquence d’échantillonnage ce qui me laisse à penser que le bloc enregistre une valeur à chaque cycle (ce qui va fatalement faire gonfler indéfiniment la mémoire si on ne reste jamais… Cela me parait plutôt dangereux et m'étonne fortement)
De plus, cela ne résous pas mon problème de la moyenne sur les 10 dernières minutes car lorsque je reste le bloc la moyenne revient à 0 alors que dans mon cas la moyenne ne dois jamais repasser à 0 car les valeurs les plus récentes doivent écraser les valeurs de plus de dix minutes.
Je sais qu’en SCL/LIST ce genre de calcul est très facile à faire avec des boucles (on charge chaque valeur sur un ligne dans un DB et on fait évoluer l'index à chaque nouvelle mesure), mais je n’y connais rien dans ces langages (c’est pourquoi je me tourne vers des trucs tout fait)!
Merci d'avance de votre aide.
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par itasoft »

slts,
un tableau glissant ne se sature jamais.
ceci dit, je sais pas comment on fait un tableau glissant en "teutons" en Unity ça se fait avec l'instruction EXTRACT sur le même tableau
Automaticien privé (de tout)
itasoft@free.fr
Avatar de l’utilisateur
ProfnovA
Créateur de langage
Créateur de langage
Messages : 525
Inscription : 21 oct. 2015, 08:21

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par ProfnovA »

Tu peux prendre un tableau, mettons de 60 points. Toutes les 10 secondes (ce qui fait 10 minutes), tu incrémentes un index. Tu mets la valeur actuelle dans le tableau à l'index calculé puis tu calcules la moyenne des 60 points, ce qui te retourne la moyenne sur les 10 minutes précédentes.
En siemens, les tableaux c'est un peu sioux, je pense qu'il y a des tutos qui trainent dans le forum.
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par itasoft »

@prof,
ta solution , c'est pas un tableau glissant

---------------
_1234.JPG
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par philou77 »

Salut !

une pile fifo donne le même résultat non ?
- Faut la remplir 1 fois complètement et ensuite dépiler avant d'empiler une nouvelle valeur !
- faire la moyenne de la pile en fonction du nombre d'éléments contenus dedans.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par itasoft »

@phil
sur le fifo tu n'as pas accès au contenu pour en faire la somme
Automaticien privé (de tout)
itasoft@free.fr
Avatar de l’utilisateur
josé
Codeur fou
Codeur fou
Messages : 263
Inscription : 20 oct. 2015, 17:02

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par josé »

bonjour,
en SIEMENS tu ne peut pas faire un BLOCKMOV dans me même bloc avec un décalage d'une valeur.
tu fait un BLOCKMOV dans un bloc tampon et un second BLOCKMOV dans le DB d'origine avec un décalage d'une valeur.
Créateur de pannes ...
Avatar de l’utilisateur
ProfnovA
Créateur de langage
Créateur de langage
Messages : 525
Inscription : 21 oct. 2015, 08:21

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par ProfnovA »

itasoft a écrit : 22 mars 2019, 12:15 @prof,
ta solution , c'est pas un tableau glissant

---------------
_1234.JPG
Le résultat est le même sauf que j'incrémente mon index à la place de permuter tout le tableau. Ça ne fait qu'une seule opération.

Tu as aussi la librairie oscat qui est libre

http://www.oscat.de/component/jdownload ... 33-en.html

La fonction ft_avg doit faire ce que tu souhaites, jettes un oeil.
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par itasoft »

@prof,
ça n'as rien à voir avec le tableau glissant qui lui te donne (pour mon exemple) les 16 dernières valeurs enregistrées, mais bon , on va pas se prendre la tête avec ça.
disons que la solution à josé doit correspondre, à tester
Automaticien privé (de tout)
itasoft@free.fr
Avatar de l’utilisateur
neonavy
Aguerri de l'automation
Aguerri de l'automation
Messages : 76
Inscription : 05 févr. 2016, 14:03

Re: calcul de moyenne (de vitesse de vent) en CONT

Message par neonavy »

Bonjour à tous,
Merci pour toutes vos réponses, désolé de n'y répondre que maintenant mais il semble que je n'avais pas activé l'avertissement lorsque j'avais des réponses :-(
Au final ma solution est celle de ProfnovA => j'ai fait un Array of INT et j'ai incrémenté l'index qui pointait dessus.
Encore désolé du retard de ma réponse.
Répondre