TwinCAT Module Klassenassistent
TwinCAT 3 bietet verschiedene Klassenvorlagen, welche verwendet werden können um TcCOM Objektklassen anzulegen:
- TwinCAT Module Class
- TwinCAT Module Class mit ADS Port
- TwinCAT Module Class mit zyklischem Aufrufer
- TwinCAT Module Class mit zyklischem Ein-/Ausgang
- TwinCAT Module Class mit Datenzeiger
- TwinCAT Module Class für Echtzeitkontext
- TwinCAT Module Class mit Online Changeable Fähigkeit
TwinCAT Modules Class
Erstellt eine neue TwinCAT-Modulklasse.
Diese Vorlage erzeugt ein grundlegendes Kernmodul. Es verfügt weder über einen zyklischen Aufrufer, noch über einen Datenbereich, ist aber ein guter Ausgangspunkt für die Implementierung von abrufbaren Funktionen auf Anfrage eines Aufrufers.
Zum Beispiel für die Erstellung einer C++ Methode, die von einem SPS-Modul oder einem anderen C++ Modul aufgerufen wird.
Siehe Beispiel11
TwinCAT Modules Class mit ADS Port
Diese Vorlage bietet sowohl das C++ Modul als auch die Funktionsweise eines ADS Servers und ADS Clients.
- ADS Server:
Kann als einzelne Instanz dieser Vorlage des C++ Moduls laufen und kann mit einer spezifischen ADS Port-Nummer (z.B. 25023) vorkonfiguriert werden.
Ermöglicht mehrere Instanzen dieser Vorlage, wobei jedem C++ Modul seine eigene eindeutige ADS Port-Nummer von TwinCAT 3 zugewiesen wird (z.B. 25023, 25024, 25025, ...).
Die ADS-Meldungen können dank der Implementierung des C++ Moduls analysiert und verarbeitet werden.
Das ADS Handling zwecks Zugriff auf Ein-/Ausgangsdatenbereiche muss nicht über ein eigenes ADS Message Handling implementiert werden. - ADS Client:
Diese Vorlage stellt Beispielcodes zur Verfügung, um einen ADS-Aufruf mittels Versand einer ADS-Meldung an einen ADS-Partner zu initiieren.
Da die Module sich wie ADS Client oder ADS Server verhalten, die untereinander über ADS-Nachrichten kommunizieren, können die beiden Module (Aufrufer=Client und der Aufgerufene=Server) im gleichen oder unterschiedlichen Echtzeitkontexten auf dem gleichen oder unterschiedlichen CPU-Kernen laufen.
Weil ADS netzübergreifend arbeiten kann, können die beiden Module auch auf verschiedenen im Netzwerk befindlichen Maschinen laufen.
Siehe Beispiel03, ADS-Kommunikation
TwinCAT Modules Class mit zyklischem Aufrufer
Ermöglicht den zyklischen Aufruf eines C++ Programms, das aber über keinen Zugang zur Außenwelt verfügt.
Wird nicht häufig verwendet, eine Modulklasse mit zyklischem Aufrufer und zyklischem I/O wird bevorzugt.
TwinCAT Modules Class mit zyklischem Ein-/Ausgang
Erzeugt eine neue TwinCAT-Modulklasse, die die zyklisch aufrufende Schnittstelle implementiert und einen Ein- und Ausgangsdatenbereich aufweist.
Die Ein- und Ausgangsdatenbereiche können mit anderen Ein-/Ausgangsabbildern oder mit physikalischen E/A-Klemmen verbunden werden.
Wichtig zu verstehen:
Das C++ Modul verfügt über seinen eigenen logischen Ein-/Ausgangsdatenspeicherbereich. Die Datenbereiche des Moduls können mit dem Systemmanager konfiguriert werden.
Wenn das Modul mit einer zyklischen Schnittstelle gemappt wird, bestehen Kopien der Ein- und Ausgangsdatenbereiche in beiden Modulen (dem Aufrufer und dem Aufgerufenen) und auf diese Weise kann das Modul unter einem anderen Echtzeitkontext und selbst auf einem anderen CPU-Kern in Bezug auf ein anderes Modul laufen.
TwinCAT wird die Daten zwischen den Modulen auf ununterbrochene Weise kopieren.
Siehe Schnellstart, Beispiel01.
TwinCAT Modules Class mit Datenzeiger
Genau wie das TwinCAT Module Class with Cyclic IO erzeugt auch diese Vorlage eine neue TwinCAT-Modulklasse die eine aufrufende Schnittstelle mit einem Ein- und Ausgangsdatenbereich für die Verknüpfung mit anderen Logik-Ein-/Ausgangsabbildern oder mit physikalischen E/A-Klemmen implementiert.
Darüber hinaus bietet diese Vorlage Datenzeiger, mit Hilfe derer auf Datenbereiche von anderen Modulen über Zeiger zugegriffen werden kann.
Wichtig zu verstehen:
Anders als im Falle des zyklischen I/O-Datenbereichs, wo die Daten zwischen Modulen zyklisch kopiert werden, besteht im Falle der Verwendung von C++-Datenzeigern nur ein einziger Datenbereich und dieser gehört dem Zielmodul. Beim Schreiben von einem anderen C++ Modul über den Datenzeigermechanismus auf das Zielmodul wird sich das sofort auf den Datenbereich des Zielmoduls auswirken. (Nicht notwendigerweise gegen Ende eines Zyklus).
Wenn das Modul während der Laufzeit ausgeführt wird, findet der Aufruf sofort statt, wodurch der ursprüngliche Prozess blockiert wird (es ist ein Zeiger...). Aufgrund dessen müssen beide Module (der Aufrufer und der Aufgerufene) sich im selben Echtzeitkontext und auf demselben CPU-Kern befinden.
Der Datenzeiger wird im TwinCAT Module Instance Configurator konfiguriert.
Siehe Beispiel10
TwinCAT Modules Class für Echtzeitkontext
Diese Vorlage erstellt ein Modul, das im Echtzeit-Kontext instanziiert werden kann.
Wie hier beschrieben, verfügen die übrigen Module über Transitionen für das Hochfahren und Runterfahren in Nicht-Echtzeitkontext. Manchmal müssen Module bei bereits laufender Echtzeit gestartet werden, sodass alle Transitionen im Echtzeit-Kontext ausgeführt werden. Dies ist eine entsprechende Vorlage.
Die Module mit dieser (modifizierten) Statemachine können auch verwendet werden, um direkt beim Starten von TC instanziiert zu werden. In diesem Fall werden die Transitionen wie bei einem normalen Modul ausgeführt.
Das Beispiel TcCOM 03 zeigt die Verwendung eines solchen Moduls.
TwinCAT Module Class mit Online Change-Fähigkeit
Diese Möglichkeit kann nur verwendet werden, wenn das Modul zu einem Versioned C++ Project hinzugefügt wird.
Diese Vorlage erstellt ein Modul, das Online-Change fähig ist. Durch die Versionierung des Projektes werden diese Module zur Laufzeit austauschbar – es ist also möglich, die Module von unterschiedlichen Versionsständen zur Laufzeit auszutauschen.
Das Verfahren für diesen Online-Change ist hier beschrieben.
Das Modul selber entspricht ansonsten einem Modul mit zyklischem Ein-/Ausgang.