Multitache : acquisition et génération sur même norme VISA

Bonjour,
Dans le cadre de l'utilisation de tes fonctions DAQ, il faut que tu crées une voie virtuelle pour l'acquisition, et une pour la génération du signal.
Bonne journée,
Michael

Bonjour,
J'utilise des centrales DAQ U2356A d'agilent pour faire des acquisitions analogiques. Ces centrales possèdent 2 connecteurs : l'un contient des entrées analogiques, l'autre des DIO numériques. Je dois configurer une DIO numérique en output, émettre un signal alternant état haut/bas toutes les 50 ms, et reboucler (physiquement) cette DIO sur une entrée analogique du connecteur 1 , afin de faire l'acquisition du signal carré.
Les deux fonctions d'acquisition et de génération fonctionnent indépendamment, mais quand j'essaye de les mettre en parallèle, j'ai l'impression que la génération continue monopolise la norme VISA et empêche l'acquisition de se faire. En lançant le soft (cf scrennshot du VI en PJ) la génération commence à se lancer normalement, mais j'obtiens l'erreur suivante pour l'acquisition :
L'erreur -1073807305 s'est produite à : VISA Read dans Agilent U2300 Series.lvlib:Read (AI Waveform Single Channel).vi
Raisons possibles :
VISA: (Hex 0xBFFF0037) Le périphérique indique qu'une erreur de protocole d'entrée s'est produite durant le transfert.
Je me demande s'il est possible d'utiliser une même norme VISA en parallèle (je ne souhaite pas faire de séquentiel) pour deux tâches différentes ? Sinon, y aurait-il une solution à mon problème ? Je tiens à signaler que le problème est le même en multithread (acquisition et génération dans 2 VIs différents).
Merci pour votre aide,

