セクション: スロット
このセクションでは、モジュール ツリー内のモジュールの可用性とスロットのタイプを定義します。 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定義タイプの構文に関する詳細は、セクションで説明されています。 モジュール宣言。
セクション
Slot0 接続または 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: サブセクション内MappingI/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_SECVar_Countモジュール関数ブロックの入力インスタンス パスを定義します。この変数 (整数型) は、スロットに接続されているインスタンスの数に関する情報を保存します。Cardinalityインスタンスの最小数と最大数を定義します。の
Slot_Multi.Default_Allocationセクションを使用して、可変数の要素を持つスロットのデフォルトの割り当てを定義できます。それらは一意のターゲットを介して識別される必要があります。インスタンスはセクションの順序で挿入されます。モジュール名とインスタンス名については、Slot.DefaultModuleまたはSlot.DefaultName適用する。デフォルト割り当ての数は、上位の桁を超えてはなりません。によってアドレス指定される変数
Slot_Multiセクションは次のタイプである必要がありますPOINTER TO <INTERFACE>。整数型の各入力変数は次のようにアドレス指定できます。
Var_Count1回だけ。 (これには、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 スロットに自動的に追加されます。