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.
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 undecoupled module
est inséré dans undecoupled 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", voirRubrique : Machines à sous
). Les plongements par défaut souhaités doivent être décrits dans les sous-sectionsEmbedding
.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
etEmbedded_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_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.
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 surAC_Visu_Base instances
. Utiliser la variable de visualisation globaleCURRENTCLIENTID
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émentaireGetModuleFrameIndex
. 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 (voirIModule
dansAC_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 (voirIModule
dansAC_Module_Base.library
) possède un membre,Environment.visus
, ce qui correspond à ce qui précèdepaVisuFB
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.