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.