Skip to main content

运算符:库命名空间

句法: <library namespace>.<library POU identifier>

例子: LIB_A.FB_A

库块标识符附加到库命名空间(作为由点分隔的前缀),以便对库模块进行唯一且合格的访问。命名空间通常与库名称匹配。

161. 例子

库包含在项目中并包含 FB_A POU。但是,具有相同名称的功能块已在项目本地可用。将库 POU 标识为 LIB_A.FB_A 为了访问库 POU,而不是本地功能块。

var1 := FB_A(in := 12); // Call of the project function FB_A
var2 := LIB_A.FB_A(in := 22); // Call of the library function FB_A


您可以为命名空间定义另一个标识符。为此,请在项目信息中指定命名空间(库开发者:创建库项目时)。作为替代方案,您可以在库管理器中为库指定特定的命名空间 特性 对话框(应用程序开发人员:创建应用程序时)。

有关更多信息,请参阅: 使用库

运算符 (#) 用于直接访问

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

功能块的本地组件可能会覆盖具有相同名称的库 POU,这会导致歧义。因此,无法使用通常的命名空间约定进行访问。那么使用 # 运营商强制直接访问。

您可以使用以下语法强制直接访问:

句法: <namespace> # <library POU path>

162. 例子
TYPE Struct1 :
STRUCT
	Standard : Struct2;
END_STRUCT
END_TYPE
TYPE Struct2 :
STRUCT
	Concat : DINT;
END_STRUCT
END_TYPE
{attribute 'qualified_only'}
VAR_GLOBAL
	Standard : Struct2;
END_VAR
PROGRAM PLC_PRG
VAR
    test : _3S_License#Standard#TON;
    str : STRING;
END_VAR

// access to global variable
_3S_License.Standard.CONCAT := 123;

// with hashtag access, the library is explicitly addressed 
str := _3S_License.Standard#CONCAT('test1', '3444');
str := Standard#CONCAT('test1', '3444');
str := _3S_License#Standard#CONCAT('test1', '3444');
str := _3S_License.Standard#CONCAT('test1', '3444');
str := CONCAT('test1', Standard#CONCAT('3444', '444'));
str := CONCAT('test1', _3S_License.Standard#CONCAT('3444', '444'));
str := CONCAT('test1', _3S_License#Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', _3S_License.Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', _3S_License#Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', _3S_License#Standard#CONCAT('asdf', 'fdas'));