Discussions au sujet de NI LabVIEW

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

Utilisation du processeur et décalage Excel

Bonjour,

Après la mise en place de deux ordinateurs possédant des caractéristiques similaires dans le but de faire tourner des applications labview (Application Builder), ces deux ordinateurs réagissent différemment. L'un d'entre eux monte à 100% d'utilisation du processeur, et se fige lors du démarrage d'un application ; alors que le second fonctionne "presque correctement".

Les deux ordi ont les caractéristiques suivantes : Lenovo E73 MT 10 AS, Processeur 3.4 GHz, 4Go de RAM, Windows 7

- D'où pourrait provenir les problèmes de réactivité d'un des ordinateurs ?

 

Ces ordinateurs servent principalement à l'acquisition de données (températures, pression, débit,..) toutes les 10 à 30 secondes ; or après une certaine période (environ 2300 mesures), nous observons un écart de plus en plus grand entre l'acquisition des mesures, après 7 heures de fonctionnement, les mesures sont espacées de 2 min. Faudrait-il revoir le programme ? ou cela provient-il de l'ordinateur ?

 

Merci,

0 Compliments
Message 1 sur 9
3 067 Visites

Bonjour,

Lorsqu'un programme d'acquisition de données ralenti au fur et à mesure du temps d'exécution, cela traduit généralement une fuite mémoire.
Ta RAM doit se remplir au fur et à mesure, facilement vérifiable dans le gestionnaire de tâche, jusqu'à atteindre le point critique des 3GB.


Après avoir ouvert ta capture d'écran, je suis horrifié du code, il n'y a aucun respect de toutes les règles de bases de labview :

- Aucune gestion de flux de données (flux de données de gauche à droite)

- Sur utilisation de boucle while imbriqué.

Et la pire de toute, aucune gestion d'arrêt correcte. Il n'est pas admissible à mon sens d'utiliser la fonction "STOP" (équivalent bouton rouge) pour arrêter des boucles que l'on a bloqué volontairement en "infini".


Personnellement, avant même de réfléchir à la différence de comportement, je ferais une architecture de code correcte, afin de permettre une maintenabilité digne de ce nom.

 

Bonne journée,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 2 sur 9
3 051 Visites

il faut aussi temporiser les boucles while !

0 Compliments
Message 3 sur 9
3 030 Visites

@Michael.C wrote:

 


Après avoir ouvert ta capture d'écran, je suis horrifié du code, il n'y a aucun respect de toutes les règles de bases de labview :

 

 


T'exagères un peu... ok, il y a des erreurs typiques mais on voit quand même un minimum d'effort, notamment le fait que ça tient dans un écran, rien qu'avec ça il mérite la clémence!

 

La première chose à faire et de gérer la cadence des boucles de manière explicite.

La seconde est de gérer les données mesurées différemment, actuellement l'utilisation des waveforms est détournée, une meilleure gestion permettra plus de claretée, une meilleures gestion de la mémoire.

Et pour finir mettre dans la même boucle l'acquisition et l'enregistrement, pour une appli simple comme celle là il n'y a pas besoin de 2 boucles différentes pour acquisition et enregistrement.


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 4 sur 9
3 017 Visites

Cyprien,

Ne te décourage pas, ton appli souffre de qlq défaut de débutant mais on pourra en faire qlq chose.

Le plus simple pour qu'on puisse te proposer des orientation ce serait que tu postes un zip avec ton code source.

 

Le problème que tu constates ne viennent pas du PC mais de ton appli 😉


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 5 sur 9
3 014 Visites

TiTou a écrit :

@Michael.C wrote:

 


Après avoir ouvert ta capture d'écran, je suis horrifié du code, il n'y a aucun respect de toutes les règles de bases de labview :

 

 


T'exagères un peu... ok, il y a des erreurs typiques mais on voit quand même un minimum d'effort, notamment le fait que ça tient dans un écran, rien qu'avec ça il mérite la clémence!

 


Bonjour,
Effectivement, j'ai peut être été un peu virulent sur la réponse .... On va mettre cela sur la journée de.... au boulot 😄

Oui, j'ai pointé tous les points négatifs, sans mettre en avant le positif, avec pour but de faire réagir la personne, mais je suis d'accord, que ce code a le mérite d'être lisible facilement, même à partir d'une capture d'écran.

 

En prenant en compte les différentes remarques du sujet, cela ne pourra qu'aller dans le bon sens, et améliorer ces conditions de test.


Bonne journée.

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 6 sur 9
3 010 Visites

Bonjour,

Merci pour vos réponses. Il est vrai que j'étais un peu désespéré quand j'ai vu les réactions que mon code pouvait amener. J'ai essayé de trouver des exemples d'acquisitions multiples pour réorganiser mon code mais sans succès.

Alors, pour que ce soit un peu plus claire, ici je fais l'acquisition de 4 températures par le biais d'un datalogger pouvant me fournir jusqu'à 8 températures. Il faut donc choisir la voie pour chaque température. 

De plus, je fais ici l'acquisition des deux poids grâce à deux balances similaires. J'ai remarqué qu'il fallait utiliser deux sous-VI différentes sinon il y avait des conflits dans les données. Je rentre ensuite ces poids dans une table, puis je vais chercher une valeur mesurée X minutes plus tôt afin de calculer un débit lissé. 

Je dois aussi pouvoir visualiser l'évolution du débit d'entrée et des températures (graphiques).

Enfin, je dois enregistrer toutes ces données sous un échantillonnage que l'utilisateur choisira.

 

Ensuite, en ce qui concerne mes bourdes, pour les multiples boucles, je pensais qu'il fallait faire une boucle par instruments. Ainsi je peux utiliser l'un sans l'autre. De plus, je veux que l'utilisateur n'utilise que les boutons de la face-avant. Donc si les boucles s'arrêtent, les boutons de la face-avant ne fonctionne plus, d'où les boucles infinies et les boucles imbriquées.

Je conçois que ce ne doit pas être de bonnes solutions maintenant que vous me le dites, mais ce sont des solutions que j'ai trouvé problèmes après problèmes, je n'ai pas vraiment de recul sur mon travail et la bonne façon de faire.

 

Je fournis en pj le fichier zip. Je vous remercie encore pour vos commentaires et j'espère pouvoir m'améliorer avec vos conseils.

 

Cordialement,

0 Compliments
Message 7 sur 9
2 982 Visites

Je me suis aussi renseigné sur les modèles de conceptions. J'ai beaucoup de mal avec le producteur/consommateur, je peine à voir sa force. 

Cependant, je compte bien me pencher sur la machine d'état, qui pourra mettre rapidement utile.

0 Compliments
Message 8 sur 9
2 983 Visites

Bonjour,

 

L'avantage du producteur/consommateur c'est d'avoir plusieurs process fonctionnant en parallèle dont l'un sera et doit être rapide le producteur (acquisition, événement utilisateur..) et l'autre (consommateur) peux se permettre d’être plus long (log sur fichier, traitement...). Et le tout avec les deux boucles fonctionnant en parallèle, la tâche qui est longue ne ralenti pas la tâche devant être rapide.

Si vous avez la possibilité, je vous conseille de contacter National Instruments pour avoir des informations concernant les formations.

Elles permettent de bien débuter en LabVIEW et éviter de faire des erreurs basiques.

Paolo_P
Certified TestStand Architect
Certified LabVIEW Architect
National Instruments France

0 Compliments
Message 9 sur 9
2 951 Visites