Hallo Alex,
alle Impulse über fünf Minuten fortlaufend mit Zeitstempel abzuspeichern und auszuwerten ist ein Mega-Aufwand. Zudem muss der DB, in dem die Werte abgelegt werden, für die maximale Anzahl an Wertepaaren ausgelegt werden. Ich glaube nicht, dass das wirklich erstrebenswert ist. Wenn möglich, würde ich es anders angehen.
Wenn ohne weitere Erklärungen von TIA die Rede ist, gehe ich immer von den aktuellen S7-1200/1500 aus. Das Folgende lässt sich aber auch auf anderen Steuerungen umsetzen.
1.) Den aktuellen Durchfluss bei jedem Impuls ermitteln. Der Impuls-Abstand kann im TIA besser denn je ermittelt werden ("RUNTIME"). Das Ergebnis ist der Durchfluss [Impulswertigkeit/Zeit], welches man normieren muss auf z.Bsp. auf [l/min] oder [m³/h]. Daraus erhält man quasi einen analogen Wert für den Durchfluss, den man ggf. etwas dämpfen kann.
2.) Diesen analogen Wert in festen zeitlichen Abständen von z.Bsp. 1 Sekunde in einem FiFo abspeichern. Das hat den entscheidenten Vorteil, dass für einen gleitenden Mittelwert über fünf Minuten exakt z.Bsp. 300 Werte abgespeichert werden müssen.
3.) Aus den 300 Werten den Mittelwert bilden. Wenn der arithmetische Mittelwert gefragt ist, so muss man alle 300 Werte vorzugsweise fortlaufend (also schon beim Einlesen) aufaddieren und den ältesten Wert des FiFos von der Summe subtrahieren! Dabei sollte man den Wertebereich beachten. Bei Realwerten muss man außerdem den Rechenfehler bei der Strichrechnung bedenken. Bei der Summenbildung daher besser mit DInt/LInt arbeiten.
4.) Falls es nicht wirklich der arithmetische Mittelwert sein muss, dann gibt es wesentlich einfachere Möglichkeiten, als mit einem FiFo zu arbeiten. Anstelle des ältesten Wertes subtrahiert man z.Bsp. den Mittelwert des vorherigen Zyklus. Der Nachteil ist eine sehr starke Dämpfung des Mittelwertes. Man bekommt also kein aussagekräftiges Ergebnis über den exakten Zeitbereich der letzten fünf Minuten. Das Ergebnis eilt stark nach.
5.) Das Thema wurde hier schon oft diskutiert. Suchfunktion verwenden?
Gruß, Onkel