Node-RED WinCC OA Nodes

Die WinCC OA Installation der Node-RED Anwendung beinhaltet die proprietären WinCC OA-Nodes. Diese besitzen eine Ähnliche Funktionalität wie die korrespondierenden Funktionen in WinCC OA.

Generelle Konfiguration von Nodes

Serverkonfiguration

Abbildung 1. Serverkonfiguration Auswahl

Jede Node kann den Server bestimmen, den sie verwendet, um mit WinCC OA zu kommunizieren. Um die Konfiguration zu beschleunigen, kann ein Default- Server definiert werden. Nachdem der Default Server definiert ist, wird er immer verwendet, wenn diese Eigenschaft nicht gesetzt ist.

Anklicken der Edit-Schaltfläche öffnet das Menu zur Serverkonfiguration.

Abbildung 2. Serverkonfiguration Editor

In diesem Menü wird zunächst die adresse des WebSocket Secure Servers eingetragen. Die Standardadresse ist hier "wss://<hostname>:8449:websocket". Wenn der Port oder der Servername geändert wurden, so müssen diese Änderungen auch hier vorgenommen werden.

Es werden die WinCC OA Benutzerdaten benutzt, um sich beim WSS-Server einzulogen. Dies müssen die Daten des Benutzers sein, der im Control-Manager unter dem der WSS Server läuft eingetragen ist.

Mit der Datapoint-Check-box wird definiert, ob der Systemname in der Autovervollständigung inkludiert werden soll.

Mit der Connection-Option kann ein Alive-Tiemout aktiviert, und die Länge des Timeouts in Sekunden festgelegt werden.

Der Server kann hier auch einen Namen erhalten um die Lesbarkeit zu erhöhen. Wird kein Name vergeben, so wird die volle Serveradresse verwendet.

Datenpunkt Konfiguration

Abbildung 3. Datenpunkt Konfiguration

Die meisten Nodes können die Datenpunkte oder Datenpunktelemente, mit denen sie Verbunden werden, bestimmen. Wenn der Server bereits mit dem WinCC OA System verbunden ist, ist die Verwendung der Autovervollständigung möglich.

Datenpunkte und Datenpunktelemente können entweder in der Node selbst gesetzt werden, oder als Topic der Input Nachricht übergeben werden. Sollte sowohl auf der Node ein Datenpunkt gesetzt sein, als auch mit der Input-Nachricht ein Datenpunkt übergeben werden, so hat der Datenpunkt auf der Node Priorität. Das bedeutet, dass die Informationen des auf der Node eingetragenen Datenpunkts abgefragt werden und der Datenpunkt der Input-Nachricht ignoriert wird. Dieser Fall kann in der Debug-Ausgabe anhand des Topics geprüft werden, da dort immer der verwendete Datenpunkt angegeben ist.

CNS-Konfiguration

Abbildung 4. CNS Konfiguration

In den Nodes, die eine Referenz auf einen Datenpunkt beinhalten, können Datenpunkte auch mit ihren CNS-Bezeichnern angegeben werden. Dies kann durch das anhaken der "Use CNS identifiers"-Checkbox aktiviert werden. Wenn der Server mit einem WinCC OA- System verbunden ist, ist die Verwendung der Autovervollständigung möglich.

Intervall Konfiguration

Abbildung 5. Intervall Konfiguration

Einige Nodes verwenden ein Zeitintervall. Dieses Intervall (in Minuten) wird auf der Node gesetzt und kann auf zwei verschiedene Arten ausgelöst werden:

  • In der Input- Nachricht wird ein Zeitstempel versendet. In diesem Fall beginnt das Intervall mit diesem Zeitstempel.

  • Es wird kein Zeitstempel in der Input-Nachricht inkludiert. In diesem Fall endet das Intervall am gegenwärtigen Zeitpunkt.

Das Standardintervall dieser Nodes ist auf 1440 Minuten (24 Stunden), die zur aktuellen Zeit enden, gesetzt.

Locale Konfiguration

Abbildung 6. Locale Konfiguration

Die gewünschte Sprache für die Nachrichten der Nodes kann direkt eingestellt werden. Dies wird besonders bei Nodes, die einen langString als Nachricht vom Server beziehen, verwendet (z.B.:alertGetPeriod, dpGetDescription, dpGetFormat und dpGetUnit). Die Sprache wird hier im Format wie in der Config Datei des WinCC OA Projekts angegeben (z.B.: en_US.utf8). Wird hier keine Sprache angegeben, wird die Default-Sprache des Projekts verwendet.

Die WinCC OA Nodes

dpGet

Abbildung 7. dpGet-Node und Konfiguration

