Discussions au sujet de NI LabVIEW

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

Plantage windows écran bleu après quelques minutes (problème de mémoire?)

Résolu !
Accéder à la solution

Bonjour,

J'ai un souci sur un VI, qui après quelques minutes d'utilisation engendre un plantage de windows (le fameux écran bleu), qui entraîne un redémarrage de l'ordinateur. Le but de ce VI est de me connecter à deux capteurs de pression ayant 24 prises chacun. Sur la partie de gauche, la connexion aux capteurs, à droite les boucles while associées à chacun de ces capteurs.

J'ai fait le test d'enlever complètement loe deuxième capteur (donc la connexion et la boucle while associée) pour voir si le fait qu'il y en ait deux puisse poser problème, mais même avec un seul, le plantage arrive assez vite.

Je pense qu'il pourrait s'agir d'un problème de mémoire mais je ne sais pas d'où il vient. J'ai tenté de suivre de le gestionnaire des tâches en parallèle, mais pas de problème particulier pour le processus labview. J'ai tenté l'outil "Performances et mémoire", mais je ne dois pas bien m'en servir car il n'y a que quelques ko à chaque fois.

 

J'imagine donc qu'il y a un souci dans ma boucle while. Avez-vous une idée? Je mets en pièces jointes les images du sous-VI de connexion aux capteurs (capture2.png) et du VI (capture.png) que je tente de faire marcher. J'ai bien sûr cherché avant sur internet et sur le forum mais je n'ai pas trouvé de réponse à mon problème

 

Merci

 

PS: je rajoute la capture d'écran (capture3.png) du sous-sous-VI configureVISAsession.VI fourni par le fournisseur du capteur

Tout télécharger
0 Compliments
Message 1 sur 8
2 451 Visites

Bonsoir,
perso, je placerais des registres à décalage en entrée et sortie VISA de chaque boucle, c'est plus sain à mon sens.
Ensuite, dans chaque boucle, j'insérerais des vidanges de buffer, histoire de recommencer chaque boucle avec un historique à zéro.

Message 2 sur 8
2 425 Visites

bonjour,

1) qu'elle est la fréquence d'interrogation des instruments?

2) tu insères les données dans un chart. Qu'elle est la profondeur de l'historique du chart?

3) tu fais un reshape array sur 24. Ton but est de garder uniquement les 24 valeurs de ton tableau? si ton instrument a 24 capteurs, il devrait retourner 24 mesures, non? tu devrais faire un array subset.

 

Je pense que tu as un problème mémoire. Supprime ton chart et/ou le reshape.

A suivre

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 3 sur 8
2 422 Visites

Vérifie également tes paramètres de communication: Fréquence d'acquisition vs fréquence d'acquisition mesurée vs baud rate. Le problème pourrait être causé par une accumulation de données dans le buffer d'entrée.

 

Par défaut la taille du buffer d'entrée d'un port COM est de 4096 bytes et tu lis 24 données de type double (24 X 8 bytes + les caractères de séparation soit un peu plus de 200 bytes, 1600 bits). Si le baud rate est à 9600 ça prendra donc environ 170 ms transférer les données, si la fréquence d'acquisition mesurée est inférieure à 6 Hz tu auras accumulation de données dans le buffer d'entrée. Fait le calcul pour voir si tu arrives à lire les données assez rapidement.

 

Tu pourrais essayer de diminuer la fréquence d'acquisition et d'augmenter le baud rate.

 

Ben64

Message 4 sur 8
2 413 Visites

Salut,

Merci pour vos réponses. Il y a a priori effectivement un problème avec les buffers (l'historique du chart étant à 1024 points je ne pense pas qu'il pose problème). J'ai placé un visa clear après le read pour les deux chemins, et effectivement il semblerait que je n'ai plus de plantages (en tout cas je peux laisser tourner plusieurs minutes sans problème). Par contre ça me pose des problèmes au niveau de la fréquence d'acquisition qui est désormais limitée à 4Hz. Pour répondre à Ben64, ma fréquence mesurée correspondait à ma fréquence demandée jusque-là (le baud rate est à 115200, j'ai gardé la valeur du modèle du fournisseur). Si je comprends bien ton raisonnement 115200/1600=72, donc je devrais être limité à 70Hz environ.

 

J'ai tenté d'enlever le reshape array mais ça n'a pas eu d'influence. Je vais tenter de mettre en place des boucles for pour que les VISA Clear ne soient fait qu'une fois sur 100 par exemple, histoire de pouvoir monter un peu plus haut en fréquence.

 

PhilB58: tu pourrais me préciser ce que tu as dit sur les registres à décalage stp? Je ne comprends pas où tu veux les mettre ni pourquoi.

 

Merci encore pour vos réponses ça me dépanne bien.

 

PS: Environ trente secondes après avoir envoyé cette réponse, mon programme qui tournait depuis une bonne dizaine de minutes a finalement replanté. Je vais tenter de mettre en place une boucle for  avec non seulement VISA clear mais aussi une fermeture/ré-ouverture pour voir si ça peut aider

0 Compliments
Message 5 sur 8
2 394 Visites

les registres à décalage, en fait, ce sont des mémoires qui stockent des informations utiles à chaque boucle!

0 Compliments
Message 6 sur 8
2 381 Visites

L'important est que la boucle de lecture soit aussi rapide que la génération de data, ce qui semble être le cas ici. Une autre possibilité est que le pilote que tu utilises ne soit pas 100% compatible avec ta version de Windows.

 

Ben64

0 Compliments
Message 7 sur 8
2 364 Visites
Solution
Accepté par l'auteur du sujet Paul.le.Poulpe

On a finalement réussi, avec un collègue qui connaît bien labview, à faire marcher tout ça, en dupliquant le plus consciencieusement possible le modèle du fournisseur. J'aimerais bien expliquer pourquoi ce qu'on faisait engendrait ces plantages mais on n'a pas compris, le fonctionnement est pourtant très similaire entre les deux VI. En tout cas, merci encore pour votre aide.

0 Compliments
Message 8 sur 8
2 357 Visites