Similar Messages

  • Acquisition et génération en parallèle

    Un sujet probablement un peu récurrant mais je ne trouve pas vraiment de réponse adaptée à ce que j'essaye de faire.
    Nous avons des cartes PCMCIA 6036E et nous faisons sur le terrain des mesures de pressions, déplacement,... via nos capteurs.
    Déjà pour commencer, nous ne sommes pas dans le kHz, une simple acquisition à 100Hz voir 500Hz parfois pour piéger un défaut nous suffit.
    Mais nous devons générer en parallèle des acquisitions, la génération de signaux assez simples par ailleurs une rampe (très lente,~20min) ou un simple carré.
    Dans le dernier code que j'ai fait, çà marche dans les valeurs numériques à l'écran et pourtant la réalité physique sur le bornier me donne un retard aléatoire du début de génération de mon signal !!! En résumé, il y a déjà un retard à l'alumage de ma boucle mais en plus quand le programme donne un échantillon en génération de 2V par exemple et qu'il l'écrit dans le fichier d'enregistrement, en fait à la sortie il y a au moins 0.3 V de moins. C'est le bon signal mais en retard.
    Mon code n'est sûrement pas un exemple et je ne suis qu'un programmeur occasionel mais je sèche ce coup-ci.
    Quelqu'un a t'il un exemple simple d'acquisition (jusqu'à 16 voies) et génération de signal sur des fréquences assez basses ?
    Merci,

    Bonjour,
    Merci d’avoir posté votre question sur les forums de
    National Instruments.
    Afin de vous aider au mieux j’aurais besoin de quelques
    précisions supplémentaires par rapport à la façon dont vous réalisez votre
    application.
    Pour réaliser l’acquisition de données, utilisez-vous notre
    driver DAQmx ou bien DAQ traditionnel ?
    L’acquisition et la génération se font elles en continu, ou
    point à point et l’écriture sur fichier se fait elle dans la même boucle ?
    Si vous travaillez en mode continu, la carte est en quelque
    sorte autonome et il est donc possible que l’écriture sur fichier ne se passe
    pas exactement simultanément avec la génération.
    En fonction de vos réponses, je serais plus à même de vous
    orienter vers un exemple correspondant au mieux à vos besoins.
    Je vous remercie par avance pour votre réponse,
    Bien cordialement,
    Guillaume H.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense

  • J'ai échapé mon ipod nano 4ième génération sur le sol et depuis quand je le démare il ne fonctionne plus corectement il reste sur le logo apple jusqua ce quil manque de baterie et meme si je le reset sa ne fait rien répondez vite svp !!! merci davance (:

    j'ai échapé mon ipod nano 4ième génération sur le sol et depuis quand je le démare il ne fonctionne plus corectement il reste sur le logo apple jusqua ce quil manque de baterie et meme si je le reset sa ne fait rien jai essayé la facon en appuyant sur menu et pause quand il est branché ca marche mais je ne peux pas lire de musique jen ai besoin très bientot répondez vite svp !!! merci davance (:

    C'est important !!!

  • Bonjour, je me suis identifié sur mac avec carte visa etc pour migrer sur lion et pas moyen de faire la mise à jour, appstore ne me donne pas le lien, que faire?

    Bonjour, je me suis identifié sur mac avec carte visa etc pour migrer sur lion et pas moyen de faire la mise à jour, appstore ne me donne pas le lien, que faire?

    Voyez-vous cet écran?

  • Labwindows/CVI multitaches: acquisition et contrôle d'instrument

    Bonjour a tous,
    Dans le cadre d'un développement sous labwindows/CVI je suis amené à réaliser une acquisition tout en contrôlant autre un instrument. Je pense que la solution est le multi taches.
    Mon problème est que je ne connais pas du tout cette méthode, et je souhaiterais savoir si s'est une solution viable pour à la fois lancer une acquisition pendant que je contrôle un instrument (reset de son alimentation). Dans le cas contraire, pouvez vous m'indiquer une solution, avec la démarche a réaliser?
    Je sais réaliser une synchronisation entre une génération et une acquisition mais dans ce cas, il faut gérer une carte d'acquisition et un autre instrument. Comment faire??
    Je vous remercie
    Cordialement,
    Julien_B

    Hello,
    La bonne vieille recherche d'exemples (Help-> Find Examples) reste toujours efficace. Je vous suggère d'aller faire un tour dans la partie MultiThreading. On y trouve toutes les principales fonctions pour créer des threads et y exécuter du code (en parallèle, donc !).
    Cet article est aussi un bon départ.
    Cdt,
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • Acquisition vidéo (flux direct) sur JVC GR-D73 = Final Cut Pro ou iMovie

    Je n'arrive pas à acquérir une vidéo sur mon camescope JVC GR-D73 (flux direct avec magnétoscope analogique) ?
    J'ai le même problème avec iMovie 10.0.0.1
    j'ai la version 10.9 (Mavericks)   final cut pro v10.0.0.9
    Merci pour vos lumières ... cela fonctionnait correctement avec 10.8 (Mountain Lion)

  • Opération sur un tableau

    Bonjour.
    Sa fait un moment  que je cherche et ne trouve pas de réponse. Je ne suis encore qu'un débutant dans Labview. 
    Problème:
      J'ai un tableau A de double contenant par exemple: 1 2 3. Ce que je voudrais faire c'est créer un tableau B qui répète le tableau A  n fois (le n est choisi par l'utilisateur). C'est à dire: 1 2 3 1 2 3 ..... 1 2 3 . 
    J'ai testé avec des boucles for mais la boucle s'arrête automatiquement à la fin de mon tableau A ce qui fait que B et A sont toujours les mêmes.  
    Si quelqu'un à une solution (et je n'en doute pas) je le remercie d'avance  pour son aide.
    ARPSA 
    Résolu !
    Accéder à la solution.

    Je suis débutant aussi ... donc un petit exercice (pour moi) est toujours bon à prendre.
    Je n'ai pas ouvert ton VI, mais pour répondre à la question d'origine
    et conformément à l'avis de Rodéric ... je pense à ceci (en tous cas, cela répond au cahier des charges) :
    Dans la prochaine version de LV, je pense bien que l'on pourra concaténer sur une noeud d'indexation
    Mais avec LV2011, obligé d'utiliser "Build Array" + "SR".

  • Timers Multithread sous CVI

    Bonjour,
    J'ai plusieurs questions concernant mon programme avec LabWindows CVI 9.0 et 4 cartes NI PCI 6229, sous Windows XP et dual core Intel 3GHz.
    Je souhaite réaliser un programme qui réalise une boucle d’asservissement et également un contrôle et affichage sur des acquisitions. Je n’ai malheureusement pas le choix sur l’OS et je ne peux pas m’orienter sur une solution temps réel.
    Pour cela, je souhaite réaliser
    -          une boucle qui gère l’asservissement (acquisition sur 20 entrées, calcul sur ces acquisitions, et génération sur 10 sorties, tout ceci en 10ms, c’est la BOUCLE CRITIQUE)
    -          une boucle pour le contrôle (simple contrôle sur ces acquisitions: comparaison à une valeur seuil, 10ms)
    -          une boucle pour l’affichage (affichage des résultats sur la face avant des contrôles OK ou non OK, toutes les 200ms)
    Je souhaitais à la base utiliser 3 timers asynchrones de CVI, mais je me suis aperçu qu’on ne pouvait utiliser qu’un seul Timer asynchrone à la fois.
    J’ai donc vu qu’il y avait une autre solution, le multithread en utilisant les thread pool. Cette solution m’intéresse, car je souhaiterai mettre la boucle critique dans 1 thread sur le 1er coeur, la boucle de contrôle dans un 2ème thread sur le 2ème coeur, et la boucle d’affichage dans un 3ème thread sur le 2ème coeur.
    La boucle d’asservissement est la boucle critique et doit être de 10ms à +/- 2ms.
    Les autres bouclent ne sont pas critiques et peuvent avoir un décalage de +/- 10ms, le but est de ne pas perdre de données et de contrôler toutes les acquisitions. Un affichage toute les 200ms suffit.
    Voilà j’ai alors 2 questions :
    -          est-ce que mon approche (timers en multithread et diviser sur les 2 cœurs) convient pour mon application ?
    -          et comment mettre un timer classique dans un thread spécifique ? J’ai vu qu’il fallait utiliser «CmtScheduleThreadPoolFunction (int Pool_Handle, ThreadFunctionPtr Thread_Function, void *Thread_Function_Data, int *Thread_Function_ID)” Mais cette fonction appelle une fonction de type “CVICALLBACK FonctionThread(void *functionData)” et mon timer classique est de type “CVICALLBACK Timer_Classique (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)” Comment donc appeler un timer classique avec une fonction CmtScheduleThreadPoolFunction ? Faut-il procéder d’une autre manière ?
    Je vous remercie de votre aide.
    Cordialement,
    Hédi.

    Bonjour,
    L'approche multi-thread est en effet la bonne, dès qu'il faut séparer plusieurs tâches. Je vous invite à consulter cet article du Rebel Site, qui traite du multithread et constitue une référence en la matière. Attention, le multithread n'implique pas obligatoirement une gestion multicoeur. Il faut pour le mettre en oeuvre passer par l'API de Windows.
    Est-il bien nécessaire de faire de du contrôle 10ms? (deuxième boucle) Au quel cas, je ne suis pas absolument sûr qu'il faille créer un thread séparé. Si cette tâche peut supporter un cadencement plus lent, il serait plus malin de venir la traiter dans le troisième thread.
    Il serait intéressant d'utiliser une Thread Safe Queue pour faire circuler les données d'un thread à l'autre. Ce mécanisme permettra de ne pas perdre de données. D'autre part, vous pouvez alors installer une callback sur un nombre d'éléments dans la TSQ (Thread Safe Queue) et venir déclencher la callback associée à cette TSQ dès que 20 éléments sont présents pour piloter le troisième thread depuis le premier.
    Dans cette configuration, il n'y a plus besoin que d'un timer, pour la partie temps critique - bien que sous Windows, on ne puisse pas garantir le déterminisme d'une boucle à 10ms - les autres thread étant 'esclave' du premier.
    Cordialement,
    .mrLeft{float:left} .mrInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898}
    Mathieu R.  
      CTD - Certified TestStand Developer / Développeur TestStand Certifié  
      CLAD - Certified LabVIEW Associate Developer  

  • Comment faire pour synchroniser une sortie numérique sur une horloge?(pci6602)

    Bonjour,
    je voudrais faire des sorties numériques sur une ligne donnée (carte PCI 6602), ces sorties étant réalisées pour chaque front descendant d'une horloge. En clair, je voudrais synchroniser la sortie d'une valeur numérique sur le front descendant d'une horloge : comment faire ?

    Bonjour,
    Générer des mots numériques ou une valeur binaire (sur une ligne ou un port) avec un cadencement matériel (horloge compteur sur front montant ou descendant) n'est pas possible avec une carte 6602 seule car elle n'a pas été conçue dans ce but. La carte possède 8 compteurs mais n'a pas de ligne ou port programmable en acquisition ou génération (cadencement logiciel ou matériel). Pour ce type d'opération d'E/S numériques, les cartes PCI-DIO-32-HS, PCI-6533 et PCI-6534 ont été spécialement conçues. Elle permettent de faire de la génération sur 8, 16 ou 32 bits (1,2, ou 4 ports) jusqu'à 20 Mo/S (pour la 6534) et avec un cadencement matériel (horloge interne ou externe avec choix du type de front déclenchant le transfert). L'horloge peut provenir par exemple de votre carte compteur PCI-6602.
    Enfin, une bonne solution serait d'utiliser une carte Serie M qui intègre à la fois des compteurs (génération d'horloge) et un port 8 bits (génération numérique sur une ligne ou le port entier). Le cadencement numérique matériel est possible avec les cartes Série M. Ce type de carte serait donc un bon compromis pour ce que vous souhaitez faire.
    Cf "Correlated I/O" dans le tutorial ci-dessous:
    * M Series – The New Data Acquisition Standard – Frequently Asked Questions
    http://zone.ni.com/devzone/conceptd.nsf/webmain/9c71859eb70d6e2586256ed7007ccf7f?OpenDocument
    Bonne continuation
    Matthieu Gourssies
    National Instruments France

  • Générer train d'impulsion - décaler ce train - trigger ACQUISITIONs avec train décaler - Récupérer les échantillons

    Je dispose d'une carte NI-6220 M et avec DAQMX et Labview 7.1 je cherche à :
    - Générer un train de 280 impulsions à 200 Hz pour commandre un système extérieur.
    - Décaler ce train d'impulsion de 0.5 ms pour trigger 280 ACQUISITION  de 5 échantillons à 2000 Hz
    - Numériser 2 voies analogiques (5 échantillons à 2000 Hz à chaque impulsion)
    - Récupérer les échantillons numérisés
    Je manque d'expérience dans l'utilisation de cette carte et NI-DAQMX
    Quelles sont les pins d'entrée et sortie à utiliser.
    Un grand merci à ceux qui peuvent m'apporter une aide.

    Bonjour,
    Quel beau projet dites-moi? Je vous joins, si vous ne l'avez pas déjà le détail des pins des séries M. (M Series Help/Specifications and device/NI-6220/Pinout)
    Génération sur compteur 0 <-> pin 2 (PFI 12) OU compteur 1 <-> pin 40 (PFI 13)
    Pour ce qui est de la programmation, je ne saurais vous conseiller de regarder dans LabView/Aide/Recherche d'exemples. Dans le répertoire Entrée-Sorties matériel/DAQmx/ vous retrouvez toutes les tâches possibles de déclenchement d'acquisition, de génération de train d'impulsion, d'acquisition sur plusieurs voies....
    Je vous souhaite bon courage
    David D. - Ingénieur d'Applications - NI France
    Attachments:
    M series.zip ‏1895 KB

  • Multithreading and daq acquisition

    I�m trying to run 2 DAQ�s (PCI MIO 16 XE) devices in one PC (Win XP) to acquire N-data samples from 5 AI channels each using LV 7.0. For the acquisition to starts, each device is independently triggered (5KS/s) . It works fine and I can get the data. The problem is that the second DAQ starts the acquisition probably only after the first has finished its acquisition. (I cannot be sure about that because actually I do not know how to get the start time of an acquisition). At least the DAQ�s are starting the acquisition at different times and this could be a problem if the time difference is to big( >500 micro seconds).
    1. is this a classical Multithreading problem? Is there a solution?
    2. how can I assure that both DAQ�s start
    the acq. nearly at the same time?
    3. how can I get the start time of the Acq. ?
    4. if I have to use 4 DAQ�s on one PC will this work? Known problems?
    Thanks
    Alberto

    Let me try to explain my problem using the DAQmx example VI �Cont Acq&Graph Voltage-Ext Clk- Dig Start.vi�.
    Making few changes to the above VI, you can use it as a Sub-Vi. ( I also limited the number of scans to 1000). I used 2 PCI MIO 16XE-10 devices and wrote a program using two of this sub.vi. I used one trigger signal and one clock for both devices and scanned the same channel. As input I used a Sinus voltage. After the program runs, If I plot the obtained data time independent, i.e the x-axis is now the scan number rather than time (relative or absolute) I get a shift in the signals of about 90 clocks, this means that for example, the scan position for the max amplitude came for one device 90 clocks later than for th
    e first device. This is unacceptable for my application
    In other test , If I just did copy the block diagram of the example in a new VI twice and made the necessary changes (trigger channel, channel names, etc). Now I got NO shift in the Graph. Both sinus waves were exactly the same. But I still have no idea about the difference on the start time of both devices. I suppose, in this case both devices started at the same time. But how can I be sure of that?
    Without the possibility of using that Sub-Vi�s and because I have to use 1, 2 or 4 devices selectively, my program will be looking very complicated. I�m sure there must be a better way to solve this.
    Thanks

  • Prise d'image simultanée sur carte pcie 1430 labview

    J'ai une carte pcie 1430, avec 2 cameras pulnix et j'aimerais faire une acquisition simultané de 1 images sur chaque camera et le enregistrées sur le disque. atuellement j'ai un decalage de 0.5 seconde entre les images des cameras 1 et 2, avez vous une solutions un exemple de code a me proposer ??
    merci

    Essayez le VI qui s'appelle LL Ring (Dual Port).vi, que vous pouvez trouver dans l'example finder.
    J'attache aussi un 'code snippet' que vous pouvez essayer.
    La prochaine fois, merci de formuler votre question en Anglais. Vous adresserez une audience plus grande, et la reponse profitera aussi a un plus grand nombre.
    Merci!
    Christophe
    Attachments:
    LL Ring (Dual Port).vi.png ‏37 KB
    VI snippet.png ‏119 KB

  • Aide urgent: Acquisitio​n des données analogique​s sur Labview

    Bonjour,
    Je voulais savoir si je peux utiliser plusieurs modules de NI 9219 sur un même chassis  NI cDAQ-9174.
    L'acquisition des données ( déformations: entrées analogiques) se fait par l'intermédiaire du logiciel Labview Signal Express 2013.
    Je pose cette question parce que j'ai essayé d'utiliser deux cartes différentes NI 9219 et NI 6210 et j'ai obtenu une erreur.
    Merci de me répondre,
    Résolu !
    Accéder à la solution.

    Bonjour Eloise,
    Merci pour votre réponse. L'erreur est 201426. J'ai joint l'impime écran de cette erreur.
    J'ai une autre question pour vous si ca ne vous dérange pas! Lorsque je fais mon acquisition avec USB-6210 j'ai un bruit énorme au niveau des courbes. J'ai cherché la solution de ce problème, j'ai trouvé que cette carte d'acquisition ne fonctionne pas sur Windows XP. J'ai changé le système d'exploitation à windows 7 mais le problème persiste.
    Même si je fesais l'acquisition sans manip j'ai des fluctuations.
    Je vous remercie pour votre disponibilité,
    M.A.H
    Pièces jointes :
    Nouveau Image bitmap.jpg ‏366 KB

  • Filtre en racine cosinus surélevé

    bonjour;
    je suis étudiante en licence Télécommunication au Maroc;et je travaille actuellement sur les techniques de Modulation sous Labview .je suis tombée par hasard sur cette article (Télécommunications Numériques sous Labview).que j' ai lu plusieurs fois et que je trouve d'ailleurs trés intéressant .cependant .j'arrive pas à le programmer correctement sous Labview peut être que par ce que je travaille sur une version LV différente de la votre ;notamment j'arrive pas à trouver le composant qui permet de convertir Octet en 2 trains de bits ;(unit et lit) ;qui permet l'acquisition du signal présent sur le microphone;diagramme de 'oeil ;(demodul );(modul).et surtout la palette du filtre en racine cosinus surélevé
    Je veux demande par ailleurs de nous envoyer le code source des programmes qui figures sur  l'article.ou donnée moi le programe du filtre en racine cosin us surélevé sous matlab sript; s'il vous plait répond moi rapidement
    Merci par avance . 
    Attachments:
    j3ea10013.pdf ‏319 KB

    Salut Souad,
    J'ai pu localiser le moduler et démoduler fonctions dans notre boîte à outils Modulation, qui est un add-on pour LabVIEW et ne viennent pas avec un téléchargement régulier de LabVIEW. J'ai joint un lien vers cette boîte à outils au bas de cet e-mail. Je ne suis pas sûr quelle fonction l'auteur utilise pour acquérir son, mais le Acquire Sound.VI est livré en standard avec LabVIEW et devrait vous permettre d'obtenir une fonctionnalité similaire. Cela peut être trouvé sous Programmation >> graphiques et sonores >> Sound sur la palette de fonctions. Je suis pas sûr de l'octet à 2 trains Bits VI que l'auteur a utilisé, mais vous devriez être capable d'écrire votre propre sous-VI avec régulière LabVIEW pour obtenir la même fonctionnalité. L'auteur peut avoir créé ce VI personnalisé. Aussi, je suis sûr de la racine de cosinus surélevé fonction de script Matlab vous avez parlé. Peut-être, si vous postez votre code, je pourrais être de meilleure utilité pour vous. J'espère que cette information vous aidera!
    http://sine.ni.com/nips/cds/view/p/lang/en/nid/12855 - NI Modulation Toolkit
    Cordialement,
    Michelle G
    Applications Engineering
    National Instruments

  • Vision acquisition express stalls when i select a camera even if i click 'refresh'

    The vision acquisition express stalls when i select a camera even if i click 'refresh'. Using Labview 2010 (evaluation) on a Windows 7 laptop and tried on another computer running windows xp.

    Hi,
    A few questions:
    1) What kind of camera are you using?  (what model, are you using IMAQ, IMAQdx, what version, etc.)
    2) Are you able to acquire from your camera in MAX? 
    3) can you run a shipping example using the low level VI's or does this only happen in Vision Acquisition Express?
    Tejinder Gill
    National Instruments
    Applications Engineer
    Visit ni.com/gettingstarted for step-by-step help in setting up your system.

