Discussions au sujet de NI LabVIEW

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

Problème de mémoire

Résolu !
Accéder à la solution

Bonjour à tous.

J'ai du reprendre un VI pour un banc d'essai. Après avoir fini mon travail (rajouter des conditions via des capteurs de chocs), je lance enfin le VI pour une simulation sur 500+ tirs (chose impossible avant à cause d'éléments extérieurs à labview). A partir d'environ 100 cycles, on observe un gros ralentissement. D'un cycle de 3s, on passe à 10 seconde au bout de 200 tirs environ.
On constate une augmentation de la mémoire, qui ne descend pas meme avec l'arrêt du VI (on est obligé de quitter labview, ou via cleanmem).
J'ai donc cherché sur les forums une résolution à mon problème. J'ai enlevé les variable locale des sous VI , cherché des tableaux qui grossiraient... Mais meme si le programme marche un peu mieux, ca patine encore pas mal.

N'étant pas expérimente sur Labview (voir plutôt le contraire), je n'ai encore aucune notion des problèmes de mémoires, qui n'apparaissent malheureusement pas dans les cas d'écoles.

Après deux semaines de recherche infructueuse, je me tourne vers vous pour, si possible, m'orienter.

Je joins le VI mère, en restant à disposition pour fournir les sous VI ou d'autres explications.


Cordialement, Fabien.

0 Compliments
Message 1 sur 8
4 583 Visites

Bonjour,

 

je pense que dans un premier temps il faudrait que tu découpes plus ton VI principal, refaire des sous-VI.Car pour l'isntant c'est assez fouilli lorsqu'on ouvre le code.

 

Ensuite, il manque pas mal de sous VI, donc difficile de dire si tes problèmes de ralentissement viennent de là.

 

Mais voici quand même quelques pistes à explorer :

 - utilises-tu des sémaphores ? si oui, sont-il bien utilisés ?

 - communiques-tu avec des appareils ? si oui, n'y a t il pas des time out trop grands ? de même pour les cartes d'acquisitions

 - tu as pas mal de boucles For qui tournent dans des séquences, ce qui peut te ralentir si elles sont mal paramétrées

 

Cordialement

 

Benoît C.
Certified LabVIEW Developer
0 Compliments
Message 2 sur 8
4 577 Visites

Bonjour,

 

Pour ceux qui veulent rajouter des commentaires, vous pouvez aussi consulter ce lien ou la question est déjà posée et certaines réponses apportées

 

Cordialement,

Rodéric L
Certified LabVIEW Architect
Message 3 sur 8
4 571 Visites
Solution
Accepté par l'auteur du sujet FabienM

Bonjour Fabien,

 

Tout d’abord, merci d’avoir posté sur le forum National Instruments.

 

J’ai également parcouru votre VI, et c’est vrai qu’il serait utile que vous nous fournissiez aussi les sous-VI.

 

La remarque de l’autre forum sur la fermeture des tâches dans votre sous-VI « commande-numérique » est par exemple très importante. Premièrement il n’est pas recommandé de créer une tâche à l’intérieur d’une boucle, car à chaque appel l’exécution est ralentie par la création de la tâche. De plus, il est très important de supprimer cette tâche lorsqu’elle n’est plus utilisée, car sinon les ressources qui lui ont été allouée ne sont pas libérées.

 

Dans votre code, une seule chose m’a sauté aux yeux pour le moment : vous écrivez dans un fichier texte, et ne fermez jamais la référence à ce fichier (vi Fermer un Fichier). Chaque référence de fichier est donc gardée en mémoire.

 

Bien cordialement,

Message 4 sur 8
4 541 Visites

Merci pour les reponses.

 

J'ai donc supprimé la creation de tache à l'interieur du sous VI commande numérique pour n'en mettre qu'une seul dans le MAIN. Cela tourne deja mieux.

 

Pour la deuxieme remarque, vous parlez du fichier texte crée lors de l'enregistrement situé à la fin ? Si oui, cela n'est pas trop grave car je ne relance pas le programme de suite.

 

Je vais devoir de toute façon refaire tout le VI en me basant sur vos remarque pour qu'il soit plus lisible et pour avoir des cycles inferieur à 2 s.

 

Je joins les 2 autres sous VI souvent utilisés. Je lis, grâce à ceux ci, les 4 entrées d'une carte DAq.

 

Cordialement, Fabien.

Tout télécharger
0 Compliments
Message 5 sur 8
4 528 Visites

Bonjour Fabien,

 

C’est bien de ce fichier dont je parle. Ce n’est effectivement pas crucial de le fermer, mais je vous conseille de prendre cette bonne habitude pour quand ça le sera.

 

Pour vos autres VI, c’est le même problème, je vous conseille de sortir la tâche de lecture du sous-VI si vous l’exécuter souvent. Je vous joins votre VI modifié de telle façon à ce qu’il n’y ait plus qu’une tâche à démarrer (j'ai supprimé le cadencement, je ne voyais pas son utilité pour la lecture d'un unique échantillon).

 

Cordialement,

0 Compliments
Message 6 sur 8
4 482 Visites

Bonjour et joyeuse fete,

 

J'ai malheureusement la version 9 de labview, et je ne peux pas lire le VI envoyé.

J'ai totalement remanié le VI pour en faire une version plus visible.

 

Cordialement, Fabien.

0 Compliments
Message 7 sur 8
4 434 Visites

Bonjour et bonne année également,

 

voici le VI lisible pour la version 9 de LabVIEW, mais votre programme intègre surement déjà quelque chose de similaire puisque vous l'avez remanié.

 

Bien cordialement,

0 Compliments
Message 8 sur 8
4 430 Visites