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.
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 seaSlot
oSlot_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 paraSUBMODULE
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
ySlot_Multi.Default_Allocation
permite definir configuraciones predeterminadas para ranuras con números variables de elementos (Multi_Slots y Slots). ParaSlots.Multi_Slot
deben ser identificados por objetivos únicos, mientras queSlots.Slot
no tiene target y solo puede tener unoDefault_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 deSlot.DefaultModule
ySlot.DefaultName
. Si estas definiciones no están disponibles, la configuración deDefault_Allocation.Module_Name
yDefault_Allocation.Instance_Name
se utilizará. Se recomienda utilizarDefault_Allocation.*
para tragamonedas en lugar deDefaultModule
yDefaultName
que 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_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 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_Name
debe especificarse siempre queDefaultModule
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. SiTRUE
, entonces el módulo no se puede eliminar. Se muestra un mensaje de error. Si el parámetro esFALSE
o se omite, entonces el módulo se puede eliminar.VisuEmbeddings
: Si elEmpty
El 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 elEmbedding
subsección. CadaEmbedding
La sección debe definir el nombre.VisuName
del visu incorporado deseado para este propósito y puede especificar propiedades adicionales comoTarget
oLinkId
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 unaTopLevelTap
. El parámetroTopLevelTap
hay que darle los valoresTRUE
yFALSE
.IOMappings
: En la subsecciónMapping
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 enNoMapping
o a unSTExpression
.Parameters
: En la subsecciónParam
el valorValue
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
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 paraSlot.DefaultModule
oSlot.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 tipoPOINTER TO <INTERFACE>
.Cada variable de entrada de tipo entero puede ser direccionada por
Var_Count
sólo una vez. (Esto también incluyeInstRef_Multi.Var_Count
yVarArray.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_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.