Skip to main content

演算子:ライブラリの名前空間

構文: <library namespace>.<library POU identifier>

例: LIB_A.FB_A

ライブラリブロック識別子は、ライブラリモジュールへの一意で修飾されたアクセスのために、ライブラリ名前空間に(ドットで区切られたプレフィックスとして)追加されます。名前空間は通常、ライブラリ名と一致します。

161.

ライブラリはプロジェクトに含まれ、 FB_A ポウ。ただし、同じ名前の関数ブロックは、プロジェクト内で既にローカルで使用できます。ライブラリ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'));