Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Conversion valeurs analogiques binaires lues en binaires calibrées

Bonjour,

 

Je travaille avec une carte de la série M en PXI.

Je viens d'apprendre à mes dépends, que les valeurs lues à l'aide des fonctions NiDaqMx type DAQmxReadBinaryI16() ne tiennent pas compte des facteurs de calibration.

Je l'ai découvert en faisant des mesures à l'aide de ces fonctions (qui n'étaient pas bonnes) : je ne trouvais pas les mêmes valeurs (apès mise à l'échelle en volt)  que les fonctions de lecture traditionnelles avec récupérations des valeurs en volt directement.

 

J'ai besoin d'avoir des valeurs au format i16 (sans mise à l'échelle en volts) correctes, car ces valeurs sont enregistrées dans des fichiers puis relues ultèrieurement par un autre logiciel

Comme il s'agit d'un portage d'un gros logiciel, je dois respecter celà.

 

Personnellement, je ne vois pas à quoi servent ces fonctions type DAQmxReadBinaryI16(), si les valeurs qu'on récupère ne sont pas bonnes.

 

En conséquence, avez-vous une solution rapide pour convertir une fois acquises mes valeurs i16 non calibrées en valeur i16 calibrées ???

 

 

Eddy

 

0 Kudos
Message 1 of 11
(4,656 Views)

Bonjour,

 

En effet, les valeurs retournées par la " DAQmxReadBinaryI16() " ne sont pas mises à l'échelle.

Pour retrouver les valeurs en volt à partir des valeurs retournées par  " DAQmxReadBinaryI16() " il faut faire une mise à l'échelle.

 

Les fonctions à utiliser sont:

DAQmxGetChanAttribute()

DAQmxGetScaleAttribute()

DAQmx_AI_DevScalingCoe()

 

Cette dernière fonction permet de récupérer les coefficients d'une équation polynomiale à l'aide de laquelle on pourra passer de la valeur binaire à la valeur en volt.

Par exemple, si l'élement situé à l'index 2 du tableau est 4, le 3ème terme de l'équation sera 4x10^2.

 

Sincères salutations,

 

Thomas B. | CLAD
National Instruments France

0 Kudos
Message 2 of 11
(4,641 Views)

Bonjour,

 

effectivement, mais ce n'est pas ce que je demande : je voudrais avoir les valeurs au format binaire (i16) calibrées (et non pas les valeurs en volts), et ceci sans que celà me prenne trop de temps.

Eddy DUCHENE
12 F Chemin de Boutary
69300 CALUIRE ET CUIRE

educhene@laposte.net
0 Kudos
Message 3 of 11
(4,637 Views)

Bonjour,

 

En effet, la fonction DAQmxBinaryReadI16() renvoit une valeur non mise à l'échelle (unscaled) . Pour les matériels supportant une calibration software, ces valeurs non mises à l'échelle ne sont pas calibrées.

 

Afin que je puisse mieux comprendre votre problématique, pourriez vous m'indiquer quel matériel vous utilisez et pourquoi vous ne souhaitez pas utiliser la fonction "haut niveau" qui renvoit une valeur en volt sur 64 bits.

Si c'est pour une question d'espace mémoire, une possibilité serait d'acquérir la valeur en 64 bits puis de la convertir en 16 bits (cast) avant de la stoquer.

 

Sincères salutations,

Thomas B. | CLAD
National Instruments France

0 Kudos
Message 4 of 11
(4,629 Views)

J'utilise une carte PXI-6225.

 

C'est à la fois pour des questions de performances et d'espace mémoire.

Je fais des traitements sur les buffers que j'acquiert (pendant l'acquisition) (notamment trigger soft) et je dois enregistrer les valeurs au format i16 après acquisition dans un fichier.

 

 Sinon, comment convertir les valeurs lues en volts en i16 ?

Eddy DUCHENE
12 F Chemin de Boutary
69300 CALUIRE ET CUIRE

educhene@laposte.net
0 Kudos
Message 5 of 11
(4,627 Views)

Pour convertir une valeur float64 en I16, on procédera de la manière suivante:

 

titi=(short int)toto;

 

titi sera alors une valeur entière.

 

Avant de faire ce cast, il faudra donc multiplier la valeur float64 par une constante afin de garder un maximum de précision.

 

Cordialement, 

Thomas B. | CLAD
National Instruments France

0 Kudos
Message 6 of 11
(4,621 Views)

Non, ce n'est pas ce que je veux avoir : je veux avoir la valeur sous forme i16 telle que j'aurais du l'avoir à la sortie de la fonction de lecture de données brutes avec prise en compte des facteurs de calibration

 

=> ex : valeur lue 5V avec calibre +- 10V => valeur i16 : (i16) 32767/2

Eddy DUCHENE
12 F Chemin de Boutary
69300 CALUIRE ET CUIRE

educhene@laposte.net
0 Kudos
Message 7 of 11
(4,618 Views)

Bonjour,

Je comprends ce que vous voulez faire, mais ceci est impossible avec le driver.
En effet, les données de calibration sont combinées avec les données de gamme (voir http://digital.ni.com/public.nsf/allkb/0FAD8D1DC10142FB482570DE00334AFB )

Ainsi, on ne pourra pas obtenir de données binaires prenant en compte la calibration mais pas la gamme de mesure.

 

Le meilleur choix sera à mon avis de faire une lecture classique (en volt) et de convertir les données acquises en binaire par programmation avant de les stocker.

Une autre option serait d'utiliser une carte série E (la 6225 est une série M). En effet, les cartes série E pratiquent une calibration hardware et donc les données renvoyées par la lecture binaire sont déja calibrées.

 

Cordialement,

Thomas B. | CLAD
National Instruments France

0 Kudos
Message 8 of 11
(4,597 Views)

Merci, mais vous avouerez que ce n'est franchement pas terrible !!!

Surtout que NI recommande de partout ses cartes série M à la place des séries E !!!!!

 

 

 

Eddy DUCHENE
12 F Chemin de Boutary
69300 CALUIRE ET CUIRE

educhene@laposte.net
0 Kudos
Message 9 of 11
(4,595 Views)

Merci de ce retour.

 

Je vous propose  de remonter cette information via notre "product suggestion center".

(    http://digital.ni.com/applications/psc.nsf/default?OpenForm&temp1=&node=    )

 

Cela permettra d'informer notre R&D des attentes des clients dans le but de faire évoluer au mieux nos produits.

 

Cordialement,

Thomas B. | CLAD
National Instruments France

0 Kudos
Message 10 of 11
(4,591 Views)