Sektion: Slots
Diese Sektion definiert die Verfügbarkeit und den Typ der Steckplätze von Modulen im Modulbaum. Es können zwei unterschiedliche Steckplätze definiert werden.
Steckplatz
SEC Slots //optional: yes, modifier: [UPDATE]]
SEC Slot : <slot identifier> //optional: yes, modifier [HIDE,UPDATE]
Variable := <variable name>; //optional: no, type: InstancePath
Role := <role name>; //optional: no, type: text
Type := <slot type>; //optional: no, type: SlotType
Inst_Prefix := <instance prefix>; //optional: yes, type: ID
Optional := TRUE/FALSE; //optional: yes, type: BoolFlag
Default_Inst_Name := <instance name>; //optional: yes, type: text
Pragmas := [<pragma1>, <pragma2>,...]; //optional: yes, type: Pragmalist
RegularExpressionParameterId := <RegEx param ID> //optional: yes, type: text
SEC Default_Allocation : //optional: yes, modifier [UPDATE]
Module_Name := <default module ID>; //optional: yes, type: ID
Instance_Name := <default name>; //optional: yes, type: ID
NotDeletable := TRUE/FALSE //optional: yes, type: BoolFlag
SEC VisuEmbeddings //optional: yes, modifier [UPDATE]
Empty := TRUE/FALSE; //optional: yes, type: BoolFlag
SEC Embedding : <visu identigier> //optional: yes, modifier [UPDATE]
VisuName := <visu name>; //optional: no, type: ID
Target := <target name>; //optional: yes, type: ID
LinkId := <link ID>; //optional: yes, type: ID
END_SEC
END_SEC
SEC PageVisu //optional: yes, modifier [UPDATE]
VisuName := <visu name>; //optional: yes, type: ID
TopLevelTap := TRUE/FALSE; //optional: yes, type: BoolFlag
END_SEC
SEC IOMappings //optional: yes, modifier [UPDATE]
SEC Mapping : <mapping identifier> //optional: yes, modifier [UPDATE]
NoMapping := TRUE/FALSE; //optional: yes, type: BoolFlag
STExpression := <ST expression>; //optional: yes, tye: ID/ST expression
END_SEC
END_SEC
SEC Parameters //optional: yes, modifier [UPDATE]
SEC Param : <param identifier> //optional: yes, modifier [UPDATE]
Value := <value>; //optional: no, type: ID)
END_SEC
END_SEC
END_SEC
END_SEC
END_SECDetails über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.
Der Abschnitt
Slotdefiniert einen Steckplatz, der 0 oder 1 Verbindung eingehen kann.Das Target eines
Slot-Abschnitts muss den Steckplatz eindeutig identifizieren. Somit darf es keine zwei unterschiedlichen Steckplätze geben (egal obSlotoderSlot_Multi), die dasselbe Target haben. (Groß-/Kleinschreibung ist unerheblich.)Variableein Eingangs-Instanzpfad relativ zum Modulfunktionsbaustein. Der Instanzpfad darf sich in allen seinen Komponenten nur auf Eingangsvariablen beziehen (bei Strukturinstanzen auch lokale Variablen). Der Typ der adressierten Variable muss ein Interface oder ein FB-Typ sein. Zwei verschiedene Slots dürfen nicht dieselbe Variable verwenden.Roledefiniert die Rollenbezeichnung des Steckplatzes.Typedefiniert den Steckplatztyp. Die Verbindungsart kann folgende Werte annehmen:SUBMODULE: Slot für Submodul-Instanzen.REFERENCE: Slot für referenzierte Submodul-Instanzen.DECOUPLED: Slot für „Decoupled“-Moduleinstanzen.Siehe auch: Sektion Decoupled
Inst_Prefixist ein Präfix, das für den Namen der generierten FB-Instanzvariable verwendet wird. Leere Präfix (Inst_Prefix := ;) sind auch möglich, können jedoch Konflikte mit anderen Variablennamen des Funktionsbausteins erzeugen. Darf nur für Steckplätze vom TypSUBMODULEangegeben werden.Optionalgibt an, ob der Steckplatz unverbunden bleiben darf oder immer verbunden werden muss.Default_Inst_Namedient dazu einen Default-Namen für Modulinstanzen unter diesem Slot anzugeben. Jedes Modul, das hinzugefügt wird, bekommt standardmäßig den Instanznamen der hier (über eine evtl. mehrsprachige Textliste) angegeben werden kann. Der Default-Name des jeweiligen Slots wird dabei dem der Modul-MetaDaten bevorzugt.Pragmasenthält eine Liste von Compiler-Pragmas, die vor FB-Instanzen der Submodule eingefügt werden. Pragmas dürfen nur für verwaltete Steckplätze verwendet werden.RegularExpressionParameterIddefiniert einen Parameter vom Typ STRING/WSTRING für diesen Steckplatz. Der Wert dieses Parameters wird als regulärer Ausdruck interpretiert und muss mit dem Namen des eingefügten Submoduls übereinstimmen.Im Abschnitt
Slot.Default_Allocationbzw.Slot_Multi.Default_Allocationkönnen Default-Einstellungen für Steckplätze mit variabler Anzahl von Elementen (Multi_Slots und Slots) festgelegt werden. FürSlots.Multi_Slotmüssen diese durch eindeutige Targets beschrieben werden, wogegenSlots.Slotkein Target und nur einen AbschnittDefault_Allocationbesitzt. Die Instanz wird wird gemäß ihrer Position innerhalb des Abschnitts eingefügt. Der Modulname und Instanzname wird durchSlot.DefaultModulebzw.Slot.DefaultNamebeschrieben. Wenn diese Definitionen nicht vorhanden sind, werdenDefault_Allocation.Module_NameundDefault_Allocation.Instance_Nameverwendet. Es wird empfohlen,Default_Allocation.*anstelle vonDefaultModuleundDefaultNamefür Slots zu verwenden, da diese nur noch aus Kompatibilitätsgründen vorhanden sind. Die Definition einer Default-Modulinstanz kann im UnterabschnittDefault_Allocationfestgelegt werden.Module_Nameist der Name des Moduls von dem automatisch eine Instanz angelegt und mit dem Steckplatz verbunden wird. Wenn das Modul aus einer Bibliothek kommt, muss der Modulname mit Namespace qualifiziert sein. Der Parameter ist nur für Steckplätze vom TypSUBMODULEerlaubt.Endlose Aufrufe sind nicht erlaubt und erzeugen eine Fehlermeldung (Beispiel: Deklaration von Modul „A“ enhält ein Default-Modul „B“; Deklaration von Modul „B“ enthält Default-Modul „A“.)
Instance_Namemuss immer dann angegeben werden, wennDefaultModuleangegeben wurde, und sonst nie. Es muss ein gültiger IEC-Identifier sein, der als Name der Default-Modulinstanz verwendet wird. Der Name darf nicht mit einem Unterstrich (_) beginnen oder enden. Die Default-Namen aller Steckplätze einer Deklaration müssen eindeutig sein. (Groß- und Kleinschreibung spielt keine Rolle.)NotDeletablelegt fest, ob das Modul durch den Anwender gelöscht werden kann. WennTRUE, dann kann das Moduls nicht gelöscht werden. Es wird ein Fehlerdialog angezeigt. Ist der ParameterFALSEoder wird er weggelassen, kann das Modul gelöscht werden.VisuEmbeddings: Wird der ParameterEmptyaufTRUEgesetzt, so wird eine leere Liste an Embedded-Visus für diese Modulinstanz angelegt. Wenn der WertFALSEist, kann über die Auflistung der gewünschten Embedded-Visus im UnterabschnittEmbeddingdie gewünschte Liste von Embedded-Visus für die Modulinstanz erzeugt werden. Jede SektionEmbeddingmuss dazu den NamenVisuNameder gewünschten Embedded-Visu definieren und kann zusätzliche Eigenschaften wieTargetoderLinkIddieser Embedded-Visu angeben.PageVisu: In dieser Sektion kann die gewählte PageVisu der Modulintanz gewählt werden (VisuName). Weiterhin kann angegeben werden, ob diese einenTopLevelTaperzeugen soll. Der ParameterTopLevelTapkann dazu nur die WerteTRUEundFALSEannehmen.IOMappings: Im UnterabschnittMappingkann hier die Belegung von IO-Kanälen festegelegt werden. Das Target einer jeden SektionMappinggibt dabei den gewünschten Ziel-IO-Kanal an. Für die Default-Konfiguration kann der Kanal als ungemappedNoMappingoder mit einerSTExpressionvorbelegt werden.Parameters: In dem UnterabschnittParamkann der WertValueeines jeden Parameters, der im Target der Sektion angegeben wird, spezifiziert werden.
Mehrfachsteckplatz
In der Sektion Slot_Multi kann eine Liste von Subinstanzen und Referenzen definiert werden.
SEC Slots //optional: yes, modifier: [UPDATE]]
SEC Slot_Multi : <slot name> //optional: yes, modifier [HIDE,UPDATE]
Variable := <variable name>; //optional: no, type: InstancePath
Var_Count := <variable for count>; //optional: no, type: InstancePath
Role := <name role>; //optional: no, type: text
Cardinality := [<minimum> .. <maximum>]; //optional: no, type: Cardinality
Type := <slot type>; //optional: no, type: SlotType
Inst_Prefix := <instance prefix>; //optional: yes, type: ID
Pragmas := <pragma list>; //optional: yes, type: Pragmalist
Default_Inst_Name := <instance name>; //optional: yes, type: text
RegularExpressionParameterId := <RegEx param ID> //optional: yes, type: text
SEC Default_Allocation : //optional: yes, modifier [UPDATE]
Module_Name := <default module ID>; //optional: yes, type: ID
Instance_Name := <default name>; //optional: yes, type: ID
NotDeletable := TRUE/FALSE //optional: yes, type: BoolFlag
SEC VisuEmbeddings //optional: yes, modifier [UPDATE]
Empty := TRUE/FALSE; //optional: yes, type: BoolFlag
SEC Embedding : <visu identifier> //optional: yes, modifier [UPDATE]
VisuName := <visu name>; //optional: no, type: ID
Target := <target name>; //optional: yes, type: ID
LinkId := <link ID>; //optional: yes, type: ID
END_SEC
END_SEC
SEC PageVisu //optional: yes, modifier [UPDATE]
VisuName := <visu name>; //optional: yes, type: ID
TopLevelTap := TRUE/FALSE; //optional: yes, type: BoolFlag
END_SEC
SEC IOMappings //optional: yes, modifier [UPDATE]
SEC Mapping : <mapping identifier>; //optional: yes, modifier [UPDATE]
NoMapping := TRUE/FALSE; //optional: yes, type: BoolFlag
STExpression := <ST expression>; //optional: yes, tye: ID/ST expression
END_SEC
END_SEC
SEC Parameters //optional: yes, modifier [UPDATE]
SEC Param : <param identifier> //optional: yes, modifier [UPDATE]
Value := <value>; //optional: no, type: ID)
END_SEC
END_SEC
END_SEC
END_SEC
END_SECVar_Countbeschreibt den Eingangs-Instanzpfad eines Modulfunktionsbausteins von ganzzahligem Typ. In dieser Variable wird gespeichert, wie viele Instanzen mit dem Steckplatz verbunden sind.Cardinalitydefines die minimale und maximale Anuahl von Instanzen.Mit dem Abschnitt
Slot_Multi.Default_Allocationkönnen Default-Belegungen für Steckplätze mit variabler Anzahl von Elementen definiert werden. Sie müssen über eindeutige Targets identifiziert werden. Die Instanzen werden in der Reihenfolge der Abschnitte eingefügt. Für den Modulnamen und Instanznamen gelten die Angaben fürSlot.DefaultModuleoderSlot.DefaultName. Die Anzahl der Default-Belegungen darf die obere Stelligkeit nicht überschreiten.Die von einem
Slot_Multi-Abschnitts adressierte Variable muss vom TypPOINTER TO <INTERFACE>sein.Jede ganzzahlige Eingangsvariable darf maximal einmal durch
Var_Countadressiert werden. (Dies bezieht auchInstRef_Multi.Var_CountundVarArray.Var_Countmit ein)
SEC Slot
SEC Slot_Multi : subs
Variable := pSubs;
Var_Count := uiArraySize;
Role := TL.Role;
Cardinality := [2 .. 17];
Type := SUBMODULE;
RegularExpressionParameterId := Param_RegEx_Ref;
SEC Default_Allocation : def1
Module_Name := Sub1;
Instance_Name := Submodule;
END_SEC
Name := TL.Input1_Name;
Desc := TL.Input1_Desc;
END_SEC
END_SECDer Deklarationsteil des Funktionsbausteines muss uiArraySize: UINT; pSubs: POINTER TO ITestModule enthalten.
Im Beispiel wird ein Steckplatz definiert, der mindestens 2, höchstens aber 17 Unterinstanzen fasst. Für die Unterinstanzen wird ein Array erzeugt, pSubs zeigt auf das Array. Ein Submodul vom Typ Sub1 wird beim Anlegen der Instanz automatisch erzeugt und mit Namen Submodule unter den Steckplatz eingehängt.