ADR

Der Operator ist eine Erweiterung der Norm IEC 61131-3.

ADR liefert die Adresse seines Arguments in einem PVOID bzw. abhängig vom Laufzeitsystem in einem DWORD (32-Bit-Systeme) oder LWORD (32- und 64-Bit-Systeme). Um die Unabhängigkeit von der Laufzeitsystemarchitektur zu gewährleisten, empfiehlt es sich, PVOID als Datentyp zu verwenden.

VORSICHT

Verschiebung der Inhalte von Adressen durch Online-Change

Wenn Sie einen Online-Change anwenden, können sich Inhalte von Adressen verschieben. Dadurch könnten POINTER-Variablen auf einen ungültigen Speicherbereich zeigen. Um Probleme zu vermeiden, stellen Sie sicher, dass TwinCAT den Wert von Pointern bei einem Online-Change aktualisiert.

Syntax:

VAR
    <address name> : PVOID | DWORD | LWORD | __XWORD | POINTER TO < basis data type>;
END_VAR
<address name> := ADR(<variable name>);

Beispiele:

ST:

nVar := ADR(bVAR);

FUP:

ADR 1:

Beispiel mit verschiedenen Datentypen:

FUNCTION_BLOCK FB_Address
VAR
    nVar      : INT := 10;
    pNumber   : POINTER TO INT;
    nAddress1 : PVOID;
    nAddress2 : DWORD;
    nAddress3 : LWORD;
    nAddress4 : __XWORD;
END_VAR
pNumber   := ADR(nVar);   // pNumber wird der Adresse von nVar zugewiesen
nAddress1 := ADR(nVar);   // PVOID   : für 32- und 64-Bit-Systeme
nAddress2 := ADR(nVar);   // DWORD   : nur für 32-Bit-Systeme
nAddress3 := ADR(nVar);   // LWORD   : für 32- und 64-Bit-Systeme
nAddress4 := ADR(nVar);   // __XWORD : für 32- und 64-Bit-Systeme

Siehe auch: