MIT DATEN MEHR BEWEGEN.

Stream Processor

Mit dem Stream Processor können einlaufende Nachrichten durch Verschaltung verschiedener Verarbeitungsblöcke ("Processing Blocks") verarbeitet und anschließend zurück an den Edge Broker des RoboGate Edge gegeben werden. Zu den Funktionen gehören z.B. Datenaggregation und mathematische Berechnungen auf Grundlage einlaufender Nachrichten. Mehrere unabhängige Datenströme können unabhängig voneinander und gleichartig verarbeitet werden, siehe dazu die nachfolgende Skizze.

streamprocessor processing
Abbildung 1. Verarbeitung von Nachrichten im Stream Processor

Konfigurationsschema

Die Konfiguration des Stream Processor beinhaltet die Definition folgender Elemente:

  • Input in den Stream Processor,

  • Verarbeitung (Processing) des Inputs und

  • Output aus dem Stream Processor an den Edge Broker.

Für die Konfiguration in der RoboGate Edge UI und Verbindung dieser Elemente bietet der Stream Processor einen Floweditor (Abbildung 2) mit folgenden Bestandteilen:

  1. Editor-Menüleiste: zoom Zoom, arrange automatische Block-Anordnung auf der Zeichenfläche, close Leeren der Zeichenfläche, delete Löschen eines Blocks

  2. Panel "Settings": Konfigurieren von Input Edge Topics und Default Output Topic

  3. Panel "Blocks": Sammlung verfügbarer Input-, Processing- und Output-Blöcke

  4. Zeichenfläche: Konfiguration, Verbindung und Anordnung von Blöcken

  5. Speichern: Speichern der Konfiguration

  6. Konfiguration zurücksetzen

streamprocessor flow editor
Abbildung 2. Stream Processor Floweditor

Um einen neuen Block anzulegen, klicken Sie das entsprechende Element im Panel "Blocks". Anschließend erscheint dieser Block auf der Zeichenfläche. Sie können den Block via drag&drop frei in der Zeichenfläche verschieben. Um einen Block zu entfernen, klicken Sie entweder auf die Löschschaltfläche delete im Block in der Zeichenfläche oder wählen Sie den Block an und klicken Sie delete "Delete Selected" in der Editor-Menüleiste. Um alle Blöcke zu entfernen, klicken Sie auf close "Clear" in der Editor-Menüleiste.

Jeder Block hat Ein- und/oder Ausgangsknoten über die er sich verbinden lässt. Über diese Verbindungen werden Nachrichten weitergeleitet. Um Blöcke zu verbinden, klicken Sie auf einen Ausgangsknoten und ziehen eine Linie zu einem Eingangsknoten eines anderen Blocks. Um eine Verbindung zu entfernen, klicken Sie auf den Knoten am Ende der Verbindung und lösen Sie die Verbindung vom Eingangsknoten des Folgeblocks. Wird keine neue Verbindung anglegt, wird die Verbindung automatisch entfernt. Jeder Knotenpunkt kann über mehrere Verbindungen verfügen.

Die Verbindung der Input-, Processing- und Output-Blöcke ist Voraussetzung für die Verarbeitung von Nachrichten im Stream Processor!

Input

Über die Angabe von Input Edge Topics wird definiert, welche der im RoboGate Edge bzw. Edge Broker vorhandenen Topics im Stream Processor verarbeitet werden. Diese Auswahl dient somit als Eingangsfilter in den Stream Processor. Es können mehrere Einträge angelegt werden.

Über einen Input-Block lassen sich die konfigurierten Input Edge Topics nach Source und Scope filtern und an einen Processing-Block schicken. Diese Filterung ist durch Reguläre Ausdrücke (RegEx) realisiert. Stimmen die Header-Felder "Source" und "Scope" aus den einlaufenden Nachrichten mit der Konfiguration des Input-Blocks überein, wird die Nachricht an die nachfolgenden Blöcke gegeben. Es können mehrere Input-Blöcke angelegt werden.

