运营商: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
将函数和方法的变量分配给调用者或将它们分配给全局变量。