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:
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: