Sektion: VarArrays
Der Parameter VarArrays
erlaubt Arrays mit konfigurierbarer Größe zu erzeugen.
SEC VarArrays //optional: yes, modifier: [UPDATE]] SEC VarArray : <slot identifier> //optional: yes, modifier [] Variable := <variable name>; //optional: no, type: InstancePath Var_Count := <variable count>; //optional: no, type: InstancePath Inst_Name := <instance name>; //optional: yes, type: StringLiteral Pragmas := [<pragma1>, <pragma2>,...]; //optional: yes, type: Pragmalist Var_Decl_Flags := <Flag1> | <Flag2> | ... ; //optional: yes, type: Flags END_SEC END_SEC
Details über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.
Die Definition
Variable
ist ein Eingangs-Instanzpfad relativ zum Modulfunktionsbaustein. Der Typ istPOINTER TO <ELEMTYPE>
.<ELEMTYPE>
kann ein beliebiger Typ sein.Das Target des Abschnitts
VarArray
muss das Array konfigurierbarer Größe eindeutig identifizieren.Var_Count
ist der Eingangs-Instanzpfad einer ganzzahligen EingangsvariableVariable
des Funktionsbausteins. Damit diese Variable im Editor zur Konfiguration angezeigt wird, muss sie entsprechend als Parameter deklariert werden. Alternativ kann auch dieVar_Count
Variable eines Multi-Slots oder eines Multi-InstRefs verwendet werden. Mehrere VarArrays dürfen dieselbeVar_Count
-Variable verwenden. Ist die Größe des Arrays 0, dann wird kein Array angelegt sondern der Zeiger des Arrays auf 0 gesetzt.Inst_Name
legt den Namen der erzeugten Array-Variable fest. Die Platzhalter%Instancename%
und%VariablePath%
(Groß-/Kleinschreibung spielt keine Rolle) werden dabei durch den Instanznamen der Modulinstanz bzw. den Instanzpfad der Pointer-Variable (wobei Punkte durch Unterstriche ausgetauscht werden) ersetzt. Wenn die Definition weggelassen wird, gilt der DefaultwertAC_ARRAY_%VariablePath%
.Es ist ein Fehler, wenn zwei verschiedene VarArrays eines Moduls einen identischen
Inst_Name
haben, der nicht den Platzhalter%VariablePath%
enthält.Pragmas
enthält eine Liste von Compiler-Pragmas, welche vor der erzeugten Array-Variable eingesetzt wird.Var_Decl_Flags
erlaubt es den variablen Typ des angelegten Arrays genauer zu spezifizieren. Erlaubte Flags sindNONE
,RETAIN
undPERSISTENT
. Diese Flags bewirken, dass sie zu der SektionVAR_INPUT
, in der das Array angelegt wird, hinzugefügt werden (z.B. für das FlagRETAIN
,VAR_INPUT RETAIN
).
SEC VAR_ARRAYS SEC VAR_ARRAY : NameList Variable := psNameList; Var_Count := uiArraySize; END_SEC ... SEC PARAM : ArraySize Variable := uiArraySize; Name := TL.ArraySize_Name; Desc := TL.ArraySize_Desc; END_SEC END_SEC
Der Funktionsbaustein muss im Deklarationsteil folgende Deklaration enthalten: uiArraySize: UINT := 7; psNameList: POINTER TO STRING;
.