Beispiel08: Anbieten von ADS-RPC

Dieser Artikel beschreibt die Implementierung von Methoden, welche per ADS über die Task aufrufbar sind.

Download

Hier erhalten Sie den Quellcode für dieses Beispiel.

1. Entpacken Sie die heruntergeladene ZIP-Datei.
2. Öffnen Sie mittels eines Visual Studios, in dem TwinCAT installiert ist, das Projekt über Open Project ….
3. Konfigurieren Sie das Signieren für dieses Projekt, indem Sie auf der Seite unter Rechtsklick auf dem Projekt->Properties->Tc Sign die TwinCAT Signierung anschalten und Ihr Zertifikat und ggf. Passwort konfigurieren.
Weitere Informationen zur Signierung der C++ Projekte erhalten Sie hier.
4. Wählen Sie Ihr Zielsystem aus.
5. Bauen Sie das Beispiel (z. B. Build->Build Solution).
6. Aktivieren Sie die Konfiguration mit einem Klick auf Beispiel08: Anbieten von ADS-RPC 1:.
Das Beispiel ist einsatzbereit.

Beschreibung

Der Download enthält 2 Projekte:

Es werden vier Methoden mit unterschiedlichen Signaturen bereitgestellt und aufgerufen. Diese sind in 2 Interfaces organisiert, so dass verdeutlicht wird, wie die ADS Symbolnamen der Methoden zusammengesetzt sind.

Das Beispiel verstehen

Das Beispiel besteht aus dem TwinCAT C++ Modul, welches die RPC Methoden anbietet und einem C++ Beispielprogramm, welches diese aufruft.

TwinCAT C++ Modul

Das TwinCAT C++ Project beinhaltet ein Modul und eine Instanz des Moduls mit Namen „foobar“.

RPC Methoden sind normale Methoden, welche durch Interfaces im TMC Editor beschrieben sind und zusätzlich durch eine Checkbox RPC enable freigegeben werden. In der Beschreibung des TMC Editors sind die Optionen genauer beschrieben.

Im hier vorliegenden Modul werden zwei Interfaces beschrieben und implementiert, wie im TMC Editor gesehen werden kann:

Beispiel08: Anbieten von ADS-RPC 2:
Die insgesamt vier Methoden haben unterschiedliche Signaturen von Aufruf und Rückgabewerten.

Ihr ADS-Symbolname wird gebildet nach dem Schema: ModulInstance.Interface#Methodenname
Wichtig im implementierenden Modul ist insbesondere die ContextId, welche den Kontext für die Ausführung festlegt.

Wie im C++ Code selber zu sehen, werden die Methoden durch den Code Generator generiert und implementiert wie normale Methoden eines TcCOM Moduls.
Beispiel08: Anbieten von ADS-RPC 3:

Falls die Typinformationen der Methoden auf dem Zielsystem verfügbar sein sollen, kann die TMI Datei des Moduls auf das Zielsystem übertragen werden.

Beispiel08: Anbieten von ADS-RPC 4:

Der TwinCAT OPC-UA Server bietet die Möglichkeit, diese Methoden auch per OPC-UA aufzurufen – hierfür werden die TMI Dateien auf dem Zielsystem benötigt.

C++ Beispiel Client

Der C++ Client wird direkt nach Starten die Handles holen und dann beliebig häufig die Methoden aufrufen, wobei zwischen den Durchgängen ein [RETURN] erwartet wird. Jede andere Taste führt zur Freigabe der Handles und Beenden des Programms.
Die Ausgaben verdeutlichen die Aufrufe:

Beispiel08: Anbieten von ADS-RPC 5: