Aufruf eines TcCOM-Objekts aus der SPS

Erstellen eines TcCOM-Wrapper-FB

In der Export-Konfiguration ist zu setzen:

TcCom.TcComWrapperFb = 'true';
TcCom.TcComWrapperFbProperties = 'true'; % optional

Instanz des TcCOM-Wrapper-Funktionsblock erzeugen

1. Erstellen Sie ein SPS-Projekt.
2. Fügen Sie die gewünschte Bibliothek unter References hinzu.
Aufruf eines TcCOM-Objekts aus der SPS 1:
Sie erhalten unter Pous/TcCOM Wrapper einen Funktionsblock, den Sie in der SPS instanziieren können. Darüber hinaus werden notwendige Datentypen im Ordner Duts angelegt.

Variante 1: Referenzieren einer statischen Modul-Instanz

Der Funktionsblock kann genutzt werden, um auf vorher im XAE, z. B. unter System > TcCOM Objects angelegte Modulinstanzen, zuzugreifen. Für diesen statischen Fall muss die Objekt-ID der entsprechenden Modulinstanz bei der Deklaration der Funktionsblock-Instanz übergeben werden.

Aufruf eines TcCOM-Objekts aus der SPS 2:
  • Die Instanz des TcCOM-Objekts und die aufrufende SPS müssen in derselben Task laufen.
  • Auf der Instanz des TcCOM-Objekts ist darauf zu achten, dass unter Parameter (Init) der Eintrag ModuleCaller auf Module steht und nicht auf CyclicTask.
  • Der benötigte Speicher für das TcCOM wird in diesem Fall aus dem non paged pool des Systems bezogen.

Deklaration

// link wrapper with a static instance 
InitStrStatic      : ST_FB_TempCtrl_TcCOM_InitStruct := (noid := 16#01010010);   // OID from object1 in System > TcCOM Objects
fbTempCtrStatic    : FB_TempCtrl_TcCOM_InitStruct(InitStrStatic);
Inputs             : ST_TempCtrl_U_T;      // data type defined in TempCtrl library
Outputs            : ST_TempCtrl_Y_T;

Ausführungs-Code

fbTempCtrStatic(stTempCtrl_U := Inputs, stTempCtrl_Y => Outputs);

Variante 2: Dynamisches Instanziieren und Referenzieren aus der SPS

Der Funktionsblock kann auch so genutzt werden, dass ein TcCOM-Objekt aus der SPS heraus erzeugt und mit dem Wrapper verknüpft wird.

Aufruf eines TcCOM-Objekts aus der SPS 3:
  • Über die TaskOid der SPS Task muss angegeben werden, in welcher Echtzeit-Task der Wrapper aufgerufen wird.
  • Der ModuleCaller muss auch hier (über die Init Struktur) auf Module eingestellt werden.
  • Der benötigte Speicher für das TcCOM wird in diesem Fall aus dem Router Memory bezogen.

Deklaration

// dynamic instance: create TcCOM from PLC
InitStrDyn          : ST_FB_TempCtrl_TcCOM_InitStruct := (
                        nTaskOid      := 16#02010030,             // take TaskOID of PlcTask
                        eModuleCaller   := E_ModuleCaller.Module );      // set module caller to "call by module"
fbTempCtrDyn        : FB_TempCtrl_TcCOM_InitStruct(InitStrDyn);
OutputsDyn          : ST_TempCtrl_Y_T;

Ausführungs-Code

fbTempCtrDyn(stTempCtrl_U := Inputs, stTempCtrl_Y => OutputsDyn);
Aufruf eines TcCOM-Objekts aus der SPS 4:

Der Quellcode zur oben gezeigten Grafik ist verfügbar in MATLAB® über das Command Window

TwinCAT.ModuleGenerator.Samples.Start("TcCOM Wrapper Function Blocks")