OPC UA Alarme und Zustände

In diesem Kapitel wird die OPC UA Alarms & Conditions (AC) Funktionalität des WinCC OA OPC UA Clients näher beschrieben. Diese ermöglicht es, Alarme von einem OPC UA Alarmserver zu empfangen und zu quittieren.

Die Abbildung des Alarms erfolgt auf ein Datenpunktelement im WinCC OA OPC UA Client Projekt über eine entsprechende Peripherieadresse. Damit ein Alarm am WinCC OA Client System ausgelöst wird, muss eine Meldebehandlung für Multiinstanzalarme an diesem Datenpunktelement parametriert sein (_alert_hdl Config). Multiinstanzalarme haben den Vorteil, dass eine Alarmaktion wie Kommen, Quittieren, Gehen extern auslösbar ist und nicht vom Event-Manager berechnet wird. Zudem können bei diesem Alarmtyp Zusatzinformationen in Alarmbegleitwerten (siehe Inhalte von Alarmbegleitwerten für OPC UA) gespeichert werden. Des Weiteren kann für jeden Alarm eine spezielle Alarmklasse mitgegeben werden, d.h. es wird nicht die parametrierte Alarmklasse verwendet.

Wichtige Hinweise und Einschränkungen zu OPC UA AC finden Sie unter Alarme und Zustände (Alarms&Conditions) und Unterstützte Alarmtypen und Einschränkungen.

Voraussetzungen

Damit der OPC UA Client Alarme und Conditions empfangen kann, müssen folgende Voraussetzungen erfüllt sein:

In diesem Kapitel wird anhand eines Beispiels Schritt für Schritt beschrieben, wie Alarme empfangen und quittiert werden können. Das hier angegebene Beispiel zeigt die Konfiguration eines diskreten Alarms bei Verwendung des WinCC OA OPC UA Servers.

Quittierung von Alarmen

Damit Alarme nicht direkt in WinCC OA, sondern über den OPC UA Server quittiert werden, ist folgende Vorgangsweise notwendig:

  1. Im Projekt müssen individuelle Alarmklassen mit einem eindeutigen Präfix angelegt werden. Erstellen Sie hierfür die entsprechenden Datenpunkte vom Typ _AlertClass und konfigurieren Sie die Alarmklasse.
  2. In der Config-Datei des Client Projektes muss der folgende Eintrag gesetzt werden:
    [driver]
    driverAckClassPrefix = "<Präfix>" #z.B. "OPCUA" für die Alarmklasse OPCUA_Alarm

Dieser Eintrag wird vom UI gelesen und führt dazu, dass der Alarm nicht mehr über den Event-Manager, sondern über den internen Treiberdatenpunkt _DriverCommon quittiert wird (siehe auch driverAckClassPrefix). Erst dann sendet der Server eine Bestätigung der Quittierung an den Client, damit das UI den Alarm in WinCC OA wie gewohnt quittieren kann.

Parametrierung einer Subscription

Die Node-ID des Alarm-Condition-Type muss in der Subscription ausgewählt werden. Dieser Typ wird als Filter in der Subscription verwendet. Wenn Sie also einen falschen Alarmzustandstyp angeben, werden Sie den Alarm nicht erhalten. In der ComboBox haben wir eine Liste von vordefinierten Alarmtypen, für die es eine definierte Knoten-ID gibt:

  • SimaticAlarmConditionType
  • SimaticAlarmConditionOverloadType

Wenn der Server eine andere Art von Alarmbedingung hat, müssen Sie die Node-ID manuell mit dem Typ „Manual ...“ angeben. Dazu müssen Sie die Dokumentation des UA-Servers konsultieren.

Da Sie nur einen Alarmtyp in einem Abonnement angeben können, benötigen Sie eine Subscription pro Alarm.

  • OffNormalAlarm
  • ExclusiveLimitAlarm
  • ExclusiveDeviationAlarm
  • WinCCOADiscreteAlarm
  • WinCCOAContinuousAlarm

Der konfigurierte Alarmbedingungstyp muss vom OPC-UA-Standard AlarmConditionType abgeleitet sein, da dieser Typ alle Felder enthält, die der Client benötigt, um den Status des Alarms zu bewerten (Active, Acknowledged, etc.).

Für weitere Informationen siehe auch Unterstützte Alarmtypen und Einschränkungen weiter unten.

Abbildung 1. Beispiel einer Subscription-Parametrierung vom Typ Alarme und Zustände

Die Felder des Panels sind im Kapitel Konfiguration einer Subscriptionbeschrieben.

Event Notifier

Wenn eine Alarm-Subskription erstellt wird, ist das überwachte Element ein Event Notifier (Ereignismelder).

Das bedeutet, dass der Client einen Notifer Node (Meldeknoten) abonnieren muss, der die Ereignisse für die konfigurierten Alarmbedingungen auslöst.

Unser UA-Client verwendet das Objekt "Server" als Default Notifier (Standard-Melder), wenn das Feld in der Subskription leer ist.

Dies sollte ausreichend sein, da alle Ereignisse über diesen Knoten abgefeuert werden sollten. Es gibt zwei Gründe, den Detektor zu ändern. Der erste ist, dass der Server diesen Knoten nicht verwendet, obwohl die OPC UA Spezifikation dies vorschreibt. In diesem Fall müssen Sie in der UA Server Dokumentation nachschlagen, um die korrekte Knoten-ID des Notifiers (Melders) zu ermitteln. Die zweite ist die Begrenzung der Ereignisse, da der Serverknoten, wie oben erwähnt, alle Ereignisse auslöst.

Mapping Tabelle

Falls notwendig können in der Tabelle OPC UA Alarme einem bestimmten Alarmbereich in WinCC OA zugeordnet werden. Das ist nur dann sinnvoll, wenn das _alert_hdl mit mehr als zwei Bereichen konfiguriert wurde. Normalerweise wird für Multiinstanzalarme nur ein Gut- und ein Schlecht-Bereich verwendet.

In der Spalte "Status" kann eine Kombination aus UA Zustandsattributwerten definiert werden. Die Spalte "Range" definiert den Alarmbereich welcher gesetzt werden soll, wenn der Wert übereinstimmt.

Beispiel

Status Bereich
ActiveState=false 1
ActiveState=true;Range2=true 2
ActiveState=true;Range3=true 3

Die Attributnamen müssen für den ausgewählten Conditiontyp (oder Alarmtyp) gültig sein.

Abbildung der Alarmdaten

Damit in WinCC OA ein Alarm ausgelöst wird, muss am entsprechenden Datenpunktelement ein _alert_hdl Config vom Typ Multiinstanzalarm existieren.

Die konfigurierte Alarmklasse (_alert_class) ist irrelevant, wenn die Checkbox "UA Severity" in der Subskription aktiviert ist und ein Mapping von OPC UA Serverity zu Alarmklasse konfiguriert ist.

Die Abbildung von der OPC UA Gewichtung auf die WinCC OA Alarmklasse wird im Panel OPC UA Alarmgewichtung definiert. Dieses Panel ist über das WinCC OA Systemmanagement aufrufbar.

Über die Registerkarte System Management > Treiber öffnen Sie die Mapping der OPC UA Alarmgewichtung :

In WinCC OA wird die Priorität und der Quittierungsmodus des Alarms durch die Alarmklasse bestimmt. Dies kann entweder die gemappte Alertklasse aus der OPC UA Severity sein, wenn dieses Mapping konfiguriert ist, oder die Alertklasse, die in der Multi-Instance Alert hdl config konfiguriert ist. Dies bedeutet, dass die Priorität und der Quittierungsmodus während der Lebensdauer der Meldung nicht geändert werden können.

Abbildung 2. Mapping der OPC UA Alarmgewichtung

Treiber

Wählen Sie hier den Treiberdatenpunkt _OPCUA<num> vom Typ _OPCUA, für den das Alarmgewichtungsmapping verwendet werden soll. <num> entspricht der Managernummer, mit der der OPC UA Client gestartet ist.

Bereiche

Geben Sie hier die Anzahl der Bereiche ein, auf die Gesamtgewichtung von 1000 aufgeteilt werden soll. Die maximale Anzahl von definierbaren Bereichen ist 30.

Mapping der OPC UA Severity auf die WinCC OA Alarmklasse

Die Severity (Gewichtung) in OPC UA erstreckt sich von 1 bis 1000, wobei 1 die kleinste Gewichtung darstellt und 1000 die höchste. Das Alarmmodell von WinCC OA wird über die Prioritäten 1 bis 255 definiert, wobei auch hier 1 die kleinste Priorität darstellt. Folglich müssen beliebig große Severity-Bereiche, die zusammen den gesamten Severity-Bereich abdecken, auf WinCC OA Alarmklassen abgebildet werden. Diese Alarmklassen können entweder bereits definierte WinCC OA Alarmklassen sein oder können selbst erstellt werden, falls der Alarm ebenso an der Peripherie quittiert werden soll (für weitere Informationen siehe Quittierung von Alarmen).

Das Mapping wird auf das interne Datenpunktelement _OPCUA.Config.AlarmPrioMapping geschrieben. Dieses DPE ist vom Typ dyn_string und speichert das Mapping im folgenden Format "<start severity> <alert class>", wie im folgenden Beispiel gezeigt.

