Gestion de deux programmes comportant une meme base de sous VI

Bonjour à tous,
Je me pose une question sur la gestion/maintenance avancée de programmes Labview, voici la problématique :
- J'ai créé un programme assez complexe (environ 150 sous VI) gérant une machine d'essai utilisée actuellement dans mon labo.
- Cette machine a été physiquement dupliqué pour pour un labo sur autre site du groupe, donc pour l'instant avec le meme programme Labview
- Nous voulons faire évoluer les fonctionnalités de la deuxième machine seulement, sans toutefois toucher à la première ... Il me faut donc créer un deuxième programme LV qui partagera la même base que le premier, tout en étant différent dans certaines zones du code (pour les nouvelles fonctions)
D'où ma question :
Comment faire au niveau du projet Labview,  pour que les deux programmes puissent exister ensemble ? Par exemple, si je corrige un bug ou que j'améliore une fonctionnalité commune, il faudra que les deux programmes soient mis à jour en même temps ; des sous VI peuvent exister pour l'un des programmes et pas pour l'autre ... etc
Est-ce clair ? Si oui, des idées ?
Cdlt,
WM
Wilfried.

Bonjour,
Voici ce que je te propose comme solution:
- Dupliquer ton VI principal en le renommant en "VI-Principal_2.vi" par exemple, en faisant pareil pour les sous-VI qui doivent être modifiés séparément.
- Mettre à jour les sous-VI copiés dans le "VI Principal_2.vi"
Le tout restant dans le même projet, et en générant 2 applications EXE correspondant à tes 2 VI principaux.
Ainsi tous les Sous-VI qui seront communs pourront être modifiés sur tes 2 applications simultanément et tout ce qui doit être traité séparément pourra l'être également.
Espérant t'avoir aidé dans ta problématique
Cordialement,
JP
Julien P.
Certified LabVIEW Developer

Similar Messages

  • Comparer deux chaine contenant une valeure numerique variable

    Bonjour à tous,
    je cherche une maniere simple de comparer deux chaines contenant une valeure numerique variable au milieux mais sans tenir compte de cette valeure. Par exemple les chaine suivante :
    Debut_chaine_00_Fin_de_chaine
    Debut_chaine_01_Fin_de_chaine
    Debut_chaine_02_Fin_de_chaine
    comparées avec une chaine de reference me renverrai "true" si le format de la chaine est reconu soit "Debut_chaine_" une valeure numérique sur 2 digit et " _Fin_de_chaine" ou False dans le cas contraire.
    Aurriez vous une idée pour ce genre de fonction ?
    Merci
    Sébastien
    Résolu !
    Accéder à la solution.

    au lieu de "supérieur à -1", tu peux utiliser directement "supérieur ou égal à 0"
    (c'est juste pour faire le malin  )
    [0-9][0-9] == [0-9]{2}

  • Gestion de plusieurs langues sur une IHM

    Bonjour,
    J'ai réalisé un programme avec CVI 9 dont l'IHM est en français. Mon client me demande, tout en gardant l'IHM en français, de pouvoir accepter dans tous les contrôles "texte" des châines de caractères dans différentes langues (aussi bien du turc que du polonais ou du chinois...).
    Est-il possible de réaliser ceci?
    J'ai noté la possibilité de changer le charset utilisé pour les contrôles, mais je ne sais pas si cela correspond à mon besoin.
    De plus, les fonctions "multibytes" utilisées pour gérér chaînes de caractères multibyte (type chinois) permettent elles également de gérer les chaînes de caractères classiques? Ou faut il prévoir deux traitements différents?
    Merci de votre aide sur ce sujet épineux
    Mathieu

    Bonjour Mathieu,
    Je vous invite à regarder le lien suivant: Using LabWindows/CVI Localization Utility with Single/Multiple Byte Languages.
    Ainsi que les liens associés en bas de page.
    Je pense qu'il vous aideront à clarifier l'utilisation de plusieurs langues, et des caractères spéciaux.
    Cordialement,
    Olivier L. | Certified LabVIEW Developer

  • Peut-on utiliser une caméra pour deux applications sur une seule machine?

    Bonjour à tous,
    Mon problème est le suivant:
    Je possède une caméra GIGE  que je souhaiterai utiliser sous VBAI et Labview sur un seul poste, et en même temps.
    J'ai regardé les fonctionalités de "Broadcast" et "Multicast" dans la documentation Imaqdx mais le fait d'avoir une caméra
    pour deux applications n'est pas évoqué. 
    L'erreur basique: "Caméra already in use" s'affiche alors.
    Auriez vous une solution pour contourner ce problème s'il vous plaît ?
    Cordialement,
    Yoann B
    Résolu !
    Accéder à la solution.

    Bonjour,
    Je confirme que le mode multicast ne fonctionne qu'avec plusieurs machines.
    La solution la plus elegante qui existe a ce probleme est de creer une System Variable de type image dans VBAI que vous choisirez de partager sur le reseau(Tools>>Variable Manager), d'utiliser la step Set Variable dans le dernier onglet (Use Additional Tools) pour assigner sa valeur par example a l'image courante traitee dans VBAI. Les variables systemes qui sont "Network Shared" dans VBAI sont en fait des Shared Variables dans LabVIEW.
    Dans LabVIEW, vous pouvez creer un shared variable de type image, que vous pouvez lier a cette variable partagee de VBAI et en faire ce que vous voulez dans votre application LabVIEW.
    En esperant que ca vous depanne. Je reitere le conseil de Titou de poster sur ce forum en Anglais.
    Salutations,
    Christophe

  • Programmation d'une table dans l'interface UIR

    Bonjour,
    Je désire utiliser une table de données (donc les cellules sont de type "string") que je créé à partir de l'interface utilisateur (*.uir). La création de cette table ne me pose pas trop de problèmes, mais j'aimerais pouvoir ajouter une nouvelle case entre deux cases déjà remplies. Donc il faudrait que je puisse décaler toutes les cases (déjà remplies) qui suivent cette nouvelle case. Comment puis-je procéder afin de pouvoir ajouter cette fonctionnalité à la table ? Avez-vous des exemples ? Je vous en remercie d'avance et n'hésitez pas à me contacter s'il manque des précisions dans ma demande.
    Salutations !

    Bonjour,
    J'ai essayé de créér une nouvelle ligne et une nouvelle colonne mais je n'obtiens pas uniquement la création d'une seule cellule. Je vous joins l'interface UIR et ainsi que le fichier source contenant la fonction Calback permettant de créer cette cellule. Lorsque je pointe le curseur de la souris sur ma case 7 et que je clique sur "Insérer" dans la barre des menus de ma table je devrais obtenir uniquement une case vide entre la case 5 et 7. Or j'obtiens une colonne et une ligne. Comment faire dans ma fonction "CVICALLBACK Insertion" afin de n'obtenir qu'une seule case ?
    P.S.: voir la pièce jointe pour mieux comprendre.
    void CVICALLBACK Insertion (int menuBar, int menuItem, void *callbackData, int panel)
    Point cellMap ;
    Point cellCourante ;
    GetActiveTableCell (PANEL, PANEL_TABLE, &cellMap); // case active
    InsertTableRows (PANEL, PANEL_TABLE, cellMap.y +1, 1, VAL_CELL_STRING); // création d'une ligne
    InsertTableColumns(PANEL, PANEL_TABLE, cellMap.x, 1, VAL_CELL_STRING); // création d'une colonne
    DeleteTableColumns (PANEL, PANEL_TABLE, 14, 1); // Effacement de la dernière colonne de la table
    DeleteTableRows (PANEL, PANEL_TABLE, 20, 1); // Effacement de la dernière ligne de la table
    Pièces jointes :
    Test_table.zip ‏5 KB

  • Mettre en pause boucle while qui comporte une attente

    Bonjour,
    Je cherche à interrompre une attente qui est dans une boucle while.
    A l'aide d'un bouton pause par ex. je voudrais interrompre l'attente et en enlevant la pause, reprendre l'attente où elle en était.
    Merci pour vos idées.
    Manu

    Bonjour Manu,
    Tu trouveras un exemple ici :
    https://decibel.ni.com/content/docs/DOC-10792
    Cdlmt,
    Pierre
    Pierre V, Application Engineer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    LabVIEW Tour
    Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014

  • Paaser un booleen à une DLL créer sous labview

    J'ai créé une dll à partir d'un VI. Pendant la création je précise bien une variable booleenne que j'utilise. Mais au moment d'utiliser cette dll avec labview il me propose un  signed 8. J'aimerais savoir comment faire passer directement mon booleen à la dll sans etre obligé d'adapter la variable...
    j'ai éfféctué beaucoup de recherche sur le forum, si vous avez  une solution merci de me faire signe

    Bonjour,
    Afin de pouvoir plus facilement vous aider, je vais avoir besoin de vos informations afin de mieux cerner le problème.
    Pouvez-vous m’indiquer quelle est la version de LabVIEW que vous utilisez ?
    Vous est il possible, également, de préciser par quel moyen vous communiquez entre le PC d’où vous exécutez le code LabVIEW et le banc de test (bus GPIB, port USB + compact DAQ, autre…) ?
    Le VI d’origine dont vous souhaitez extraire des informations fonctionne t il bien avec le banc de mesure ?
    Dans le nouveau VI que vous créez, contenant vos DLL, est ce que les protocoles habituels de communication sont bien définis (gestion des tâches, si besoin, ouverture et fermeture des  communications avec le banc…) ?
    Pourriez vous m’envoyer, par exemple, le VI sur lequel vous travaillez ou un exemple de code reproduisant le problème (par exemple un sous VI contenant votre DLL) ?
    Je vous remercie par avance pour votre réponse.
    Guillaume H.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense

  • Comment conditionn​é l'entrée dans une interface utilisateu​r sous labview?

    Bonjour,
    J'ai utilisé le VI "Prompt user for input" pour demander à l'utilisateur d'entrer des données (Matricule ouvrier, numéro d'article, numéro de commande, désignation d'arcticle...) en fait lorsque j'exécute mon programme il m'affiche un msg qui me demande d'entrés ces donnés, mais le problème que si je clique sur ok on laissant des champ vide le programme passe sans afficher un msg d'erreur qui demande à l'utilisateur qu'il ya des champs vide , aussi je voudrais faire des conditions sur les entres par exemple le champ du matricule ouvrier il faut qu'il contient 4 chiffre ni plus ni moins si c'est pas vrai il affiche un msg d'erreur merci infiniment de me répondre

    Bonjour,
    Tu peux afficher n'importe quel sous-vi que tu crées. Pour cela il faut configurer son exécution avec Open front panel when called pour afficher la fenêtre et Close afterwards if originally closed
    Ces options sont accessibles dans les propriétés du vi, ou lorsqu'il est sur le diagramme en faisant clic droit SubVI node setup.
    Cordialement,
    Simon D.
    CLA | Certified LabVIEW Architect
    CTA | Certified TestStand Architect

  • Rotation de la video une fois importée sous elements p. 8

    bonjour,
    peut-on tourner la video ( ou une section ) d'un quart de tour dans la fenêtre  ligne de montage une fois sélectionnée
    merci

    Cliquez avec le bouton droit sur le clip sur l'axe temporel et sélectionnez Propriétés. Ouvrez la Motion propriétés et définissez la Rotation à 90 degrés ou - 90 degrés.

  • Labwindows/CVI générer 2 tensions différentes en meme temps

    Bonjour,
    Voici mon probleme, je souahiterais générer deux tensions analogique diférentes en meme temps.
    Pour cela je posséde deux cartes d'acquisitions NI 9263 qui sont dans un Ni cDAQ-9172.
    J'ai essayé de faire la generation de ces deux signaux dans une meme tache, mais je ne sais pas comment envoyer un signal different sur chaque voie.
    La seconde solution a été de générer deux taches, synchronisées sur un trigger pour les démarrer en meme temps, la encore j'ai un probleme, CVI me renvoie une erreur disant que la resource spécifiée est réservée.
    voici l'organisation de mon code:
    DAQmxCreateTask (Master task)
    DAQmxCreateAOVoltageChan(Master task)
    DAXmxCfgSampClkTiming(Master task)
    DAQmxCreateTask (slave task)
    DAQmxCreateAOVoltageChan(slave task)
    DAXmxCfgSampClkTiming(slave task)
    GetTerminalNameWithDevPrefix(Trigger)
    DAQmxWriteAnalogF64 (Master task)
    DAQmxWriteAnalogF64 (Slave task)
    Avez vous une solution pour resoudre ce probleme?
    Je vous remercie,
    cordialement
    Résolu !
    Accéder à la solution.

    Bonjour,
    Je vous remercie de votre réponse. Je viens d'essayer ce que vous me dite. Mais cela ne change rien, je me retrouve avec les deux signaux identiques. En divisant le nombre d'echantillons par rapport a mon tableau, je n'envoie alors que la premiere partie de mon tableau, mais toujours sur les deux sorties. et non premeir partie de mon tableau sur une voie et deuxieme partie sur la deuxieme
    voici mon code:
     double Fe=100000;
     double Vmin=-10, Vmax=10;
     int N_samples= 80000;
     TaskHandle AOtaskHandle=0;
    Generation(tableau_pulse, pressure); // creer un signal en marche d'escalier
     DAQmxCreateTask("",&AOtaskHandle);    
     DAQmxCreateAOVoltageChan (AOtaskHandle, "Dev1/ao1", "", Vmin, Vmax, DAQmx_Val_Volts, NULL);
      DAQmxCreateAOVoltageChan (AOtaskHandle, "Dev1/ao0", "", Vmin, Vmax, DAQmx_Val_Volts, NULL); 
     DAQmxCfgSampClkTiming (AOtaskHandle, "", Fe, DAQmx_Val_Rising,DAQmx_Val_ContSamps, N_samples);                 
     DAQmxSetWriteAttribute (AOtaskHandle, DAQmx_Write_RegenMode, DAQmx_Val_DoNotAllowRegen);
     DAQmxWriteAnalogF64 (AOtaskHandle, N_samples/2, FALSE, 5, DAQmx_Val_GroupByScanNumber, tableau_pulse , NULL, NULL); tableau_pulse
     // DAQmx Start Code
     DAQmxStartTask(AOtaskHandle); 
    Delay (0.8);
     Error: 
      if( AOtaskHandle )
       // DAQmx Stop Code
       DAQmxStopTask(AOtaskHandle);          
       DAQmxClearTask(AOtaskHandle);          
       AOtaskHandle = 0;             
     free(tableau_pulse);
    cordialement

  • Associer une dll à un projet et executer un programme appelant sans mettre la dll dans VXI pnp

    Bonjour
    Je souhaiterai exécuter un programme appelant une dll que j'ai compilé et que j'ai lier à l'exécutable mais pas placé dans VXI pnp.
    La compilation se passe bien mais lorsque je lance l'application, un message apparaît et indique que la dll est intraouvable j'ai inclut le chemin du dossier dans lequel est stocké la DLL dans les include path mais sans succès.
    Merci d'avance pour votre aide

    Bonjour,
    Merci d'avoir posté votre question sur le forum de National Instruments.
    Pourvez-vous m'envoyer votre code?
    Brice S.
    National Instruments France

  • Ouvrir le programme principal d'une LLB sans passer par le gestionnaire de LLB ?

    Bonjour,
    Sous Labview2012, j'ai créé une LLB comprenant un programme de niveau principal et plusieurs sous-vi. Quand je double-clique sur ma LLB, une fenêtre "Gestionnaire de LLB" s'ouvre. Je voudrais pouvoir exécuter le programme de niveau principal directement après avoir double-cliqué sur la LLB, sans passer par la fenêtre "Gestionnaire de LLB". Est-ce possible ? Si oui, comment faire ?
    Merci.
    Résolu !
    Accéder à la solution.

    Hello,
    Pour LabVIEW, une llb est assimilée à un dossier. Pour accéder à un fichier sous Windows, on passe toujours par un dossier. C'est sensiblement la même chose ici. A noter aussi qu'on peut avoir plusieurs Top-Level VIs dans une llb. Il n'y a pas de main.
    La seule alternative à laquelle je penserais serait de passer par le bout de code suivant, en ayant pris soin de définir dans les options de navigations (menu contextuel de la commande chemin) qu'on traite les llb comme des dossiers :
    Cdt,
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • Deux études simultanées

    Bonjour, j'ai fait un programme permettant de charger décharger une batterie tout en mesurant sa tension.
    Et je souhaites pouvoir le faire sur deux batteries en même temps. J'a d'abord essayé de lancer le programme deux fois (avec deux noms différents) en changeant les voies, ca na pas marché. Du coup j'ai modifié le programme, je travaillais de base dans une boucle while, et j'en ai créé une autre pour l'autre mesure, et ca ne marche toujours pas. J'ai cette erreur qui s'affiche : "L'erreur -50103 s'est produite à : DAQmx Start Task.vi:7220004"
    Auriez vous une idée ?
    Merci d'avance
    Pièces jointes :
    prog alim charge mesure 2 2 batteries.vi ‏210 KB

    Salut,
    Il est possible d'appeler simultanément un vi plusieurs fois, pour cela il faut configuré le vi en mode exécution réetrante: Fichier>>Propriétés du Vi>>Execution.
    Par défaut, les vi sont confgurés en "exéxution non réantrante", c'est à dire que si le vi est appelé plusieurs fois simultanément les appeleants doivent se relayer pour l'execution de celui-ci.
    Réentrance : autorisation d'appels simultanés au même sous-VI
    Reg

  • Simuler une horloge externe avec MAX

    Bonjour,
    Pour un projet, je dois acquérir des horloges externes (moteur) afin de synchroniser les éléments.
    Notament, je dois mettre en forme les deux horlogues en entrée afin de générer un horloge de sunchronisation.
    J'aimerai simuler la génération des deux horlogue sous MAX mais je rencontre des difficultés.
    Mes horloges possèdent une fréquence de 200Khz et sont déphasée de 90° l'une par rapport à l'autre. Je dois sur les deux horloges détecter les fronts montant et descendant.
    J'ai besoin d'aide pour simuler les deux horloges avec MAX.
    Merci d'avance

    Bonjour vince30,
    Je ne suis pas sure de bien comprendre ce que vous voulez faire.
    MAX vous permet de simuler une carte et donc simule les signaux que vous recevrez. Vous pouvez par exemple simuler une carte PCI-6221. Ensuite vous pouvez allez dans paneaux de test et dans E/S compteurs. Ensuite vous pouvez générer un train d'impulsion (et donc une horloge). Vous pouvez aussi faire du comptage de front et donc détecter des fronts montants ou descendant. Seulement comme votre carte est simulée, rien ne sera généré et pour les compteurs la détection de front ne détecte rien en simulation.
    Le but de la simulation d'une carte est que vous puissiez l'utiliser dans votre programme sans l'avoir mais vous ne pouvez pas choisir le signal qui sera simulé. Avec le driver NI-DAQmx, il y a de nombreux exemples avec des compteurs. Vous pouvez en utiliser un et directement tester le programme avec une carte simulée. Vous n'aurez pas de signaux réels mais vous aurez des message d'erreurs si vous essayez de faire quelque chose que la carte ne permet pas par exemple.
    Si vous voulez simuler un signal il vous faudra le créér par programmation. Avec LabVIEW, il y a des fonctions de simulation de signal.
    J'espère que ceci vous aidera.
    Cordialement,
    Charlotte F. | CLAD
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> "Du 11 octobre au 17 novembre, 2 sessions en parallèle : bien démarrer - approfondir vos connais...

  • Erreur lors d'utilsation d'un formulaire d'ajout avec une table view

    Bon soir !*
    je suis entrain de realiser une application de gestion des ressource humaine d une usine ds le cadre de projet fin d etude
    ds une page jspx j ai ajouter une formulaire et un tableau de la meme vue! plus trois bouton createinsert commit et rollback dont le but de realiser une page d ajout des employer mais quands j clique sur creat insert pour creer un ligne vierge dans le table je resoi cet erreur:
    """""le detail de la clé Emplyer avec la clé de la ligne nulle ne parvien pas a trouver l'entité proprietaire ou l'invalider""""""
    et ca echou je ne sais pas la cause exacte et je menstionne que la table contien des clé secondaire pour faire des< lien avec les table formation, abcence , recrutement...
    j attends vos proposition merci!!!
    Edited by: user9365857 on 17 mai 2010 15:40

    de l aide svp !!!!!!!!!! c'est urgent

Maybe you are looking for

  • Do I need to buy a Mac pro with an iMac?

    I'm planning on buying a 27-inch iMac, do I need to buy a Mac Pro (single processor) or any other hardware etc with the iMac PC?

  • IPod nano wont update because it says its windows based

    My iPod wont update because it says that it is Windows based. I have never used it on a Windows machine. How do i change it to mac based.

  • Cant get rid of JOptionPane Message title

    Im trying to get some user input using a JOptionPane message. I am able to get the information that im looking for but when the window comes up there is a header that says "JOptionPane message" and I would like to get rid of this. Here is the code th

  • (SOLVED) hot plug notifications in gnome 3.2

    when a drive or media is inserted into the system there is a notification asking for us to either choose its menu or click on its borders to make it go away,while we are busy working at something else. It doesnt automatically slide down with the rout

  • Attempting to apply Patch 5639232 to 10.2.0.2 client

    When the client was installed, OPatch was not installed. Patch will not install without OPatch. Has anyone experienced this problem? How did you work around the missing OPatch?