le 04-27-2016 03:46 AM
Bonjour,
J'ai un problème de vitesse d'affichage sur un graphe deroulant.
Je m'explique:
Mon VI se decompose comme suit (malheureusement je ne peux pas le poster):
J'ai un modèle à deux boucles (productrice/consommatrice)
Dans ma boucle productrice, je fais une acquisition de 16 voies grâce à un DAQ assistant en mode continu et j'envoie ces données sur une file d'attente (cette boucle est cadencée à freq d'echantillonage/2).
Dans ma boucle consommatrice, je recupère mes données de ma file d'attente, je les dessassemble et je les regroupe par 4=> j'ai donc 4 fils de données à 4 voies ici.
Je leur fais faire quelques calculs à ces données (des divisions, des additions, filtre ) et ensuite je les affiche dans 4 graphes deroulants (on a donc 4 courbes dans chaque graphe).
J'ai trois graphes dont les données sont moins importantes, ou l'echelle des X n'est donc pas en mise a jour auto mais manuelle.
Mon 4ème graphe est plus grand en taille et son echelle de X est en mise à jour automatique en temps absolu.
Mon problème est que ce 4eme graphe prend un certain retard au cours du temps à l'affichage, notemment pour une fréquence d'acquisision du DAQ à 1000Hz (à 100Hz pas de problème). Si je chronomètre mon acquisition sur 1 minute et que je regarde la différence avec le temps écoulé sur le graphe, j'ai envrion 7s de décalage entre les deux (le graphe affiche 53s au lieu de 60).
Je sais que le graphe n'est pas fait pour faire de l'affichage en temps réel mais les acquisitions ne seront pas de très longue durée. Si je prend du retard au cours du temps ce n'est pas bien grave mais 7s en 1min c'est enorme.
Il ya de plus une chose que je ne comprend pas : Si l'affichage prend du retard, lorsque j'arrête mon acquisition le graphe ne devrait-il pas continuer à se mettre à jour pour les dernières valeurs qu'il resterait dans la file d'attente? (je precise que j'arrête ma boucle consommatrice sur l'erreur du sous VI :" supprimer le premier élément d'une file d'attente", normalement, ma liste devrait se vider jusqu'au bout; ma boucle productrice elle s'arrête à l'appui du bouton stop, ce qui libère la liste)
J'aimerais donc savoir si il y aurait un moyen de reduire ce décalage par une astuce de programmation par exemple...
J'ai aussi remarqué que filtrer les données prend beaucoup de temps et ralentit grandement la boucle productrice, mais bon je ne vois pas comment le faire accélerer...
le 04-27-2016 07:36 AM
petits conseils pratiques :
- si tu postes dans cette section c'est mieux de poster en anglais
- si tu veux vraiment poster en français, il y a une section francophone
Peux tu poster un screenshot de ton code?
Pour ta partie acquisition, tu acquiers comment tes données? par paquets? de quelle taille?
D'après ce que tu décris, je me demande si tu acquiers les points 1 par 1, si c'est ça, il faut pas, il faut acquerir par paquet, pour la taille des paquets tu divise ta fréquence d'acquisition par 10 comme ça tu auras 1 paquet toutes les 100ms.
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 04-27-2016 08:01 AM
Ah oui effectivement.
Du coup saurais-tu comment je pourrais modifier mon message initial afin de tout traduire en anglais?
Sinon pour la partie acquisition, c'est en mode continu.
Il faut donc que je règle mon DAQ assistant en acquisition N echantillons c'est ça?
04-27-2016 08:08 AM - modifié 04-27-2016 08:09 AM
@mecatronicengineer wrote:
Il faut donc que je règle mon DAQ assistant en acquisition N echantillons c'est ça?
oui
@mecatronicengineer wrote:Ah oui effectivement.
Du coup saurais-tu comment je pourrais modifier mon message initial afin de tout traduire en anglais?
Ben, il est un peu long ton message donc si t'es à l'aise en anglais vas-y et aide toi avec google translate et sinon poste ton message dans la section francophone.
Ah, doit y'avoir un modérateur qui est passé par là, le message est déplacé.
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 04-27-2016 08:14 AM
Ah bon parfait, pas besoin de traduire...!!
Sinon merci beacoup pour le tuyau, je vais tester ça et je te ferais un retour.
le 04-28-2016 01:49 AM
Bonjour,
Bon ben j'ai fait la modification que tu m'as dit et la plus rien ne fonctionne dans mon porgramme.
J'ai une fontion filtre qui se met en erreur : l'erreur 20020.
Si j'enlève cette fonction filtre, mon graphe n'est plus continu, il y a des "trous" toutes les X mesures (j'image que c'est le nombre d'échantillons que j'ai mis dans le DAQ assistant).
Est-ce que j'ai loupé une étape?
le 04-28-2016 02:33 AM
tu peux poster ton code?
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 04-29-2016 04:20 AM
Bonjour,
Non malheureusement je ne peux pas poster mon VI...
Par contre j'ai résolu le problème du filtre donc cela a l'air de fonctionner pour la vitesse de l'affichage, en 2min de mesure il n'y a pas eu de décalage!! super!
Le seul hic c'est que tout mes N echantillons j'ai un espace dans mon graphe, ma courbe n'est pas continue.
Je joint une photo pour visualiser.
Alors après je balance direct mes données DAQ assistant dans le graphe, peut être qu'il faut passer à une étape intermédaire pour qu'il me mette le tout en continu.
le 04-29-2016 04:28 AM
Peux tu au moins poster un screenshot de la partie qui gère l'affichage dans le graph?
En fonction du type de graph et du type de données que tu utilises la solution sera différente ; j'espère juste que tu utilises pas des fils bleus
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 04-29-2016 04:29 AM
sisi données dynamiques...pourquoi?
c'est un graphe deroulant sinon avec X en mise a jour auto en temps absolu.
je vais ce que je peux faire pour le screen shot.
Merci de ton aide en tout cas.