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 seaSlotoSlot_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 paraSUBMODULEtipo 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_AllocationySlot_Multi.Default_Allocationpermite definir configuraciones predeterminadas para ranuras con números variables de elementos (Multi_Slots y Slots). ParaSlots.Multi_Slotdeben ser identificados por objetivos únicos, mientras queSlots.Slotno tiene target y solo puede tener unoDefault_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 deSlot.DefaultModuleySlot.DefaultName. Si estas definiciones no están disponibles, la configuración deDefault_Allocation.Module_NameyDefault_Allocation.Instance_Namese utilizará. Se recomienda utilizarDefault_Allocation.*para tragamonedas en lugar deDefaultModuleyDefaultNameque sólo existe por razones de compatibilidad. La configuración de la instancia del módulo predeterminado se puede definir en las subsecciones deDefault_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 tipoSUBMODULE.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 queDefaultModulese 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. SiTRUE, entonces el módulo no se puede eliminar. Se muestra un mensaje de error. Si el parámetro esFALSEo se omite, entonces el módulo se puede eliminar.VisuEmbeddings: Si elEmptyEl parámetro está configurado enTRUE, luego se crea una lista vacía de visus incrustados para esta instancia de módulo. Si el valor esFALSE, 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 elEmbeddingsubsección. CadaEmbeddingLa sección debe definir el nombre.VisuNamedel visu incorporado deseado para este propósito y puede especificar propiedades adicionales comoTargetoLinkIdde 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 unaTopLevelTap. El parámetroTopLevelTaphay que darle los valoresTRUEyFALSE.IOMappings: En la subsecciónMappingSe 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 enNoMappingo a unSTExpression.Parameters: En la subsecciónParamel valorValuede 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_SECVar_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 paraSlot.DefaultModuleoSlot.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 tipoPOINTER TO <INTERFACE>.Cada variable de entrada de tipo entero puede ser direccionada por
Var_Countsólo una vez. (Esto también incluyeInstRef_Multi.Var_CountyVarArray.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.