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_SEC
Details über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.
Der Abschnitt
Slot
definiert 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 obSlot
oderSlot_Multi
), die dasselbe Target haben. (Groß-/Kleinschreibung ist unerheblich.)Variable
ein 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.Role
definiert die Rollenbezeichnung des Steckplatzes.Type
definiert 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_Prefix
ist 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 TypSUBMODULE
angegeben werden.Optional
gibt an, ob der Steckplatz unverbunden bleiben darf oder immer verbunden werden muss.Default_Inst_Name
dient 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.Pragmas
enthä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.RegularExpressionParameterId
definiert 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_Allocation
bzw.Slot_Multi.Default_Allocation
können Default-Einstellungen für Steckplätze mit variabler Anzahl von Elementen (Multi_Slots und Slots) festgelegt werden. FürSlots.Multi_Slot
müssen diese durch eindeutige Targets beschrieben werden, wogegenSlots.Slot
kein Target und nur einen AbschnittDefault_Allocation
besitzt. Die Instanz wird wird gemäß ihrer Position innerhalb des Abschnitts eingefügt. Der Modulname und Instanzname wird durchSlot.DefaultModule
bzw.Slot.DefaultName
beschrieben. Wenn diese Definitionen nicht vorhanden sind, werdenDefault_Allocation.Module_Name
undDefault_Allocation.Instance_Name
verwendet. Es wird empfohlen,Default_Allocation.*
anstelle vonDefaultModule
undDefaultName
für Slots zu verwenden, da diese nur noch aus Kompatibilitätsgründen vorhanden sind. Die Definition einer Default-Modulinstanz kann im UnterabschnittDefault_Allocation
festgelegt werden.Module_Name
ist 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 TypSUBMODULE
erlaubt.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_Name
muss immer dann angegeben werden, wennDefaultModule
angegeben 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.)NotDeletable
legt 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 ParameterFALSE
oder wird er weggelassen, kann das Modul gelöscht werden.VisuEmbeddings
: Wird der ParameterEmpty
aufTRUE
gesetzt, so wird eine leere Liste an Embedded-Visus für diese Modulinstanz angelegt. Wenn der WertFALSE
ist, kann über die Auflistung der gewünschten Embedded-Visus im UnterabschnittEmbedding
die gewünschte Liste von Embedded-Visus für die Modulinstanz erzeugt werden. Jede SektionEmbedding
muss dazu den NamenVisuName
der gewünschten Embedded-Visu definieren und kann zusätzliche Eigenschaften wieTarget
oderLinkId
dieser Embedded-Visu angeben.PageVisu
: In dieser Sektion kann die gewählte PageVisu der Modulintanz gewählt werden (VisuName
). Weiterhin kann angegeben werden, ob diese einenTopLevelTap
erzeugen soll. Der ParameterTopLevelTap
kann dazu nur die WerteTRUE
undFALSE
annehmen.IOMappings
: Im UnterabschnittMapping
kann hier die Belegung von IO-Kanälen festegelegt werden. Das Target einer jeden SektionMapping
gibt dabei den gewünschten Ziel-IO-Kanal an. Für die Default-Konfiguration kann der Kanal als ungemappedNoMapping
oder mit einerSTExpression
vorbelegt werden.Parameters
: In dem UnterabschnittParam
kann der WertValue
eines 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_SEC
Var_Count
beschreibt den Eingangs-Instanzpfad eines Modulfunktionsbausteins von ganzzahligem Typ. In dieser Variable wird gespeichert, wie viele Instanzen mit dem Steckplatz verbunden sind.Cardinality
defines die minimale und maximale Anuahl von Instanzen.Mit dem Abschnitt
Slot_Multi.Default_Allocation
kö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.DefaultModule
oderSlot.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_Count
adressiert werden. (Dies bezieht auchInstRef_Multi.Var_Count
undVarArray.Var_Count
mit 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_SEC
Der 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.