セクション: スロット
このセクションでは、モジュール ツリー内のモジュールの可用性とスロットのタイプを定義します。 2 つの異なるタイプのスロットを定義できます。
スロット
SEC Slots //optional: yes, modifier: [UPDATE]] SEC Slot : <slot identifier> //optional: yes, modifier [HIDE,UPDATE] Variable := <variable name>; //optional: no, type: InstancePath Role := <role name>; //optional: no, type: text Type := <slot type>; //optional: no, type: SlotType Inst_Prefix := <instance prefix>; //optional: yes, type: ID Optional := TRUE/FALSE; //optional: yes, type: BoolFlag Default_Inst_Name := <instance name>; //optional: yes, type: text Pragmas := [<pragma1>, <pragma2>,...]; //optional: yes, type: Pragmalist RegularExpressionParameterId := <RegEx param ID> //optional: yes, type: text SEC Default_Allocation : //optional: yes, modifier [UPDATE] Module_Name := <default module ID>; //optional: yes, type: ID Instance_Name := <default name>; //optional: yes, type: ID NotDeletable := TRUE/FALSE //optional: yes, type: BoolFlag SEC VisuEmbeddings //optional: yes, modifier [UPDATE] Empty := TRUE/FALSE; //optional: yes, type: BoolFlag SEC Embedding : <visu identigier> //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: no, type: ID Target := <target name>; //optional: yes, type: ID LinkId := <link ID>; //optional: yes, type: ID END_SEC END_SEC SEC PageVisu //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: yes, type: ID TopLevelTap := TRUE/FALSE; //optional: yes, type: BoolFlag END_SEC SEC IOMappings //optional: yes, modifier [UPDATE] SEC Mapping : <mapping identifier> //optional: yes, modifier [UPDATE] NoMapping := TRUE/FALSE; //optional: yes, type: BoolFlag STExpression := <ST expression>; //optional: yes, tye: ID/ST expression END_SEC END_SEC SEC Parameters //optional: yes, modifier [UPDATE] SEC Param : <param identifier> //optional: yes, modifier [UPDATE] Value := <value>; //optional: no, type: ID) END_SEC END_SEC END_SEC END_SEC END_SEC
定義タイプの構文に関する詳細は、セクションで説明されています。 モジュール宣言。
セクション
Slot
0 接続または 1 接続を許可するスロットを定義します。セクションのターゲット
Slot
パラメータを一意に識別する必要があります。結果として、2 つの異なるスロットがあってはなりません (Slot
またはSlot_Multi
)同じターゲットを持つもの。 (大文字/小文字は関係ありません。)定義
Variable
モジュール関数ブロックに対する相対的な入力インスタンス パスです。インスタンス パスは、そのすべてのコンポーネントで入力変数のみを参照できます (構造体インスタンスの場合はローカル変数も)。アドレス指定される変数の型は、インターフェイスまたは FB 型である必要があります。 2 つの異なるスロットで同じ変数を使用してはなりません。Role
スロットの役割の説明を定義します。Type
スロットのタイプを定義します。接続タイプには次の値を指定できます。SUBMODULE
: サブモジュール インスタンス用のスロット。REFERENCE
: 参照されるサブモジュール インスタンスのスロット。DECOUPLED
: 「分離された」モジュール インスタンス用のスロット。以下も参照してください。 セクション: デカップリング
Inst_Prefix
は、生成される FB 変数の名前に使用されるプレフィックスです。空のプレフィックス (Inst_Prefix := ;
) も可能ですが、関数ブロックの他の変数名と競合する可能性があります。にのみ指定できますSUBMODULE
タイプのスロット。Optional
スロットを開いたままにしておくことが許可されるか、それとも接続する必要があるかを定義します。Default_Inst_Name
このスロットの子であるモジュール インスタンスのデフォルト名を定義するために使用できます。追加された各モジュールは、「Default_Inst_Name」で定義されたテキスト リスト エントリを使用して、デフォルトでこの名前を取得します。スロットのデフォルト名は、モジュールのメタデータの 1 つよりも優先されます。Pragmas
サブモジュールの FB インスタンスの前に挿入されるコンパイラ プラグマのリストが含まれています。プラグマは管理対象スロットにのみ使用できます。RegularExpressionParameterId
このスロットの STRING/WSTRING タイプのパラメータを定義します。このパラメータの値は正規表現として解釈され、挿入されたサブモジュールの名前と一致する必要があります。セクション
Slot.Default_Allocation
そしてSlot_Multi.Default_Allocation
可変数の要素を持つスロット (Multi_Slots および Slots) のデフォルト設定を定義できます。のためにSlots.Multi_Slot
それらは一意のターゲットによって識別される必要がありますが、Slots.Slot
ターゲットがありません。1 つだけを持つことができますDefault_Allocation
セクション。インスタンスはセクション内の位置に応じて追加されます。モジュール名とインスタンス名は次の定義に従います。Slot.DefaultModule
そしてSlot.DefaultName
。この定義が利用できない場合は、Default_Allocation.Module_Name
そしてDefault_Allocation.Instance_Name
使用されます。使用することをお勧めしますDefault_Allocation.*
スロットの代わりにDefaultModule
そしてDefaultName
これは互換性の理由からのみ存在します。デフォルトのモジュール インスタンスの設定は、次のサブセクションで定義できます。Default_Allocation
:Module_Name
インスタンスが自動的に作成されるモジュールの名前を定義します。モジュールがライブラリからのものである場合は、モジュール名を名前空間で修飾する必要があります。このパラメータは、次のタイプのスロットにのみ許可されます。SUBMODULE
。無限呼び出しは許可されておらず、エラー メッセージが作成されます (例: モジュール "A" の宣言にはデフォルト モジュール "B" が含まれており、モジュール "B" の宣言にはデフォルト モジュール "A" が含まれています)。
Instance_Name
常に指定する必要がありますDefaultModule
が指定されており、それ以外の場合は決して指定されません。デフォルトのモジュール インスタンスの名前として使用される有効な IEC 識別子である必要があります。名前の先頭または末尾に下線 (_
)。宣言のすべてのスロットのデフォルト名は一意である必要があります。 (大文字と小文字は区別されません。)NotDeletable
ユーザーがモジュールを削除できるかどうかを指定します。もしTRUE
の場合、モジュールは削除できません。エラーメッセージが表示されます。パラメータがFALSE
または省略した場合は、モジュールを削除できます。VisuEmbeddings
: の場合Empty
パラメータは次のように設定されていますTRUE
、その後、このモジュール インスタンスに対して埋め込みヴィサスの空のリストが作成されます。値がFALSE
、その後、必要な埋め込みビジュアライゼーションのリストを介してモジュール インスタンスに対して埋め込みビジュアライゼーションの希望のリストを生成できます。Embedding
サブセクション。それぞれEmbedding
セクションで名前を定義する必要がありますVisuName
この目的に必要な埋め込み VISU を指定し、次のような追加のプロパティを指定できます。Target
またはLinkId
この埋め込まれたビジュアルの。PageVisu
: このセクションでは、モジュール インスタンスの PageVisu を選択できます (VisuName
)。さらに、このビジュアルが作成するかどうかを定義できます。TopLevelTap
。パラメータTopLevelTap
値を指定する必要がありますTRUE
そしてFALSE
。IOMappings
: サブセクション内Mapping
I/O チャネルを定義できます。各セクションの対象Mapping
ターゲット I/O チャネルを記述します。デフォルトは次のように設定できます。NoMapping
またはSTExpression
。Parameters
: サブセクション内Param
値Value
セクションのターゲットに定義されている各パラメータの定義が可能です。
スロットマルチ
セクションを利用することで Slot_Multi
サブインスタンスと参照のリストを作成できます。
SEC Slots //optional: yes, modifier: [UPDATE]] SEC Slot_Multi : <slot name> //optional: yes, modifier [HIDE,UPDATE] Variable := <variable name>; //optional: no, type: InstancePath Var_Count := <variable for count>; //optional: no, type: InstancePath Role := <name role>; //optional: no, type: text Cardinality := [<minimum> .. <maximum>]; //optional: no, type: Cardinality Type := <slot type>; //optional: no, type: SlotType Inst_Prefix := <instance prefix>; //optional: yes, type: ID Pragmas := <pragma list>; //optional: yes, type: Pragmalist Default_Inst_Name := <instance name>; //optional: yes, type: text RegularExpressionParameterId := <RegEx param ID> //optional: yes, type: text SEC Default_Allocation : //optional: yes, modifier [UPDATE] Module_Name := <default module ID>; //optional: yes, type: ID Instance_Name := <default name>; //optional: yes, type: ID NotDeletable := TRUE/FALSE //optional: yes, type: BoolFlag SEC VisuEmbeddings //optional: yes, modifier [UPDATE] Empty := TRUE/FALSE; //optional: yes, type: BoolFlag SEC Embedding : <visu identifier> //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: no, type: ID Target := <target name>; //optional: yes, type: ID LinkId := <link ID>; //optional: yes, type: ID END_SEC END_SEC SEC PageVisu //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: yes, type: ID TopLevelTap := TRUE/FALSE; //optional: yes, type: BoolFlag END_SEC SEC IOMappings //optional: yes, modifier [UPDATE] SEC Mapping : <mapping identifier>; //optional: yes, modifier [UPDATE] NoMapping := TRUE/FALSE; //optional: yes, type: BoolFlag STExpression := <ST expression>; //optional: yes, tye: ID/ST expression END_SEC END_SEC SEC Parameters //optional: yes, modifier [UPDATE] SEC Param : <param identifier> //optional: yes, modifier [UPDATE] Value := <value>; //optional: no, type: ID) END_SEC END_SEC END_SEC END_SEC END_SEC
Var_Count
モジュール関数ブロックの入力インスタンス パスを定義します。この変数 (整数型) は、スロットに接続されているインスタンスの数に関する情報を保存します。Cardinality
インスタンスの最小数と最大数を定義します。の
Slot_Multi.Default_Allocation
セクションを使用して、可変数の要素を持つスロットのデフォルトの割り当てを定義できます。それらは一意のターゲットを介して識別される必要があります。インスタンスはセクションの順序で挿入されます。モジュール名とインスタンス名については、Slot.DefaultModule
またはSlot.DefaultName
適用する。デフォルト割り当ての数は、上位の桁を超えてはなりません。によってアドレス指定される変数
Slot_Multi
セクションは次のタイプである必要がありますPOINTER TO <INTERFACE>
。整数型の各入力変数は次のようにアドレス指定できます。
Var_Count
1回だけ。 (これには、InstRef_Multi.Var_Count
そしてVarArray.Var_Count
)。
SEC Slot SEC Slot_Multi : subs Variable := pSubs; Var_Count := uiArraySize; Role := TL.Role; Cardinality := [2 .. 17]; Type := SUBMODULE; RegularExpressionParameterId := Param_RegEx_Ref; SEC Default_Allocation : def1 Module_Name := Sub1; Instance_Name := Submodule; END_SEC Name := TL.Input1_Name; Desc := TL.Input1_Desc; END_SEC END_SEC
他の宣言の中でも、関数ブロックの宣言部分には以下を含める必要があります。 uiArraySize: UINT; pSubs: POINTER TO ITestModule
。
この例では、少なくとも 2 個、最大 17 個のサブインスタンスを保持するスロットが定義されています。サブインスタンスの配列が作成され、 pSubs
それを指します。インスタンスを追加するときは、名前付きのサブモジュール Submodule
タイプの Sub1
スロットに自動的に追加されます。