Historical Access

In diesem Kapitel wird die OPC UA Historical Access Funktionalität des WinCC OA OPC UA Clients näher beschrieben. Hierdurch wird der Zugriff auf historische Daten eines OPC UA Servers ermöglicht.

Die Datenabfrage kann über einen internen Datenpunkt ausgelöst und definiert werden. Zur Verwendung der abgefragten Daten stehen die folgenden zwei Möglichkeiten zur Verfügung:

  • Schreiben der Daten auf internen DP: In diesem Fall werden die erhaltenen Daten auf einen internen Datenpunkt abgebildet, über welchen die weitere Datenverarbeitung erfolgen kann. Dadurch ist es möglich, historische Abfragen auf Knoten des Servers durchzuführen, die im WinCC OA System nicht über Peripherieadressen konfiguriert sind.

  • Schreiben der Daten auf DPE mit entsprechender Peripherieadresse: Dieser Modus ermöglicht es, die abgefragten Daten automatisch in das _archive-Config aller Datenpunktelemente mit der entsprechenden Peripherieadresse einzubinden. Dadurch können beispielsweise Daten innerhalb eines bestimmten Intervalls vom Server abgefragt und in das Archiv geschrieben werden, die durch einen Verbindungsausfall zwischen Server und Client verloren gegangen wären.

Abfrage historischer Daten

Über das interne Datenpunktelement _OPCUAServer.Command.HistoryRead wird die Abfrage der historischen Daten gestartet sowie die entsprechenden Parameter konfiguriert.

Abhängig von der Konfiguration dieses Datenpunktelements wird entweder auf einen Response-Datenpunkt vom Typ _OPCUAHistoryReadResponse oder in das Archiv von Datenpunktelementen mit der entsprechenden Peripherieadresse geschrieben. Die beiden Konfigurationsmöglichkeiten werden in den folgenden Beispielen gezeigt:

1. Speichern auf Datenpunkt

Um die abgefragten Daten auf einem Response-Datenpunkt abzubilden, gehen Sie folgendermaßen vor:

Anlegen eines Response-Datenpunktes

Zuerst muss ein Datenpunkt vom Datenpunkttyp _OPCUAHistoryReadResponse erstellt werden, auf den im Anschluss die erhaltenen Daten geschrieben werden können.

Beispiel: responseDP1

Damit der Response-Datenpunkt verwendet werden kann, muss dieser anschließend am internen Datenpunktelement _OPCUA<Treibernummer>.Config.HistoryReadResponseDps eingetragen werden.

Abfrage starten

Die Abfrage der historischen Daten kann jetzt über das interne Datenpunktelement _OPCUAServer.Command.HistoryRead gestartet werden. Um die erhaltenen Daten auf den zuvor erstellten Datenpunkt zu schreiben, muss entweder Methode 1 (Angabe des abzufragenden Items als NodeId) oder Methode 2 (Angabe des abzufragenden Items als Browsepfad) gewählt werden (siehe auch _OPCUAServer.Command.HistoryRead - Method).

Beispiel - Methode 1:

RequestId123

ReadRaw

1

ns=2;s=AirConditioner_2.Temperature

2015.03.03 09:00:00.000

2015.03.03 09:10:00.000

20

0

responseDP1

Beispiel - Methode 2:

RequestId1234

ReadRaw

2

/0:Objects/0:Server/2:AreaAirConditioner/2:AirConditioner_2/2:Temperature

2015.03.03 09:00:00.000

2015.03.03 09:10:00.000

20

0

responseDP1

Durch Klick auf die Übernehmen-Schaltfläche im PARA-Modul wird die Abfrage mit den definierten Parametern durchgeführt. Eine genaue Parameterbeschreibung finden Sie hier.

Datenverarbeitung

Das Ergebnis der Datenabfrage wird auf den zuvor erstellten Response-Datenpunkt (responseDP1) geschrieben und kann zur weiteren Verarbeitung verwendet werden.

2. Schreiben auf _archive-Config eines Datenpunktelements

Bei Verwendung von Methode 3 werden die historischen Werte auf die Datenpunktelemente mit den angegebenen Peripherieadressen geschrieben.

Peripherieadresse

Die gültige Peripherieadresse kann über das Datenpunktelement HW.HWMask vom internen Datenpunkttyp _DriverCommon ermittelt werden. Ist beispielsweise das _address-Config eines Datenpunktelements mit der Item ID "ns=2;s=AirConditioner_2.Temperature" verknüpft, so entspricht dieser Wert nicht der Peripherieadresse. Die gültige Peripherieadresse wäre in diesem Fall "opcua_server$Subscription$1$1$ns=2;s=AirConditioner_2.Temperature".

Anmerkung:

Alternativ dazu kann auch eine Wildcard so definiert werden, dass genau diese eine gewünschte Adresse abgefragt wird. In diesem Fall wäre das *ns=2;s=AirConditioner_2.Temperature

Durch die Verwendung von Wildcards ist es auch möglich, die Abfrage für alle übereinstimmenden Peripherieadressen durchzuführen und das Ergebnis in das Archiv des jeweiligen Datenpunktelementes zu schreiben.