Die dpGet-Node erhält einen Input und fragt dann den derzeitigen Wert ihres Datenpunkts vom Server ab. Der Wert wird als Output-Nachricht versendet. Wenn in der Input-Nachricht ein Zeitstempel enthalten ist, wird der Wert zu diesem Zeitpunkt abgefragt. Mehrere Datenpunkte können abgefragt werden, dabei wird für jeden Datenpunkt eine eigene Nachricht verschickt.

Weitere Informationen können in der Dokumentation von dpGet() oder dpGetAsynch() gefunden werden.

dpSet

Abbildung 8. dpSet-Node und Konfiguration

Die dpSet-Node schreibt den empfangenen Wert auf den angegeben Datenpunkt. Wenn mehrere Datenpunkte definiert sind, aber die Input-Nachricht nur einen Wert enthält, werden alle Datenpunkte auf diesen Wert gesetzt. Mehrere Werte werden mehreren vorhandenen Datenpunkten über ihren Index zugeteilt. Sollten weniger Werte als Datenpunkte vorhanden sein, werden die Werte widerholt (z.B.: Bei 2 vorhandenen Werten und 5 Datenpunkten, erhalten die Datenpunkte 1,3 und 5 den Wert 1, und die Datenpunkte 2 und 4 den Wert 2).

Mehr Informationen können in dpSet() gefunden werden.

dpConnect

Abbildung 9. dpConnect-Node und Konfiguration

Mit der dpConnect-Node wird eine Verbindung zu einem Datenpunkt etabliert. Die Node schickt immer dann eine Nachricht, wenn sich der Wert am Datenpunkt ändert. Bei mehreren angegebenen Datenpunkten wird durch die Standardeinstellung der Property "Separate connection for each datapoint " nur jeweils eine Nachricht für jeden geänderten Wert verschickt. Ist diese Property deaktiviert, wird bei einer einzigen Wertänderung für alle Datenpunkte, auch die unveränderten, eine Nachricht verschickt. Wird kein Datenpunkt gesetzt, wird der dpConnect Node ein Input-Port hinzugefügt, um einen oder mehrere Datenpunktadressen über Input-Nachrichten zu erhalten. Eine Verbindung zu diesen Datenpunkten wird hergestellt. Nachdem eine Verbindung zu einem oder mehreren Datenpunkten etabliert wurde, werden alle weiteren Inputs mit den gleichen Datenpunktadressen ignoriert. Die Node verschickt den aktuellen Wert einmal, nachdem die Verbindung zum Datenpunkt aktiviert wurde, und danach nur bei Wertänderungen.

Die dpConnect Node kann durch das senden einer Disconnect-Nachricht von den verbundenen Datenpunkten getrennt werden. Hierbei sind zwei Arten der Trennung verfügbar. Die Nachricht "dpConnect:disconnect" trennt die Node von dem in der Nachricht angegebenen Datenpunkt. Die Nachricht "dpConnect:disconnectAll" trennt die Node von allen verbundenen Datenpunkten.

Zusätzliche Informationen zu dpConnect() können aus der Funktionsdokumentation bezogen werden.

dpQuery

Abbildung 10. dpQuery-Node und Konfiguration

Die dpQuery-Node wird verwendet um eine SQL-Abfrage zu senden. Die Node wird mit einer Input-Nachricht ausgelöst und sendet danach die Abfrage an den Server. Ein Zeitintervall kann entweder direkt an der Node mit einem Ende zur aktuellen Zeit gesetzt werden, oder mit einem Zeitstempel als Input gestartet werden. Das Intervall wird dann, bei abgehaktem "Add timerange to query", als "TIMERANGE"-Parameter zur SQL-Abfrage hinzugefügt. Wenn in der Abfrage bereits ein Zeitintervall enthalten ist, wird dieser Input abgeschnitten. Die von der Abfrage erhaltenen Daten werden danach als Output-Nachricht versendet.

Eine detailliertere Erklärung zur Formulierung und Verwendung von SQL-Abfragen kann bei dpQuery() gefunden werden.

dpGetPeriod

Abbildung 11. dpGetPeriod-Node und Konfiguration

Diese Node führt eine Abfrage über die historischen Werte des angegebenen Zeitraums durch. Der Zeitraum startet entweder am übergebenen Zeitstempel oder endet zum jetzigen Zeitpunkt. Der erste Wert zu Beginn des Intervalls wird nur empfangen, wenn die "Add value at interval start"-Checkbox aktiviert ist. Dieser Wert ist der aktuelle Wert zu Beginn des Intervalls, was üblicherweise die letzte Wertänderung vor dem Intervall abbildet.

