Skip to main content

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_SEC

Los detalles sobre la sintaxis de los tipos de definición se describen en la sección Declaración del módulo.

. Especificación:
  • La sección Slot define una ranura que permite 0 conexiones o 1 conexión.

  • El objetivo de la sección Slot debe identificar el parámetro de forma única. Como resultado, no debe haber dos ranuras diferentes (ya sea Slot o Slot_Multi) que tienen el mismo objetivo. (Las mayúsculas/minúsculas son irrelevantes).

  • La definición Variable es 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.

  • Role define la descripción del rol de la ranura.

  • Type define 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_Prefix es 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 SUBMODULE tipo ranuras.

  • Optional define si se permite dejar la ranura abierta o si se debe conectar.

  • Default_Inst_Name se 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.

  • Pragmas contiene 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.

  • RegularExpressionParameterId define 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_Allocation y Slot_Multi.Default_Allocation permite definir configuraciones predeterminadas para ranuras con números variables de elementos (Multi_Slots y Slots). Para Slots.Multi_Slot deben ser identificados por objetivos únicos, mientras que Slots.Slot no tiene target y solo puede tener uno Default_Allocation secció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.DefaultModule y Slot.DefaultName. Si estas definiciones no están disponibles, la configuración de Default_Allocation.Module_Name y Default_Allocation.Instance_Name se utilizará. Se recomienda utilizar Default_Allocation.* para tragamonedas en lugar de DefaultModule y DefaultName que 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_Name define 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_Name debe especificarse siempre que DefaultModule se 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).

    • NotDeletable especifica 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 FALSE o se omite, entonces el módulo se puede eliminar.

    • VisuEmbeddings: Si el Empty El 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 Embedding subsección. Cada Embedding La sección debe definir el nombre. VisuName del visu incorporado deseado para este propósito y puede especificar propiedades adicionales como Target o LinkId de 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 TopLevelTap hay que darle los valores TRUE y FALSE.

    • IOMappings: En la subsección Mapping Se pueden definir los canales de E/S. Los objetivos de las secciones. Mapping describir el canal de E/S de destino. El valor predeterminado se puede establecer en NoMapping o a un STExpression.

    • Parameters: En la subsección Param el valor Value de 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
. Especificaciones adicionales:
  • Var_Count define 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.

  • Cardinality Define el número mínimo y máximo de instancias.

  • El Slot_Multi.Default_Allocation La 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.DefaultModule o Slot.DefaultName aplicar. El número de asignaciones predeterminadas no debe exceder el dígito superior.

  • La variable abordada por un Slot_Multi la sección debe ser de tipo POINTER TO <INTERFACE>.

  • Cada variable de entrada de tipo entero puede ser direccionada por Var_Count sólo una vez. (Esto también incluye InstRef_Multi.Var_Count y VarArray.Var_Count).

ejemplo 21. Ejemplo
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

Entre 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.