Code: Alles auswählen
!gewichteten Mittelwert der letzten ca. 90 Minuten berechnen
string Wetterstation = "Wetterstation:1"; !hier den Namen und Kanal der Wetterstation eingeben
string list = dom.GetObject("WindLOG").Value(); !Variable muss vorher als Zeichenkette angelegt werden
string newlist;
string index;
integer count = 0; !Zähler für Abbruch und Anzahl der Werte
integer maxElements=29; !maximale alte Werte, hinzu kommt dann noch der neue Wert, zusammen also 30
if (list=="???"){
newlist=dom.GetObject(Wetterstation).DPByHssDP("WIND_SPEED").Value().Round(1).ToString().RTrim("0").RTrim(".");
count=1;
}
else{
foreach (index, list){
if (count<maxElements){
if (count==0){
newlist=index;
}
else{
newlist=newlist+"\t"+index;
}
count=count+1;
}
}
newlist=dom.GetObject(Wetterstation).DPByHssDP("WIND_SPEED").Value().Round(1).ToString().RTrim("0").RTrim(".")+"\t"+newlist;
count=count+1;
}
dom.GetObject("WindLOG").State(newlist); !neue Liste in Variable schreiben
integer countGMW = ((count*(count+1))/2);
real sumGMW;
integer c = 0;
foreach (index, newlist){
sumGMW=sumGMW+(index.ToFloat()*(count-c));
c=c+1;
}
real GMW=sumGMW/countGMW;
dom.GetObject("GMWWindLong").State(GMW.Round(2));
!hier ist der 90 Minuten-Teil zu Ende
!gewichteten Mittelwert der letzten ca. 30 Minuten berechnen
integer short = 10;
if (count>short){
count=short;
}
integer countGMW = ((count*(count+1))/2);
real sumGMW;
integer c = 0;
foreach (index, newlist){
if (c<short){
sumGMW=sumGMW+(index.ToFloat()*(count-c));
c=c+1;
}
}
real GMW=sumGMW/countGMW;
dom.GetObject("GMWWindShort").State(GMW.Round(2));