操作符是 IEC 61131-3 标准的延伸。
ADR
产生其参数的 32 位地址(或 64 位地址,如果可能)。您可以将该地址传递给制造商函数,或将其分配给项目中的指针。
语法
VAR <address name> : DWORD | LWORD | POINTER TO < basis data type> END_VAR <address name> := ADR( <variable name> );
示例
FUNCTION_BLOCK FB_Address VAR piAddress1: POINTER TO INT; iNumber1: INT := 5; lwAddress2 iNumber2: INT := 10; END_VAR piAddress1 := ADR(iNumber1); // piNumber is assigned to address of iNumber1 lwAddress2 := ADR(iNumber2); // 64 bit runtime system




注意

与CoDeSys V2.3 不同,您可以在函数名、程序名、功能块名和方法名中使用ADR
操作符。因此,ADR
取代了INDEXOF
运算符。
使用函数指针时,请注意可以将函数指针传递给外部库,但不能在CODESYS 中调用函数指针。要启用系统调用(运行时系统),必须为函数对象设置相应的对象属性(“Build” 标签)。




小心

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




小心

不要将函数和方法的Pointer-TO
变量返回给调用者,或将其赋值给全局变量。
另见