Attribut 'no_assign', Attribut 'no_assign_warning'

Attribut 'no_assign', Attribut 'no_assign_warning' 1:

Verfügbar ab TwinCAT 3.1 Build 4026

Das Pragma 'no_assign' bewirkt, dass Compilerfehler ausgegeben werden, wenn eine Instanz des Funktionsbausteins einer anderen Instanz desselben Bausteins zugewiesen wird. Solche Zuweisungen sollen möglichst vermieden werden, wenn der Funktionsbaustein Pointer enthält, da die mitkopierten Pointer zu Problemen führen.

Das Pragma 'no_assign_warning' bewirkt das Gleiche wie das Pragma 'no_assign' mit dem Unterschied, dass anstelle eines Compilerfehlers eine Compilerwarnung ausgegeben wird.

Syntax: {attribute 'no_assign'} bzw. {attribute 'no_assign_warning'}

Einfügeort: Erste Zeile im Deklarationsteil eines Funktionsbausteins

Beispiel:

Da der Funktionsbaustein FB_Test Pointer enthält, sollte die Zuweisung einer Funktionsbausteininstanz vermieden werden, indem das Attribut 'no_assign' in der Deklaration des Funktionsbausteins FB_Test hinzufügt wird:

{attribute 'no_assign'}
FUNCTION_BLOCK FB_Test
VAR
    pVar    : POINTER TO LREAL;

Zuweisung von Funktionsbausteininstanzen:

VAR_GLOBAL
    fbInst1 : FB_Test;
END_VAR
PROGRAM MAIN
VAR
    fbInst2 : FB_Test := fbInst1;
END_VAR

Dann wird der folgende Compilerfehler ausgegeben:

Assignment not allowed for type FB_Test