Maybe you are looking for

  • Sharing iTunes for family members

    I share Itunes with my family and music is all just one big list of all of ours. I can surely make my own library but don't know how. Thank you, Gerard

  • [JClient 9.0.3] Trapping events and canceling actions

    Subject: [JClient 9.0.3] Trapping events and canceling actions I'd like to be able to, based on some condition, abort certain actions (navigate, delete, insert, etc, etc) when the appropriate events have been fired. E.g., in case the Transaction is d

  • Development, Test, Acceptance, Production Set-up for ES2

    Hi collegeau LC experts!, At a client we have setup a server structure that consists of DTAP, so seperated server and LC instances for the various goals. Now we are facing a need to get production data in sync with the other environments. This way we

  • Adobe Premiere Pro CS5 APP CRASH. PLZ HELP!

    Hello, This is my first time posting here So Adobe Premiere Pro CS5 randomly decided to start crashing on me. First here are my sytem stats: Windows 7 Home Premium model: VAIO Processor: Intel(R) Core(TM) i7 CPU     Q740  @ 1.73 GHz   1.73 GHz instal

  • How to run a bulk turn on\turn off of the physical machines from UCS?

    Hi, all: I'm a newbie using UCS 2.0(1.x)  and would like to reset multiple servers in a single command instead that doing one by one? Regards, Alberto.