Tabelle 1. Konfigurationsparameter Input-Block
Parameter Beschreibung

Name

Name des Input-Block

Source (Filter)

RegEx-Filterung des Header-Feld "Source"

Scope (Filter)

RegEx-Filterung des Header-Feld "Scope"

Nach Konfiguration des Inputs in den Stream Processor (Input Edge Topics und Input-Block/Blöcke), müssen die notwendigen Processing-Blöcke konfiguriert und dem Verarbeitungsfluss entsprechend verbunden werden.

Konfiguration in der UI

Im Panel "Settings" können die Input Edge Topics konfiguriert werden. Das Hinzufügen eines Input Edge Topics erfolgt durch die Eingabe des Namen des Topics, das verarbeitet werden soll, im Feld "New Topic". Entfernt werden können Topics mit einem Klick auf das Kreuz close.

Beispiel: Der zu verarbeitende Daten-Input wird von der „PollGroup a“ des OPC UA-Moduls bezogen. Abbildung 3 zeigt die nachfolgend beschriebene Konfiguration im OPC UA-Modul:

  • Poll Groups: „PollGroup a“ mit Interval 1000ms, Name: “a”, Output Topic: “PollGroup a”

  • Field Name: a und b

opcua config
Abbildung 3. Konfiguration der "PollGroup a" im OPC UA-Modul

Die angelegte "PollGroup a" muss nun als Input Edge Topic im Stream Processor angelegt werden. Dies erfolgt durch Eingabe des Namens unter New Topic und einem Klick auf das Hinzufügen-Symbol "+" (Abbildung 4).

streamprocessor input edge topic
Abbildung 4. Konfiguration des Input Blocks

Anschließend muss ein Input-Block mit dem Filter angelegt werden. Hierzu klicken Sie auf das Element input Input in der Auswahlliste des Panels "Blocks" und der Block erscheint in der Zeichenfläche des Stream Processor (Abbildung 5). Mit einem Klick auf den Stift edit im Input-Block auf der Zeichenfläche öffnet sich das Dialogfenster zum Konfigurieren des Input-Blocks. Im Beispiel erhält der Input Block den Namen "OPCUA" und filtert die Nachrichten nach Source ("OPCUA") und Scope ("^a$") weiter (Abbildung 6)

streamprocessor input block
Abbildung 5. Erstellen des Input-Blocks
streamprocessor input block config
Abbildung 6. Konfiguration des Input-Blocks

Um den Input zu verarbeiten, müssen nun den Anforderungen entsprechend Processing-Blöcke angelegt werden.

Processing

Die Processing-Blöcke verarbeiten die einlaufenden Nachrichten und können diese anschließend über Output-Blöcke zurück an den Edge Broker des RoboGate Edge geben.

Folgende Typen von Processing-Blöcken stehen zur Verfügung:

Die einzelnen Processing-Blöcke und ihre Konfiguration werden separat im Abschnitt StreamProcessor näher beschrieben.

Um Nachrichten mit unterschiedlichen Source- und Scope-Werten (d.h. aus unterschiedlichen Datenquellen) unabhängig voneinander und parallel zueinander zu verarbeiten, bauen die Processing-Blöcke in der Regel für jede Kombination von Source und Scope unabhängige Zustände (z.B. eine Timerinstanz auf dotnet Ebene oder einen Puffer) auf.

Die verfügbaren Typen von Processing-Blöcken mit ihren spezifischen Konfigurationsparametern werden in den nachfolgenden Abschnitten beschrieben.

Konfiguration in der UI

Um einen Processing-Block zu erstellen, wählen Sie das entsprechende Element im Panel "Blocks" unter dem Bereich "Processing" aus. Anschließend erscheint der Block auf der Zeichenfläche des Stream Processor. In diesem Beispiel wird der Aggregator-Block gewählt (Abbildung 7). Mit einem Klick auf den Stift edit öffnet sich das Dialogfenster zum Konfigurieren des Blocks. Nun lässt sich der Name des Blocks, im Beispiel "agg1", festlegen und die weiteren Parameter konfigurieren.

