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.