Skip to main content

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.

. Spécification:
  • 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 soit Slot ou Slot_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 pour SUBMODULE 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 et Slot_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). Pour Slots.Multi_Slot ils doivent être identifiés par des cibles uniques alors que Slots.Slot n'a pas de cible et ne peut en avoir qu'une Default_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 de Slot.DefaultModule et Slot.DefaultName. Si ces définitions ne sont pas disponibles, les paramètres de Default_Allocation.Module_Name et Default_Allocation.Instance_Name sera utilisé. Il est recommandé d'utiliser Default_Allocation.* pour les emplacements au lieu de DefaultModule et DefaultName 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 de Default_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 type SUBMODULE.

      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 fois DefaultModule 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. Si TRUE, le module ne peut pas être supprimé. Un message d'erreur s'affiche. Si le paramètre est FALSE ou s'il est omis, le module peut alors être supprimé.

    • VisuEmbeddings: Si la Empty le paramètre est réglé sur TRUE, puis une liste vide de visus intégrés est créée pour cette instance de module. Si la valeur est FALSE, 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 le Embedding sous-section. Chaque Embedding la section doit définir le nom VisuName de la visu intégrée souhaitée à cet effet et peut spécifier des propriétés supplémentaires telles que Target ou LinkId 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 un TopLevelTap. Le paramètre TopLevelTap il faut donner les valeurs TRUE et FALSE.

    • IOMappings: Dans la sous-section Mapping les canaux d'E/S peuvent être définis. Les cibles des sections Mapping décrire le canal d'E/S cible. La valeur par défaut peut être définie sur NoMapping ou à un STExpression.

    • Parameters: Dans la sous-section Param la valeur Value 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
. Spécifications supplémentaires :
  • 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 pour Slot.DefaultModule ou Slot.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 type POINTER TO <INTERFACE>.

  • Chaque variable d'entrée de type entier peut être adressée par Var_Count juste une fois. (Cela inclut également InstRef_Multi.Var_Count et VarArray.Var_Count).

Exemple 21. Exemple
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.