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.
Inst_Ref.Variable
definiert den Eingangs-Instanzpfad einer Variablen vom TypPOINTER TO <T>
oder vom Typ<Interface>
. (<T>
ist ein beliebiger Struktur- oder FB-Typ.)InstRef_Multi.Variable
definiert den Eingangs-Instanzpfad vom TypPOINTER TO POINTER TO <T>
oder vom TypPOINTER 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
undInstRef_Multi
) geben, deren Target bis auf Groß-Kleinschreibung übereinstimmt.Die durch
Var_Count
adressierte (ganzzahlige) Eingangsvariable darf nur einmal in allenVarCounts
derSlot_Multi
oderInstRef_Multi
verwendet werden. Integer-Variablen definiert durchVar_Count
vonVarArray
können parallel zuVar_Counts
vonSlot_Multi
oderInstRef_Multi
verwendet werden.
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.