Discussions au sujet de NI LabVIEW

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

appel dynamique sous-VI (avis)

Résolu !
Accéder à la solution

Bonjour à tous,

 

J'ai besoin d'un oeil "qui sait" pour me dire si je suis dans le bon ou pas.

Premier contact avec l'appel dynamique d'un sous-VI ... dans une boucle While.

J'ai rassemblé tout ce que j'ai appris jusqu'à présent, et pour le reste j'ai utilisé le bon sens.

ça compile et ça tourne ... c'est pas pour ça que c'est forcément ok.

 

voici mes questions (et d'avance un grand merci pour vos réponses et le temps consacré)

 

En image ci-dessous mon appel dynamique dans la boucle While.

Ma question concerne "open VI reference" et "close reference".

 

a) Est-ce comme cela que l'on fait ? (les 2 en dehors de la boucle, avec rétroactions)

(Je pense que c'est correct, mais sans confirmation cela reste une supposition.)

 

b) Est-il "d'usage" d'utiliser les appels dynamiques ?

    Cela libère de la mémoire ... y a-t-il d'autres avantages ?

    Quels sont les inconvénients ?

 

c) Dans "open VI reference", a quoi servent les entrées: (non cablées ici)

    - application reference (locale)

    - options ... quels sont ces fameuses options ?

 

Toutes vos remarques et conseils sont les bienvenus concernant cette pratique.

 

Merci beaucoup à tous.

 

snippet_03.png

 

 

 

0 Compliments
Message 1 sur 34
4 476 Visites

Bonjour,

 

Pourriez-vous republier le snippet puisqu'une erreur semble s'être produite lors de sa publication ?

 

b) J'utilise cette technique pour appeler des VIs qui s'exécuteront en parallèle au reste du code (méthode Run VI avec l'entrée Wait Until Done définie à False) et avec lequels des informations seront échangées par exemple par le biais de queues.

 

c) Ces options sont décrites dans l'aide de Open VI Reference. Avez-vous besoin de plus de détails que ce qui figure dans l'aide ?

 

A la prochaine

Message 2 sur 34
4 467 Visites

Bonjour,

 

Il y'a également le VI "Asynchronous VI Call" (voir pièce jointe) qui semble plus adapté, mais qui n'existe que depuis LabVIEW 2011.

 

Si vous souhaitez executer des VIs en parallèle comme l'a dit JB, cela semble la meilleur solution si vous disposez de LabVIEW 2011.

 

extrait.png

 

Cordialement,

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
Message 3 sur 34
4 451 Visites

Merci Helmut et JB pour vos réponses.

 

Je reviendrai après avoir pris le temps d'analyser tout cela de prês.

 

Mais rapidement, je replace le snippet, comme demandé

 

PS:

Helmut, je vous ai posé une question dans le sujet "Evénement (déclenché par un booléen au VI)

actuellement 18eme dans la liste en première page du forum.

Quand vous avez 3min, votre réponse m'intéresse beaucoup.

 

HO.png

 

0 Compliments
Message 4 sur 34
4 438 Visites

votre avis ?

 

les 2 rétroactions sont-elles nécessaires ? (le snippet ci-dessus)

 

le feedback sur le cluster d'erreur ... pour moi, il est nécessaire,

 

mais le feedback sur la référence du VI ?

cette référence est relue à chaque itération, non ?

J'ai l'impression que la rétroaction sur la réf du VI n'est pas indispensable ...

qu'en pensez-vous ?

 

merci à tous,

0 Compliments
Message 5 sur 34
4 416 Visites
Solution
Accepté par ouadji

bonjour, vous avez quelques questions en LabVIEW

je vous propose de faire la lecture

LabVIEW Style Checklist qui évoque Front Panel Checklist et block diagram Checklist et VI

et

Building Applications Checklist

et

LabVIEW Style Guide

 

A la question


ouadji a écrit : votre avis ? les 2 rétroactions sont-elles nécessaires ? (le snippet ci-dessus)le feedback sur le cluster d'erreur ... pour moi, il est nécessaire,

 

mais le feedback sur la référence du VI ?cette référence est relue à chaque itération, non ?J'ai l'impression que la rétroaction sur la réf du VI n'est pas indispensable ...qu'en pensez-vous ?

 



Le registre à décalage sur l'erreur : oui pour ne pas perdre l'erreur. Je ne sais pas ce que fait le code mais il faudrait gérer le stop de la boucle si erreur.

 

Le registre à décalage sur la référence : non car elle ne change pas (si elle change il faudrait la fermer). Dans une boucle for il y a un intérêt. Si la boucle ne s'éxécute pas; par exemple auto-indexation vide; alors la référence est perdue si pas sur un registre à décalage.

 

PS : Vous pouvez mettre le fil d'erreur droit; chaîner la référence entre les 2 propriétés value (celle en  en écriture et celle lecture); gérer l'erreur sur les propriétés surtout si pas implicite avec passage via une référence;

 

 

 

 

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 6 sur 34
4 409 Visites

Helmut O'Brian a écrit :

 

extrait.png

 

 


Le code d'Helmut est un bel exemple : ligne droite d'erreur; lecture de gauche à droite. Très propre. Du vrai code LabVIEW d'un vrai développeur qui a mon estime.

Juste une remarque je pense qu'il faut mettre un registre à décalage sur la gestion d'erreur de la boucle For car si une erreur arrive en entrée après 1000 boucles elle sera perdue.

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 7 sur 34
4 408 Visites

Bonjour Luc,

 

En effet les registres à décalages...Un oublie de ma part dans cet exemple...

 

Cordialement,

 

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
0 Compliments
Message 8 sur 34
4 400 Visites

Luc Desruelle a écrit :

Juste une remarque je pense qu'il faut mettre un registre à décalage sur la gestion d'erreur de la boucle For car si une erreur arrive en entrée après 1000 boucles elle sera perdue.


Je ne pense pas, il n'y a que si la boucle n'executait aucune iteration que la valeur serait perdue, mais dans le cas présent ce n'est pas possible puisque le nombre d'itérations est fixé à 1000, la ligne d'erreur va véhiculer 1000 fois la valeur d'erreur présente initialement sur le connecteur d'entrée de la boucle.

Yohann L.
Message 9 sur 34
4 395 Visites

sur cet exemple il n'est pas necessaire de mettre le cluster d'erreur dans un registre puisqu' il

sert seulement à sequencer le code.

Si dans la boucle l'erreur était utilisée il serait alors nessaire de la memoriser d'une fois sur l'autre via le registre.

 

 

Cdt

 

Tinnitus

 

 

CLAD / Labview 2011, Win Xp
------------------------------------------------------
Mission d'une semaine- à plusieurs mois laissez moi un MP...
RP et Midi-pyrénées .Km+++ si possibilité de télétravail

Kudos always accepted / Les petits clicks jaunes sont toujours appréciés
Don't forget to valid a good answer / pensez à valider une réponse correcte
Message 10 sur 34
4 386 Visites