How-To - OPC-UA Anbindung

Informationen zur Konfiguration und Anbindung OPC-UA mittels Client “UaExpert“

OPC-UA Server auf myDatanet

Der myDatanet Server bietet die Einbindung eines OPC-UA Servers. Damit können die Daten welche am myDatanet Server bereitgestellt werden, in ein externes System (z.B. SCADA) eingebunden werden.

image-20240308-093133.png
Übersicht

Konfiguration am myDatanet - Server

Bevor Daten mittels OPC-UA abzurufen sind, sind auf myDatanet die entsprechenden Konfigurationen unter “OPC-UA Server” vorzunehmen.

Voraussetzungen:

  • Um den OPC-UA Server konfigurieren zu dürfen wird ein Admin (Benutzergruppe 7) benötigt.

  • Serverversion >= 50v017 mit entsprechender Lizenz um OPC-UA zu verwenden

  • Freigabe des verwendeten TCP-Ports (Standard: 4334)

Die Einstellungen erfolgen unter “Konfigurationen” am Servers.

image-20240308-101553.png
myDatanet Konfiguration

Im Reiter “OPC-UA Server” finden sich die Einstellungen.

Für die Authentifizierung am myDatanet Server über OPC-UA wird empfohlen, separate Interface-Benutzer anzulegen.

Dazu wird ein neuer Benutzer mit Typ “Interface-Benutzer” angelegt. Die Benutzergruppe “Kunden-Operator (1)“ ist berechtigt die Messdaten abzufragen.

 

Konfiguration des OPC-UA Clients

Für diesen Artikel wurde “UAExpert“ Client verwendet. Es kann ein beliebiger OPC-UA Client gewählt werden.

Im Client ist ein neuer OPC-UA Server hinzuzufügen. Dazu wird auf das Plus Symbol geklickt.

 

Mit einem Doppelklick auf “Custom Discovery“ wird die Eingabemaske geöffnet zur Eingabe von URL laut Serverkonfiguration.

Mit dem Klicken auf OK wird dieser in die Liste hinzugefügt.

Danach kann man den OPC-UA Server aufklappen bis man zu den verschiedenen Verschlüsselungstypen kommt und eines der grün hinterlegten wählt. Danach muss man nur mehr Username und Passwort von seinem Interface Benutzer eingeben.

Anschließend muss man sich zum Server verbinden. Dazu Rechtsklick auf den Server und Connect.

 

Anzeigen von Daten im OPC-UA Client

Der myDatanet OPC-UA Server stellt automatisch die

  • Der myDatanet OPC-UA Server stellt automatisch die Kunden → SITE → Datenfelder Struktur zur Verfügung.

    Über die DropDown-Felder kann man zum gewünschten Datenfeld navigieren.
    UaExport stellt unterschiedliche “Documents” zur Anzeige der Datenpunkte zur Verfügung.

    • DataAccessView → letzter Messwert

    • History Trend View → Darstellung einer Zeitreihe in einer Kennlinie

    • Event View → Darstellung und Verwaltung von Alarmen & Events. Als so genannte “Event Sources” können in OPC UA nur Objekte verwendet werden. D.h. die Alarm-Ansicht muss zumindest auf Ebene eines historischen Datenstroms (z.B. histdata0) erfolgen. Auf der Ebene einzelner Felder ist dies nicht möglich.

    Die entsprechenden Datenfelder können per Drag&Drop aus der Auswahlliste in den jeweiligen View gezogen werden.

Verwendung von StatusCodes bei einzelnen Datenpunkten

Ein Datenpunkt setzt sich immer aus 3 Komponenten zusammen:

  • Zeitstempel

  • Wert

  • Qualität des Werts (abgebildet durch den StatusCode)

In myDatanet kommen bei Einzeldatenpunkten folgende StatusCodes zum Einsatz:

  • Good … Der Datenpunkt enthält einen letztgültigen Wert.

  • GoodNoData … Es liegen (noch) keine Daten vor. (Zum Beispiel, wenn eine neue Site noch keine Daten hat)

  • BadWaitingForInitialData … Wird bei der Initialisierung einer Registrierung verwendet, um dem Client zu signalisieren, dass der Server noch auf die interne Abfrage des letztgültigen Werts wartet. Im Normalfall besteht dieser StatusCode nur für den Bruchteil einer Sekunde, bis die aktuellen Werte ausgeliefert sind.

  • BadDataUnavailable … Wird ausgegeben, wenn der aktuelle Wert des Datenpunkts ‘NAN’ ist.

  • BadOutOfRange … Wird ausgegeben, wenn der aktuelle Wert des Datenpunkts ein NAMUR-Wert (OPEN LOOP, SHORTCUT, OVERFLOW, UNDERFLOW) ist.

  • BadResourceUnavailble … ist für einen eigentlich nicht erreichbaren Zustand reserviert, in dem der Client Daten eines nicht verfügbaren Datenpunkts abfragen will.

Behandlung des Publish Interval

