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.
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.
02-04-2019 06:44 AM - modifié 02-04-2019 06:50 AM
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
Résolu ! Accéder à la solution.
le 02-04-2019 11:18 AM
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.
le 02-04-2019 11:24 AM
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
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
le 02-04-2019 02:58 PM
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
02-05-2019 02:47 AM - modifié 02-05-2019 02:57 AM
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
le 02-05-2019 05:37 AM
les registres à décalage, en fait, ce sont des mémoires qui stockent des informations utiles à chaque boucle!
le 02-05-2019 08:59 AM
le 02-05-2019 10:30 AM
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.