# NI-DAQmx

> Matériel d'acquisition de données de National Instruments (châssis cDAQ et leurs modules, équipements USB et PCI Express, et les équipements simulés de NI MAX) lu un échantillon par scrutation par le NI-DAQmx installé sur cet ordinateur : la carte Équipement NI-DAQmx, la voie physique et la mesure d'un tag, la lecture et l'écriture, la découverte, et un exemple complet sur un châssis cDAQ.

Le pilote **NI-DAQmx** lit et écrit le matériel d'acquisition de données de National Instruments :
les châssis cDAQ et leurs modules de la série C, les équipements USB comme l'USB-6001 ou l'USB-6211,
et les équipements PCI Express, par NI-DAQmx, le pilote que National Instruments distribue
gratuitement pour son matériel. C'est le matériel qu'un programme LabVIEW lit avec les blocs DAQmx,
configuré sur un panneau au lieu d'être câblé dans un diagramme : chaque tag est une voie physique,
telle que NI MAX la nomme (`ai0`, `port0/line3`, `ao0`, `ctr0`), avec ce que la voie mesure ou
pilote, et ses valeurs arrivent là où arrivent celles de tout autre tag : dans la Logique, sur les
tableaux de bord, dans les exécutions d'un banc d'essai du [Process](process).

Le pilote lit un échantillon par scrutation : à l'intervalle de scrutation de chaque tag, il prend
une valeur de la voie, comme le fait tout autre pilote. Il sert les signaux lents (températures,
pressions, niveaux, états, comptages), pas l'acquisition continue que le matériel fait sur sa
propre horloge ; voir [Limites à connaître](#limits-worth-knowing).

Un équipement de ce pilote est un équipement de NI MAX, trouvé par le nom que NI MAX lui donne, où
qu'il soit branché : en USB, dans un emplacement PCI Express, dans un châssis cDAQ en USB ou en
Ethernet. Les équipements simulés que NI MAX crée gratuitement, pour la plupart du matériel NI, sont
lus comme les vrais, si bien qu'une configuration peut être montée et essayée avant que le matériel
n'arrive. Les équipements simulés peuvent aussi être créés par l'API de configuration de NI, qu'un
assistant IA ayant accès à cet ordinateur peut utiliser avec votre accord. Les équipements se rangent
sous le pilote et peuvent être classés dans des dossiers,
**Pilote → Dossier → Équipement → Tag**, comme sous tout pilote sans ligne série ni broker.

## NI-DAQmx sur cet ordinateur {#ni-daqmx-on-this-computer}

Le produit n'inclut pas NI-DAQmx et n'installe aucun de ses fichiers. Le pilote lit le matériel par
le NI-DAQmx installé sur cet ordinateur, celui qu'utilisent NI MAX et LabVIEW. La station vérifie
d'elle-même s'il est là : la première fois que la page du pilote, la page de l'un de ses équipements
ou l'agent le demande, puis toutes les 30 secondes tant qu'il manque. Tant que le Connector n'a pas
démarré, on ne sait pas si NI-DAQmx est là, et rien n'en est dit. Tant qu'il manque :

| Où | Ce qui se passe |
| --- | --- |
| La page du pilote | Un avis de prudence, « NI-DAQmx n'est pas installé sur cet ordinateur », avec les étapes ci-dessous. Son lien ouvre la page de NI dans le navigateur de l'ordinateur. |
| La page de chaque équipement | Le même avis. |
| Les équipements | Peuvent être ajoutés et configurés, tags compris ; ils restent hors ligne, et la dernière erreur de chacun donne les mêmes étapes, en anglais, comme sont écrites les causes propres du pilote. |
| Découvrir | Ne liste rien, et dit que NI-DAQmx n'est pas installé et que l'avis de la page du pilote indique le téléchargement et les étapes d'installation. |
| L'agent | `driver_capabilities` donne les étapes sous `prerequisite`, avec `installed` à false. |

Pour l'installer :

1. Ouvrez la page de NI [NI-DAQ™mx Download](https://www.ni.com/en/support/downloads/drivers/download.ni-daq-mx.html). Elle demande de se connecter avec un compte NI avant le téléchargement.
2. Dans sa liste Version, prenez la version la plus récente dont le readme (**View Readme**) mentionne le Windows de cet ordinateur et, sous Device Support, votre équipement. NI-DAQmx ne fonctionne que sur Windows 64 bits.
3. Exécutez le programme d'installation en tant qu'administrateur : il installe NI-DAQmx par NI Package Manager. Redémarrez l'ordinateur si le programme d'installation le demande.

Le NI-DAQmx le plus récent ne prend plus en charge certains équipements anciens : si son readme ne
mentionne pas le vôtre, choisissez dans la liste Version une version antérieure dont le readme le
mentionne.

Au plus tard 30 secondes après l'installation, l'avis disparaît et les équipements de ce pilote se
connectent avec la configuration qu'ils ont, sans redémarrer Ganter Lab. NI MAX (NI Measurement &
Automation Explorer) affiche chaque équipement avec le nom à saisir dans [la carte Équipement NI-DAQmx](#the-ni-daqmx-device-card).

## La page du pilote {#the-drivers-page}

La page porte le tableau **Équipements** de tout pilote (voir
[Le tableau des équipements](connector-drivers#the-device-table)), qui grandit avec
**Ajouter un équipement**, à droite de son titre ; vide, il affiche « Aucun équipement pour l'instant. »
La barre du pilote porte **Découvrir**, et la page n'a pas de carte Portée du balayage, parce que le
balayage interroge NI-DAQmx et rien d'autre.

## Équipement {#device}

### La carte Équipement NI-DAQmx {#the-ni-daqmx-device-card}

Un équipement de ce pilote n'a pas de carte Connexion : il n'y a ni hôte, ni port, ni route à saisir,
puisque NI-DAQmx trouve l'équipement par son nom. À sa place, la carte **Équipement NI-DAQmx** dit
quel équipement de NI MAX il lit.

| Champ | Signification | Par défaut |
| --- | --- | --- |
| **Nom de l'équipement** | « Le nom que NI MAX donne à l'équipement, par exemple Dev1, ou cDAQ1Mod1 pour un module d'un châssis cDAQ. Un équipement renommé dans NI MAX est de nouveau lu dès que son nouveau nom est saisi ici. » | vide |
| **Produit** | Lecture seule : « Ce que NI-DAQmx indique que l'équipement est, par exemple NI 9211, lu chaque fois que la station s'y connecte. » Il affiche « Pas encore lu » jusqu'à ce que l'équipement se connecte, et de nouveau dès qu'il n'est plus connecté. Rien n'en est enregistré. | |

Un châssis cDAQ est à lui seul un équipement de NI MAX (`cDAQ1`), et chacun de ses modules aussi
(`cDAQ1Mod1`, `cDAQ1Mod2`). Les voies d'un module se lisent sur l'équipement du module ; les
compteurs du châssis (`_ctr0` à `_ctr3`), sur l'équipement du châssis. L'**Intervalle de scrutation (ms)**
de la carte Équipement fonctionne comme pour tout pilote, et chaque tag peut le remplacer.

Un nouvel équipement n'a pas encore de nom, et la station n'essaie pas de le joindre tant qu'il n'en
a pas : sa ligne affiche « Équipement NI-DAQmx pas encore saisi », ses tags se lisent comme des
vides, et sa page porte l'avis
« La station n'essaie pas de joindre cet équipement tant qu'il n'a pas le nom d'un équipement NI-DAQmx : rien n'est donc encore lu depuis lui et il n'y a aucune erreur à afficher. Saisissez le nom que NI MAX donne à l'équipement dans la carte Équipement NI-DAQmx ci-dessous et la station s'y connecte. »
Sur un ordinateur sans NI-DAQmx, c'est l'avis indiquant que NI-DAQmx n'est pas installé qui se
trouve à cet endroit.

Un nom que NI-DAQmx ne pourrait jamais lire est refusé sous la case : « Un nom d'équipement ne contient ni « / », ni « , », ni « : ». Saisissez le nom exactement comme NI MAX l'affiche, par exemple Dev1 ou cDAQ1Mod1. »
Une barre oblique est ce qui sépare un équipement de sa voie, si bien que `Dev1/ai0` est la voie
d'un tag et non un équipement. Savoir si NI MAX connaît le nom est la réponse de NI-DAQmx lui-même,
donnée quand la station se connecte : un équipement que NI MAX ne connaît pas reste hors ligne avec
les mots de NI-DAQmx comme dernière erreur.

L'URI de base que l'en-tête affiche est le nom de l'équipement derrière le schéma du pilote :
`nidaqmx://cDAQ1Mod1`. Deux équipements de ce pilote peuvent lire le même équipement de NI MAX, par
exemple le même module à deux intervalles de scrutation différents ; le nom n'a pas à être unique.

## Adressage du tag {#tag-addressing}

### La voie physique {#the-physical-channel}

Un tag de ce pilote lit ou pilote une voie de son équipement. La carte Source de la valeur du tag porte la case
**Voie physique**, avec en dessous une indication qui suit la mesure :
« Voie d'entrée analogique, p. ex. ai0 ou cDAQ1Mod1/ai0 », « Ligne numérique, p. ex. port0/line3 ou Dev1/port0/line3 »,
« Voie de sortie analogique, p. ex. ao0 ou Dev1/ao0 » ou « Compteur, p. ex. ctr0, ou _ctr0 sur un châssis cDAQ ».

La voie est enregistrée par rapport à son équipement (`ai0`), si bien qu'un équipement renommé dans
NI MAX change un seul champ, celui de l'équipement. Une voie écrite en entier comme NI MAX l'écrit
(`cDAQ1Mod1/ai0`) est enregistrée sous sa forme relative quand elle nomme l'équipement du tag
lui-même, et refusée quand elle en nomme un autre :
« Cette voie appartient à l'équipement Dev1, pas à cDAQ1Mod1. Saisissez une voie de cet équipement, ou la voie seule, par exemple ai0. »

### Mesures {#measurements}

Sous la voie, **Mesure** dit ce que la voie mesure ou pilote. La mesure décide des types de donnée
sous lesquels le tag est lu, de l'accès qu'il admet, de son unité et des champs dessinés en dessous.

| Mesure | Voie | Type de donnée | Accès | Unité |
| --- | --- | --- | --- | --- |
| **Entrée de tension** | une entrée analogique, `ai0` | Double ou Float | Lecture seule | volts |
| **Entrée de courant** | une entrée analogique, `ai0` | Double ou Float | Lecture seule | milliampères |
| **Entrée thermocouple** | une entrée analogique, `ai0` | Double ou Float | Lecture seule | degrés Celsius |
| **Ligne d'entrée numérique** | une ligne numérique, `port0/line3` | Boolean | Lecture seule | |
| **Ligne de sortie numérique** | une ligne numérique, `port0/line3` | Boolean | Lecture et écriture (par défaut), Écriture seule ou Lecture seule | |
| **Sortie de tension** | une sortie analogique, `ao0` | Double ou Float | Écriture seule | volts |
| **Comptage de fronts** | un compteur, `ctr0` (`_ctr0` sur un châssis cDAQ) | Int64 ou Double | Lecture seule | impulsions |

Un nouveau tag est une entrée de tension, lue en Double. Une voie saisie que la mesure en vigueur ne
lit pas apporte la mesure qu'elle lit le plus naturellement : une entrée analogique, une entrée de
tension ; une ligne numérique, une ligne d'entrée numérique ; une sortie analogique, une sortie de
tension ; et un compteur, un comptage de fronts. Choisir une autre mesure apporte la plage de cette
mesure, et un type de donnée ou un accès qu'elle n'admet pas devient celui qu'elle prend, si bien
que les listes Type de donnée et Accès ne proposent que ce que la mesure admet. Le courant se lit en
milliampères (NI-DAQmx lit des ampères et le pilote multiplie par 1000), si bien qu'une boucle
4-20 mA s'écrit comme on la nomme.

Chaque mesure dit sous son sélecteur ce qu'elle fait :

| Mesure | La ligne en dessous |
| --- | --- |
| **Entrée de tension** | « Lit un échantillon en volts à chaque scrutation. » |
| **Entrée de courant** | « Lit un échantillon en milliampères à chaque scrutation. » |
| **Entrée thermocouple** | « Lit un échantillon en degrés Celsius à chaque scrutation, soudure froide compensée. » |
| **Ligne d'entrée numérique** | « Lit la ligne comme vrai (haut) ou faux (bas). » |
| **Ligne de sortie numérique** | « Pilote la ligne avec la valeur écrite et relit l'état qu'elle tient. » |
| **Sortie de tension** | « Pilote la sortie avec la tension écrite. NI-DAQmx ne relit pas une sortie analogique : le tag est donc en écriture seule. » |
| **Comptage de fronts** | « Compte les fronts dès que la station se connecte à l'équipement et lit le comptage à chaque scrutation. Une reconnexion repart du comptage initial. » |

### Les champs de la mesure {#the-measurements-fields}

Un champ que la mesure ne lit pas n'est ni dessiné ni enregistré avec le tag.

| Champ | Mesures | Signification | Par défaut |
| --- | --- | --- | --- |
| **Plage (V)**, **Plage (mA)** ou **Plage (°C)** | Entrée de tension, Entrée de courant, Entrée thermocouple, Sortie de tension | Deux cases, **Valeur minimale** et **Valeur maximale**, dans l'unité de la mesure. Sur une entrée : « NI-DAQmx choisit la plage d'entrée de l'équipement qui contient celle-ci : une plage étroite lit donc un petit signal plus finement. » Sur la sortie de tension : « La sortie n'accepte que des valeurs dans cette plage ; une écriture hors plage est refusée avant d'atteindre l'équipement. » | -10 à 10 V ; 0 à 20 mA ; 0 à 100 °C |
| **Configuration des bornes** | Entrée de tension, Entrée de courant | **Valeur par défaut de la voie**, **Différentielle**, **Asymétrique référencée (RSE)**, **Asymétrique non référencée (NRSE)** ou **Pseudo-différentielle** : « Comment l'entrée est câblée : une entrée différentielle mesure entre deux bornes de la voie, une entrée asymétrique par rapport à une référence commune. La valeur par défaut de la voie est celle que NI-DAQmx choisit pour cette voie. » | **Valeur par défaut de la voie** |
| **Résistance de shunt** | Entrée de courant | **Valeur par défaut de la voie**, **Interne** ou **Externe** : « La résistance que le courant traverse pour être mesuré : celle intégrée à l'équipement, ou une résistance externe câblée sur l'entrée, dont la valeur est saisie ici. » | **Valeur par défaut de la voie** |
| **Valeur du shunt (Ω)** | Entrée de courant, avec un shunt **Externe** | La valeur de la résistance externe, en ohms. | 249 |
| **Type de thermocouple** | Entrée thermocouple | **Thermocouple de type J**, **Thermocouple de type K**, **Thermocouple de type N**, **Thermocouple de type R**, **Thermocouple de type S**, **Thermocouple de type T**, **Thermocouple de type B** ou **Thermocouple de type E**. | **Thermocouple de type K** |
| **Compensation de soudure froide (CJC)** | Entrée thermocouple | **Capteur intégré** ou **Température fixe** : « La température de la soudure froide du thermocouple : mesurée par le capteur intégré à l'équipement ou à son bornier, ou une température fixe saisie ici quand la soudure est maintenue à une température connue. » | **Capteur intégré** |
| **Température CJC (°C)** | Entrée thermocouple, avec une **Température fixe** | La température de la soudure froide, en degrés Celsius. | 25 |
| **Front compté** | Comptage de fronts | **Front montant** ou **Front descendant**. | **Front montant** |
| **Sens du comptage** | Comptage de fronts | **Comptage croissant** ou **Comptage décroissant**. | **Comptage croissant** |
| **Comptage initial** | Comptage de fronts | Le comptage dont part le compteur chaque fois que l'équipement se connecte, de 0 à 4294967295. | 0 |
| **Borne d'entrée** | Comptage de fronts | « La borne dont les impulsions sont comptées, par exemple /Dev1/PFI8. Laissée vide, le compteur compte sur sa propre borne d'entrée par défaut. » Vide, la case affiche « Valeur par défaut du compteur ». Une borne écrite sans son équipement (`PFI8`) se lit sur l'équipement du tag lui-même. Sur un compteur d'un châssis cDAQ (`_ctr0`), qui n'a pas de borne d'entrée propre, la case n'affiche aucune valeur par défaut et la note dit « La borne dont les impulsions sont comptées, par exemple /cDAQ1Mod2/PFI0. Un compteur d'un châssis cDAQ n'a pas de borne d'entrée propre, elle est donc obligatoire. » | vide |

Un tag dont les champs ne peuvent pas fonctionner n'est pas enregistré, et la page du tag dit ce qui
lui manque :

| Vous saisissez | La page du tag dit |
| --- | --- |
| Aucune voie | « Saisissez la voie physique, par exemple ai0 ou Dev1/ai0. » |
| Une voie d'un autre genre que celle que la mesure lit, comme `ao0` sous un thermocouple | « Cette mesure lit une voie d'entrée analogique, par exemple ai0. », « Une sortie de tension pilote une voie de sortie analogique, par exemple ao0. », « Une ligne numérique s'écrit par son port et sa ligne, par exemple port0/line3. » ou « Un comptage de fronts lit un compteur, par exemple ctr0. » |
| Une valeur minimale qui n'est pas inférieure à la maximale | « La valeur minimale doit être inférieure à la valeur maximale. » |
| Un shunt externe sans résistance supérieure à zéro | « Un shunt externe a besoin de sa résistance en ohms, supérieure à zéro. » |
| Une température fixe de soudure froide égale ou inférieure au zéro absolu | « La température CJC doit être une température en degrés Celsius au-dessus du zéro absolu. » |
| Un comptage initial hors de ce qu'un compteur 32 bits contient | « Le comptage initial est un nombre entier de 0 à 4294967295. » |
| Une borne d'entrée avec une espace ou une virgule | « Saisissez la borne d'entrée telle que NI-DAQmx la nomme, par exemple /Dev1/PFI8, sans espace ni virgule. » |
| Un comptage de fronts sur un compteur d'un châssis cDAQ (`_ctr0`) sans borne d'entrée | « Un compteur d'un châssis cDAQ n'a pas de borne d'entrée propre : saisissez la borne où arrivent ses impulsions, par exemple /cDAQ1Mod2/PFI0. » |
| Un type de donnée ou un accès que la mesure n'admet pas | « Cette mesure se lit en Double, Float. », et pour un accès, la phrase qui nomme les accès que la mesure admet |

L'enregistrement tient les mêmes règles que les panneaux, et le journal des actions le dit quand il
en refuse un :
« L'équipement « Module voltages » nomme un équipement NI-DAQmx que le pilote ne peut pas lire. Ouvrez-le et corrigez le nom d'équipement que son panneau signale. »
ou « Le tag « Pressure » a un réglage que le pilote NI-DAQmx ne peut pas utiliser. Ouvrez-le et corrigez le champ que le panneau du tag signale. »

La ligne en lecture seule **Adresse source (bus)** montre ce que le pilote reçoit : la voie telle
que NI-DAQmx la nomme et chaque réglage de la mesure, par exemple
`cDAQ1Mod1/ai0?measurement=voltageInput&terminal=diff&min=0&max=10`,
`cDAQ1Mod2/ai0?measurement=thermocouple&type=K&cjc=builtIn&min=0&max=400`,
`Dev1/port0/line3?measurement=digitalOutput` ou
`cDAQ1/_ctr0?measurement=edgeCount&edge=rising&direction=up&initial=0&input=%2FcDAQ1Mod3%2FPFI0`.

## Lecture {#reading}

Le pilote crée les tâches NI-DAQmx d'un équipement quand la station s'y connecte, et les garde
jusqu'à ce qu'il se déconnecte. Ce que fait une lecture, et ce que NI-DAQmx répond, décident de ce
que le tag affiche (voir [La chaîne de conversion](connector-value-pipeline)) :

| Tags | Comment ils sont lus |
| --- | --- |
| Entrées analogiques (tension, courant, thermocouple) | Toutes les entrées analogiques d'un équipement partagent une tâche, que chaque lecture démarre, dont elle prend un échantillon par voie et qu'elle arrête ensuite. Un équipement a un moteur de cadencement analogique, et un châssis cDAQ trois pour tous ses modules, si bien qu'une tâche gardée démarrée empêcherait un autre module de lire. Une lecture qui trouve le moteur occupé par une autre tâche (NI MAX, LabVIEW) redemande deux fois, à 25 ms d'intervalle. Un échantillon sert à tous les tags analogiques de l'équipement pendant la moitié du plus court intervalle de scrutation parmi eux, si bien qu'un module thermocouple lent convertit une fois par passe. |
| Une voie que NI-DAQmx refuse | Chaque voie analogique est d'abord essayée seule : une voie que NI-DAQmx refuse (une plage que le module n'a pas, un thermocouple sur une voie qui n'en lit aucun) fait échouer son propre tag, pas tous les tags analogiques de l'équipement. |
| Lignes numériques, la sortie de tension, compteurs | Une tâche par tag, démarrée quand l'équipement se connecte. Un compteur compte à partir de là, et repart de son comptage initial quand l'équipement se reconnecte. |

| NI-DAQmx répond | Ce que fait la lecture |
| --- | --- |
| Une valeur, ou un avertissement | La valeur, dans l'unité de la mesure, avant que les étapes du tag lui-même ne la convertissent. |
| L'équipement retiré, injoignable ou réinitialisé | Une connexion perdue : l'équipement se reconnecte et ses tâches sont recréées. |
| Aucune réponse en 10 secondes | Un silence : l'équipement se reconnecte, et la politique du tag pour [un équipement qui n'a pas répondu](connector-value-pipeline#the-device-did-not-answer) décide de ce qu'il affiche. |
| Toute autre erreur | La lecture en échec de ce tag, avec le texte de NI-DAQmx lui-même et son code ; l'équipement continue de lire ses autres tags. |

La mise à l'échelle est la chaîne du tag lui-même : le pilote livre des volts, des milliampères ou
des degrés, et les étapes Mise à l'échelle et Étalonnage les transforment en valeur d'ingénierie
(0 à 10 V en 0 à 16 bar). Aucune échelle personnalisée de NI MAX n'est créée ni lue.

## Écriture {#writing}

Une **Ligne de sortie numérique** et une **Sortie de tension** s'écrivent ; toute autre mesure est
en lecture seule. Une écriture passe par le même entonnoir que celle de tout autre pilote : la case
d'écriture prend la valeur d'ingénierie, et les étapes de conversion sont inversées avant l'envoi de
la valeur brute (voir [Connector](connector)).

| Mesure | Ce que fait une écriture |
| --- | --- |
| **Ligne de sortie numérique** | Met la ligne à l'état haut pour vrai et à l'état bas pour faux. Le tag relit l'état que la ligne tient, sauf s'il est en Écriture seule. |
| **Sortie de tension** | Pilote la sortie avec la tension écrite. Une valeur hors de la plage du tag est refusée avant que rien n'atteigne l'équipement. NI-DAQmx ne relit pas une sortie analogique, si bien que le tag est en Écriture seule et n'affiche aucune valeur à lui. |

Une valeur que NI-DAQmx refuse revient sous la forme « Écriture refusée par l'équipement : `<raison>`. »,
avec pour raison le numéro d'erreur de NI-DAQmx (`NI-DAQmx -200561`), qui se lit de la même façon dans
toutes les langues, tandis que les mots de NI-DAQmx lui-même vont au journal technique ; aucune réponse en 10 secondes affiche « Écriture non confirmée : l'équipement n'a pas répondu à temps. »
Une écriture attend la lecture en cours sur le même équipement.

## Découverte {#discovery}

**Découvrir**, sur la barre du pilote, demande à NI-DAQmx chaque équipement que NI MAX connaît, les
simulés compris, et rien n'est envoyé au matériel. Il ne prend aucune adresse. Pendant qu'il tourne,
la ligne de progression nomme l'équipement en cours de lecture : « Lecture de cDAQ1Mod1 depuis NI-DAQmx… ».
Sans NI-DAQmx, il ne liste rien et dit « NI-DAQmx n'est pas installé sur cet ordinateur : aucun équipement ne peut être listé. L'avis du volet de ce pilote indique le téléchargement et les étapes d'installation. »

Chaque équipement est un candidat nommé par son nom et son produit (`cDAQ1Mod1 (NI 9205)`), avec ses
voies comme tags candidats, chacun avec les valeurs par défaut de sa mesure :

| Voies | Proposées comme |
| --- | --- |
| Entrées analogiques | **Entrée thermocouple** sur un module thermocouple, un équipement qui ne lit que des millivolts et dit lire un thermocouple (un NI 9211) : type K, **Capteur intégré** et 0 à 100 °C. Sinon **Entrée de tension** là où la voie lit une tension, sur -10 à 10 V ou sur la plage propre de l'équipement là où elle est plus étroite, et **Entrée de courant** ou **Entrée thermocouple** là où NI-DAQmx dit que la voie ne lit pas de tension. Un module universel, qui lit une vraie tension en plus d'un thermocouple, propose des entrées de tension : choisissez la mesure sur le tag une fois qu'il est ajouté. |
| Lignes numériques | **Ligne d'entrée numérique**, ou **Ligne de sortie numérique** là où la ligne ne fait que piloter. |
| Sorties analogiques | **Sortie de tension**, en Écriture seule. |
| Compteurs | **Comptage de fronts**. NI-DAQmx ne liste pas les compteurs d'un châssis cDAQ, si bien que le châssis arrive sans tags : ajoutez à la main un tag sur `_ctr0`, avec la **Borne d'entrée** où arrivent les impulsions, car un compteur du châssis n'en a pas de propre. |

Un candidat dont un équipement du pilote lit déjà le nom est marqué comme déjà configuré et propose
Ouvrir au lieu d'Ajouter. Le reste du comportement du balayage est dans
[Découverte](connector-discovery).

Un équipement que vous avez déjà relit ses voies depuis sa propre page : **Découvrir les tags**, dans l'en-tête de sa carte **Tags**, interroge NI-DAQmx sur ce seul équipement et ne propose que les voies pour lesquelles il n'a pas encore de tag, avec les valeurs par défaut de leur mesure (voir [Découvrir les tags d'un équipement](connector-discovery#discovering-a-devices-tags)).

## Exemple : un châssis cDAQ {#example-a-cdaq-chassis}

Un châssis cDAQ-9178, que NI MAX nomme `cDAQ1`, porte un module de tension NI 9205 dans l'emplacement
1, avec un transmetteur de pression 0-10 V câblé en différentiel sur sa première voie, et un module
thermocouple NI 9211 dans l'emplacement 2, avec un thermocouple de type K dans un four. Lisez les
deux :

1. Sur la page du pilote, **Ajouter un équipement** ; nommez-le `Module voltages` et saisissez
   `cDAQ1Mod1` dans **Nom de l'équipement**. Une fois connecté, **Produit** affiche NI 9205.
2. **Ajouter un tag** ; nommez-le `Pressure`, **Voie physique** `ai0`, gardez
   **Entrée de tension**, réglez la plage sur 0 et 10 et la **Configuration des bornes** sur
   **Différentielle**. Sur la carte Conversion, activez l'étape Mise à l'échelle avec un facteur de
   1,6 et donnez au tag l'unité bar : 0 à 10 V se lit 0 à 16 bar.
3. De nouveau **Ajouter un équipement** ; nommez-le `Oven thermocouples`, **Nom de l'équipement**
   `cDAQ1Mod2`.
4. **Ajouter un tag** `Zone1`, **Voie physique** `ai0`, **Mesure** **Entrée thermocouple**, gardez
   **Thermocouple de type K** et **Capteur intégré**, et réglez la plage sur 0 et 400.
5. Pour compter des impulsions sur le châssis, un équipement dont le **Nom de l'équipement** est
   `cDAQ1` porte les compteurs : un tag sur `_ctr0` est un **Comptage de fronts**, avec la
   **Borne d'entrée** où arrivent les impulsions, par exemple `/cDAQ1Mod3/PFI0`.

L'adresse de bus du tag `Pressure` se lit
`cDAQ1Mod1/ai0?measurement=voltageInput&terminal=diff&min=0&max=10`. Un agent fait de même avec les
outils ; le thermocouple nomme sa mesure, parce que `ai0` seul se lit comme une entrée de tension :

```
device_upsert name="Module voltages" driver="NiDaqmx" daqmxDevice="cDAQ1Mod1"
tag_upsert device="Module voltages" name="Pressure" address="ai0" daqmxMinimum=0 daqmxMaximum=10 daqmxTerminal="Differential"
device_upsert name="Oven thermocouples" driver="NiDaqmx" daqmxDevice="cDAQ1Mod2"
tag_upsert device="Oven thermocouples" name="Zone1" address="ai0" daqmxMeasurement="Thermocouple" daqmxThermocouple="K" daqmxMaximum=400
device_upsert name="Chassis counters" driver="NiDaqmx" daqmxDevice="cDAQ1"
tag_upsert device="Chassis counters" name="Pulses" address="_ctr0" daqmxCounterTerminal="/cDAQ1Mod3/PFI0"
```

## Outils de l'agent {#agent-tools}

`driver_capabilities` décrit ce pilote sous `niDaqmx` : le nom de l'équipement et, pour
chaque mesure, une voie d'exemple, l'unité, ses champs, les types de donnée et les accès qu'elle
admet, avec les listes de choix de chaque champ, le comportement des lectures et des écritures et ce
que la découverte propose. `device_upsert driver=NiDaqmx` prend `daqmxDevice`, le nom que NI MAX
donne à l'équipement (`''` l'efface, et l'équipement en attend un). `tag_upsert` prend la voie en
`address` et les champs de sa mesure : `daqmxMeasurement` (`VoltageInput`, `CurrentInput`,
`Thermocouple`, `DigitalInput`, `DigitalOutput`, `VoltageOutput` ou `EdgeCount` ; omis, la voie
apporte la sienne), `daqmxMinimum` et `daqmxMaximum`, `daqmxTerminal` (`Default`, `Differential`,
`ReferencedSingleEnded`, `NonReferencedSingleEnded` ou `PseudoDifferential`), `daqmxShunt`
(`Default`, `Internal` ou `External`) et `daqmxShuntOhms`, `daqmxThermocouple` (`J`, `K`, `N`, `R`,
`S`, `T`, `B` ou `E`), `daqmxCjcSource` (`BuiltIn` ou `ConstantValue`) et `daqmxCjcTemperature`,
`daqmxEdge` (`Rising` ou `Falling`), `daqmxCountDirection` (`Up` ou `Down`), `daqmxInitialCount` et
`daqmxCounterTerminal`. Un champ que la mesure ne lit pas est refusé, si bien que l'appel ne nomme
que ce qui s'applique. Un équipement et un tag que les outils renvoient portent `niDaqmx` : le nom
de l'équipement, son produit une fois connecté et si NI-DAQmx est installé.
`device_discover driver=NiDaqmx` liste chaque équipement que NI MAX connaît avec ses voies comme tags
candidats. Les autres outils sont dans [Outils de l'agent](agent-tools).

## Limites à connaître {#limits-worth-knowing}

- L'acquisition continue n'est pas faite. Le matériel peut échantillonner sur sa propre horloge, des
  milliers de points par seconde dans un tampon ; ce pilote lit un échantillon par scrutation, il
  sert donc les signaux lents, et une forme d'onde ou une vibration n'est pas lue.
- Le produit n'inclut pas NI-DAQmx : sans lui sur cet ordinateur, les équipements restent hors
  ligne, et la page du pilote dit comment l'installer ([NI-DAQmx sur cet ordinateur](#ni-daqmx-on-this-computer)). La station le prend en compte sans redémarrage.
- La soudure froide d'un thermocouple vient du capteur intégré du module ou d'une température fixe ;
  une soudure froide lue sur une autre voie n'est pas proposée.
- Une sortie analogique n'est pas relue : un tag de sortie de tension est en Écriture seule.
- Une tâche, une voie globale ou une échelle personnalisée enregistrées dans NI MAX ne sont pas
  utilisées : chaque tag nomme une voie physique, le pilote construit ses propres tâches, et la mise
  à l'échelle est la chaîne du tag.
