Discussions au sujet des autres produits NI

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

USB6210 et PCI6232 : lecture de deux valeur analogiques simultanément

Résolu !
Accéder à la solution

Bonjour,

 

Pour une application, je dois lire deux entre analogique en même temps.

J'utilise pour mes tests l'USB-6210 et pour la prod le PCI-6232.

 

J'ai réalisé un petit programme en C avec :

  DAQmxCreateTask

  DAQmxCreateAIVoltageChan ( ..., "Dev1/ai0", ..., DAQmx_Val_RSE, ...);

  DADmxStartTask(..);

Jusque là... tout va bien, je peux lire les info avec

  DAQmxReadAnalogScalarF64 (...);

 

puis je défini en parallèle la deuxième lignes de la même manière mais avec "Dev1/ai1"

et là, j'ai une erreur qui m'indique que le divice est déjà utilisé ???

 

Pouvez-vous m'aider svp.

 

Merci

0 Compliments
Message 1 sur 7
3 825 Visites

Normal, on ne peut créer qu'une seule tâche d'aquisition pour un périphérique donné !!

Par contre tu peux créer une tâche avec plusieurs voies configurées...

 

Regarde les exemples fournis avec CVI , il y a tout ce qu'il faut.

slts,

Pierre R...

Certified LabVIEW Developer
0 Compliments
Message 2 sur 7
3 805 Visites

Tout dabord, merci pour la réponse,

 

Je ne comprends pas, je fais régulièrement la même opération avec les lignes digitales sans aucun problème...

Quoi qu'il en soit, j'ai installé tous les exemples en C et je n'ai rien trouvé qui puisse m'aider ?

Je peux, en effet, définir une tache avec plusieurs lignes (a0:a1 par exemple) mais comment lire uniquement la valeur sur la ligne qui m'intéresse ?

 

 

Merci

0 Compliments
Message 3 sur 7
3 803 Visites

Il existe une différence notable entre les DI et les AI, les AI utilisent un convertisseur analogique/numérique  qui est multiplexé, ce qui permet d'avoir un seul CA/N pour toutes les voies de la carte, de même l'horloge d'échantillonage est la même pour toutes les voies analogiques.

sinon en appelant la fonction Read tu recois un buffer contenant les échantillons pour toutes tes voies, à toi de récupérer les valeurs que tu souhaites dans ce tableau.

Mais je t'invite a consulter les exemple fournis avec le driver DAQmx et à bien lire les aides des différentes fonctions, cela devrait t'éclairer grandement.

Pierre R...

Certified LabVIEW Developer
0 Compliments
Message 4 sur 7
3 798 Visites

Bonjour,

 

J'ai regardé tous les exemples fournis en C, mais aucun ne montre une lecture sur plusieurs lignes.

 

ce que j'ai trouvé en regardant la doc, c'est que :

  - Dans la fonction DAQmxCreateAIVoltageChan, je dois définir la plage à lire soit : " dev01/ai0:1" pour lire les voies 0 à 1

  - Pour la lecture, je dois utiliser la fonction ReadAnalogF64 avec le numSampsPerChan à 1, le fillmode GroupbyChanel

 

Dans mon cas, je veux lire un échantillons par voie, donc je suppose que le ArraySizeInSamps doit être 2 et que je dois founir un tableau de deux éléments à remplir par la fonction...

 

Est-ce bien cela ?

 

Merci

 

Encore une petite question, pouvez-vous me confirmer ceci:

  - pour définir les voies de 0 à 4 je dois écrire dev0/ai0:ai4

  - pour définir les voies 0 et 4 je dois écrire dev0/ai0:dev0/ai4 -> pas certain de ceci

 

 

Re-Merci 😉

0 Compliments
Message 5 sur 7
3 793 Visites
Solution
Accepté par l'auteur du sujet ale2000

C'est cela oui.

 

Pour les voies : soit une liste de voies séparées par des virgules : dev1/ao0,dev1/ao2

soit si elles se suivent un intervalle de voies : dev1/ao0:4

Slts

Pierre R...

Certified LabVIEW Developer
0 Compliments
Message 6 sur 7
3 764 Visites

Uper,

 

merci, ca fonctionne 😉

0 Compliments
Message 7 sur 7
3 751 Visites