11-07-2012 07:57 AM - modifié 11-07-2012 07:58 AM
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 ![]()
Cordialement
le 11-13-2012 11:51 AM
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
le 11-17-2012 05:36 PM
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.
le 11-19-2012 04:27 AM
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.