Beim Schreiben der Daten der historischen Abfrage in das WinCC OA Archiv wird der Zeitstempel verwendet, der in der Subscription des entsprechenden Datenpunktelements definiert wurde.

Über das interne Datenpunktelement OPCUAServer.Config.HistoryReadTimestamps kann festgelegt werden, welcher Zeitstempel verwendet werden soll, wenn am entsprechenden Datenpunktelement keine Subscription definiert ist. Per Default wird in diesem Fall der Quellzeitstempel verwendet.

Anmerkung:

Der OPC UA Client führt historische Abfragen nur für jene Datenpunktelemente aus, bei denen für die Peripherieadresse die "Historie"-Checkbox gesetzt ist (siehe auch Hinweise und Einschränkungen). Um die abgefragten Daten mit einem bestimmten Userbit als historische Werte zu markieren wird der Config-Eintrag userBitHistoryRead verwendet. Sollen die historischen Werte als Korrekturwerte geschrieben werden muss zusätzlich noch der Config-Eintrag histDataBits gesetzt werden.

Response-Datenpunkt

Der Response-Datenpunkt ist in diesem Anwendungsfall nicht zwingend notwendig, liefert wenn angegeben aber wichtige Informationen zur Abfrage, wie zum Beispiel RequestId, ReturnCode oder DpList.

Abfrage starten

Nachdem Methode 3 sowie eine gültige Peripherieadresse definiert wurden, kann die Abfrage per Klick auf die Übernehmen-Schaltfläche im PARA-Modul gestartet werden.

Beispiel:

RequestId1234

ReadRaw

3

*.Temperature

2015.03.03 09:00:00.000

2015.03.03 09:10:00.000

20

0

responseDP2

Redundanzverhalten

OPC UA Server-Redundanz

Das History Access Interface des WinCC OA OPC UA Clients unterstützt OPC UA Server-Redundanz.

Per Default sendet der OPC UA Client im Fall eines nicht-transparenten redundanten OPC UA Servers nur an den ersten erreichbaren Server eine HistoryRead-Abfrage. Zum Handhaben von fehlenden historischen Daten an einem der beiden redundanten Server bietet der OPC UA Client die Möglichkeit, an beide Server die HistoryRead-Abfrage zu senden. In diesem Fall wird das Ergebnis der Lese-Abfrage beider Server zusammengeführt.

Anmerkung:

Für den Fall, dass die beiden Server für einen identischen Zeitstempel unterschiedliche Werte übermitteln, wird der Wert des ersten Servers übernommen.

Zur Konfiguration des Redundanzverhaltens wird das Redu.Config.HistoryReadMode-Datenpunktelement verwendet.

OPC UA Client-Redundanz

Im Fall von redundanten WinCC OA Clients senden beide Clients die historische Abfrage an den Server. Für den Server stellt sich das wie zwei getrennte Abfragen dar. Der tatsächliche Aktiv/Passiv Mechanismus und das damit verbundene Verwerfen erfolgt innerhalb von WinCC OA. Um einen Datenverlust während einer Reduumschaltung zu verhindern, wird empfohlen, beide Clients die historischen Abfragen durchführen zu lassen.

Der Vorteil dieser Variante ist, dass der Server keine Redufähigkeiten unterstützen muss.

Soll der passive Client keine historischen Abfragen an den Server senden, kann über den Config-Eintrag historyReduMode das Verhalten des passiven Clients konfiguriert werden.

Hinweise & Einschränkungen

Hinweise

Nicht jede Node im OPC UA Adressraum enthält historische Daten. Über das interne Datenpunktelement _OPCUAServer.Browse.AccessLevel wird angezeigt, ob für die entsprechenden Nodes historische Daten verfügbar sind.

In WinCC OA wird zum Kennzeichnen von Peripherieadressen für die am Server historische Daten vorhanden sind das _offset-Attribut des _address-Configs verwendet. Nur wenn für eine Peripherieadresse das _offset-Attribut gesetzt ist, führt der OPC UA Client bei Verwendung von Methode 3 eine Abfrage durch und schreibt die Daten auf das Element. Hierfür muss die "Historie"-Checkbox am Panel zur Definition der Peripherieadresse gesetzt werden.

Das _offset-Attribut weist folgende Struktur auf:

Bit Beschreibung
0

Zeigt an, ob am Server historische Daten für diese Peripherieadresse vorhanden sind.

0 = Keine historischen Daten vorhanden

1 = Historische Daten verfügbar

1-15 Derzeit nicht verwendet.

Einschränkungen

  • Es ist nur möglich, historische Daten eines OPC UA Servers zu lesen, Schreibzugriffe werden nicht unterstützt.

  • Vom WinCC OA OPC UA Client wird nur die Funktion ReadRaw des OPC UA Services History Read unterstützt.

  • Historische Aggregate werden vom WinCC OA OPC UA Client nicht unterstützt.

Beispielpanel

Zusätzlich existiert ein Beispielpanel (/panels/examples/OPCUA_HA_Example.pnl) welches folgende Funktionalität zur Verfügung stellt:

  • Browsen und Anzeigen der Server-Items

  • Durchführung von historischen Abfragen mit benutzerdefinierten Parametern

  • Anzeige der Daten in Tabellen