Skip to main content

运营商:ADR

运算符是 IEC 61131-3 标准的扩展。

ADR 产生其参数的 32 位地址(或 64 位地址,如果可能)。您可以将此地址传递给制造商函数或将它们分配给项目中的指针。

句法

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 

重要

不同于 CoDeSys V2.3, 你可以使用 ADR 具有函数名称、程序名称、功能块名称和方法名称的运算符。所以, ADR 取代 INDEXOF 操作员。

使用函数指针时,请注意可以将函数指针传递给外部库,但不能从内部调用函数指针 CODESYS.要启用系统调用(运行时系统),您必须设置相应的对象属性 (建造 选项卡)用于功能对象。

小心

当您使用在线更改时,地址的内容可能会发生变化。因此, 指向 变量可能指向无效的内存区域。为避免出现问题,您应该确保指针的值在每个周期中都更新。

小心

不返回 Pointer-TO 将函数和方法的变量分配给调用者或将它们分配给全局变量。