Skip to main content

部分:InstRefs

这部分 InstRefs 定义对 FB 实例或结构实例的引用。

SEC InstRefs                                     //optional: yes, modifier: [UPDATE]
    SEC InstRef : <identifier>                   //target: yes, optional: yes, modifier [HIDE,UPDATE]
            Variable := <variable name>;             //optional: no, type: InstancePath
            Desc := <description>;                   //optional: no, type: text
            Optional := TRUE/FALSE;                  //optional: yes, type: BoolFlag
    END_SEC
...
    SEC InstRef_Multi : <identifier>              //optional: yes, modifier [HIDE,UPDATE]
            Variable := <variable name>;             //optional: no, type: InstancePath
            Var_Count := <variable for count>;       //optional: no, type: InstancePath
            Desc := <description>;                   //optional: no, type: text
            Cardinality := [<minimum> .. <maximum>]; //optional: no, type: Cardinality
    END_SEC
END_SEC

有关定义类型语法的详细信息,请参阅 部分 模块声明

. 规格:
  • Inst_Ref.Variable 定义类型变量的输入实例路径 POINTER TO <T> 或类型 <interface>。 (<T> 是任何结构或FB类型)

  • InstRef_Multi.Variable 定义类型的输入实例路径 POINTER TO POINTER TO <T> 或类型 POINTER TO <interface>。 (<T> 是任何结构或FB类型)

  • 两个不同的 InstRef 或 InstRef-Multi 条目不得使用相同的变量。

  • 目标必须唯一标识实例引用。这意味着不能存在两个不同的实例引用声明(部分 InstRefInstRef_Multi) 具有相同的目标(大小写拼写不相关)。

  • 输入整型变量定义为 Var_Count 总共只能使用一次 VarCountsSlot_Multi 或者 InstRef_Multi。仅由以下定义的整型变量 Var_CountVarArray 可以并行使用 Var_CountsSlot_Multi 或者 InstRef_Multi

28. 例子
SEC InstRef_Multi : Elements
        Variable    := piElems ;
        Var_Count   := uiArraySize ;
        Desc        := TL.Elems_Desc ;
        Cardinality := [1 .. 10] ;
END_SEC

在其他声明中,功能块的声明部分必须包含: uiArraySize : UINT; piElems : POINTER TO Interface;

piElems 指向全局创建的、正确初始化的 ARRAY[0..uiArraySize-1] OF interface 或者 OF POINTER TO <T>,它指向各个实例。结果,第 i 个对象可以通过以下方式访问: piElems[i]