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_SECDetails über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.
Die Definition
Variableist ein Eingangs-Instanzpfad relativ zum Modulfunktionsbaustein. Der Typ istPOINTER TO <ELEMTYPE>.<ELEMTYPE>kann ein beliebiger Typ sein.Das Target des Abschnitts
VarArraymuss das Array konfigurierbarer Größe eindeutig identifizieren.Var_Countist der Eingangs-Instanzpfad einer ganzzahligen EingangsvariableVariabledes Funktionsbausteins. Damit diese Variable im Editor zur Konfiguration angezeigt wird, muss sie entsprechend als Parameter deklariert werden. Alternativ kann auch dieVar_CountVariable 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_Namelegt 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_Namehaben, der nicht den Platzhalter%VariablePath%enthält.Pragmasenthält eine Liste von Compiler-Pragmas, welche vor der erzeugten Array-Variable eingesetzt wird.Var_Decl_Flagserlaubt es den variablen Typ des angelegten Arrays genauer zu spezifizieren. Erlaubte Flags sindNONE,RETAINundPERSISTENT. 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_SECDer Funktionsbaustein muss im Deklarationsteil folgende Deklaration enthalten: uiArraySize: UINT := 7; psNameList: POINTER TO STRING;.