Skip to main content

Opérateur : ADR

L'opérateur est une extension de la norme CEI 61131-3.

ADR renvoie l'adresse 32 bits (ou l'adresse 64 bits, si possible) de son argument. Vous pouvez transmettre cette adresse aux fonctions constructeur ou les affecter à un pointeur dans le projet.

Syntaxe

VAR
    <address name> : DWORD | LWORD | POINTER TO < basis data type> | __XWORD ;
END_VAR

<address name> := ADR( <variable name> );
FUNCTION_BLOCK FB_Adress
VAR
        piAddress1: POINTER TO INT;
        iVar1 : INT := 5;

        lwAddress2 : LWORD;
        iVar2 : INT := 10;

        xwAddress3 : _XWORD;
        iVar3 : INT;
END_VAR
piAddress1 := ADR(iVar1); // piNumber is assigned to address of iVar1
lwAddress2 := ADR(iVar2); // works for 64 bit run time system
xwAddress3 := ADR(iVar3); // works for 32 bit and 64 bit systems 

Important

Différent de CoDeSys V2.3, vous pouvez utiliser le ADR opérateur avec les noms de fonction, les noms de programme, les noms de bloc fonction et les noms de méthode. Donc, ADR remplace le INDEXOF opérateur.

Lorsque vous utilisez des pointeurs de fonction, notez que vous pouvez passer un pointeur de fonction à des bibliothèques externes, mais il n'est pas possible d'appeler un pointeur de fonction depuis l'intérieur CODESYS. Pour activer un appel système (système d'exécution), vous devez définir la propriété d'objet correspondante (Construire tab) pour l'objet fonction.

Attention

Lorsque vous utilisez un changement en ligne, le contenu des adresses peut changer. Par conséquent, POINTEUR VERS les variables pouvaient pointer vers une zone mémoire invalide. Pour éviter les problèmes, vous devez vous assurer que la valeur des pointeurs est mise à jour à chaque cycle.

Attention

Ne reviens pas Pointer-TO variables de fonctions et de méthodes à l'appelant ou les affecter à des variables globales.