Sección: Slots
Esta sección define la disponibilidad y el tipo de ranuras de los módulos en el árbol de módulos. Se pueden definir dos tipos diferentes de slots.
Slot
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_SECLos detalles sobre la sintaxis de los tipos de definición se describen en la sección Declaración del módulo.
- La sección - Slotdefine una ranura que permite 0 conexiones o 1 conexión.
- El objetivo de la sección - Slotdebe identificar el parámetro de forma única. Como resultado, no debe haber dos ranuras diferentes (ya sea- Sloto- Slot_Multi) que tienen el mismo objetivo. (Las mayúsculas/minúsculas son irrelevantes).
- La definición - Variablees una ruta de instancia de entrada relativa al bloque de funciones del módulo. La ruta de instancia puede hacer referencia en todos sus componentes únicamente a variables de entrada (en instancias de estructura también a variables locales). El tipo de variable direccionada debe ser una interfaz o un tipo de FB. Dos slots diferentes no deben utilizar la misma variable.
- Roledefine la descripción del rol de la ranura.
- Typedefine el tipo de ranura. El tipo de conexión puede tener los siguientes valores:- SUBMODULE: Ranura para instancias de submódulo.
- REFERENCE: Ranura para instancias de submódulo referenciadas.
- DECOUPLED: Ranura para instancias de módulo "desacopladas".- Ver también: Sección: Desacoplados 
 
- Inst_Prefixes un prefijo que se utiliza para el nombre de la variable FB generada. Prefijo vacío (- Inst_Prefix := ;) también es posible, pero puede crear conflictos con otros nombres de variables del bloque de funciones. Sólo puede especificarse para- SUBMODULEtipo ranuras.
- Optionaldefine si se permite dejar la ranura abierta o si se debe conectar.
- Default_Inst_Namese puede utilizar para definir un nombre predeterminado para las instancias de módulo que son hijos de esta ranura. Cada módulo que se agregue obtendrá este nombre de forma predeterminada utilizando la entrada de la lista de texto definida por "Default_Inst_Name". Se prefiere el nombre predeterminado de la ranura al de los metadatos del módulo.
- Pragmascontiene una lista de pragmas del compilador que se insertan antes de las instancias FB de los submódulos. Los pragmas solo se pueden utilizar para espacios administrados.
- RegularExpressionParameterIddefine un parámetro de tipo STRING/WSTRING para esta ranura. El valor de este parámetro se interpreta como una expresión regular y debe coincidir con el nombre del submódulo insertado.
- las secciones - Slot.Default_Allocationy- Slot_Multi.Default_Allocationpermite definir configuraciones predeterminadas para ranuras con números variables de elementos (Multi_Slots y Slots). Para- Slots.Multi_Slotdeben ser identificados por objetivos únicos, mientras que- Slots.Slotno tiene target y solo puede tener uno- Default_Allocationsección. La instancia se agregará dependiendo de su posición dentro de la sección. El nombre del módulo y el nombre de la instancia siguen la definición de- Slot.DefaultModuley- Slot.DefaultName. Si estas definiciones no están disponibles, la configuración de- Default_Allocation.Module_Namey- Default_Allocation.Instance_Namese utilizará. Se recomienda utilizar- Default_Allocation.*para tragamonedas en lugar de- DefaultModuley- DefaultNameque sólo existe por razones de compatibilidad. La configuración de la instancia del módulo predeterminado se puede definir en las subsecciones de- Default_Allocation:- Module_Namedefine el nombre del módulo del cual se creará una instancia automáticamente. Si el módulo proviene de una biblioteca, el nombre del módulo debe estar calificado con un espacio de nombres. El parámetro solo está permitido para ranuras de tipo- SUBMODULE.- No se permiten llamadas infinitas y crearán un mensaje de error (ejemplo: la declaración del módulo "A" contiene el módulo predeterminado "B"; la declaración del módulo "B" contiene el módulo predeterminado "A"). 
- Instance_Namedebe especificarse siempre que- DefaultModulese especifica, y nunca de otra manera. Debe ser un identificador IEC válido que se utiliza como nombre de la instancia del módulo predeterminado. El nombre no debe comenzar ni terminar con un subrayado (- _). Los nombres predeterminados de todas las ranuras de una declaración deben ser únicos. (La distinción entre mayúsculas y minúsculas no hace ninguna diferencia).
- NotDeletableespecifica si el módulo puede ser eliminado por el usuario. Si- TRUE, entonces el módulo no se puede eliminar. Se muestra un mensaje de error. Si el parámetro es- FALSEo se omite, entonces el módulo se puede eliminar.
- VisuEmbeddings: Si el- EmptyEl parámetro está configurado en- TRUE, luego se crea una lista vacía de visus incrustados para esta instancia de módulo. Si el valor es- FALSE, luego se puede generar la lista deseada de visualizaciones integradas para la instancia del módulo a través de la lista de visualizaciones integradas deseadas en el- Embeddingsubsección. Cada- EmbeddingLa sección debe definir el nombre.- VisuNamedel visu incorporado deseado para este propósito y puede especificar propiedades adicionales como- Targeto- LinkIdde este visu incrustado.
- PageVisu: En esta sección se puede elegir el PageVisu de la instancia del módulo (- VisuName). Además, se puede definir si esta visu crea una- TopLevelTap. El parámetro- TopLevelTaphay que darle los valores- TRUEy- FALSE.
- IOMappings: En la subsección- MappingSe pueden definir los canales de E/S. Los objetivos de las secciones.- Mappingdescribir el canal de E/S de destino. El valor predeterminado se puede establecer en- NoMappingo a un- STExpression.
- Parameters: En la subsección- Paramel valor- Valuede cada parámetro que está definido en el objetivo de la sección se puede definir.
 
Ranura_Multi
Mediante el uso de la sección Slot_Multi Se puede crear una lista de subinstancias y referencias.
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_Countdefine la ruta de la instancia de entrada del bloque de funciones del módulo. Esta variable (de tipo Integer) guardará la información sobre la cantidad de instancias conectadas a la ranura.
- CardinalityDefine el número mínimo y máximo de instancias.
- El - Slot_Multi.Default_AllocationLa sección se puede utilizar para definir asignaciones predeterminadas para espacios con un número variable de elementos. Deben identificarse mediante objetivos únicos. Las instancias se insertan en el orden de las secciones. Para el nombre del módulo y el nombre de la instancia, las especificaciones para- Slot.DefaultModuleo- Slot.DefaultNameaplicar. El número de asignaciones predeterminadas no debe exceder el dígito superior.
- La variable abordada por un - Slot_Multila sección debe ser de tipo- POINTER TO <INTERFACE>.
- Cada variable de entrada de tipo entero puede ser direccionada por - Var_Countsólo una vez. (Esto también incluye- InstRef_Multi.Var_County- VarArray.Var_Count).
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_SECEntre otras declaraciones, la parte de declaración del bloque de funciones debe contener: uiArraySize: UINT; pSubs: POINTER TO ITestModule.
En el ejemplo, se define una ranura que contiene al menos 2, pero como máximo 17 subinstancias. Se creará una matriz para las subinstancias y pSubs lo señala. Al agregar la instancia el submódulo con nombre Submodule de tipo Sub1 se agregará automáticamente a la ranura.