部分: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_SECVar_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 将自动添加到插槽中。