Skip to main content

Sektion: InstRefs

Die Sektion InstRefs definiert Referenzen von FB-Instanzen oder Strukturinstanzen.

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

Details über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.

. Spezifikation:
  • Inst_Ref.Variable definiert den Eingangs-Instanzpfad einer Variablen vom Typ POINTER TO <T> oder vom Typ <Interface>. (<T> ist ein beliebiger Struktur- oder FB-Typ.)

  • InstRef_Multi.Variable definiert den Eingangs-Instanzpfad vom Typ POINTER TO POINTER TO <T> oder vom Typ POINTER TO <Interface>. (<T> ist ein beliebiger Struktur- oder FB-Typ.)

  • Zwei verschiedene InstRef- oder InstRef-Multi Einträge dürfen nicht dieselbe Variable verwenden.

  • Das Target muss die Instanzreferenz eindeutig identifizieren. D.h. es darf keine zwei unterschiedlichen Instanzreferenz-Deklarationen (Abschnitt InstRef und InstRef_Multi) geben, deren Target bis auf Groß-Kleinschreibung übereinstimmt.

  • Die durch Var_Count adressierte (ganzzahlige) Eingangsvariable darf nur einmal in allen VarCounts der Slot_Multi oder InstRef_Multi verwendet werden. Integer-Variablen definiert durch Var_Count von VarArray können parallel zu Var_Counts von Slot_Multi oder InstRef_Multi verwendet werden.

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

Folgende Deklaration muss im Deklarationsteil des Funktionbausteines stehen: uiArraySize : UINT; piElems : POINTER TO Interface;

piElems zeigt auf eine global angelegtes, korrekt initialisiertes ARRAY[0..uiArraySize-1] OF Interface bzw. OF POINTER TO <T>, das auf die einzelnen Instanzen zeigt. So kann mittels piElems[i] auf das i-te Objekt zugegriffen werden.