TIA TIA v15, aktuellen Verbrauch ermitteln

--alex--

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

ich habe einen digitalen Eingang der mir mit einem Impuls vom Wasserzähler den Verbrauch angibt.
Ich gebe damit den Gesamtverbrauch bzw. den Tagesverbrauch an.

Das Ganze funktioniert soweit ohne Probleme.


Jetzt muss ich aber den aktuellen Verbrauch in l/h angeben.
Dieser soll über die letzten 5 Minuten (variabel) berechnet werden.

Hat jemand eine Ahnung wie man das bewerkstelligen kann?

Danke
Alex
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das funktioniert so leider nicht.
Mein Problem ist dass ich immer von den letzten 5 Minuten die Impulse brauche.
D.h. ich müsste ständig die Impulse rausschmeisen welche älter als 5 Minuten sind.

Ich vermute das ich so etwas ähnliches wie ein Archiv der Impulse mit Zeitstempel benötigen
Und da stehe ich momentan an.

Oder gibt es da elegantere Lösungen?


Alex
 
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
 
Eigentlich müsstest Du uns verraten, wie klein der zeitliche Abstand zwischen zwei Impulsen schlimmstenfalls werden kann.
Bei kurzen Abständen ermittelt man besser die Anzahl Impulse in einem gegebenen ZeitIntervall, bei langen Abständen besser die Zeit zwischen zwei Impulsen.

Abwandlung der ZeitStempelIdee:
Z.B. 1 Minute lang Impulse zählen. Nach Ablauf der Minute den Wert in ein FiFo schieben und die Zählung wieder bei 0 beginnen. U.s.w. …
Wenn Dein FiFo z.B. 5 Einträge beinhaltet - also immer die letzten 5 Minuten, dann hast Du eigentlich schon, was Du brauchst.
Du hast die Werte der letzten "ca." 5 Minuten und kannst sie "in etwa" der Zeit zuordnen, aber ganz ohne ZeitStempel abspeichern zu müssen. Jeder Wert im FiFo entspricht genau 1 Minute, aber der neueste Wert ist schon bis zu 1 Minute alt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie oft kommen die Impulse? Wieviele Impulse je Minute (normal, max)?
Der zeitliche Abstand zum letzten Impuls entspricht dem momentanen Verbrauch.
Im günstigsten Fall brauchst Du nur die genaue Zeit zwischen den Impulsen zu messen und auf die l/h umrechnen.
Warum soll der Verbrauch in 5 Minuten ermittelt werden? Was heißt "5 Minuten variabel"? Was genau heißt "der letzten 5 Minuten"?
Du könntest in einem einfachen Array mit z.B. 4 oder 5 DINT jede volle Minute den Zählerstand speichern (die 3 oder 4 neuesten Werte 1 Platz weiterschieben und den aktuellen Zählerstand hinzufügen) und die Differenz zum Wert vor 5 Minuten bilden und auf 1 Stunde hochrechnen (mal 12). So erhältst Du jede Minute einen neuen 5-Minuten-Verbrauchswert.

Harald
 
Warum soll der Verbrauch in 5 Minuten ermittelt werden? Was heißt "5 Minuten variabel"? Was genau heißt "der letzten 5 Minuten"?
Alex ist anscheinend realistisch genug, zu wissen, dass er …
- bei zu langen Intervallen zuviel glättet, um aktuelle "Spitzen" zu erkennen
- bei zu kurzen Intervallen vermeintlich aktuelle "Spitzen" künstlich erzeugt.
Wenn die Zeit bzw. die Anzahl FiFo-Plätze (zunächst mal) variabel ist, kann er experimentieren.

Was er mit diesen Werten anfangen will, verrät mir meine GlasKugel nicht.
Ich kann nur hoffen, das er sie nicht "integrieren" (aufsummieren) will, weil dies dann ein unnötiger Umweg wäre, der unnötige Ungenauigkeiten produziert.
 
Zuletzt bearbeitet:
Zurück
Oben