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.