Weitere Informationen können in der Dokumentation zu dpGetPeriod() gefunden werden.

alertGetPeriod

Abbildung 12. alertGetPeriod-Node und Konfiguration

Die alertGetPeriod-Node bezieht die Alarmdaten für den angegebenen Zeitraum. Der Zeitraum wird mit dem Intervall angegeben und endet entweder zum aktuellen Zeitpunkt oder beginnt mit einem Zeitstempel aus der Input-Nachricht. Alle abgefragten Datenpunkte müssen ein alert config haben. Es ist auch möglich mehrere Datenpunkte und alert configs anzugeben. Dies kann entweder als Angabe mehrerer Datenpunkte mit dem gleichen alert config oder mit einem Datenpunkt mit verschiedenen alert configs. Für ein Datenpunktelement mit mehreren alert configs, werden die Nachrichten zu einer Nachricht zusammengefasst. Diese Nachricht enthält dann ein Array mit den Werten und Namen der Alarmeigenschaften. Ansonsten wird für jedes Alarmevent eine eigene Nachricht verschickt.

Weitere Informationen können bei alertGetPeriod() gefunden werden.

dpGetAlias

Abbildung 13. dpGetAlias-Node und Konfiguration

Diese Node fragt das Alias eines oder mehrerer Datenpunkte vom Server ab. Die Output-Nachricht enthält dann im Topic die eigentliche Datenpunktadresse und das Alias im Payload. Für jeden Datenpunkt wird eine eigene Nachricht versendet.

Für weitere Informationen wird auf dpGetAlias() verwiesen.

dpGetDescription

Abbildung 14. dpGetDescription-Node und Konfiguration

Die dpGetDescription-Node bezieht die Beschreibung des Datenpunktelements. Der Rückgabewert für den Fall einer fehlenden Beschreibung kann über den Modus eingestellt werden. Die Ausgabe der Beschreibung erfolgt in der in der Serverkonfiguration gewählten Sprache.

Mehr Informationen zu den Modi des Rückgabewerts befinden sich in der dpGetDescription()-Dokumentation.

dpGetUnit

Abbildung 15. dpGetUnit-Node und Konfiguration

Mit dieser Node wird die für den Datenpunkt angeführte Werteinheit abgefragt. Die Sprache, in der die Einheit in der Output-Nachricht weitergegeben wird, kann in der Serverkonfiguration eingestellt werden..

Weitere Informationen können unter dpGetUnit() gefunden werden.

dpGetFormat

Abbildung 16. dpGetFormat-Node und Konfiguration

Mit dieser Node wird das Format des Datenpunkts vom Server abgefragt. Die Ausgabesprache des Formats kann in der Serverkonfiguration eingestellt werden.

Zusätzliche Informationen befinden sich bei dpGetFormat().

dpNames

Abbildung 17. dpNames-Node und Konfiguration

Die dpNames-Node bezieht alle Datenpunkte deren Namen dem gegebenen Muster entsprechen vom Server. Wenn kein Muster angegeben wurde wird nach dem Topic der Input-Nachricht gesucht. Weiterhin kann ein Datenpunkttyp spezifiziert werden. Dies grenzt die Anzahl der gefundenen Datenpunkte auf diesen Typ ein. Die resultierenden Adressen können mit oder ohne Namen des Systems geliefert werden. Der Output kann erfolgen als:

  • Einzelne Nachrichten für jeden Datenpunkt

  • Eine einzige Nachricht mit einem Array aller Datenpunkte

Die Verwendung einer einzelnen Nachricht muss mit abhacken der "Single output message" aktiviert werden.

Eine detailliertere Beschreibung zu den verwendeten Mustern kann bei der Funktionsbeschreibung dpNames() gefunden werden.

Default Server

Abbildung 18. Default Server-Node und Konfiguration

Diese Node konfiguriert einen WinCC OA-Server der als Standardserver, innerhalb des Flows, in dem er platziert ist, fungiert. Mit der Checkbox "Use as global default server" wird der Server als Standardserver für alle Flows verwendet. In diesem Falle wird der globale Standardserver aber nicht verwendet, wenn in einem Flow ein anderer Standardserver konfiguriert ist.

Sollte kein Server in der Konfiguartion einer Node angegeben werden, wird automatisch der Standardserver verwendet. In Konsequenz daraus, kann in einer Node auch ein anderer Server angegeben und verwendet werden. Dieser Server muss aber in allen Nodes, die ihn verwenden, angegeben werden.

Die Default Server-Node kann an jeder beliebigen Stelle des Flows platziert werden, sie benötigt keine sichtbaren Verbindungen zu anderen Nodes.