运算符:库命名空间
句法: <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'));