Page 1 sur 1

[AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 26 mai 2023, 13:21
par sinced
Bonjour,
A tout hazard avez vous déjà au niveau superviseur implémenté en CiciCode des fonctions pour le calcul des valeurs minimum, maximale et moyennes d'une varaible de type REAL ?
Si oui je suis prenneur du code.
Cdlt,

Re: [AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 27 mai 2023, 00:04
par itasoft
Slts,
Connais pas CiciCode mais en standard ça donnerait :


if Initialisation then myRealMin :=myReal;myRealMax :=myReal

If myReal>mRealMax then myRealMax :=myReal
If myReal<mRealMin then myRealMin :=myReal

Re: [AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 29 mai 2023, 08:57
par sinced
itasoft a écrit : 27 mai 2023, 00:04 Slts,
Connais pas CiciCode mais en standard ça donnerait :


if Initialisation then myRealMin :=myReal;myRealMax :=myReal

If myReal>mRealMax then myRealMax :=myReal
If myReal<mRealMin then myRealMin :=myReal
Merci Itasoft, la seule chose qui manque c'est la moyenne.

Re: [AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 29 mai 2023, 09:52
par itasoft
Pour la moyenne ya plusieurs méthodes, En fonction de si on veut une moyenne instantanée ou échantillonnée
moi j'utilise celle instantanée sur un tableau glissant, voir mon Tuto

viewtopic.php?p=48447&hilit=moyenne#p48447

Re: [AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 29 mai 2023, 19:46
par sinced
Bon je viens de trouver une solution plus courte avec les fonctions internes du superviseur. Voici les étapes :
1. Définir une TREND qui va récupérer les valeurs de la grandeur analogique
2. Transférer le contenu de la TREND dans une variable de type ARRAY
3. Utiliser la fonction TableMath pour lire le max, min et la moyenne

Bien entendu les variables Minimum, Maximum et Average doivent être déclarées comme variables locales dans l'application.
Ici j'ai fait avec une table de 9 rien ne vous empêche d'avoir une table de 100 items.
La période de la TREND doit être représentative.

Code : Tout sélectionner

REAL TrendTable1[9];
FUNCTION getValue()
TrnGetTable("Tag1Test",0,0,9, TrendTable1[0],0,0,"Cluster1");
Minimum = TableMath(TrendTable1, 9, 0, 1);
Maximum = TableMath(TrendTable1, 9, 1, 1);
Average = TableMath(TrendTable1, 9, 2, 1);
END

Re: [AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 29 mai 2023, 19:47
par sinced
Je le fais tourner sur un Event ma fonction ce qui me permet d'avoir des valeurs live.

Re: [AVEVA PLANT SCADA] Calcul des valeurs min, max, moyenne d'un tag

Posté : 29 mai 2023, 20:24
par itasoft
1. Définir une TREND qui va récupérer les valeurs de la grandeur analogique
--------------
bravo, c'est l'idée de génie