OPC UA Client - Methoden
Der WinCC OA OPC UA-Client unterstützt die Verwendung von OPC UA-Methoden. Hierfür kann mittels Datenpunktelementen eine ein- und ausgehende Kommunikation mit OPC UA-Server Methoden eingerichtet werden.
Funktionsweise
Die Methoden-Kommunikation erfolgt mittels der Peripherieadresse eines Datenpunktelements. Hierbei werden die Daten mittels JSON-String übermittelt.
Methodenaufruf

Bei einem Methodenaufruf wird ein konsistenter Datensatz mit Eingabeparametern an den Server gesendet.
Auch die Antwort besteht aus einem konsistenten Datensatz.
Workflow für Methodenaufrufe

Um eine Standardschnittstelle für alle Methoden zu implementieren, werden die Eingabeparameter als JSON-String an den Client übergeben.
Der Client sendet die Rückgabewerte auch in einem JSON-String.
Datenpunktelemente - Eingang / Ausgang
Für die Kommunikation zwischen Client und Server mittels OPC UA-Methoden ist es erforderlich zwei Datenpunktelemente dahingehend zu konfigurieren, dass eines der DPEs für das Versenden des Methoden-Aufrufs und ein DPE für den Empfang der Rückgabewerte der Methode vorgesehen werden. Die jeweilige Adress-Konfiguration muss hierbei ident sein, und darf sich nur bei der "Richtung" unterscheiden.
Durch Setzen eines entsprechenden JSON-Strings auf die Ausgangsadresse wird die Server-Methode aufgerufen und der Rückgabewert und zusätzliche Ausgaben dieser Methode werden wiederum durch das Eingangs-DPE erhalten.
Um eine OPC UA-Adresskonfiguration für OPC UA-Methoden zu konfigurieren, muss die entsprechende Checkbox innerhalb des Konfigurationspanels gewählt werden, siehe dazu die Beispiele unterhalb.
Ebenfalls muss mittels der Schaltfläche "Get Item ID" die entsprechende Server-Methode ausgewählt werden.
OPC UA-Methoden Ausgangsadresse/Eingangsadresse
JSON-Struktur
Die Struktur des JSON strings unterscheidet sich je nach Eingangs- oder Ausgangsnachricht.
JSON-String Ausgangsadresse
- input 1..n - Die Liste an Parametern die an die Server-Methode übergeben werden.
Diese sind im Format
"<id>_<datatype>":<Value>
aufgebaut, wobei die id mit 1 beginnen und der Datentyp als Integer-Wert angegeben werden muss, z.B."1_757":1,"2_757":51
- userdata - Ein freies Feld für die Übertragung von benutzerspezifischen
Informationen. Dieses Element wird innerhalb der Antwort des Servers erneut
zurückgeliefert und kann als RequestID verwendt werden, z.B.:
"userdata":29689
- timeout - Maximale Zeit (in Millisekunden) die auf eine Rückmeldung des Servers
an die Eingangsadresse gewartet werden soll (optional), z.B.:
"timeout":100
Der vollständige JSON-String der Beispiele oberhalb würde nun auf dem Wert des DPEs wie folgt aussehen:
{"1_757":1,"2_757":51,"userdata":29689}
.

JSON-String Eingangsadresse
- result - Das "result" liefert den OPC UA-StatusCode zurück. Dieser wird im
Format
"0_<datatype>":"<value>"
zurückgeliefert, z.B."0_762":"0-Good"
- output 1..n - Die Ausgabewerte der Methode werden werden als einzelne Elemente
des JSON-Strings übertragen und haben das Format
"<id>_<datatype>":<Value>
. Die ID entspricht der Stelle des Rückgabewerts und der Datentyp wird auch hier als Integer-Wert angegeben, z.B.
."1_762":"Slept for 299 mili seconds."
- userdata - Liefert die Informationen des "userdata"-Elementes der
Ausgangsadresse zurück, z.B.
"userdata":29689
Der vollständige JSON-String innerhalb des Eingangs-DPEs, anhand der Beispiele oberhalb, sieht wie folgt aus:
{"0_762":"0-Good","1_762":"Slept for 299 milliseconds.","userdata":29689}
Beispiel
Ein vollständiges Beispiel für die Verwendung von OPC UA-Methoden finden Sie im Kapitel OPC UA-Methoden Beispiel.
Hinweise
Bitte beachten Sie folgende Informationen:
- Nachfolgende Typen werden nicht als Methoden-Parameter unterstützt, da diese,
durch herkömmliche JSON Datentypen und Variablen-Konvertierungen, nicht
behandelt werden können:
- int64
- uint64
- date time
- guid
- byte string
- xml element
- node id
- lokalisierte Texte