SNCFilter
Funktionsbeschreibung und Anwendung
Der Significant-Numeric-Change-Filter (SNCFilter) dient der Reduzierung der Datenlast durch schwankende Sensor- oder Analogwerte. Der Filter sendet nur eine Nachricht, wenn:
-
Der Daten Key der zu filternden Variablen unter Thresholds konfiguriert ist
-
UND der zugehörige Value ggü. der zuletzt weitergeleiteten Nachricht eine Änderung betraglich größer/gleich des konfigurierten Thresholds hat.
Beim erstmaligen Eintreffen eines neuen Parameters, d.h. der Parameter ist im internen Cache noch nicht vorhanden, wird dieser angelegt und zukünftig immer durchgeleitet.
Folgende Parameter sind relevant für die Filterfunktion:
-
Value: aktueller Wert der Variable in der Eingangsnachricht
-
ValueCache: letzter durchgereichter Wert der Variable
-
Threshold: konfigurierte Schwelle
Abbildung 1 veranschaulicht das Verhalten des Filters.
Die in folgender Tabelle erläuterten Parameter sind Abbildung 2 zu finden.
Parameter | Beschreibung |
---|---|
Name |
Name der Blockinstanz. |
Into |
Name der Blockinstanz des Folgeblocks an welchen Ausgabenachrichten weitergeleitet werden sollen. |
Thresholds - Name |
Name des Daten Key (Variable) in der eingehenden Nachricht. Zugriff nur auf die oberste Objektebene im JSON. Die Variable muss einen numerischen Wert (Ganz- oder Fließkomma Typen) haben. |
Thresholds - Value |
double oder integer; Numerische Schwelle (einseitig) der Variable. |
Overwrite Header Scope with |
string; optional. Name für neue Scope Bezeichnung, zum Überschreiben des Header-Feldes Scope. Option ist inaktiv, wenn String nicht vorhanden oder leer ist. |
Issue Full Model |
boolean, default=true; |
Anmerkungen
-
Bei einem Schwellwert von 0 wird jede Änderung weitergeleitet. Vergleichbar also der Abwesenheit eines SNC-Filters.
-
Es werden nur geänderte Werte weitergeleitet, wenn diese sich auch im SNC-Filter befinden. Beispiel: die Gruppe Auto enthält die Knoten A,B,C,D. Die Knoten A und B sollen durch den SNC-Filter laufen und nur bei größeren Änderungen Werte ausgeben. C und D laufen zwar auch in den SNC-Filter, werden aber nicht erwähnt. Falls sich jetzt in C oder D ein Wert ändert, passiert nichts. Die gesamte Gruppe Auto wird nur durchgereicht, falls sich ein Knoten im SNC-Filter ändert (voraussgesetzt Issue Full Model ist auf true).
-
Falls Boolsche Werte (true/false) weitergeleitet werden sollen, sollte der einzustellende Wert 1e-8 betragen. Boolsche Werte selbst lassen sich natürlich nicht "runden". Allerdings kann es vorkommen, dass innerhalb einer Datengruppe Boolsche Werte und Fließkommazahlen vorkommen und alle Werte weitergeleitet werden sollen.
Beispielkonfiguration
Folgende Abbildung zeigt eine beispielhafte Konfiguration des SNCFilter.
Konfiguration in JSON
{
"SNCFilter_Block": {
"type": "SNCFilter",
"into": [
"Next_Blog"
],
"Thresholds": {
"Temperature": 0.1,
"KammerDruck": 990,
"Boolean_Value": 1e-8
}
}
}