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_SECLes détails concernant la syntaxe des types de définition sont décrits dans la section Déclaration des modules.
- Toplevel_Tabdé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.
- Pagedéfinit une liste d'objets de visualisation disponibles pour le module.
- Embeddeddé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_Proxydéfinit une liste des objets de visualisation disponibles du module. La liste n'est utilisée que si un- decoupled moduleest inséré dans un- decoupled slotet 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 : - Embeddedet- 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.
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_SECLe 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.
- 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. - paVisuFBest un tableau de pointeurs sur- AC_Visu_Base instances. Utiliser la variable de visualisation globale- CURRENTCLIENTIDpour 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 ;- iOwnFrameIndexest 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_Baseles 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- IModuledans- 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- IModuledans- AC_Module_Base.library) possède un membre,- Environment.visus, ce qui correspond à ce qui précède- paVisuFBaiguille.
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.