Der sogenannte Publish Interval ist eine ausgehandelte Eigenschaft jeder einzelnen Registrierung bzw. jedes einzelnen registrierten Datenpunkts eines Clients. Es handelt sich dabei um den minimalen Zeitabstand, die der Server zwischen der Veröffentlichung von 2 unterschiedlichen Werten (Zeitstempel + Wert + Qualität [StatusCode]) abwarten muss.

Aushandlungsprozess (über den OPC UA Standard definiert): Der Client sendet bei der Registrierung jedes einzelnen Werts einen gewünschten Publish Interval an den Server. Der Server kann diesen Wert entweder annehmen oder abändern und sendet dann den tatsächlich angewendeten Publish Interval zurück an den Client. Der Server kann dabei Ober- und Untergrenzen definiert haben, auf die der Wert ggf. korrigiert wird. In myDatanet sind diese Grenzen fix zwischen 5ms und 1 Sekunde vorgegeben.

Falls mehrere Clients mit einem OPC UA Server verbunden sind und das gleiche Feld registriert haben, so wird der größte Publish Interval zur Anwendung gebracht. Intern werden die Daten immer synchron aktualisiert, es ist hier nicht möglich die Publish Intervals der einzelnen Registrierungen einzuhalten.

Good to Know - DataAccessView

Zur Anzeige des letzten Messwerts bringt UAExpert eine Eigenheit mit. Der Wert inkl. Timestamp wird nur dann aktualisiert, sobald sich der Wert ändert. Gleichbleibende Werte über neuere Timestamps können mit folgender Einstellung aktuell angezeigt werden.

Schreiben von Config-Werten

Es ist möglich, Konfigurationswerte über OPC UA zu schreiben. Diese Funktion ist auf die Veränderung von Konfigurationsfeldern beschränkt. Ein Schreiben von historischen Datensätzen ist nicht möglich.

Die jeweilige Voraussetzung ist, dass auch die dafür nötigen Benutzerrechte vorhanden sind. Es ist nicht möglich, die Beschreibbarkeit eines Feldes von vorne herein über OPC UA zu sperren. Erst wenn ein verbundener Client einen Schreibversuch unternimmt, wird die Antwort des Servers über Erfolg oder Misserfolg Auskunft geben.

Der Client UaExpert unterstützt das auch. Zunächst muss der zu schreibende Wert in einem “Data Access View” angezeigt werden, dann kann mit einem Doppelklick auf den letzten Wert dieser auch verändert werden.

Alarme & Events

Treten am myDatanet-Server Alarme auf, wie z.b. Messwert Über-/Unterschreitungen, so werden diese als OPC UA Alarm Events weitergeleitet.

Alarmquelle

Die Alarmquelle im OPA UC “Address Space” ist dabei der Datenstrom der den entsprechenden Messkanal beinhaltet. Tritt z.b. ein Alarm am Kanal “val1” auf so ist die Alarmquelle “STATUS”. Die Alarm-Condition selbst scheint im “Address-Space” nicht auf.

Der Client kann auch als Alarmquelle das Messstellenobjekt auswählen um alle Alarme einer Messstelle zu bekommen, oder das Kundenobjekt um alle Alarme eines Kunden zu bekommen. Um alle Alarme aller Kunden und Messstellen zu bekommen kann der Client auch als Alarmquelle das “customers” Object registrieren.

Alarmdetails

ConditionId

Eindeutige NodeId der Condition.

z.B.: “s.4DF24E23816DED27.histdata0.ch1.overflow”
“s.4DF24E23816DED27” … NodeId der Messstelle
”histdata0” … Datenstrom
”ch1” … Kanal
”overflow” … Typ der Condition. Siehe Tabelle “Condition Typen”

AckedState

True wenn der Alarm quittiert wurde. Dies kann über das myDatanet-Portal erfolgen oder über die OPC-UA Schnittstelle.

ActiveState

True so lange der Alarm aktiv ist (die Alarmschwelle über-/unterschritten ist)

ConditionName

Kann “alarm” oder “warning” sein.

EventId

Eindeutige Nummer des Alarm Events, wird vom Framework automatisch vergeben.

EventType

ist immer “ExclusiveLimitAlarmType”

Message

Klartext des Alarm-Events

Severity

250….warning
500…alarm

SourceName

Name des Messkanals bei dem der Alarm aufgetreten ist.

SourceNode

NodeId der Alarmquelle

z.B.: “s.4DF24E23816DED27.histdata0.ch1”
“s.4DF24E23816DED27” … NodeId der Messstelle
”histdata0” … Datenstrom
”ch1” … Kanal

Condition Typen

“underflow”

Unterschreitung der Warn-/Alarmschwelle

“overflow”

Überschreitung der Warn-/Alarmschwelle

“fault”

Messwert ungültig

“offline”

Messstelle ist offline

“transfer_volume”

Überschreiten der Datentarif Warnschwelle

“position”

Alarm auf Grund von Ortungsdaten

“test”

Test-Alarm

“user1”..”user3”

Applikationsspeziefische Alarme