TIA Durchschnittswert 2er Arrays vergleichen

Byte0815

Level-2
Beiträge
152
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche derzeit die Abweichung 2er Arrays zu vergleichen und eine Störmeldung zu bilden, wenn die Abweichung zu groß ist.

Ich arbeite mit einer 1515-2PN und TIA Portal V15.1.

Die Arrays bestehen aus jeweils 60 Real Werten einer Durchflussmessung. Minütlich wird der aktual Durchfluss in das jeweilige Array geschrieben.

Jetzt wollte ich gern die Durchschnittliche Abweichung pro Stunde als quasi die kompletten Arrays miteinander vergleichen.

Finde jedoch keinen vernünftigen Lösungsansatz, bzw. nur mit großem Aufwand

Vielleicht kann ja jemand helfen.

Vielen Dank schonmal
 
Jetzt wollte ich gern die Durchschnittliche Abweichung pro Stunde als quasi die kompletten Arrays miteinander vergleichen.
Dann rechne doch pro Array die letzten 60 Array-Werte ( eine Stunde ) zusammen und teile durch 60.
Die beiden Ergebnisse kannst du dann verrechnen und das ergibt dann die Durchschnittsdifferenz.

Oder habe ich dich falsch verstanden?
 
Code:
IF bStart
    Sum := 0.0;
   
    FOR i:= 0 to 59 DO
        Sum:= Sum+Array[i];
    END_FOR;

    Median:= Sum/60.0;
    bStart:= FALSE;
END_IF;

Ich würde die Summe vor dem addieren noch ablöschen, durch 60.0 teilen ( sonst Typwandlung, 60 = INT, 60.0 = REAL ) und nach der Schleife den Median bilden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn es dir alternativ um die Differenz der jeweiligen Array-Elemente geht, kannst du das ebenfalls sehr elefant in SCL lösen:

Code:
IF bStart
    Sum := 0.0;
  
    FOR i:= 0 to 59 DO
        Sum:= Sum+ABS(Array1[i]-Array2[i]);
    END_FOR;

    Median:= Sum/60.0;
    bStart:= FALSE;
END_IF;
 
... Jetzt wollte ich gern die Durchschnittliche Abweichung pro Stunde als quasi die kompletten Arrays miteinander vergleichen...

Den Durchschnitt pro Stunde forlaufend bei jedem neuen Messwert berechnen, oder tatsächlich nur einmal nach 60 Minuten? Das geht aus der Fragestellung leider nicht eindeutig hervor. Ich würde Ersteres vermuten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
IF bStart
    Sum := 0.0;
 
    FOR i:= 0 to 59 DO
        Sum:= Sum+Array[i];
    END_FOR;

    Median:= Sum/60.0;
    bStart:= FALSE;
END_IF;

Ich würde die Summe vor dem addieren noch ablöschen, durch 60.0 teilen ( sonst Typwandlung, 60 = INT, 60.0 = REAL ) und nach der Schleife den Median bilden.
Das ist doch nicht der Median sondern der Durchschnitt..
Der Median wäre jeweils so:

Code:
Median1 = (Array1[29] + Array1[30])/2.0
Median2 = (Array2[29] + Array2[30])/2.0
 
Definition, Definition, Definition... Oder auch Requirements writing...

Was soll getan werden?
Eine durchschnittliche Abweichung pro Stunde ist kein Median über die Messwerte der Stunde.
Abweichung von 2 Arrays. Zu was? Untereinander? Zu einem Referenzwert? Durchschnitt der Werte in Abweichung zu einem Referenzwert? Oder Durchschnitt der Abweichungen?

Was geschieht bei Ausreißern bzw. ungültigen Messwerten? Tolerabel bis x pro Fenster? Abbruch beim ersten "falschen" Wert?

Wer sortiert Messwerte in einem Array generell nach Wert? Standardmäßig sortiert man die nach Messzeitpunkt. und warum spielt das in einem fixen Fenster (Array) für eine Rolle, wenn ich Mittel oder Medianwert bilden will?
Sortiert man halt so, wie man es braucht...
 
Zurück
Oben