Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul

Dieser Artikel beschreibt die Erstellung eines TwinCAT 3 C++ Moduls, das eine Schnittstelle mit einigen Methoden zur Verfügung stellt, die von einer SPS, aber auch von anderen C++ Modulen aufgerufen werden kann.

Die Idee besteht darin, eine einfache Zustandsmaschine in C++ zu erstellen, die von anderen Modulen von außen gestartet und gestoppt werden kann, aber auch das Setzen oder Lesen des bestimmten Zustands der C++ Zustandsmaschine ermöglicht.

Zwei weitere Artikel nutzen das Ergebnis dieser C++ Zustandsmaschine.

Dieser Artikel beschreibt:

Schritt 1: TwinCAT 3 Projekt erstellen

Als erstes legen Sie wie gewohnt ein TwinCAT Projekt an.

Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 1:

Schritt 2: Erstellen Sie einen neuen TwinCAT 3 C++ Treiber

1. Klicken Sie mit der rechten Maustaste auf C++ und Add New Item...
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 2:
2. Wählen Sie die Vorlage TwinCAT Driver Project und geben einen Treibernamen ein, „StateMachineDrv“ in diesem Beispiel. Klicken Sie auf Add um fortzufahren.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 3:
3. Wählen Sie eine für diesen neuen Treiber zu verwendende Vorlage. In diesem Beispiel ist „TwinCAT Module Class with Cyclic IO“ gewählt, da der interne Zähler der Zustandsmaschine verfügbar ist, um den IO zugeordnet zu werden.
4. Klicken Sie auf Add um fortzufahren.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 4:
5. Geben Sie einen Namen für die neue Klasse im C++ Treiber „StateMachineDrv“ an.
Aus dem angegebenen „Short Name“ ergeben sich die Namen der Modul-Klasse sowie der Header- und Source-Dateien.
6. Klicken Sie auf OK um fortzufahren.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 5:
Daraufhin erstellt der Assistent ein C++ Projekt, das fehlerfrei kompiliert werden kann.

Schritt 3: Ein neues TwinCAT 3 Interface anlegen

Hinweis

Namenskonflikt

Wenn der Treiber im Verbund mit einem SPS-Modul verwendet wird, kann es zu Namenskollisionen kommen.
Verwenden Sie keine der SPS vorbehaltenen Schlüsselwörter als Namen.

1. Starten Sie den TMC Editor mittels Doppelklick auf StateMachineDrv.tmc.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 6:
2. Wählen Sie innerhalb des TMC Editors Data Types.
3. Fügen Sie eine neue Schnittstelle hinzu durch Klick auf Adds a new interface Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 7:.
Daraufhin wird ein neuer Eintrag IInterface1 aufgeführt.
4. Öffnen Sie IInterface1 mit Doppel-Klick, um die Eigenschaften des Interfaces zu verändern.
5. Geben Sie einen aussagekräftigeren Namen ein - in diesem Beispiel „IStateMachine“.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 8:
Das Interface ist angelegt.

Schritt 4: Fügen Sie der Schnittstelle Methoden hinzu

1. Klicken Sie auf Edit Methods..., um eine Liste der Methoden dieser Schnittstelle zu erhalten:
Klicken Sie auf die + Schaltfläche, um eine neue standardmäßige Methode Method1 zu erzeugen.
2. Ersetzen Sie den Standardnamen Method1 durch aussagekräftigen Namen, in diesem Beispiel „Start“.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 9:
3. Fügen Sie eine zweite Methode hinzu und nennen sie „Stop“.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 10:
4. Fügen Sie eine dritte Methode hinzu und nennen sie „SetState“.
5. Anschließend können Sie mit einem Klick auf Add a new parameter Parameter hinzufügen bzw. Parameter der Methode SetState bearbeiten.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 11:
Standardmäßig wird der neue Parameter Parameter1 als Normal Type INT erzeugt.
6. Klicken Sie auf den Namen „Parameter1“, gehen Sie in das Bearbeitungsfeld und ändern Sie den Namen in „State“.
7. Nachdem Start, Stop und SetState definiert sind, definieren Sie eine weitere Methode.
8. Benennen Sie sie in „GetState“ um.
9. Fügen Sie einen Parameter hinzu und nennen ihn „pState“ (ist so konzipiert, um später ein Zeiger zu werden).
10. Ändern Sie Normal Type zu Is Pointer.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 12:
Daraufhin erhalten Sie eine Liste aller Methoden. Mit den Schaltflächen Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 13: können Sie die Reihenfolge der Methoden verändern.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 14:

Schritt 5: Neue Schnittstelle zum Modul hinzufügen

1. Wählen Sie das Modul, das mit der neuen Schnittstelle erweitert werden soll - in diesem Falle wählen Sie das Ziel Modules->CStateMachineModule.
2. Erweitern Sie die Liste der implementierten Schnittstellen mit Klick auf die Schaltfläche + mit Add a new interface to the module um eine neue Schnittstelle.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 15:
3. Alle verfügbaren Schnittstellen werden aufgeführt - wählen Sie die neue Schnittstelle IStateMachine und beenden Sie mit OK.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 16:
Die neue Schnittstelle IStateMachine ist Teil der Modulbeschreibung.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 17:

Schritt 6: Den TwinCAT TMC Code Generator starten

1. Um den C/C++ Code anhand dieses Moduls zu generieren, klicken Sie mit der rechten Maustaste in das C/C++ Projekt und wählen dann den TwinCAT TMC Code Generator.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 18:
Nun enthält das Modul StateMachineModule.cpp die neuen Schnittstellen
CModule1: Start()
CModule1: Stop()
CModule1: SetState(SHORT State)
CModule1: GetState(SHORT* pState).

Schritt 7: Implementierung der Membervariablen und des Konstruktors

Fügen Sie die Membervariablen in die Header-Datei StateMachineModule.h hinzu.

Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 19:

Schritt 8: Methoden implementieren

Implementieren Sie den Code für die vier Methoden in der StateMachineModule.cpp:

Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 20:

Schritt 9: Zyklische Aktualisierung implementieren

Die C++ Modulinstanz wird zyklisch aufgerufen - selbst dann, wenn die interne Zustandsmaschine sich im Stop-Modus befindet.

Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 21:

.

Schritt 10: Code kompilieren

1. Nach der Implementierung aller Schnittstellen kompilieren Sie den Code, indem Sie einen Rechtsklick auf die Zustandsmaschine machen und Build wählen.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 22:
2. Wiederholen Sie die Kompilierung und optimieren Sie Ihren Code so lange, bis das Ergebnis folgendermaßen aussieht:
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 23:

Schritt 11: Eine Instanz des C++ Moduls erstellen

1. Machen Sie einen Rechtsklick auf das C++ Projekt und wählen Sie Add New Item..., um eine neue Modulinstanz zu erstellen.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 24:
2. Wählen Sie das Modul aus, das als neue Instanz hinzugefügt werden soll - in diesem Fall CStateMachineModule.
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 25:
3. Ordnen Sie die Instanz einer Task zu:
Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 26:

Schritt 12: Fertig - Ergebnis überprüfen

1. Navigieren Sie zum neuen, im Solution-Baum aufgeführten, Modul und wählen die Registerkarte Interfaces auf der rechten Seite.
Die neue Schnittstelle IStateMachine ist aufgelistet. Methoden zur Verfügung stellendes TwinCAT 3 C++ Modul 27: