Skip to main content

Operatore: ADR

L'operatore è un'estensione della norma IEC 61131-3.

ADR restituisce l'indirizzo a 32 bit (o l'indirizzo a 64 bit, se possibile) del suo argomento. Puoi passare questo indirizzo alle funzioni del produttore o assegnarle a un puntatore nel progetto.

Sintassi

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 

Importante

Diverso da CoDeSys V2.3, puoi usare il ADR operatore con nomi di funzioni, nomi di programmi, nomi di blocchi funzione e nomi di metodi. Dunque, ADR sostituisce il INDEXOF operatore.

Quando usi i puntatori a funzione, tieni presente che puoi passare un puntatore a funzione a librerie esterne, ma non è possibile chiamare un puntatore a funzione dall'interno CODESYS. Per abilitare una chiamata di sistema (sistema di runtime), è necessario impostare la rispettiva proprietà dell'oggetto (Costruire tab) per l'oggetto funzione.

Attenzione

Quando si utilizza una modifica online, il contenuto degli indirizzi può cambiare. Di conseguenza, INDICATORE A le variabili potrebbero puntare a un'area di memoria non valida. Per evitare problemi, dovresti assicurarti che il valore dei puntatori sia aggiornato ad ogni ciclo.

Attenzione

Non tornare Pointer-TO variabili di funzioni e metodi al chiamante o assegnarli a variabili globali.