Implementierung des Beispiels

Die SPS-Seite wird von TcCOM Sample 01 übernommen. Der dort als TcCOM-Modul registrierte Funktionsbaustein bietet die ihm zugeteilte Objekt-ID als Ausgangsvariable an.
Aufgabe des C++ Moduls ist es, das angebotene Interface dieses Funktionsbausteins zugreifbar zu machen.

Es wird von einem C++ Projekt mit einem Cycle IO-Modul ausgegangen.
1. Legen Sie im TMC Editor einen Interface-Pointer mit dem Namen Calculation vom Typ I_Calculation an. Über diesen erfolgt später der Zugriff.
Implementierung des Beispiels 1:
2. Die Data Area Inputs wurde mit dem Typ Input-Destination vom Modul-Wizard bereits erstellt. Hier legen Sie im TMC Editor einen Eingang mit dem Namen oidProvider vom Typ OTCID an. Über diesen wird später die Objekt-ID aus der SPS verknüpft.Implementierung des Beispiels 2:
3. Alle weiteren Symbole sind für das Beispiel nicht relevant und können gelöscht werden.
Der TMC-Code-Generator bereitet den Code entsprechend vor:
In dem Header des Moduls werden einige Variablen angelegt, um die Methoden-Aufrufe später durchzuführen.
Implementierung des Beispiels 3:
Im eigentlichen Code des Moduls wird im CycleUpdate() der Interface-Pointer anhand der von der SPS übermittelten Objekt-ID gesetzt. Es ist wichtig, dass dieses im CycleUpdate() und damit im Echtzeitkontext geschieht, da die SPS erst den Baustein bereitstellen muss.
Ist dies einmalig erfolgt, können die Methoden aufgerufen werden.
Implementierung des Beispiels 4:
Zusätzlich muss, wie oben zu sehen ist, der Interface-Pointer beim Herunterfahren aufgeräumt werden. Dies geschieht in der SetObjStateOS Methode.
4. Bauen Sie das C++ Projekt nun einmal.
5. Legen Sie eine Instanz des Moduls an.
6. Verbinden Sie den Eingang des C++ Moduls mit dem Ausgang der SPS.
Implementierung des Beispiels 5:
Das Projekt kann gestartet werden. Wenn die SPS läuft, wird die OID durch das Mapping an die C++ Instanz bekannt gemacht. Sobald dies erfolgt ist, können die Methoden aufgerufen werden.