ADS Remote Procedure Call (RPC)
Der Block ADS RPC kann verwendet werden, um TwinCAT 3 Methoden aufzurufen. Die Methoden müssen dafür entsprechend deklariert werden und werden bei einem Aufruf in der TwinCAT Runtime ausgeführt. Nach der Ausführung werden die Rückgabewerte der Funktion und/oder Funktionsparameter an LabVIEW™ zurückgegeben.
| |
Zugriff auf die Steuerung Die Methoden werden in der Runtime ausgeführt. Bei Verwendung der Echtzeit Runtime muss die Zykluszeit ausreichend gewählt werden. |

Eingang/Ausgang | Bedeutung |
|---|---|
Handle | Handle auf den ADS-Client |
Method | Beschreibt eine ADS-Methode bestehend aus AMS-Adresse, Namen des Funktionsbausteins und dessen Methode:
z. B: 127.0.0.1.1.1:851::MAIN.fbTest#Method1 |
In or In/Out Params | LabVIEW™ Variant-Array mit allen Parametern der Methode, die mit dem Attribut TcRpcDirection := 'in' oder TcRpcDirection := 'inout' versehen sind. |
Out or In/Out Params | LabVIEW™ Variant-Array mit allen Paramtern dern Methode, die mit dem Attribut TcRpcDirection := ‘out’ oder TcRpcDirection := 'inout' versehen sind. |
Return Value | LabVIEW™ Variant als Rückgabewert von der Methode, falls vorhanden. Bleibt leer für Methoden ohne Rückgabewert (void). |
In TwinCAT 3 gibt es viele Möglichkeiten, eine Methode zu instanziieren/definieren, wie zum Beispiel in Funktionsblöcken innerhalb der SPS, in einem Interface oder in einem C++-Modul.
Im Folgenden betrachten wir den Aufruf einer TwinCAT 3 SPS-Methode AddNumbers, die zwei positive Ganzzahlen addiert und das Ergebnis in einen Ausgabeparameter schreibt. Falls negative Zahlen übergeben werden, gibt die Funktion einen HRESULT-Fehler zurück.
Eine mögliche Implementierung der Methode unter einem Funktionsblock kann so aussehen:
{attribute 'TcRpcEnable'}
METHOD AddNumbers : HRESULT
VAR_INPUT
{attribute 'TcRpcDirection' := 'in'}
Param1: INT;
{attribute 'TcRpcDirection' := 'in'}
Param2: INT;
END_VAR
VAR_OUTPUT
{attribute 'TcRpcDirection' := 'out'}
Result: INT;
END_VAR
IF Param1 < 0 OR Param2 < 0 THEN
AddNumbers := E_INVALIDARG; // HRESULT error code
Result := 0;
ELSE
Result := Param1 + Param2;
AddNumbers := S_OK; // Success
END_IFEine mögliche Implementierung als C/C++ Funktionssignatur kann wie folgt aussehen:
HRESULT AddNumbers(int16 Param1, int16 Param2, int16& Result);In diesem Fall erwartet der ADS RPC Block exakt zwei Parameter vom Typ int16, da ausschließlich Param1 und Param2 mit dem Attribut 'TcRpcDirection=in' versehen wurden.
Methoden-Auswahl im Symbol Interface
Methoden, die in Funktionsblöcken (FB) oder Interfaces definiert sind, werden nicht direkt im Symbol Interface angezeigt. Nur der Funktionsblock bzw. das Interface ist sichtbar (z. B. FB_Test).
Falls der Funktionsblock oder das Interface Methoden enthält, können diese mit Hilfe des TwinCAT Symbol Interface Configurators ausgewählt werden:
- Symbol verschieben: Den Funktionsblock oder das Interface in das Read-/Write Fenster ziehen.
- Pop-up-Dialog: Ein Dialogfenster erscheint mit der Meldung: "Dieses Symbol enthält öffentliche Methoden. Möchten Sie diese auswählen?"
- Bestätigung: Bei Ja öffnet sich ein zweites Fenster zur Methodenauswahl.
- Auswahl treffen: Die gewünschten Methoden markieren und mit OK bestätigen.
Die ausgewählten Methoden erscheinen nun im Read-Fenster.
Hinweis | |
Verwendung von String-Parametern Die direkte Verwendung von String-Parametern kann zu Initialisierungsfehlern in TwinCAT 3 C++-Modulen führen. Als Best Practice sollten Strings in strukturierte Datentypen, z. B Structs, gekapselt werden. |
