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 .
- Das Beispiel ist einsatzbereit.
Beschreibung
Der Download enthält 2 Projekte:
- Das TwinCAT Projekt, welches ein C++ Modul beinhaltet. Dieses bietet einige Methoden an, die per ADS aufgerufen werden können
- Gleichzeitig ist ein Visual C++ Projekt enthalten, welches als Client die Methoden aus dem Usermode aufruft.
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:
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.
Falls die Typinformationen der Methoden auf dem Zielsystem verfügbar sein sollen, kann die TMI Datei des Moduls auf das Zielsystem übertragen werden.
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: