OPC UA Server CNS
In diesem Kapitel wird die OPC UA CNS Funktionalität des WinCC OA OPC UA Servers näher beschrieben. Durch diese Erweiterung können CNS-Views auf den Adressraum eines Servers abgebildet werden. Das bedeutet, dass der Server-Adressraum unabhängig von der Datenpunktstruktur des jeweiligen WinCC OA Projekts frei definiert werden kann.
Bei Verwendung von CNS werden keine Datenpunktgruppen benötigt. Die gewünschte Struktur der CNS-View kann entweder über den Anlagenmodell Editor oder über die entsprechenden Control-Funktionen angelegt werden.
Konfiguration
Die View, die auf den Adressraum abgebildet werden soll, muss mittels des Anlagenmodell Editors festgelegt werden. Dadurch wird die ID der View auf dem internen Datenpunktelement Config.CNSView vom Typ _OPCUAPvssServer eingetragen. Jedem Server kann immer nur eine View zugewiesen werden.
Der OPC UA Server überprüft das Datenpunktelement CNSView nur beim Start. Soll daher eine andere View auf den Adressraum abgebildet werden, muss der Server neu gestartet werden, nachdem die neue ID auf dem Datenpunktelement eingetragen wurde. Wenn eine ungültige View-ID angegeben wird, kommt es zu folgender Fehlermeldung und der Server wird beendet:SEVERE, 54, Unexpected state, CNSViewBrowser, Constructor, View 'View13' doesn't exist!
Der WinCC OA Systemname und der Viewname selbst sind kein Teil des Server-Adressraums. Die erste Ebene die im Server-Adressraum angezeigt wird, entspricht der ersten Node die in einer CNS View entsprechend konfiguriert wird.
AccessLevel
Um festzulegen, welche Nodes einer View im Adressraum angezeigt werden, bzw. wie auf den Wert einer Variable zugegriffen werden kann, muss das AccessLevel-Attribut verwendet werden. Um den AccessLevel einer Node zu definieren, muss das Keyword OA:OPC mit einem Wert vom Typ UINTEGER_VAR auf der UserData der Node gespeichert werden (entweder automatisch über Anlagenmodell Editor - OPC oder mit cnsSetProperty). Der AccessLevel einer Node wird auf alle Child-Nodes vererbt, für die der AccessLevel nicht explizit gesetzt wird.
Feld | Bit | Beschreibung |
---|---|---|
Read | 0 |
Definiert, ob der Wert lesbar ist 0: Nicht lesbar 1: Lesbar |
Write | 1 |
Definiert, ob der Wert schreibbar ist 0: Nicht schreibbar 1: Schreibbar |
Alarm | 2 |
Definiert, ob die Alarminformation im Adressraum angezeigt wird. 0: Alarminformation wird nicht angezeigt 1: Alarminformation wird angezeigt |
History | 3 |
Definiert, ob die Historie des Wertes verfügbar ist: 0: Nicht verfügbar 1: Verfügbar |
Event | 4 |
Definiert, ob ein dyn_string verbunden ist, für welcher ein Base Event gesendet werden kann. 0: Nicht verbunden 1: Verbunden |
Inheritance | 31 |
Definiert, ob der AccessLevel von dieser Node vererbbar oder nur für diese eine Node gültig ist. 0: Vererbbar 1: Nicht vererbbar |
Abbildung im Server-Adressraum
Bei CNS können Datenpunkte zu Nodes einer CNS View hinzugefügt werden. Ist einer Node ein Datenpunktelement zugewiesen und der AccessLevel definiert, wird das Objekt für diese Node im Adressraum von der Node-Klasse "Variable" repräsentiert und zeigt den aktuellen Wert des zugewiesenen Datenpunktelements.
Nodes ohne Datenpunktelementzuweisung werden im Adressraum als Objekte der Klasse "Object" dargestellt.
Folgende Punkte müssen bei der Abbildung einer View auf den Adressraum berücksichtigt werden:
- Eine Node ohne AccessLevel wird nicht abgebildet, außer wenn zumindest eine der Child-Nodes mit einem Datenpunktelement verknüpft ist und dessen AccessLevel definiert ist.
- Eine Node mit definiertem AccessLevel der kein Datenpunktelement zugewiesen ist, wird nicht auf den Adressraum abgebildet, außer wenn sie zumindest eine Child-Node mit zugewiesenem Datenpunktelement hat.
- Eine Parent-Node mit zugewiesenem Datenpunktelement ohne definiertem AccessLevel wird als Struktur-Element auf den Adressraum abgebildet, wenn für eine der Child-Nodes der AccessLevel definiert ist.
- Die Struktur der Objekte im Adressraum entspricht der verlinkten
Datenpunktelementstruktur. Wird einer Node eine Datenpunktelementstruktur
zugewiesen, hängt der OPC UA Server alle Elemente der verlinkten Struktur an die
entsprechende Node. Anmerkung:
Die Datenpunktelementnamen einer verlinkten Struktur werden für die OPC UA Node-ID verwendet. Sollte es durch die verlinkte Struktur zu Konflikten mit CNS Nodes mit der gleichen Node-Id kommen, wird vom Server eine Fehlermeldung im LogViewer ausgegeben. In diesem Fall bleiben sich bereits im Adressraum befindende Nodes unverändert und die neuen, konfliktverursachenden Nodes werden dem Adressraum nicht hinzugefügt.
-
Datenpunktelemente, welche mit einer Node verknüpft werden, müssen bereits vor der Verknüpfung eine _alert_hdl Config besitzen. Ist diese nicht vorhanden können die erforderlichen Alarm Conditions nicht erstellt werden.
Ein nachträgliches Hinzufügen der Config ist nicht ausreichend. Es muss die Verknüpfung des Nodes entfernt und neu erstellt werden.
Die Attribute einer CNS View werden folgendermaßen auf den Adressraum abgebildet:
CNS View | Adressraum | Kommentar |
---|---|---|
ID-Pfad | NodeId | Der gesamte ID-Pfad der entsprechenden Node (ohne Systemname und View-Name). |
Node-ID | BrowseName | |
Nodename | DisplayName | Der Displayname wird in der Sprache angezeigt in welcher der Server gestartet wird. Um den Namen der Nodes in einer anderen der definierten Projektsprachen anzuzeigen, kann entweder der Config-Eintrag lang oder die Manageroption "-lang" verwendet werden. |
Nodename | Description | Description entspricht immer DisplayName |
UserData (OA:OPC) | AccessLevel | AccessLevel (Lesen/Schreiben) einer CNS Node wird in dessen UserData gespeichert. |
UserData (OA:OPC) | UserAccessLevel | UserAccesLevel entspricht immer AccessLevel |
Zusätzliche Informationen
Änderungen an der CNS View
Folgende Änderungen an der verwendeten CNS-View werden zur Laufzeit sofort auf den Adressraum abgebildet:
- Erstellen neuer Nodes
- Löschen von bestehenden Nodes
- Änderungen an der Node-ID
- Verknüpfen von Datenpunktelementen mit Nodes
- Löschen von Datenpunktelementverknüpfungen mit Nodes
- Änderungen an dem AccessLevel von Nodes
Wenn in WinCC OA Änderungen an Datenpunkttypen vorgenommen werden (z.B. Hinzufügen neuer Elemente oder Ändern vom Datentyp eines Elements), dessen Datenpunktelemente mit einer Node verlinkt sind, können diese nicht zur Laufzeit in den Adressraum übernommen werden. In diesem Fall muss der Server neu gestartet werden.
Trennzeichen
Beim Erstellen einer CNS-View kann auch ein beliebiges Trennzeichen definiert werden. Dieses Zeichen wird auch für den ID-Pfad verwendet. Der CNS ID-Pfad wird vom Server verwendet, um die OPC UA Node-ID zu erstellen. Hier wird das Trennzeichen jedoch durch einen Punkt "." ersetzt. Wenn eine Datenpunktelementstruktur einer Node zugewiesen wird, wird ebenfalls der Punkt verwendet, um der Node ID die einzelnen Elementnamen hinzuzufügen.
Beispiel für Abbildung von View auf Server
Das folgende Beispiel zeigt, wie eine View auf den Adressraum eines OPC UA Servers abgebildet wird.
CNS View | Datenpunktverknüpfung | AccessLevel definiert | Abgebildet auf Server | ||
---|---|---|---|---|---|
N1 | Nein | Nein | Ja | ||
N1_1 | Ja | Nein | Ja (als Struktur) | ||
N1_1_1 | Ja | Ja | Ja | ||
N1_2 | Nein | Ja | Nein | ||
N1_3 | Ja | Ja | Ja | ||
N1_3_1 | Ja | Nein | Ja | ||
N2 | Ja | Ja | Ja | ||
N2_1 | Ja | Nein | Ja (als Struktur | ||
N2_1_1 | Ja | Nein | Ja | ||
N2_1_2 | Nein | Nein | Nein |