.

运算符“ADR”

.
.

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

ADR 生成其参数的32位地址(或者64位地址,如果可能的话)。你可以将此地址传递给定义的函数,或者将它们分配给工程中的一个指针。

.语法


VAR
    <地址名称> : DWORD | LWORD | POINTER TO <基础数据类型>
END_VAR

<地址名称> := ADR( <变量名> );
 
.

.例如:


FUNCTION_BLOCK FB_Address
VAR
    piAddress1: POINTER TO INT;
    iNumber1: INT := 5;
    lwAddress2lwAddress2 : INT := 10;
END_VAR

piAddress1 := ADR(iNumber1); //piNumber被分配到iNumber1的地址
lwAddress2 := ADR(iNumber2); // 64位runtime系统
 
.

提示!

与CoDeSys V2.3相比,可以将ADR运算符与函数名称,程序名称,功能块名称和方法名称一起使用。因此,ADR代替了INDEXOF操作符。

使用函数指针时,请注意,您可以将函数指针传递给外部库,但是无法从CODESYS中调用函数指针。要启用系统调用(实时系统),必须为函数对象设置相应的对象属性(编译页面)。

小心!

使用在线更改时,地址的内容可能会移动。不要将函数和方法的POINTER TO变量返回给调用者,也不要将它们分配给全局变量。为避免出现问题,应确保在每个周期中更新指针的值。

小心!

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

.

.另行参见