Rubrique : Machines à sous
Cette section définit la disponibilité et le type d'emplacements des modules dans l'arborescence des modules. Deux types différents de slots peuvent être définis.
Fente
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
Les détails concernant la syntaxe des types de définition sont décrits dans la section Déclaration du module.
La section
Slot
définit un emplacement qui autorise 0 connexion ou 1 connexion.La cible de la section
Slot
doit identifier le paramètre de manière unique. Il ne doit donc pas y avoir deux emplacements différents (que ce soitSlot
ouSlot_Multi
) qui ont la même cible. (Les majuscules/minuscules ne sont pas pertinentes.)La définition
Variable
est un chemin d'instance d'entrée relatif au bloc fonctionnel du module. Le chemin d'instance peut faire référence dans tous ses composants uniquement à des variables d'entrée (pour les instances de structure également à des variables locales). Le type de la variable adressée doit être une interface ou un type FB. Deux slots différents ne doivent pas utiliser la même variable.Role
définit la description du rôle du slot.Type
définit le type d'emplacement. Le type de connexion peut avoir les valeurs suivantes :SUBMODULE
: Emplacement pour les instances de sous-modules.REFERENCE
: Emplacement pour les instances de sous-modules référencées.DECOUPLED
: Emplacement pour instances de modules "découplés".Voir également: Section : Découplé
Inst_Prefix
est un préfixe utilisé pour le nom de la variable FB générée. Préfixe vide (Inst_Prefix := ;
) est également possible, mais peut créer des conflits avec d'autres noms de variables du bloc fonction. Ne peut être spécifié que pourSUBMODULE
tapez des emplacements.Optional
définit s'il est permis de laisser le slot ouvert ou s'il doit être connecté.Default_Inst_Name
peut être utilisé pour définir un nom par défaut pour les instances de module étant des enfants de cet emplacement. Chaque module ajouté recevra ce nom par défaut en utilisant l'entrée de liste de textes définie par "Default_Inst_Name". Le nom par défaut du slot est préféré à celui des métadonnées du module.Pragmas
contient une liste de pragmas du compilateur qui sont insérés avant les instances FB des sous-modules. Les pragmas ne peuvent être utilisés que pour les emplacements gérés.RegularExpressionParameterId
définit un paramètre de type STRING/WSTRING pour ce slot. La valeur de ce paramètre est interprétée comme une expression régulière et elle doit correspondre au nom du sous-module inséré.Les rubriques
Slot.Default_Allocation
etSlot_Multi.Default_Allocation
permettent de définir les paramètres par défaut pour les slots avec un nombre d'éléments variable (Multi_Slots et Slots). PourSlots.Multi_Slot
ils doivent être identifiés par des cibles uniques alors queSlots.Slot
n'a pas de cible et ne peut en avoir qu'uneDefault_Allocation
section. L'instance sera ajoutée en fonction de sa position dans la section. Le nom du module et le nom de l'instance suivent la définition deSlot.DefaultModule
etSlot.DefaultName
. Si ces définitions ne sont pas disponibles, les paramètres deDefault_Allocation.Module_Name
etDefault_Allocation.Instance_Name
sera utilisé. Il est recommandé d'utiliserDefault_Allocation.*
pour les emplacements au lieu deDefaultModule
etDefaultName
qui n'existe que pour des raisons de compatibilité. Les paramètres de l'instance de module par défaut peuvent être définis dans les sous-sections deDefault_Allocation
:Module_Name
définit le nom du module dont une instance sera créée automatiquement. Si le module provient d'une bibliothèque, le nom du module doit être qualifié avec namespace. Le paramètre n'est autorisé que pour les emplacements de typeSUBMODULE
.Les appels infinis ne sont pas autorisés et créeront un message d'erreur (exemple : la déclaration du module "A" contient le module par défaut "B" ; la déclaration du module "B" contient le module par défaut "A").
Instance_Name
doit être précisé à chaque foisDefaultModule
est spécifié, et jamais autrement. Il doit s'agir d'un identifiant CEI valide qui est utilisé comme nom de l'instance de module par défaut. Le nom ne doit ni commencer ni se terminer par un soulignement (_
). Les noms par défaut de tous les slots d'une déclaration doivent être uniques. (Le respect de la casse ne fait aucune différence.)NotDeletable
précise si le module peut ou non être supprimé par l'utilisateur. SiTRUE
, le module ne peut pas être supprimé. Un message d'erreur s'affiche. Si le paramètre estFALSE
ou s'il est omis, le module peut alors être supprimé.VisuEmbeddings
: Si laEmpty
le paramètre est réglé surTRUE
, puis une liste vide de visus intégrés est créée pour cette instance de module. Si la valeur estFALSE
, la liste souhaitée des visualisations intégrées peut être générée pour l'instance de module via la liste des visualisations intégrées souhaitées dans leEmbedding
sous-section. ChaqueEmbedding
la section doit définir le nomVisuName
de la visu intégrée souhaitée à cet effet et peut spécifier des propriétés supplémentaires telles queTarget
ouLinkId
de cette visu embarquée.PageVisu
: Dans cette section, le PageVisu de l'instance de module peut être choisi (VisuName
). De plus, il peut être défini si cette visu crée unTopLevelTap
. Le paramètreTopLevelTap
il faut donner les valeursTRUE
etFALSE
.IOMappings
: Dans la sous-sectionMapping
les canaux d'E/S peuvent être définis. Les cibles des sectionsMapping
décrire le canal d'E/S cible. La valeur par défaut peut être définie surNoMapping
ou à unSTExpression
.Parameters
: Dans la sous-sectionParam
la valeurValue
de chaque paramètre défini dans la cible de la section peut être défini.
Slot_Multi
En utilisant la section Slot_Multi
une liste de sous-instances et de références peut être créée.
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
définit le chemin de l'instance d'entrée du bloc fonctionnel du module. Cette variable (de type Integer) enregistrera les informations sur le nombre d'instances connectées au slot.Cardinality
définit le nombre minimum et maximum d'instances.Le
Slot_Multi.Default_Allocation
La section peut être utilisée pour définir des allocations par défaut pour les emplacements avec un nombre variable d'éléments. Ils doivent être identifiés via des cibles uniques. Les instances sont insérées dans l'ordre des sections. Pour le nom du module et le nom de l'instance, les spécifications pourSlot.DefaultModule
ouSlot.DefaultName
appliquer. Le nombre d'affectations par défaut ne doit pas dépasser le chiffre supérieur.La variable adressée par un
Slot_Multi
la section doit être de typePOINTER TO <INTERFACE>
.Chaque variable d'entrée de type entier peut être adressée par
Var_Count
juste une fois. (Cela inclut égalementInstRef_Multi.Var_Count
etVarArray.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 autres déclarations, la partie déclaration du bloc fonctionnel doit contenir : uiArraySize: UINT; pSubs: POINTER TO ITestModule
.
Dans l'exemple, un emplacement est défini et contient au moins 2, mais au plus 17 sous-instances. Un tableau sera créé pour les sous-instances et pSubs
le souligne. Lors de l'ajout de l'instance, le sous-module portant le nom Submodule
de type Sub1
sera ajouté automatiquement à l’emplacement.