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 .
- Das Beispiel ist einsatzbereit.
Beschreibung
Das Projekt enthält drei Module:
- Die Instanz der CModuleDataProvider Klasse hostet die Daten und schützt vor dem Zugriff mit Hilfe der Methoden Retrieve und Store durch eine Critical Section.
- Die Instanz der Modulklasse CModuleDataRead liest die Daten aus dem DataProvider über den Aufruf der Methode Retrieve.
- Die Instanz der Modulklasse CModuleDataWrite schreibt die Daten aus dem DataProvider über den Aufruf der Store Methode.
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.