le 04-02-2015 04:17 AM
Bonjour,
Je vous met en lien ce programme, qui fonctionne en tant que tel, n'a pas d'erreur quand je force labview a le recompiler.
Aussi quand je le lance, le programme s'execute bien et quand on lance l'execution détaillée, on voit que le programme tourne correctement.
Cependant le graph qui devrait etre mis a jour en temps réel n'affiche rien, et le programme ne réagis pas.
Je vous ai mis en piece jointe les VI qui sont susceptible de causer cette erreur.
Par mail, je peux vous envoyer le reste des VI's si vous le désirez.
Le principe de ce programme est l'acquisition des réactions électriques d'un capteur de pression, soumis à une impulsion de pression. Ceci afin de calculer sa sensibilité.
Je dispose pour cela d'un conditionneur de signal, qui fonctionne. Un NI BNC 2110, qui fonctionne aussi, relié au pc par un cable dont je ne me rappelle plus le nom mais qui fonctionne très bien aussi. Le programme a été réalisé sous Labview 2012 (daqmx 9.8)
J'en appelle donc à votre aide pour m'aider a trouver pourquoi ce programme pourtant a mes yeux OK, s'execute sans vraiment s'executer. Est - ce du à un problème de version labview? une boucle infinie (que je ne vois pas)?
En vous remerciant d'avance,
le 04-03-2015 04:15 AM
Bonjour Shazy,
Je ne sais pas ce qui ne fonctionne pas avec le graphe mais en ouvrant le code je peux faire plusieurs suppositions ou en tout cas propositions d'amélioration.
1 / Je ne suis pas sûr de la pertinence d'utiliser une boucle While dans une boucle While, elle même dans une autre boucle While. Je ne pense pas que cela ait un sens d'un point de vue programmation pure.
2 / De façon générale, le code de la boucle While principale n'est pas assez bien rangé. Il conviendrait de simplifier au maximum le diagramme et de réarranger les fils et les fonctions afin d'avoir un diagramme lisible, compréhensible, et donc modifiable.
3 / Il manque des sous-VI dans le code que tu as envoyé, mais il me semble que tu crées une tache à chaque tour de boucle While. Si celle-ci ne change pas, il n'y a pas de raison de la recréer, aussi il serait plus correct de la créer en amont de la boucle While. Dans le même esprit, il faut supprimer la tache une fois qu'elle ne servira plus, souvent en sortie de la boucle While. Je te conseille de regarder les exemples NI DAQmx (en continu) pour voir ce principe et le réutiliser au mieux ici.
En espérant que cela puisse t'aider à avancer,
Bonne journée!
M-Junior
le
04-03-2015
05:10 AM
- dernière modification le
04-18-2025
01:14 PM
par
Content Cleaner
Respect à Marc-Junior pour son intervention et remarques ... justifiées, précises et pertinentes.
Quant à moi, je dirai plus simplement :
comment arrives-tu à travailler avec une "chose" comme ça ?
Tu as de tout .. du flux inversé, des objets cachés ... tu as même le terminal d'itération de la while principale caché sous une autre boucle.
Il faudrait commencer par prendre 1hr pour tout recabler et "rendre propre".
Tu dois "repenser" ta façon globale d'envisager un programme écrit en LabVIEW, tu y gagnerais beaucoup.
Voici deux liens qui pourraient t'aider à progresser.
The LabVIEW Style Book et LabVIEW Style Checklist
le 04-03-2015 02:10 PM
j'ajoute la gestion de l'erreur, qui peut expliquer "fonctionne en source" mais pas en exe, mais pas de gestion de l'erreur dans le code. A+
Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS