Historical Access
Durch Unterstützung der OPC UA Historical Access Funktionalität ermöglicht der WinCC OA OPC UA Server seinen Clients den Zugriff auf historische Daten.
Unterstütze Typen des Historical Access:
- Data Access
- Alarms and Conditions
Zur Bereitstellung der Daten wird der Server-Adressraum um historische Nodes/Notifiers erweitert. Dieses Kapitel beschreibt wie das Historical Access Feature aktiviert werden kann.
Server-Adressraum
Der Adressraum des WinCC OA OPC UA Servers wird mit Hilfe der OPCUARead und OPCUAWrite Gruppen aufgebaut (siehe auch Datenpunktgruppen für weitere Informationen). Jedes Datenpunktelement das einer dieser Gruppen zugewiesen ist, wird im Adressraum auf ein entsprechendes Element abgebildet.
Um zu definieren, für welche dieser Elemente Historical Access verfügbar sein soll,
müssen die gewünschten Datenpunktelemente zusätzlich der
OPCUAHARead
-Gruppe zugewiesen werden. Das bedeutet, dass
historische Werte nur von Elementen abgefragt werden können, die sowohl in
OPCUARead
(bzw. OPCUAWrite
) als auch in
OPCUAHARead
definiert sind. Datenpunktelemente die nur in
OPCUAHARead
definiert sind, werden vom Server ignoriert.
Datenpunktelementen dessen historische Werte abgefragt werden sollen, müssen Sie außerdem noch ein _archive-Config zuweisen (siehe auch History DB bzw. RDB-Archivierung).
Für historische Alarme wird keine _archive config benötigt, da die Alarme in der historischen Datenbank gespeichert werden, wenn dies in der Alarmklasse konfiguriert ist. Für historische Basisereignisse muß der auslösende dyn_string DPE einen _Archiv config haben, sonst können die historischen Ereignisse nicht aus der Datenbank abgerufen werden.
Zugriff auf historische Daten
Unterstützte Datentypen
Mit Ausnahme von LocalizedText und Blob sind alle vom WinCC OA OPC UA Server unterstützten Datentypen auch für Historical Access verfügbar. Eine genaue Auflistung finden Sie unter Datenaustausch - Zuordnung Datentypen.
Beispiel
- Erstellen Sie die notwendigen Datenpunktelemente die auf den Server-Adressraum abgebildet werden sollen. Für dieses Beispiel wurden die Datenpunktelemente Node1, Node2 und Node3 erstellt.
- Erstellen Sie ein _archive-Config an jenen Datenpunktelementen für die Historical Access verfügbar sein soll (in diesem Beispiel: Node1).
- Weisen Sie die Datenpunktelemente (Node1, Node2, Node3) entweder OPCUARead oder OPCUAWrite zu. Diese Elemente werden somit auf den Server-Adressraum abgebildet.
- Fügen Sie die notwendigen Datenpunktelemente (Node1) der Gruppe
OPCUAHARead
zu. Das bedeutet, dass der Zugriff auf historische Daten nur bei diesem Datenpunktelement möglich ist. - Starten Sie den WinCC OA OPC UA Server. Historische Daten von Node1 können jetzt von OPC UA Clients abgefragt werden.
readRaw
-Request geliefert werden soll.Abfragen von Daten des Servers
Der WinCC OA OPC UA Server unterstützt die
readRaw
-Funktion. Mit Hilfe dieser Funktion können OPC UA
Clients historische Daten vom WinCC OA OPC UA Server
abfragen. Mit einem readRaw
-Aufruf können mehrere Items
gleichzeitig abgefragt werden.
Folgende Parameter stehen bei der readRaw
-Function zur
Verfügung:
- continuationPoint
- Der Continuation Point der letzten Abfrage.
- timestampsToReturn
- Der Zeitstempel (Quelle, Server oder beides) der zurückgeliefert werden soll.
- numValuesPerNode
- Die maximale Anzahl an Werten die pro Element zurückgegeben werden soll
- startTime
- Startzeitpunkt des abzufragenden Zeitraums
- endTime
- Endzeitpunkt des abzufragenden Zeitraums
- returnBounds
- Dieses Flag gibt an, ob Bounding Values zurückgegeben werden sollen oder nicht
readRaw
-Funktion um historische Daten eines Servers
abzufragen. Nähere Informationen zur Verwendung der Funktion finden Sie unter
OPC UA Client - Historical
Access und _OPCUA.Command.HistoryRead. Eine detaillierte Beschreibung von
readRaw
können Sie dem OPC UA Standard entnehmen.Continuation Point
Der Continuation Point wird vom Server verwaltet. Falls die Anzahl an zurückgelieferten Elementen größer als der vom Client festgelegte Wert ist, muss der Continuation Point verwendet werden. Die entsprechenden Daten werden vom Server gespeichert. Werden die übrigen Elemente vom Client unter Verwendung des Continuation Points angefordert, so werden die restlichen Werte vom Server-Speicher geliefert, ohne dass ein weiteres dpQuery erforderlich ist.
Historical alarms and conditions
Unterstützte Alarmtypen
Jede Konfiguration, die von der Funktion Alarme und Bedingungen unterstützt wird, wird auch für die historischen Alarme und Bedingungen unterstützt (siehe Historical Access).
Beispiel
-
Erstellen Sie die entsprechenden Datenpunktelemente, die auf den Adressraum abgebildet werden sollen, und konfigurieren Sie ein gültiges Alarm-Handle darauf. Für dieses Beispiel wurde das boolesche DPE
Alarm_CameAndWent.boolean
des DPTTestUAAlarmServer
erstellt und ein_alert_hdl
mit der Alarmklasse "CAME or WENT must be acknowledged" konfiguriert. -
Weisen Sie das Datenpunktelement (
Alarm_CameAndWent.boolean
) derOPCUAAlarm
undOPCUAHARead
DpGroup zu. -
Verwenden Sie nun den UaExpert, um sich mit dem Server zu verbinden, fügen Sie die
EventView
hinzu und ziehen Sie den Knoten Server ->TestUAAlarmServer_@notifier
Notifier in die Konfiguration. -
Lösen Sie nun das folgende Szenario auf dem DPE Alarm_CameAndWent.boolean aus:
- CAME
- QUITTIEREN
- WENT
- QUITTIEREN
Erläuterung zu den empfangenen Zeilen (für eine detaillierte Information, wasActiveState
,AckedState
,BranchId
undRetain
ist, konsultieren Sie bitte in die OPC UA Spezifikation):- Die Zeile für das durch das CAME-Ereignis des Alerts ausgelöste came-Ereignis (ActiveState=true, AckedState=false, Retain=true, BranchId=null)
- Die Zeile für das Ereignis "acked came", ausgelöst durch die Bestätigung des CAME (ActiveState=true, AckedState=true, Retain=true, BranchId=null)
- Die Zeile für das "went"-Ereignis, ausgelöst durch das WENT-Ereignis des Alerts (ActiveState=false, AckedState=false, Retain=true, BranchId=null)
- Die Zeile für das Ereignis "acked came" in einem neuen Zweig, ausgelöst durch das Ereignis WENT des Alerts (ActiveState=true, AckedState=true, Retain=true, BranchId=UUID)
- Die Zeile für das "acked came"-Ereignis in der Verzweigung, ausgelöst durch die Quittierung des WENT (ActiveState=true, AckedState=true, Retain=false, BranchId=UUID)
- Die Zeile für das Ereignis "Acked went", ausgelöst durch die Bestätigung des WENT (ActiveState=false, AckedState=true, Retain=false, BranchId=null)
-
Lösen Sie nun eine historische Ereignisabfrage im UaExpert für den Zeitbereich des obigen Beispiels aus. Im UaExpert sind die folgenden empfangenen historischen Ereignisse zu sehen:
Unter Verwendung des [opcuasrv] historyNumValuesPerNode Konfigurationseintrag können Sie die maximale Anzahl von Werten festlegen,
die der Server pro readEvents
-Anfrage bereitstellt.
Abrufen von Daten vom Server
Der WinCC OA OPC UA Server unterstützt die Funktion
readEvents
. Daher können OPC UA Clients diese Funktion
verwenden, um historische Ereignisse vom WinCC OA OPC UA
Server abrufen. Es ist möglich, mehrere Items mit einem
readEvents
-Aufruf abzufragen. Da OPC UA Alarme auch OPC UA
Events sind, werden die Alarme auch mit der readEvents
Funktion
empfangen.
Die Funktion readEvents stellt die folgenden Parameter zur Verfügung:
- continuationPoint
- The continuation point data from a previous Read call.
- numValuesPerNode
- The maximum number of values per node to return.
- startTime
- The start time of the time period to read.
- endTime
- The end time of the time period to read.
- filter
- The wanted attributes of the historical events
Einschränkung: Only the
SelectClauses
are supported,WhereClauses
are not supported at the moment.
Fortsetzungspunkt
Der Fortsetzungszeitpunkt wird vom Server verwaltet. Wenn die Anzahl der zurückgegebenen Ereignisse größer ist als der vom Client angegebene Wert, muss der Fortsetzungspunkt verwendet werden. Die Ereignisse werden vom Server zwischengespeichert. Wenn die verbleibenden Ereignisse vom Client über den entsprechenden Fortsetzungspunkt angefordert werden, wird der Speicher des Servers verwendet, um die restlichen Ereignisse abzurufen. Daher ist keine zusätzliche Abfrage erforderlich.