1 OPCUA_Info
75 OPCUA_Warning
125 OPCUA_Alarm
175 OPCUA_Danger
...

Das bedeutet, dass die WinCC OA Alarmklasse OPCUA_Info für die OPC UA Severity 1 bis 74 verwendet wird, OPCUA_Warning von 75 bis 124 und so weiter. Der letzte Eintrag OPCUA_Danger wird von 175 bis zum höchsten OPC UA Severity-Wert (1000) verwendet.

Parametrierung einer Peripherieadresse

Fügen Sie dem Datenpunktelement, das die Alarme empfangen soll, ein _address-Konfig hinzu und wählen Sie im Peripherieadresspanel den OPC UA Server aus. Danach muss die entsprechende Subscription vom Typ Alarme und Zustände ausgewählt werden.

In der Peripherieadresse muss die entsprechende Bedingung (Node-ID) ausgewählt werden. Abhängig vom eingestellten Alarmtyp im Subscription-Parametrierpanel erfolgt das Browsen (Schaltfläche Get Item ID) im entsprechenden Modus.

Wie bei Daten und Ereignissen ist es ebenso bei Alarmen & Zuständen möglich entweder die Node ID oder Browse Pfad zu verwenden.

Als Element müssen Sie die Alarm-Condition-ID auswählen, die für die Zuordnung von UA-Alarmen zu DPEs in WinCC OA verwendet wird.

Es kann manchmal schwierig sein, die richtige Condition-ID zu finden, und es gibt mehrere Möglichkeiten:
  1. Es ist möglich, mit dem WinCC OA UA-Client nach den Condition-IDs zu suchen. Das Durchsuchen nach Alarm-Condition-IDs kann funktionieren oder auch nicht, da es nicht zwingend erforderlich ist, dass sich die Alarm-Conditions im OPC UA-Adressraum befinden müssen. Wenn sie nicht vorhanden sind, können sie nicht durchsucht werden. Selbst wenn sie sich im Adressraum befinden, ist es möglich, dass sie nicht über das Server-Objekt central notifier zugänglich sind, das vom WinCC OA-Client benötigt wird.
  2. Die Condition ID können Sie der UA Server-Dokumentation entnehmen.
  3. Weder Option 1 noch 2 sind anwendbar. Es kann vorkommen, dass die Condition IDs nicht im Voraus bekannt sind oder dynamisch sind. In diesem Fall können Sie sie nicht in der Adress-Config konfigurieren. In diesem Fall muss die alarmFallbackAddress Condition ID verwendet werden (siehe Dynamische Alarm-Condition unten).

Parametrierung der Meldebehandlung

Legen Sie am gleichen Datenpunktelement eine Meldebehandlung für Multiinstanzalarme an. Der Alarm wird in diesem Fall nicht über den Wert des Datenpunktelementes, sondern direkt vom Treiber ausgelöst.

Siehe den obigen Abschnitt Abbildung der Alarmdaten.

Inhalte von Alarmbegleitwerten für OPC UA

Mithilfe der Meldebehandlung für Multiinstanzalarme ist es möglich, die unterschiedlichen Ereignisparameter als Alarmbegleitwerte auszugeben (für Informationen zu Alarmbegleitwerten allgemein siehe Begleitwerte und für Informationen zu den Konfig-Attributen für Alarmbegleitwerte siehe _alert_hdl). Die folgende Tabelle zeigt das aktuelle Mapping:

Attribut (vom Konfig _alert_hdl) OPC UA Ereignisdaten
_add_value_1 leer
_add_value_2 OPC UA Alarmmeldungstext
_add_value_3 OPC UA Severity (Gewichtung)
_add_value_4 OPC UA Quality Information vom Event
_add_value_5 Ausgewählte Ereignisfelder als JSON-String (siehe Subscription-Konfiguration ).

Sortierung von zeitgleichen Alarmen im Alarm- und Ereignisschirm

Um im Alarmschirm zeitgleiche Alarme sortieren zu können, kann ein Counter verwendet werden, der bei zeitgleichen Alarmen erhöht wird. Dieser Counter wird in den Begleitwerten abgespeichert.

Der Counter wird über den Eintrag "alertCounterAddValue" in der [opcua] Sektion der Konfigdatei aktiviert.

Anschließend muss in der Tabellenkonfiguration vom Alarm- und Ereignisschirm noch eine neue Spalte für den im Begleitwert gespeicherten Counter erstellt werden. Dann können Alarme zuerst nach der Zeit und sollte diese identisch sein, nach dem Counter sortiert werden.

