Der Operator ist eine Erweiterung der Norm IEC 61131-3.
ADR
liefert die 32-Bit-Adresse (oder gegebenenfalls die 64-Bit-Adresse) seines Arguments
zurück. Diese Adresse können Sie an Herstellerfunktionen übergeben oder innerhalb
des Projekts einem Pointer zuweisen.
Syntax
VAR <address name> : DWORD | LWORD | POINTER TO < basis data type> END_VAR <address name> := ADR( <variable name> );
Beispiel
FUNCTION_BLOCK FB_Adress VAR piAddress1: POINTER TO INT; iNumber1: INT := 5; lwAddress2 iNumber2: INT := 10; END_VAR piAddress1 := ADR(iNumber1); // piNumber is assigned to address of iNumber1 lwAddress2 := ADR(iNumber2); // 64 bit run time system




HINWEIS

Im Unterschied zu CoDeSys V2.3 können Sie den ADR
-Operator mit Funktions-, Programm-, Funktionsbaustein- und Methodennamen verwenden.
ADR
ersetzt damit den INDEXOF
-Operator.
Beachten Sie bei der Verwendung von Funktionspointern Folgendes: Sie können Funktionspointer zwar an externe Bibliotheken weitergeben, es gibt jedoch keine Möglichkeit, einen Funktionspointer innerhalb von CODESYS aufzurufen! Um einen Systemaufruf (Laufzeitsystem) zu ermöglichen, müssen Sie die entsprechende Objekteigenschaft (Registerkarte „Übersetzen“) für das Funktionsobjekt setzen.




VORSICHT

Wenn Sie einen Online-Change anwenden, können sich die Inhalte von Adressen verschieben.
Dadurch könnten POINTER TO
-Variablen auf einen ungültigen Speicherbereich zeigen. Um Probleme zu vermeiden,
sollten Sie sicherstellen, dass der Wert von Pointern in jedem Zyklus aktualisiert
wird.




VORSICHT

Pointer-TO
-Variablen von Funktionen und Methoden sollten Sie nicht an den Aufrufer zurückgeben
oder globalen Variablen zuweisen.
Siehe auch