From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Appeler un sous VI sur demande

Bonjour,

Je voudrais réaliser un programme sous labview qui permet d'effectuer une acquisition de données, et appelle à la demande (sans rompre le Programme) un sous VI qui affiche un graphe de données et permet de le fermer (sans perdre les données).

Merci par avance  

0 Compliments
Message 1 sur 13
3 904 Visites

Bonjour N_Eden,

 

Merci d'avoir posté sur le forum National Instruments.

 

Il y a plusieurs manières d'arriver à faire cela en LabVIEW, alors je te propose une solution que je trouve élégante. Elle est basée sur les files d'attente. De mon VI principal j'utilise une file d'attente pour transférer mes données entre 2 boucles (une boucle d'acquisition et une boucle de traitement). J'utilise cette file d'attente pour récupérer mes données dans mon sous-VI de visualisation grâce à la fonction Aperçu du premier élément d'une file d'attente. Ainsi je récupère l'élément sans le supprimer de ma file d'attente. Pour bien te démontrer ce que je dis, dans mon VI principal je récupère le nombre d'élément généré par ma boucle d'acquisition et le nombre d'élément reçu dans ma boucle de traitement (ils doivent être égaux sinon c'est que je perds des éléments ;-).

 

PS: j'ai codé un peu vite et je n'ai pas géré complétement les erreurs

    Benjamin R.


Senior LabVIEW Developer @Neosoft


Message 2 sur 13
3 897 Visites

Je vous remercie pour votre convivialité. J'essayerai votre solution dès que possible et je vous répondrai (je viens de la déposer dans la discussion "Downconvert VI Requests" parce que je n'ai que la version labview 8.5).

Merci pour vos efforts

0 Compliments
Message 3 sur 13
3 868 Visites

Voici le projet en LV 8.5

 

Pas besoin de passer par le forum Downconverter, il est possible d'enregistrer dans les versions précédentes (dans mon cas en LabVIEW 2010 je peux descendre jusqu'à 8.0).

 

So Enjoy 😉

    Benjamin R.


Senior LabVIEW Developer @Neosoft


0 Compliments
Message 4 sur 13
3 850 Visites

Benjamin, je n'ai pas trouvé le projet dans le fichier zippé, je te serai reconnaissante de le réenvoyer.

Merci 

0 Compliments
Message 5 sur 13
3 848 Visites

Désolé voici le ZIP avec le projet LV en 8.5

    Benjamin R.


Senior LabVIEW Developer @Neosoft


Message 6 sur 13
3 843 Visites

Je te remercie pour la conversion.

J'ai exécuté le programme, sauf que quand je click sur "visualisation" le nombre généré ds le sous VI et différent de celui du VI principal (il s'incrémente mais reste inférieur)

0 Compliments
Message 7 sur 13
3 830 Visites

Bonjour,

 

Oui et c'est tout à fait le comportement que mon programme doit avoir.

 

De ce que j'ai compris j'ai implémenté un programme qui:

- dans un VI principal transfert tous les éléments à une boucle de traitement (aucune perte, le nombre d'élément dans la boucle productrice et le même que celui dans la boucle consommatrice)

- dans un sous-VI vient afficher les données au moment où le sous VI tourne. Il est normal vu que tes VIs ne sont pas synchronisé que dans Visualisation du ai moins d'élément que dans le VI principal

 

D'après ta question j'en déduis que je n'ai pas due comprendre ce que tu souhaiter implémenter. De plus ce n'est qu'un exemple, à toi de le reprendre pour que celui-ci réponde complètement à ton cahier des charges. J'espère que tu as compris le principe mis en jeu.

 

N'hésite pas à me détailler ton cahier des charges et si tu as des questions

    Benjamin R.


Senior LabVIEW Developer @Neosoft


0 Compliments
Message 8 sur 13
3 818 Visites

Je vous remercie pour l'exemple.  Je pense que c'est moi qui n'ai pas compris l'idée de votre programme au début. Mais là je crois qu'il me faudrait l'adapter à mon exemple afin d'y voir mieux :).

 

J'ai une autre question dans le même contexte. Est-ce que c'est possible d'appeler un sous VI à partir d'un bouton sur le VI principal, introduire les paramètres nécessaires puis retourner à la face principale du programme ?

 

Merci    

0 Compliments
Message 9 sur 13
3 790 Visites

Bonjour,

 

"Est-ce que c'est possible...?" Tout est possible en LabVIEW Smiley très heureux

 

Il y a plusieur méthode pour faire ça, la plus simple étant le vi express Prompt User.

Mais le mieux c'est de créer  un sous vi, de le configurer pour ouvrir sa face-avant (et la fermer après exécution), et de cabler les différents controles utiles sur le conecteur de sortie pour pouvoir les utiliser dans le vi principal. Pour ce genre de pop-up, on peut aussi changer l'apparence de la fenetre (propriétés du vi) en boite de dialogue.

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
0 Compliments
Message 10 sur 13
3 774 Visites