OPC DA Server CNS
In diesem Kapitel wird die OPC DA CNS Funktionalität des WinCC OA OPC DA 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 auf dem internen Datenpunktelement Config.CNSView vom Typ _OPCPvssServer eingetragen werden. Jedem Server kann immer nur eine View zugewiesen werden.
Der OPC DA Server überprüft das Datenpunktelement Config.CNSView nur beim Start. Soll daher eine andere View auf den Adressraum abgebildet werden, muss der Server neu gestartet werden nachdem die neue View-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 dem konfigurierten Root-Knoten der über den Config-Eintrag rootNode definiert werden kann. Die Nodes der CNS-View werden im Adressraum unterhalb des definierten Root-Knotens angezeigt.
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 |
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 als LEAF-Item repräsentiert und zeigt den aktuellen Wert des zugewiesenen Datenpunktelements.
Nodes ohne Datenpunktelementzuweisung werden im Adressraum als BRANCH-Item 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 BRANCH-Item auf den Adressraum abgebildet, wenn für eine der Child-Notes der AccessLevel definiert ist.
Die Struktur der Objekte im Adressraum entspricht der verlinkten Datenpunktelementstruktur. Wird einer Node eine Datenpunktelementstruktur zugewiesen, hängt der OPC DA Server alle Elemente der verlinkten Struktur an die entsprechende Node.
Unter einem LEAF-Element, d.h. einer Node mit zugewiesenem Datenpunktelement, können im Adressraum keine weiteren Nodes abgebildet werden. Befinden sich in der CNS-View unter einem LEAF-Element noch weitere Nodes, werden diese daher nicht in den Adressraum übernommen und es wird eine entsprechende Fehlermeldung im Logviewer angezeigt.
Anmerkung: Die Datenpunktelementnamen einer verlinkten Struktur werden für die OPC DA Item-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.
Die Attribute einer CNS View werden folgendermaßen auf den Adressraum abgebildet:
CNS View | Adressraum | Kommentar |
---|---|---|
ID-Pfad | ItemID | Der gesamte ID-Pfad der entsprechenden Node (ohne Systemname und View-Name). |
UserData (OA:OPC) | AccessLevel | AccessLevel (Lesen/Schreiben) einer CNS Node wird in dessen UserData gespeichert. |
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.
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 BRANCH) | ||
N1_1_1 | Ja | Ja | Ja | ||
N1_2 | Nein | Ja | Nein | ||
N1_3 | Ja | Ja | Ja | ||
N1_3_1 | Ja | Nein | Nein (N1_3 kann als LEAF-Element keine Subknoten haben) |