NEWS
Test Adapter Tiefpassfilter
-
@ben1983 Ja, bisher sieht es gut aus. Die letzten Stunden - seit Installation der neuen Version - gab es keinen Einbruch in der Kurve mehr.
Ich beobachte weiter. -
@klassisch Habe noch ein Min und Max Limit hinzugefügt.
-
@ben1983 vielen Dank, ist das ein Clipping der Eingangswerte? oder werden größere Werte gescippt?
-
@klassisch Beispiel am positiven Limit:
Limit steht auf 100
=> Alle Werte > 100 werden als Eingangswert ignoriert. -
@klassisch ist das soweit verständlich?
Also das es die Werte ignoriert und nicht den Wert annimmt, wenn der Wert bsp. Kleiner ist.
Das würde ich auch ungern machen. Lieber ignorieren. -
@ben1983 Habe darüber nachgedacht und mir hat es zumindest nicht auf anhieb eingeleuchtet.
Angenommen der Fall x > x_limit tritt ein. Was macht dann der TP? nimmt er den letzten gültigen Wert, den er hatte (das könnte auch ein ganz kleiner, also beliebig weit weg sein) und rechnet mit dem weiter? Könnte beliebig falsch enden.
Oder rechnet er gar nichts? Dann gibt es Kuddelmuddel mit der timebase, weil die dann wesentlich verlängert wird.
Meine Vorstellungskraft hat auch nicht ausgereicht um spontan einen konkreten Anwendungsfall dafür zu sehen.
Clipping hingegen wäre eher etwas, dem ich ab und an begegne.
Man ist dann schon im Bereich zu nichtlinearen Filtern. Man kümmert sich dann nicht mehr um das was jenseits der Limits passiert. Das wird ja dem Speicherelement vorenthalten.
Was mir schon ab und an begenet ist, sind nichtlineare Filter mit einem ggf adaptiven Totbereich. Also einem Bereich, in dem ein konstantes Signal ausgegeben wird, solange sich deas Eingangssignal innerhalb dieses Bereiches bewegt. Typischerweise nach dem Summationsglied am Eingang eines Reglers, also um die 0 herum. Das sorgt dann dafür, daß ein Signalrauschen sich nicht bis zum Stellglied durchschlägt.
Ist aber wieder eine ganz andere Geschichte.Die "null" Unterdrückung funktioniert bisher.
Magenta ungefiltert (5 min), schwarz gefiltert (30min = 6 Eingangswerte). -
@klassisch Also ich weiß ehrlich gesagt mit "clipping" nichts an zu fangen
Der Filter rechnet aktuell mit dem letzten gültigen Wert weiter.
Somit könnte man tiefe und hohe werte (Durch bspw. Einstreuungen oder sonstiges komplett ignorieren und man würde mit kurzen Ausreißern keine Beeinflussung auf den Verlauf haben. -
@klassisch Habe die Beschreibung etwas angepasst
-
@ben1983 sagte in Test Adapter Tiefpassfilter:
@klassisch Also ich weiß ehrlich gesagt mit "clipping" nichts an zu fangen
clipping = Amplitudenbegrenzung bzw. Magnitudenbegrnzung. Dabei würde mit dem maximal gültigen Wert weiter gerechnet, wenn der aktuelle Wert größer als dieser ist.
Also so eine Art Begrenzung des Signals wie z.B. durch eine Z-Diode.Der Filter rechnet aktuell mit dem letzten gültigen Wert weiter.
Somit könnte man tiefe und hohe werte (Durch bspw. Einstreuungen oder sonstiges komplett ignorieren und man würde mit kurzen Ausreißern keine Beeinflussung auf den Verlauf haben.Der letzte gültige Eingangswert kann aber mittlerweile völlig veraltet sein. Wenn der max-Wert einige Male überschritten wird, ist der Meßwert auch kein Ausreißer mehr.
Es könnte sein, daß das ungefilterte Signal zuerst recht klein ist und dann aber längere Zeit groß - größer als das Limit. Dann würde der Filter ständig das kleine Signal als Eingangswert weiter verwenden. Das wäre völlig falsch.
Beim Clipping würde stattdessen das obere Limit als Eingang verwendet. Ähnlich wie das eine Klemmdiode, Z-Diode o.ä. in einer Analogschaltung machen würde.
Bei einem kurzen Peak würde damit dessen Einfluß zumindest begrenzt. Bleibt der reale Eingangswert längere Zeit über dem Limit wäre der Filterausgang aber nicht so falsch wie beim Festhalten am letzten gültigen Wert.Aber wie gesagt, durch ein solches Vrhalten bekommt man ein nichtineares Verhalten.
Was wird verwendet, wenn man keinen max oder min Wert eingibt?
-
Hier sieht man die Wirksamkeit des TP1-Filters über einen längeren Zeitraum:
-
@klassisch sieht doch gut aus
-
@klassisch Also würdest Du ein Begrenzen, anstatt eines Ignorieren bevorzugen?
-
@ben1983 sagte in Test Adapter Tiefpassfilter:
@klassisch sieht doch gut aus
Ja, man kann schön sehen, was so ein TP1 macht.
-
@ben1983 sagte in Test Adapter Tiefpassfilter:
@klassisch Also würdest Du ein Begrenzen, anstatt eines Ignorieren bevorzugen?
Für mich war das Ausblenden der null Werte das Wichtigste. Vielen Dank dafür!
Wenn eine Min/Max Begrenzung zu implementieren ist, dann würde ich eher das Clipping - also die Amplitudenbegrenzung - bevorzugen. Aus den o.g. Gründen.
-
@klassisch schaue ich mir an
-
@klassisch habe es geändert.
Kannst Du gerne mal testen -
@ben1983 vielen Dank!
Funktioniert:
iobroker + iobroker.lowpass-filter@1.6.5 -
@klassisch Top, danke für den Input.
Hatte den usecase gar nicht auf dem Schirm -
Hier nochmals in der für eine Skriptverarbeitung oder Ablesung praxisnäheren Sufendarstellung. Die Liniendarstellung interpoliert ja nachträglich, a posteriori, wenn man so will.
Die Stufendarstellung zeigt die Werte, die während der Laufzeit auch tatsächlich zur Verfügung stehen.
Man sieht auch deutlich, daß der TP-Filter aufgrund seiner Zeitbasis zusätzliche Zwischenwerte erzeugt und damit allerdings auch das Datenaufkommen erhöht.
-
Hier noch der Vergleich zwischen Smartmeter-Messungen (ca. 1 Sekunde), einem TP1 mit 10 Sekunden (in Bild 2 mit 20 Sekunden) und einem Mittelwertbildner von 15 Sekunden Mittelwert. Kein gleitender Mittelwert, sondern ein Mittelwert über 15 Werte um das Datenaufkommen zu reduzieren
Bild 1 T= 10 Sekunden
Bild 2 Mit T=20 Sekunden:
Eine seltsame Sache ist dabei aufgetreten: Der Ausgang des TP1 läßt sich mit History nicht aufzeichnen. History bestätigt die Aufzeichnung, legt eine Datei mit wenigen Einträgen an und stoppt dann ohne Fehlermeldung
Eine Aufzeichnung mit einer MariaDB über SQL Adapter funktioniert. Sehr seltsam.Und noch eine andere Frage: Hast schonmal gestetet 2 TP1 hintereinander zu schalten? Man hätte dann einen entkoppelten TP2.