Skip to main content

Rubrique : Visu

SEC Visu                                          //optional: yes, modifier: [UPDATE]
    Toplevel_Tab;                                 //optional: yes, type: bool
    Embedded := [%PAGE_VISU%, <visu1>,...];       //optional: yes, type: VisuList
    Embedded_Proxy := [%PAGE_VISU%, <visu1>,...]; //optional: yes, type: VisuList
    Page =: [<visu1>, <visu2>,...];               //optional: yes, type: VisuList

    SEC DefaultEmbeddings                         //optional: yes
            SEC Embedding : <visu identifier>         //optional: yes, modifier: [HIDE, UPDATE]
                    VisuName := <visu name>;                    //optional: no, type: literal
                    Target := <target name>;                    //optional: yes, type: literal
                    ProxyVisuName := <visu name>;               //optional: yes, type: literal
                    LinkId := <linkID>;                         //optional: yes, type: literal
            END_SEC
    END_SEC

    SEC Toplevel_Tab_Hotkey                      //optional: yes
            Hotkey := <keycode>;                        //optional: no, type: literal
            Modifiers := <modifier>;                    //optional: yes, modifier: [SHIFT, CONTROL, ALT]
    END_SEC

END_SEC

Les détails concernant la syntaxe des types de définition sont décrits dans la section Déclaration des modules.

. Spécification:
  • Toplevel_Tab définit si la case à cocher Créer un onglet de niveau supérieur dans l'éditeur HMI est activé ou désactivé par défaut.

  • Page définit une liste d'objets de visualisation disponibles pour le module.

  • Embedded définit une liste d'objets de visualisation disponibles du sous-module qui seront intégrés dans d'autres écrans de visualisation.

    Utilisation de l'espace réservé %PAGE_VISU% au lieu du nom de la visualisation, les écrans de visualisation générés peuvent éventuellement être intégrés dans d'autres écrans.

  • Embedded_Proxy définit une liste des objets de visualisation disponibles du module. La liste n'est utilisée que si un decoupled module est inséré dans un decoupled slot et s'il n'est pas créé sous le contrôleur de son instance de module père (en tant que proxy).

  • Pour les modules qui importent un autre module, l'espace réservé %NONE% peut être utilisé à la place du nom de la visualisation. Cela a pour effet que les visualisations importées sont masquées. Cette approche est possible aussi bien pour la liste des écrans de visualisation que pour les écrans de (proxy-)visualisation embarqués.

  • Section: DefaultEmbeddings: Cette section sert à la spécification des encastrements par défaut, qui apparaîtront alors comme une pré-configuration sur le IHM onglet d'un sous-module (similaire à la section "Default_Allocation", voir Rubrique : Machines à sous). Les plongements par défaut souhaités doivent être décrits dans les sous-sections Embedding.

    Prérequis : L'objet de visualisation spécifié et le proxy doivent être disponibles dans la liste des incorporations possibles pour le module (voir ci-dessus : Embedded et Embedded_Proxy).

  • Section: Toplevel_Tab_Hotkey: Cette section définit un raccourci clavier comme paramètre par défaut pour la page de niveau supérieur. Les raccourcis clavier ne doivent pas être utilisés plus d'une fois. Ce paramètre peut être ajusté dans l'éditeur de module sur le IHM languette.

Exemple 23. Exemple
SEC Visu
        Toplevel_Tab ;
        Page := [VISU_CNC_Machine_1, VISU_CNC_Machine_2];
        Embedded := [%PAGE_VISU%];
        SEC DefaultEmbeddings
                 SEC Embedding : No1
                         VisuName := SubModule_Emb;
                         Target := '../../TopLevel_2';
                 END_SEC
                 SEC Embedding : No2
                         VisuName := SubModule_Emb_2;
                         //ProxyVisuName := SubModule_Emb_1;
                         Target := '';// leave empty for next ancestor
                 END_SEC
        END_SEC
        SEC Toplevel_Tab_Hotkey
                Hotkey := T;
                Modifiers := SHIFT | CONTROL;
        END_SEC
END_SEC


Le nom de la visualisation est le nom de l'objet de visualisation respectif (non sensible à la casse). L'objet de visualisation doit se trouver au même niveau hiérarchique que le bloc fonction du module.

. Règles pour l'interface des objets de visualisation :
  • Tous les objets de visualisation et les objets de visualisation intégrés peuvent avoir une variable VAR_IN_OUT avec le nom inst, qui peut être du type du bloc fonction du module ou d'une classe de base. Le nom de la variable n'est pas sensible à la casse.

    VAR_IN_OUT

      inst : <MODULE_FB> ;

    END_VAR

    Comme alternative à l'option décrite ici avec VAR_IN_OUT, une variable VAR_INPUT peut également être utilisée. Cette variable doit répondre aux exigences suivantes :

    • Nom: inst

    • Type : interface que le bloc fonction du module implémente

  • Les objets de visualisation intégrés peuvent avoir deux variables supplémentaires (les noms de variables ne sont pas sensibles à la casse) :

    VAR_INPUT

    paVisuFB : POINTER TO POINTER TO AC_Visu_Base ;

    iOwnFrameIndex : INT ;

    END_VAR

    Ces variables doivent être définies ensemble ; il n'est pas permis de définir l'un sans l'autre. Ces deux variables permettent aux visualisations intégrées de basculer le cadre central dans la visualisation de niveau supérieur. paVisuFB est un tableau de pointeurs sur AC_Visu_Base instances. Utiliser la variable de visualisation globale CURRENTCLIENTID pour accéder à l'instance correcte du client actuel. La commutation de trame est effectuée par une action ST de la forme :

    paVisuFB[CURRENTCLIENTID]^.uiFrameIdx := iOwnFrameIndex ;

    iOwnFrameIndex est l'indice que l'image de visualisation du propre module a dans ce cadre de niveau supérieur. (Si le propre module ne définit pas d'image de visualisation, cet indice est -1.)

  • Hormis les variables mentionnées ci-dessus, aucune autre variable VAR_INPUT, VAR_OUTPUT ou VAR_INOUT n'est autorisée.

  • le AC_Visu_Base les instances fournissent la fonction supplémentaire GetModuleFrameIndex. Cette fonction renvoie l'indice de l'écran de visualisation (si présent) dans la visualisation de niveau supérieur pour une instance de module (voir IModule dans AC_Module_Base.library). Avec cette fonction, vous pouvez accéder à n'importe quel écran de visualisation dans l'arborescence des instances de module. Pour permettre également la navigation dans le code d'un module, l'environnement du module (voir IModule dans AC_Module_Base.library) possède un membre, Environment.visus, ce qui correspond à ce qui précède paVisuFB aiguille.

Astuce

Pour pouvoir utiliser la variable CURRENTCLIENTID, la bibliothèque VisuGlobalClientManager (catégorie "Intern|Visu") doit être ajouté au projet.

La première visualisation sera utilisée comme paramètre par défaut.