部分:Slots
本节定义模块树中模块的可用性和插槽类型。可以定义两种不同类型的槽。
投币口
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
必须唯一标识参数。因此,不能有两个不同的插槽(无论Slot
或者Slot_Multi
)具有相同的目标。 (大小写无关。)定义
Variable
是相对于模块功能块的输入实例路径。实例路径在其所有组件中只能引用输入变量(对于结构实例还有局部变量)。寻址变量的类型必须是接口或 FB 类型。两个不同的槽不能使用相同的变量。Role
定义槽的角色描述。Type
定义槽类型。连接类型可以具有以下值:SUBMODULE
:子模块实例的插槽。REFERENCE
:引用子模块实例的插槽。DECOUPLED
:“解耦”模块实例的插槽。也可以看看: 部分:解耦
Inst_Prefix
是用于生成的 FB 变量名称的前缀。空前缀 (Inst_Prefix := ;
) 也是可能的,但可能会与功能块的其他变量名称发生冲突。只能指定用于SUBMODULE
类型槽。Optional
定义是否允许插槽保持打开状态或者是否必须连接。Default_Inst_Name
可用于定义作为此插槽子级的模块实例的默认名称。默认情况下,添加的每个模块都会使用“Default_Inst_Name”定义的文本列表条目获取此名称。插槽的默认名称优先于模块元数据之一。Pragmas
包含插入在子模块的 FB 实例之前的编译器编译指示列表。指令只能用于托管槽。RegularExpressionParameterId
为此槽定义 STRING/WSTRING 类型的参数。该参数的值被解释为正则表达式,并且它必须与插入的子模块的名称匹配。各部分
Slot.Default_Allocation
和Slot_Multi.Default_Allocation
允许定义具有可变数量元素的槽的默认设置(Multi_Slots 和 Slots)。为了Slots.Multi_Slot
它们必须由独特的目标来识别,而Slots.Slot
没有目标,只能有一个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
,然后为此模块实例创建一个空的嵌入visus列表。如果值为FALSE
,然后可以通过所需的嵌入式可视化列表为模块实例生成所需的嵌入式可视化列表Embedding
小节。每个Embedding
部分必须定义名称VisuName
为此目的所需的嵌入式视觉,并可以指定其他属性,例如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
定义模块功能块的输入实例路径。该变量(Integer 类型)将保存有关连接到该插槽的实例数量的信息。Cardinality
定义实例的最小和最大数量。这
Slot_Multi.Default_Allocation
节可用于定义具有可变数量元素的槽的默认分配。必须通过独特的目标来识别它们。实例按部分的顺序插入。对于模块名称和实例名称,规范为Slot.DefaultModule
或者Slot.DefaultName
申请。默认分配的数量不得超过最高位数。由 a 寻址的变量
Slot_Multi
部分必须是类型POINTER TO <INTERFACE>
。每个整数类型的输入变量可以通过以下方式寻址
Var_Count
只有一次。 (这还包括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
将自动添加到插槽中。