TwinCAT Module Klassenassistent

TwinCAT 3 bietet verschiedene Klassenvorlagen, welche verwendet werden können um TcCOM Objektklassen anzulegen:


TwinCAT Module Klassenassistent 1:

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.

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.