CENTAURE version 23lv9 Ecriture des fonctions de contrôle Sommaire Installation :... 2 Méthode :... 3 Ecrire la controlemono.dll avec Labview : ctrlm.vi... 3 Diagramme du traitement par événement des monodims:... 4 Easymono.vi :... 4 Ctrlm.vi : (exemple)... 5 Paramètres d appel ctrlm.vi:... 6 Résolution de problèmes avec controlemono:... 7 Contrôle de la définition du prototype de la fonction ctrlm.vi :... 7 Configuration de l appel à la DLL controlemonolv.dll :... 10 Ecrire la controlebidim.dll avec Labview : ctrlb.vi... 13 Diagramme de traitement par événement du Bidim :... 13 Easybidim.vi :... 14 ctrlb.vi : (exemple)... 14 Paramètres d appel ctrlb.vi :... 15 Résolution de problèmes avec controlebidim:... 16 Contrôle de la définition du prototype de la fonction ctrlb.vi :... 16 Configuration de l appel à la DLL :... 19 1
Installation : L INSTALL de CENTAURE contient les 2 mini-projets qui ont servi à la construction des DLL des histogrammes bidimensionnels et monodimensionnels utilisateur. Ce sont ces DLL que CENTAURE devra prendre. Par défaut, à son chargement, il va chercher : C:\Program Files\centaure\data\controlebidim.dll et..controlemonolv.dll Après l INSTALL les projets peuvent être ouverts directement à travers le menu démarrer de windows : 1- L INSTALL ajoute ce sous-menu dans le Menu démarrer Les exemples de projet qui s ouvriront se trouvent sous : - C:\Program Files\centaure\data_USER9\controlebidimlv et - C:\Program Files\centaure\ data_user9\controlemonolv. 2- exemple du projet pour l'histogramme bidimensionnel Les 2 projets peuvent être recopiés pour être adaptés à votre acquisition selon la méthode ci-dessous. Il sera possible de trouver sur le serveur web de SUBATECH d autres exemples de mini-projet qu il suffira de décompresser sur son disque. 2
Méthode : C est le fichier de lecture vme qui va structurer les données des événements à analyser. La fonction de traitement dépend donc essentiellement de ce fichier. Il faudra avoir créé une liste d actions vme pour lancer, dans un premier temps, une acquisition d évènements bruts. Sans avoir développé de code pour une visualisation de spectres calculés, on enregistrera des RUN (.acq). On quitte CENTAURE pour écrire maintenant la fonction(dll) de contrôle. Les RUN et le fichier d actions xxx.vme qui a servi à le produire seront réinjectés dans un programme d aide à la mise au point de la DLL de contrôle sous LabView. Les histogrammes définis devront être autorisés et les matrices définis dans la fenêtre «VISU-CONTROL» dans Centaure comme dans Easybidim/Easymono. On peut s inspirer des exemples fournis et les modifier. Ouvrir par exemple les projets : C:\Prog Files\centaure\data_USER9\controlebidimlv\Projet.demoX/Projet Bidim.lvproj C:\Prog Files\centaure\data_USER9\controlemonolv\Projet.demoX/Projet Mono.lvproj En utilisant les projets distribués, les DLL crées vont vers les chemins: C:\prog files\centaure\instr.lib\controlebidim.dll C:\prog files\centaure\instr.lib\ controlemono.dll Pour utiliser ces nouvelles DLL ne pas oublier d effacer ou de renommer les DLL installées lors de l Install du kit de centaure : C:\Program Files\centaure\data\controlebidim.dll et..controlemonolv.dll Elles sont chargées à l ouverture des.vi qui les appelle. Ne pas oublier de fermer les.vi appelant pour compiler/construire puis relancer l application qui fait appel à ces DLL pour les recharger. CENTAURE les chargera «silencieusement» à partie de ce chemin que si les dll d origine ont bien été renommées. Ecrire la controlemono.dll avec Labview : ctrlm.vi Ouvrir le projet fourni : ProjetEasyMono.lvproj. Dans ce projet on trouve au niveau le plus haut : Easymono.vi qui est la surcouche qui appelle votre code. Pour le test, vous devez disposer au préalable d un fichier RUN brut runxxx.acq et du fichier actionsxxx.vme qui a servi à le produire. Easybidim.vi lira comme le ferait CENTAURE en REPLAY le couple de fichiers actionsxxx.vme/runxxx.acq. Le résultat sera affiché dans la matrice de sortie(cette version produit Le tableau d index qui pointent sur les lectures par blocks si elles existent). 1. Editer votre nouvelle fonction ctrlm.vi qui doit produire l'histo monodim calculé. Dans le projet, il faut ignorer dans un 1er temps DLLctrlm.vi et sa DLL controlemonolv.dll. 2. Tester la fonction sous Labview avec la couche supérieure easymono.vi en utilisant un couple de fichiers actionsxxx.vme/runxxx.acq. 3. Fermez Easymono.vi 4. Produire la nouvelle DLL qui sera chargé au redémarrage via DLLctrlm.vi : Toujours dans le même projet, clic droit sur controlemonolv et faire Construire pour créer la nouvelle DLL. 3
ctrlm.vi construire DLLctrlm.vi : controlemonolv.dll fonction ctrlm 5. Re-ouvrir easymono.vi qui va prendre la dernière DLL compilée. 6. Tester la DLL en comparant l exécution du code graphique à la DLL que vous venez de produire grâce à l inverseur en face-avant. Si tout se passe bien, vous pouvez maintenant démarrer CENTAURE qui chargera cette nouvelle DLL. Diagramme du traitement par événement des monodims: Comme pour le bidim, la fonction d incrémentation des spectres monodim est appelée à chaque événement. Elle doit traiter tous les spectres mono demandés (7 maxi). Easymono.vi : 4
Ctrlm.vi : (exemple) Figure 3 - Face avant de "visu control" : index du descripteur de paramètres 5
Paramètres d appel ctrlm.vi: Cluster u_int16 Array 1D Cluster Cluster Cluster(4 U16 Array 1D, 2 U32 Array 1D, 1 SGL Array 1D) int32 Array SGL Array int32 Code de sortie Format du fichier «1D array pti32» : Voir Ecrire la controlebidim.dll-format du fichier «1D array pti32» Format du fichier «1D array ptsg» : Voir Ecrire la controlebidim.dll-format du fichier «1D array ptsg» Format du tableau «array_index_fifo» : Voir Ecrire la controlebidim.dll-format du tableau «array_index_fifo» int32 Array 6
Résolution de problèmes avec controlemono: Ne pas oublier d effacer ou de renommer les DLL installées par défaut : C:\Program Files\centaure\data On ne peut compiler(construire) une nouvelle DLL que si elle n est pas déjà chargée en mémoire fermez tout.vi ou programme qui utilise cette DLL. Respecter/vérifier le prototype de la fonction avant la construction : Contrôle de la définition du prototype de la fonction ctrlm.vi : Dans ProjetEasyMono.lvproj modifier si nécessaire le protototype, il doit être conforme à la description suivante : controlemonolv Spécification de construction sur controlemonodimlv clic droit+propriétés (ou double clic) fichiers source Vis exportés : ctrlm.vidéfinir le prototype 7
8
Figure 1 9
Configuration de l appel à la DLL controlemonolv.dll : Dans le test «easymono.vi», l appel dans DLLctrlm.vi à la DLL controlemonolv.dll doit être configuré et correspondre au prototype de la fonction, ici ctrlm Figure 2 Clic droit sur «Appeler une fonction d une DLL» Configurer paramètres 10
Figure 3 11
Figure 4 12
Ecrire la controlebidim.dll avec Labview : ctrlb.vi Ouvrir le projet fourni : ProjetEasyBidim.lvproj. Dans ce projet on trouve au niveau le plus haut : Easybidim.vi qui est la surcouche qui appelle votre code. Pour le test, vous devez disposer au préalable d un fichier RUN brut runxxx.acq et du fichier actionsxxx.vme qui a servi à le produire. Easybidim.vi lira comme le ferait CENTAURE en REPLAY le couple de fichiers actionsxxx.vme/runxxx.acq. Le résultat sera affiché dans la matrice de sortie(cette version produit Le tableau d index qui pointent sur les lectures par blocks si elles existent). 1. Editer votre nouvelle fonction ctrlb.vi qui doit produire l'histo bidim calculé. Dans le projet, il faut ignorer dans un 1er temps DLLctrlb.vi et sa DLL controlebidim.dll. 2. Tester la fonction sous LabView avec la couche supérieure easybidim.vi en utilisant un couple de fichiers actionsxxx.vme/runxxx.acq. 3. Fermez Easybidim.vi 4. Produire la nouvelle DLL qui sera chargé au redémarrage via DLLctrlb.vi : Toujours dans le même projet, clic droit sur controlebidimlv et faire Construire pour créer la nouvelle DLL. ctrlb.vi construire DLLctrlb.vi: controlebidimlv.dll, fonction ctrlb 5. Re-ouvrir easybidim.vi qui va prendre la dernière DLL compilée. 6. Tester la DLL en comparant l exécution du code graphique LabView comme pendant la mise au point à la DLL par l inverseur en face-avant de Easymono.vi Si tout se passe bien, vous pouvez maintenant démarrer CENTAURE qui chargera cette nouvelle DLL. Diagramme de traitement par événement du Bidim : Depuis la version 21Lv85, la fonction d incrémentation du spectre Bidim est appelée comme pour les monodim, à chaque événement d un buffer de CENTAURE. Le numéro de l événement courant est passé en paramètre : no evenement ds buffer. 13
Easybidim.vi : ctrlb.vi : (exemple) 14
Figure 5 - Face avant de "visu control" : index du descripteur de paramètres Paramètres d appel ctrlb.vi : SGL Array int32 Array cluster u_int16 Array 1D cluster int32 Array Code de sortie u_int16 Array 2D int32 Cluster 15
Format du fichier «1D array pti32» : Ce tableau est écrit dans un fichier ASCII en «clair». Il est relu par CENTAURE ou easybidim.vi à qui l on aura donné son chemin d accès. Index_value(I32) TAB value(i32) carriage_return line_feed - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Index_value(I32) TAB value(i32) carriage_return line_feed Format du fichier «1D array ptsg» : Index_value(I32) TAB value(sgl) carriage_return line_feed - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Index_value(I32) TAB value(sgl) carriage_return line_feed Format du tableau «array_index_fifo» : Ce tableau est créé dans CENTAURE (ou Easybidim/mono.vi) durant l acquisition si on lit des FIFO de type CAEN V550(Word Count suivi d une série de lectures). «Array_index_fifo» contient les OFFSET par rapport au début de l événement des Words Counts des lectures blocs. Il y a autant de séries d offset qu il y a d événement dans un buffer. Structure pour 2x fifo de type v550: [ Evt nber ][ size1][. ][W.C.][..fifo..][W.C.] [..fifo..][ -1] [ Evt nber+1][ size2[....][w.c.][etc array_index_fifo(0) = 1er offset événement courant array_index_fifo(1) = 2me offset-------------- array_index_fifo(2) = 1er offset-------------------------------------------------------------------------------- etc Résolution de problèmes avec controlebidim: Ne pas oublier d effacer ou de renommer les DLL installées par défaut : C:\Program Files\centaure\data On ne peut compiler(construire) une nouvelle DLL que si elle n est pas déjà chargée en mémoire fermez tout.vi ou programme qui utilise cette DLL. Respecter/vérifier le prototype de la fonction avant la construction : Contrôle de la définition du prototype de la fonction ctrlb.vi : Dans le projet controlebidim.lvproj modifier si nécessaire le protototype, il doit être conforme à la description suivante : controlebidimlv Spécification de construction sur controlebidimlv clic droit+propriétés (ou double clic) fichiers source Vis exportés : ctrlb.vidéfinir le prototype 16
Figure 6 17
18
Configuration de l appel à la DLL : Dans votre programme de test easybidim.vi, votre appel dans DLLctrlB.vi à la DLL controlebidimlv.dll doit être configuré pour correspondre au prototype de la fonction, ici ctrlb Figure 7 Clic droit sur «Appeler une fonction d une DLL» Configurer paramètres 19
Figure 8 20
Figure 9 21