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.
le 03-06-2018 10:48 AM
Bonjour a tous et merci d'avance pour votre aide.
Mon problème parait bête mais je n'en suis pas sure donc je pose la question et si par la même occasion je peux comprendre le fonctionnement !!
J'ai un Vi qui va acquerir des data de 2 sources différente et les afficher dans un même graph déroulant et je dois également faire un affichage d'histogramme de chaque source.
Je me suis fait un petit VI qui simule l'acquisition de ces données mais j'ai un doute sur la saturation possible de la mémoire au bout de "x" valeurs acquise??
En faite je ne sais pas si dans la manière dont j'ai écrit le "vi" la mémoire se libère ou pas??
L'autre chose que j'aimerais faire c'est pouvoir mettre un compteur et également avoir la moyenne glissante sur "X" dernière mesure
Vous trouverez ci-joint en LV2013 le Vi en question
Merci à tous pour votre aide
Résolu ! Accéder à la solution.
le 03-07-2018 09:09 AM
Hello,
Réponses courtes :
Non, la mémoire n'augmentera pas après 1024 valeurs (la longueur d'historique actuelle de ton graphe), les données les plus anciennes seront effacées.
Pour les moyennes glissantes, tu as des VIs pour ca (Mean Pt by Pt), ou des exemples plus construits sur le site de NI, une recherche devrait te conduire vers une poignée de solutions
--Eric
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
le 03-07-2018 09:52 AM
Bonjour Eric
Merci pour ta réponse, effectivement
j'ai trouvé le vi qui permet de faire des moyennes glissantes.
Donc si je comprend bien je n'ai pas à me faire de soucis, le programme peux acquerir des data non stop ?
En faite la ou j'ai un peu du mal à comprendre, c'est que j'accumule des valeurs dans un tableau avec le registre à décalage mais je ne sais pas quand est ce que la mémoire ce libère ??
En tous cas merci pour ton aide.
le 03-07-2018 09:55 AM
Je vais contredire Eric, il y a en effet une possibilité de saturer la mémoire du PC dans cet example à cause des tableaux qui sont utilisé pour calculer la moyenne et l'histogramme et des fonctions Isert Into Array qui ne cessent d'ajouter des éléments aux tableaux. La boucle interne s'arrête lorsque le compteur mod 20 = 0 mais cela n'arrête pas la boucle externe car on n'a pas appuyé sur stop. On continu donc à ajouter des valeurs aux tableaux et à accroitre leur taille lors de chaque nouvelle itération de la boucle externe.
Bien sur il faudra appuyer bien des fois sur le bouton Entrée pour saturer la mémoire du PC mais la possibilité existe. Idéalement les tableaux devraient avoir un taille fixe (par example 1024 éléments) et seraient utilisé comme buffer circulaires.
Ben64
le 03-07-2018 10:09 AM
Bonjour Ben64,
Merci pour ta réponse, justement s'était sur ce point que j'avais un doute.
Comment je pourrais faire pour ne pas saturé cette mémoire?
Car à terme le programme devra acquerir en continu et j'aimerais avoir ce type d'indicateur dedans.
Merci pour les réponses
le 03-08-2018 12:33 PM
Je suis complètement passé à côté des Insert, désolé 😞
Ca m'apprendra à répondre en ne regardant que la moitié du code -_-
Comme dit Ben, buffers circulaires !
Note: n'imbrique jamais 2 boucles while, ca signifie qu'il y a un problème dans ton design de code. Ici, ton while interne a tout d'une boucle for. Tu peux aussi jeter un oeil aux machines à états (dans les projets-template ou sur le site de NI) pour ton application finale.
--Eric
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
le 03-09-2018 02:17 AM
Bonjour Eric,
Merci pour ton retour. Et les conseil, je vais modifié la boucle while interne.
Mais j'avoue que j'ai un peu du mal à comprendre l'histoire du buffer circulaire.
Un petit example serait le bienvenue pour que je puisse comprendre et également apprendre comment ca marche.
Merci de ton aide
le 03-09-2018 09:47 AM
@Eric, j'avoue ne pas l'avoir remarqué immédiatement, la fonction Insert ressemble beaucoup à Replace Subset.
@Sentenza, Un buffer circulaire n'est qu'un tableau de taille prédéterminée dont on remplace les éléments au lieu de toujours ajouter des éléments. Voici un exemple simplifié. J'ai utilisé 1024 car c'est la taille par défaut de l'historique des graphes déroulant.
Ben64
le 03-12-2018 03:57 AM
Bonjour Ben64,
Merci pour ton example.
Je comprend un peu mieux. je pense que cela apporte réponse à mon problème.
Merci encore à vous 2 pour les explications