streamprocessor processing block aggregator
Abbildung 7. Erstellen eines Aggregator-Blocks
streamprocessor processing block aggregator config
Abbildung 8. Konfigurieren eines Aggregator-Blocks

Damit die Nachrichten des Input Edge Topics weitergeleitet und verarbeitet können, muss eine Verbindung zwischen Input und Verarbeitung (Input Block und Processing Block) geschaffen werden. Hierzu klicken Sie auf den ausgehenden Knotenpunkt "Messages" des Input-Blocks und ziehen eine Verbindung zu einem Eingangsknotenpunkt am Processing-Block (Abbildung 9). Über diese Verbindung laufen die Nachrichten aus Source und Scope entsprechend des konfigurierten Filters im Input-Block in den Aggregator-Block ein.

Auch Processing-Blöcke können untereinander über Eingangs- und Ausgabeknoten miteinander verbunden werden.

streamprocessor processing block connect
Abbildung 9. Verbindung von Input- und Aggregator-Block

Output

Um die verarbeiteten Nachrichten im Stream Processor in weiteren Modulen des RoboGate Edge zu verarbeiten, müssen diese an den Edge Broker zurückgegeben werden.

Hierzu können ein Default Output Topic und/oder mittels Output Block weitere Output Topics definiert werden. Das Default Output Topic ist optional. In das Modul einlaufende Nachrichten, die durch keine Filter-Konfiguration passen (in den Input-Blöcken), werden, falls konfiguriert, auf dieses Edge Broker Topic geleitet. Um eine Nachricht aus dem Stream Processor zurück an den Edge Broker zu geben, muss über einen Output-Block ein Output Topic konfiguriert werden. Dieses Topic kann zur Auswertung in einem Datenausgabemodul genutzt werden.

Es können mehrere Output-Blöcke angelegt werden.

Tabelle 2. Konfigurationsparameter Output-Block
Parameter Beschreibung

Name

Name des konfigurierten Output-Blocks

Edge Topic

Name des Output Topic, um Output-Nachrichten auf die Edge Broker Topic(s) zu mappen

Source

Wenn angegeben, wird Source in der Nachricht überschrieben

Scope

Wenn angegeben, wird Scope in der Nachricht überschrieben

Konfiguration in der UI

Zum Erstellen eines Output-Blocks klicken Sie, analog zum Erstellen eines Input-Blocks auf das Element output Output in der Auswahlliste des Panels "Blocks" im Bereich "Output". Daraufhin erscheint der erstellte Output-Block in der Zeichenfläche (Abbildung 10). Mit einem Klick aud den Stift edit öffnet sich das Dialogfenster zum Konfigurieren des Output-Blocks (Abbildung 11). Im Beispiel erhält der Output-Block den Namen "out" und die Spezifikation der weiteren Parameter.

Anschließend kann der zuvor erstelle Aggregator-Block mit dem Output-Block verbunden werden. Hierzu klicken Sie auf den ausgehenden Knotenpunkt "Result" des Aggregator-Blocks und ziehen die entstehende Verbindungslinie zum Knotenpunkt "Out" des Output-Blocks (Abbildung 12).

streamprocessor output block
Abbildung 10. Erstellen eines Output-Blocks
streamprocessor output block config
Abbildung 11. Konfiguration des Output-Blocks
streamprocessor output block connect
Abbildung 12. Verbindung von Aggregator- und Output-Block

Konfiguration zurücksetzen

Über die Schaltfläche reset in der horizontalen Menüleiste lässt sich die komplette Konfiguration des Moduls auf Werkseinstellungen zurücksetzen. Nach einem Klick auf die Schaltfläche folgt ein Bestätigungsdialog mit "Yes" und "No" zur Rückfrage ob der Vorgang wirklich ausgeführt werden soll.

Damit wird auch die gesamte Historie auf dem RoboGate Edge Ebene gelöscht!