OPC UA-Server Methoden
Der WinCC OA OPC UA-Server unterstützt auch OPC UA-Methoden. Hierbei wird unter einem definierten Parent-Knoten eine Methode hinzugefügt, die von Clients aufgerufen werden kann. Die auszuführende Aktion in WinCC OA ist in Control zu definieren.
Solche Methoden können über Input-Parameter und Output-Parameter verfügen. Die unterstützten Parametertypen entsprechen jenen, von OPC UA unterstützten Datentypen (siehe Zuordnung Datentypen OPC UA <-> WinCC OA).
OPC UA-Methoden können nur bei Parent-Knoten vom Typ FolderType oder BaseObjectType angehängt werden. Sollten Methoden an Parent-Knoten mit anderem Typ angehängt werden, so wird bei der Ausführung der Fehler BadNodeIdUnknown oder BadMethodInvalid zurückgeliefert.
Funktionsweise
Die Control Library
wincc_oa_path/scripts/libs/opcuaSrv_Methods.ctl
muss
überparametriert werden, sodass die Funktion getMethodsForOpcUaSrv(int
managerNumber)
eine Liste der verfügbaren Methoden für die OPC
UA-Server Instanz zurückliefert.
Die Funktion gibt eine Liste von UaMethod
Objekten zurück. Um eine
eigene Methode zu implementieren, muss eine neue Klasse angelegt werden, die von
UaMethod ableitet.
Der OPC UA-Server lädt die Methoden beim Starten. Er muss daher immer neu gestartet werden, wenn die Library "opcuaSrv_Methods.ctl" oder die Methoden verändert wurden, damit die Änderungen in Kraft treten.
Methoden Klasse
Ein funktionierendes Beispiel kann unter wincc_oa_path/scripts/examples/libs/opcuaSrv_Methods.ctl gefunden werden. Detaillierte Code-Informationen können Sie direkt der Datei wincc_oa_path/scripts/libs/opcuaSrv_Methods.ctl entnehmen.
Konstruktor
Die von UaMethod abgeleitete Klasse muss einen Konstruktor enthalten, in dem die Attribute der Klasse definiert werden müssen. Dadurch wird unter Anderem definiert, wo die Funktion im OPC UA Adressraum angehängt werden soll und welche Eingangs- bzw. Ausgabeparameter benötigt werden.
Execute
Funktion
Zudem muss die execute
-Funktion der Basisklasse überladen
werden.
Diese wird aufgerufen, wenn die OPC UA-Methode ausgeführt wird. Die Funktion erhält die Werte für die zuvor definierten Eingangsparameter als Liste und eine Liste der Ausgangsparameter als Referenzwert.
Beim Ausführen muss die Liste der Ausgangsparameter entsprechend mit Werten befüllt und ein OPC UA Status Code zurückgegeben werden, der dem Rückgabewert der Methode entspricht.
Die Werte der Output-Parameter müssen den im Konstruktor zugeordneten Datentypen entsprechen. Es müssen auch immer genauso viele Output-Argumente zurückgegeben werden, wie im Konstruktor definiert wurden, ansonsten schlägt der Methodenaufruf mit BadInternalError fehl.
Fehleranalyse
Um mögliche Fehlerquellen zu entdecken, kann das Debug-Flag -dbg 27
bzw. -dbg DRV_USR3
verwendet werden. Es liefert beim Managerstart
Detailinformationen darüber, welche Methoden geladen wurden. Außerdem werden
zusätzliche Informationen beim Ausführen von OPC UA-Methoden ausgegeben.