MIT DATEN MEHR BEWEGEN.

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.

snc filter scetch
Abbildung 1. Skizze SNC-Filterverhalten

Die in folgender Tabelle erläuterten Parameter sind Abbildung 2 zu finden.

Tabelle 1. Konfigurationsparameter SNCFilter-Block
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.
Genauigkeitsverlust: Die Variable kann ein Bereich von knapp 2*Threshold überschreiten, ohne ein Nachrichten-Update aus Ausgang.

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;
IssueFullModel=false: Sendet jede Änderung einer Variablen separat in einer Nachricht (mit timestamp) an den Broker. Es entstehen ggf. mehrere Nachrichten aus einer einlaufenden Nachricht, wenn mehrere konfigurierte Schwellen überschritten wurden.
IssueFullModel: true: Sendet die gesamte einlaufende Nachricht mit allen Parametern, sobald eine Schwelle überschritten wurde.

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.

snc
Abbildung 2. Konfiguration des SNCFilter-Block

Konfiguration in JSON

{
    "SNCFilter_Block": {
        "type": "SNCFilter",
        "into": [
            "Next_Blog"
        ],
        "Thresholds": {
            "Temperature": 0.1,
            "KammerDruck": 990,
            "Boolean_Value": 1e-8
        }
    }
}