Discussions au sujet de NI LabVIEW

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

Synchronisation de boucle

Bonjor à tous,

 

J'ai commencé LabView il y a deux semaines. Je souhaite faire mon propre VI en utilisant une centrale d'acquisition agilent avec deux cartes une pour l'acquisition et une autre pour générer une tension de + ou -16 V, ce que je veux faire une boucle d'acquisition pour acquérir la température d'un thermocouple en permanent

 

Ensuite cette valeur de température va être comparée à des valeurs des températures dans un tableau pour générer une tension 0 ou 10V (voir l'image Sans Titre)

 

Mon problème quand je exécutais mon VI en mode animer l'exécution ça marcher, mais quand je passe au mode normal, l'instrument m'indique une erreur:

 

"Une commande a été reçus qui doit envoyer des données dans la mémoire-tampon de sortie de l'instrument, mais celle-ci contenait déjà les données d'une commande précédente(qui ne peuvent pas être écrasées). La mémoire tampon de sortie peut être réinitialisée(effacée)par la mise hors tension de l'instrument ou par la fonction de bus Devise Clear"

 

Merci de proposer des solutions Smiley clignant de l'œil

Cordialement

Tout télécharger
0 Compliments
Message 1 sur 4
3 677 Visites

Bonjour Delta007,

 

Vous devriez vous inspirer des exemples développés pour l'Agilent 34401. Allez dans Aide>>Recherche d'exemples>>E/S matérielles>>Driver d'instruments>>Plug and Play LabVIEW

 

Cordialement,

Mélinda B
National Instruments France

Message 2 sur 4
3 607 Visites

Bonjour Delta,

 

Je crois que le souci principal est que vous réalisez des écritures depuis 2 boucles différentes indépendantes.

Cela correspond grosso modo à une situation de compétition où lune des boucles essaie d'écrire dans le buffer de sortie du driver VISA alors que la commande précédente n'a pas encore été traitée. Il faut à mon avis repenser l'architecture globale du VI, ou implémenter des sémaphores dans les boucles pour protéger les accès aux écritures VISA. Ca corrobore donc les dires de Melinda 😉

 

Cdt,

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

Message 3 sur 4
3 576 Visites

J'ai l'impression que les boucles ne sont pas cadencées, ce qui veut dire qu'en mode non animé les boucles doivent tourner "à fond la caisse". Il est possible également que votre programme envoie des commandes à votre matériel de manière beaucoup trop rapide. Il faudrait ajouter une temporisation dans vos boucles.

 

En plus, comme suggéré par Melinda et Eric vous devriez peut etre séquencer les opérations de lecture et écriture en mettant tout dans une seule boucle et en alternant lecture de la température puis analyse de la valeur et génération de la tension si necessaire.

 

Yohann L.
Message 4 sur 4
3 552 Visites