Attribut 'TcContextName'

Über das Pragma können Sie definieren, von welchem Task eine allokierte Variable aktualisiert werden soll.

Syntax: {attribute 'TcContextName' := '<TaskName>'}

Der in einfache Hochkommata eingeschlossene Platzhalter <TaskName> muss durch den Namen des Tasks ersetzt werden.

Einfügeort:

Beispiel 1:

Das Pragma wird jeweils in der Zeile oberhalb der Variablendeklaration eingefügt. Es wirkt somit nur auf die jeweils folgende Deklarationszeile.
Die Variable bVar1 wird daher von dem Task PlcTaskA aktualisiert und die Variable bVar2 von dem Task PlcTaskB.

VAR_GLOBAL
    {attribute 'TcContextName':='PlcTaskA'}
    bVar1  AT%Q* : BOOL;
    {attribute 'TcContextName':='PlcTaskB'}
    bVar2  AT%Q* : BOOL;
END_VAR

Beispiel 2:

Das Pragma wird in der GVL in der Zeile oberhalb von VAR_GLOBAL sowie in der Zeile oberhalb einer Variablendeklaration eingefügt.
Aufgrund der Anwendung des Attributs oberhalb ihrer Deklarationszeile wird die Variable bVar3 von dem Task PlcTaskB aktualisiert. Aufgrund der Verwendung oberhalb des ersten VAR_GLOBAL werden aller anderen Variablen (alle bis auf bVar3) von dem Task PlcTaskA aktualisiert.

{attribute 'TcContextName':='PlcTaskA'}
VAR_GLOBAL
    bVar1  AT%Q* : BOOL;     // => PlcTaskA
    bVar2  AT%Q* : BOOL;     // => PlcTaskA
 
    {attribute 'TcContextName':='PlcTaskB'}
    bVar3  AT%Q* : BOOL;     // => PlcTaskB
 
    bVar4  AT%Q* : BOOL;     // => PlcTaskA
END_VAR

Beispiel 3:

Das Pragma wird in der GVL in der Zeile oberhalb des ersten VAR_GLOBAL sowie in der Zeile oberhalb des zweiten VAR_GLOBAL eingefügt.
Beachten Sie, dass diese Verwendung nicht den Zweck erfüllt, um die Variablen bVar4-bVar6 von dem Task PlcTaskB aktualisieren zu lassen.

Hintergrund: Das Einfügen des Pragmas oberhalb von VAR_GLOBAL ist nur oberhalb des ersten VAR_GLOBAL einer GVL zielführend.

Das dargestellte Beispiel führt zu folgender Zuordnung: Das Pragma oberhalb des zweiten VAR_GLOBAL wird als Pragma oberhalb der Deklarationszeile von der Variablen bVar4 interpretiert, sodass die Variable bVar4 von dem Task PlcTaskB aktualisiert wird. Aufgrund der Verwendung oberhalb des ersten VAR_GLOBAL werden aller anderen Variablen (alle bis auf bVar4) von dem Task PlcTaskA aktualisiert.

Um das Attribut auf eine ganze Variablengruppe anzuwenden (z.B. bVar4-bVar6), ist die Verwendung einer eigenen GVL pro Variablengruppe zu empfehlen.

{attribute 'TcContextName':= 'PlcTaskA'}
VAR_GLOBAL
bVar1 AT%Q* : BOOL; // => PlcTaskA
bVar2 AT%Q* : BOOL; // => PlcTaskA
bVar3 AT%Q* : BOOL; // => PlcTaskA
END_VAR
{attribute 'TcContextName':='PlcTaskB'}
VAR_GLOBAL
bVar4 AT%Q* : BOOL; // => PlcTaskB
bVar5 AT%Q* : BOOL; // => PlcTaskA
bVar6 AT%Q* : BOOL; // => PlcTaskA
END_VAR