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.

Anmerkung:

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

Abbildung 1. CNS View

Abbildung 2. OPC UA Server