Skip to main content

Operador: ADR

El operador es una extensión del estándar IEC 61131-3.

ADR devuelve la dirección de 32 bits (o 64 bits, si corresponde) de su argumento. Puede transferir esta dirección a las funciones del fabricante o asignarla a un puntero dentro del proyecto.

sintaxis

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

En contraste con CoDeSys V2.3 puedes hacer eso ADR-Usar operador con nombres de funciones, programas, bloques de funciones y métodos. ADR reemplaza con eso INDEXOF-Operador.

Cuando utilice punteros de función, tenga en cuenta lo siguiente: si bien puede pasar punteros de función a bibliotecas externas, no hay forma de pasar un puntero de función dentro de CODESYS ¡llamar! Para habilitar una llamada al sistema (sistema de tiempo de ejecución), debe configurar la propiedad del objeto correspondiente (pestaña Traducir) para el objeto de función.

Atención

Si aplica un cambio en línea, el contenido de las direcciones puede cambiar. Esto podría PUNTERO A-Las variables apuntan a un área de memoria no válida. Para evitar problemas, debe asegurarse de que el valor de los punteros se actualice cada ciclo.

Atención

Pointer-TO-Las variables de funciones y métodos no deben devolverse al autor de la llamada ni asignarse a variables globales.