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 ob- Slotoder- Slot_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 Typ- SUBMODULEangegeben 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ür- Slots.Multi_Slotmüssen diese durch eindeutige Targets beschrieben werden, wogegen- Slots.Slotkein Target und nur einen Abschnitt- Default_Allocationbesitzt. Die Instanz wird wird gemäß ihrer Position innerhalb des Abschnitts eingefügt. Der Modulname und Instanzname wird durch- Slot.DefaultModulebzw.- Slot.DefaultNamebeschrieben. Wenn diese Definitionen nicht vorhanden sind, werden- Default_Allocation.Module_Nameund- Default_Allocation.Instance_Nameverwendet. Es wird empfohlen,- Default_Allocation.*anstelle von- DefaultModuleund- DefaultNamefür Slots zu verwenden, da diese nur noch aus Kompatibilitätsgründen vorhanden sind. Die Definition einer Default-Modulinstanz kann im Unterabschnitt- Default_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 Typ- SUBMODULEerlaubt.- 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, wenn- DefaultModuleangegeben 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. Wenn- TRUE, dann kann das Moduls nicht gelöscht werden. Es wird ein Fehlerdialog angezeigt. Ist der Parameter- FALSEoder wird er weggelassen, kann das Modul gelöscht werden.
- VisuEmbeddings: Wird der Parameter- Emptyauf- TRUEgesetzt, so wird eine leere Liste an Embedded-Visus für diese Modulinstanz angelegt. Wenn der Wert- FALSEist, kann über die Auflistung der gewünschten Embedded-Visus im Unterabschnitt- Embeddingdie gewünschte Liste von Embedded-Visus für die Modulinstanz erzeugt werden. Jede Sektion- Embeddingmuss dazu den Namen- VisuNameder gewünschten Embedded-Visu definieren und kann zusätzliche Eigenschaften wie- Targetoder- LinkIddieser Embedded-Visu angeben.
- PageVisu: In dieser Sektion kann die gewählte PageVisu der Modulintanz gewählt werden (- VisuName). Weiterhin kann angegeben werden, ob diese einen- TopLevelTaperzeugen soll. Der Parameter- TopLevelTapkann dazu nur die Werte- TRUEund- FALSEannehmen.
- IOMappings: Im Unterabschnitt- Mappingkann hier die Belegung von IO-Kanälen festegelegt werden. Das Target einer jeden Sektion- Mappinggibt dabei den gewünschten Ziel-IO-Kanal an. Für die Default-Konfiguration kann der Kanal als ungemapped- NoMappingoder mit einer- STExpressionvorbelegt werden.
- Parameters: In dem Unterabschnitt- Paramkann der Wert- Valueeines 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_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ür- Slot.DefaultModuleoder- Slot.DefaultName. Die Anzahl der Default-Belegungen darf die obere Stelligkeit nicht überschreiten.
- Die von einem - Slot_Multi-Abschnitts adressierte Variable muss vom Typ- POINTER TO <INTERFACE>sein.
- Jede ganzzahlige Eingangsvariable darf maximal einmal durch - Var_Countadressiert werden. (Dies bezieht auch- InstRef_Multi.Var_Countund- VarArray.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.