Unterstützte Alarmtypen und Einschränkungen

Die korrekte Verarbeitung von Alarmen eines OPC UA Servers mit dem WinCC OA OPC UA Client hängt von einigen Faktoren ab. Wobei korrekte Verarbeitung bedeutet, dass der Zyklus eines Alarms am Server am Client richtig wiedergegeben wird.

Einerseits hängt das von den verwendeten Alarmtypen ab, andererseits auch von der Art wie sich die Alarmattribute am Server ändern. Da OPC UA Alarme sehr flexibel definiert sind und in WinCC OA nur fixe Alarmmodelle vorhanden sind, können nur eingeschränkte Modelle vom Client auf WinCC OA abgebildet werden.

Dabei gelten folgende Einschränkungen:

  • Die Alarm Severity darf sich nach dem Aktivieren eines Alarms bis zu seinem Verschwinden am Server nicht ändern.
  • Jeder Alarm darf nur einen Gutbereich und einen Alarmbereich haben.
  • Der Quittierungszustand eines Alarms darf sich von "Quittiert" nicht auf "Unquittiert" ändern, ohne dass der Alarm am Server neu ausgelöst wurde.

So ergibt sich aktuell eine Matrix für die unterstützten Kombinationen für die Konfiguration des WinCC OA UA Client (diese folgende Matrix gilt nur für WinCC OA OPC UA Client - die Matrix für den OPC UA Server finden Sie unter Unterstützte Alarmtypen und Quittierungsarten).

Anmerkung:
  • Die Quittierungseinstellung Alte Alarme quittieren wird nicht unterstützt.
  • Der Quittierungsart KAM und GING müssen quittiert werden wird für Impulsalarme nicht unterstützt.
  • Innerhalb des Alarmschirms werden nur die Werte des _alert_hdl.._event Attributes angezeigt, d.h. den Wert 0 für "Meldung KAM" und 2 für "Meldung GING".
  • Bei der Verwendung von "KAM und GiNG sind getrennt quittierungspflichtig" innerhalb des AES Schirmes ist es auf Seite des Clients nicht möglich, momentan nicht quittierbare Alarme zu blockieren (graue Hinterlegung und nicht klickbar) da diese Information nur serverseitig zur Verfügung steht. Dies führt dazu, dass ein mehrfaches quittieren innerhalb des Clients möglich ist, dieses jedoch entsprechend des korrekten Verhaltens nicht auf dem Server durchgeführt wird.
Nicht quittierbar Quittierung löscht KAM ist quittierbar KAM oder GING musst quittiert werden KAM und GING müssen quittiert werden
Binärer Alarm
Binärer Alarm (diskret)
Binärer Alarm (Impuls) N/A
Binärer Alarm (diskret, Impuls) N/A
Alarm kontinuierlicher Werte (2 Bereiche)
Alarm diskreter Werte (2 Bereiche)
Alarm diskreter Werte (Impuls, 2 Bereiche)
Alarm kontinuierlicher Werte (n Bereiche)
Alarm diskreter Werte (n Bereiche)
Alarm diskreter Werte (Impuls, n Bereiche)

Dynamic Alarm Conditions

Wie bereits im Abschnitt Parametrierung der Peripherieadresse erwähnt, muss die Node-ID des Alarmzustandes in der Adresse konfiguriert werden, um den Alarm einem DPE zuzuordnen. Da es Situationen gibt, in denen diese Node-ID nicht oder nur schwer im Voraus bestimmt werden kann, wurde die Fallback Address-Option eingeführt. Damit ist es auch möglich, Alarme zu empfangen, die eine dynamische Condition-ID haben. Dies ist z.B. bei dem OPC UA Server einer SPS 1500 der Fall.

Konfiguration

Um auch den Empfang von Alarmen ohne Konfiguration der ConditionId zu unterstützen, wird das Konzept einer Fallback-Adresse verwendet. Dadurch können alle Alarme, die über eine Alarm-Subscription, und die nicht auf eine explizit konfigurierte ConditionId abgebildet werden, auf eine beliebige Fallback-Alarmadresse abgebildet werden.

Diese Fallback-Adresse kann mit dem Config-Eintrag [opcua] alarmFallbackAddress konfiguriert werden. In diesem Fall kann das empfangende DPE eine hohe Anzahl an aktiven Alarminstanzen haben, was möglich ist da _alert_hdl einen Multi-Instanz-Alarm verwendet.

Wenn einem DPE mehr als eine Bedingung zugeordnet ist, sollten Sie in der Subscription immer UA Alarm text und UA Severity auswählen, da unterschiedliche Bedingungen einen unterschiedlichen Alarmtext und -schweregrad aufweisen können.