Beispiel11a: Modulkommunikation: C-Modul ruft eine Methode eines anderen C-Moduls auf

Dieser Artikel beschreibt, wie TC3 C++ Module über Methodenaufrufe kommunizieren können. Die Methode schützt die Daten durch eine Critical Section, folglich kann der Zugriff von verschiedenen Kontexten / Tasks initiiert werden.

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 Beispiel11a: Modulkommunikation: C-Modul ruft eine Methode eines anderen C-Moduls auf 1:.
Das Beispiel ist einsatzbereit.

Beschreibung

Das Projekt enthält drei Module:

Die Read/Write Instanzen werden für den Zugriff auf die DataProvider Instanz konfiguriert, die im Menü Interface Pointer auf der Instanzkonfiguration zu sehen ist.
Dort kann man auch den Kontext (Task) konfigurieren, in dem die Instanzen auszuführen sind. Bei diesem Beispiel werden zwei Tasks verwendet - TaskRead und TaskWrite.
Die DataWriteCounterModul- Parameter von CModuleDataWrite und auch DataReadCounterModulo (CModuleDataRead) ermöglichen die Bestimmung des Moments, an dem die Modulinstanzen den Zugriff initiieren.

CriticalSections sind im SDK in der TcRtInterfaces.h beschrieben und damit für den Echtzeit-Kontext vorgesehen.