le 11-26-2013 03:13 AM
Bonjour,
Je suis débutant en programmation Labview.
Je travaille actuellement sur de la mesure de vitesse avec des codeurs incrémentaux grâce à l'assistant DAQ - fréquence, le tout dans une boucle while avec un VI express lecture/écriture.
Suite à l'analyse des fichiers lvm j'ai observé un saut de 30ms entre la 1er et la 2eme valeur puis ensuite un dt stable de 5ms entre chaque valeurs.
Je pense que que ce temps de "latence" est dû à l'exécution de ma boucle ou de la création du fichier lvm.
Ma question est donc la suivante, est-il possible de stocker en mémoire les valeurs obtenues lors de l'acquisition puis réaliser une écriture différée dans un fichier lvm (ou autre)?
Le but est d'observer le comportement de notre système dans les 1er ms.
Ceci est mon premier post j'espère que ma question est claire, et si il manque des informations merci de me l'indiquer.
Je vous joins également le programme (très basique) pour que vous puissiez le commenter.
Merci d'avance pour vos réponses 🙂
le 11-28-2013 03:42 AM
Bonjour Nicolasmesnil et bienvenue sur ce forum !
Pourquoi le temps d'éxécution de la première itération de ma boucle est elle si longue ?
A la première itération, ton application doit créer et réserver plusieurs ressources:
- Une premiere tâche d'acquisition de type compteur
- Une seconde tâche d'acquisition de type compteur également
- La création d'un fichier sur le disque
Ces 3 opérations prennent pas mal de temps et pendant tout ce temps là tu perds des données car ton application à déjà démarré.
Pour les itérations suivantes, il ne reste plus qu'à faire l'acquisitions des données, un peu de traitement et écrire dans le fichier. Et tout ceci prend beaucoup mois de temps à être éxécuté.
Quelle serai la bonne méthode?
Stocker les données et écrire les données à la fin de l'éxécution ne suffira pas à résoudre le problème.
Je pense que tu dois dans un premier temps séparer la partie création des tâches d'acquisition et la création du fichier de la partie acquisition des données.
Pour faire cela, il va falloir utiliser les fonctions de l'API DAQmx dans LabVIEW et ne plus utiliser les assistant DAQ.
Il va falloir utiliser également les fonctions d'opération sur fichier.
Avant d'aller plus loin dans les détails, je pense qu'il serai judicieux d'aller faire un tour dans l'aide de LabVIEW.
Ensuite aller dans recherche d'exemple/ES materiel/DAQMX
Une fois que toutes ces parties seront séparées, pourquoi ne pas creer les taches d'acquisition et le fichier à la premiere itération et lancer l'acquisition des donnée des données à la deuxieme itération de la boucle et sur appui d'un bouton poussoir par exemple.
Cordialement
Aurélien Corbin
National Instruments France
le 11-28-2013 04:26 AM
Bonjour,
Evitez d'utiliser les VI express dans votre projet (qui réouvrira et refermera votre fichier à chaque tour de boucle), créer tout d'abord votre fichier puis faites vos acquisitions dans une boucle et enfin fermer votre fichier.
Vous avez deux choix possibles: acquérir les données directement dans votre boucle ou les acquérir en suivant la méthode "Boucle Productrice/Boucle Consommatrice" (exemples trouvables sur internet).
Enfin, si vous voulez gagner encore en vitesse, faite votre enregistrement en TDMS (binaire).
Je vous suggère de consulter ce lien sur les VI DAQmx: http://www.ni.com/white-paper/2835/en/
Pour tout autre question, n'hésitez pas à nous contacter.
Très cordialement.
Pierre Denis
National Instruments
le 11-28-2013 05:09 AM
Bonjour,
Merci pour vos réponses.
Je vais essayer de séparer les taches pour gagner du temps
Merci pour le lien il va m'etre très utile!!