演算子:ライブラリの名前空間
構文: <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'));