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).

Anmerkung:

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.

Anmerkung:

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

Anmerkung:

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.

Anmerkung:

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.