It is possible that local components of a function block override library POUs with
the same name, which causes ambiguity. As a result, access with the usual namespace
convention is not possible. Then it is helpful to use the #
operator to force direct access.
You can use the following syntax to force direct access:
Syntax: <namespace> # <library POU path>
Example
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'));