# NI-DAQmx

> Hardware de aquisição de dados da National Instruments (chassis cDAQ e seus módulos, dispositivos USB e PCI Express, e os dispositivos simulados do NI MAX) lido uma amostra por leitura pelo NI-DAQmx instalado neste computador: o cartão Dispositivo NI-DAQmx, o canal físico e a medição de uma tag, leitura e escrita, a descoberta e um exemplo completo num chassi cDAQ.

O driver **NI-DAQmx** lê e escreve hardware de aquisição de dados da National Instruments: chassis
cDAQ e seus módulos da Série C, dispositivos USB como o USB-6001 ou o USB-6211, e dispositivos PCI
Express, pelo NI-DAQmx, o driver que a National Instruments distribui de graça para o hardware dela.
É o hardware que um programa LabVIEW lê com os blocos DAQmx, montado num painel em vez de ligado num
diagrama de blocos: cada tag é um canal físico, como o NI MAX o nomeia (`ai0`, `port0/line3`, `ao0`,
`ctr0`), com o que o canal mede ou aciona, e os valores chegam onde chegam os de toda outra tag: na
Lógica, nos dashboards, nas execuções de uma bancada de teste do [Process](process).

O driver lê uma amostra por leitura: no intervalo de leitura de cada tag ele toma um valor do canal,
como todo outro driver faz. Ele serve sinais lentos (temperaturas, pressões, níveis, estados,
contagens), não a aquisição contínua que o hardware faz pelo próprio relógio; veja
[Limites que vale conhecer](#limits-worth-knowing).

Um dispositivo deste driver é um dispositivo do NI MAX, encontrado pelo nome que o NI MAX lhe dá,
onde quer que esteja ligado: em USB, num slot PCI Express, num chassi cDAQ em USB ou Ethernet. Os
dispositivos simulados que o NI MAX cria de graça, da maior parte do hardware da NI, são lidos como
os reais, então uma configuração pode ser montada e testada antes de o hardware chegar. Os
dispositivos simulados também podem ser criados pela API de configuração da NI, que um assistente de
IA com acesso a este computador pode usar com a sua autorização. Os
dispositivos ficam sob o driver e podem ser arquivados em pastas,
**Driver → Pasta → Dispositivo → Tag**, como em todo driver sem linha serial nem broker.

## O NI-DAQmx neste computador {#ni-daqmx-on-this-computer}

O produto não inclui o NI-DAQmx nem instala nenhum arquivo dele. O driver lê o hardware pelo
NI-DAQmx instalado neste computador, o mesmo que o NI MAX e o LabVIEW usam. A estação confere
sozinha se ele está lá: na primeira vez que a página do driver, a página de um dos seus dispositivos
ou o agente pergunta, e de novo a cada 30 segundos enquanto ele falta. Até o Connector ter partido,
não se sabe se o NI-DAQmx está lá, e nada é dito sobre isso. Enquanto ele falta:

| Onde | O que acontece |
| --- | --- |
| A página do driver | Um aviso de cautela, "O NI-DAQmx não está instalado neste computador", com os passos abaixo. O link dele abre a página da NI no navegador do computador. |
| A página de cada dispositivo | O mesmo aviso. |
| Os dispositivos | Podem ser acrescentados e configurados, tags incluídas; ficam desconectados, e o último erro de cada um dá os mesmos passos, em inglês, como as causas do próprio driver são escritas. |
| Descobrir | Não lista nada, e diz que o NI-DAQmx não está instalado e que o aviso na página do driver indica o download e os passos da instalação. |
| O agente | O `driver_capabilities` dá os passos em `prerequisite`, com `installed` false. |

Para instalar:

1. Abra a página da NI [NI-DAQ™mx Download](https://www.ni.com/en/support/downloads/drivers/download.ni-daq-mx.html). Ela pede para entrar com uma conta NI antes do download.
2. Na lista Version dela, pegue a versão mais nova cujo readme (**View Readme**) traz o Windows deste computador e, em Device Support, o seu dispositivo. O NI-DAQmx só roda em Windows de 64 bits.
3. Execute o instalador como administrador: ele instala o NI-DAQmx pelo NI Package Manager. Reinicie o computador se o instalador pedir.

O NI-DAQmx mais novo não suporta mais alguns dispositivos antigos: se o readme dele não traz o seu,
escolha na lista Version uma versão anterior cujo readme o traga.

Em até 30 segundos depois da instalação, o aviso some e os dispositivos deste driver se conectam com
a configuração que já têm, sem reiniciar o Ganter Lab. O NI MAX (NI Measurement & Automation
Explorer) mostra cada dispositivo com o nome a informar no [cartão Dispositivo NI-DAQmx](#the-ni-daqmx-device-card).

## A página do driver {#the-drivers-page}

A página traz a tabela **Dispositivos** de qualquer driver (veja
[A tabela de dispositivos](connector-drivers#the-device-table)), que cresce com
**Acrescentar dispositivo**, à direita do título; vazia, diz "Nenhum dispositivo ainda." A barra do
driver traz **Descobrir**, e a página não tem o cartão Escopo da varredura, porque a varredura
pergunta ao NI-DAQmx e a mais nada.

## Dispositivo {#device}

### O cartão Dispositivo NI-DAQmx {#the-ni-daqmx-device-card}

Um dispositivo deste driver não tem cartão Conexão: não há host, porta nem rota a escrever, já que o
NI-DAQmx encontra o dispositivo pelo nome. No lugar dele, o cartão **Dispositivo NI-DAQmx** diz qual
dispositivo do NI MAX ele lê.

| Campo | Significado | Padrão |
| --- | --- | --- |
| **Nome do dispositivo** | "O nome que o NI MAX dá ao dispositivo, como Dev1, ou cDAQ1Mod1 para um módulo de um chassi cDAQ. Um dispositivo renomeado no NI MAX volta a ser lido assim que o novo nome é escrito aqui." | vazio |
| **Produto** | Só leitura: "O que o NI-DAQmx diz que o dispositivo é, como NI 9211, lido toda vez que a estação se conecta a ele." Diz "Ainda não lido" até o dispositivo se conectar, e de novo quando ele deixa de estar conectado. Nada dele é guardado. | |

Um chassi cDAQ é um dispositivo do NI MAX por si só (`cDAQ1`), e cada módulo dele também
(`cDAQ1Mod1`, `cDAQ1Mod2`). Os canais de um módulo são lidos no dispositivo do módulo; os contadores
do chassi (`_ctr0` a `_ctr3`) são lidos no dispositivo do chassi. O **Intervalo de leitura (ms)** do
cartão Dispositivo funciona como em qualquer driver, e cada tag pode sobrepô-lo.

Um dispositivo novo ainda não tem nome, e a estação não tenta alcançá-lo enquanto ele não tiver um:
a linha dele diz "Dispositivo NI-DAQmx ainda não informado", as tags dele leem lacunas, e a página
dele traz o aviso
"A estação não tenta se conectar a este dispositivo enquanto ele não tiver o nome de um dispositivo NI-DAQmx, então nada é lido dele ainda e não há erro a mostrar. Informe o nome que o NI MAX dá ao dispositivo no cartão Dispositivo NI-DAQmx abaixo e a estação se conecta a ele."
Num computador sem o NI-DAQmx, o aviso de que o NI-DAQmx não está instalado fica nesse lugar.

Um nome que o NI-DAQmx nunca conseguiria ler é recusado embaixo da caixa: "Um nome de dispositivo não tem '/', ',' nem ':'. Escreva o nome exatamente como o NI MAX o mostra, como Dev1 ou cDAQ1Mod1."
Uma barra é o que separa um dispositivo do canal dele, então `Dev1/ai0` é o canal de uma tag e não
um dispositivo. Se o NI MAX conhece o nome é resposta do próprio NI-DAQmx, dada quando a estação se
conecta: um dispositivo que o NI MAX não conhece fica desconectado com as palavras do NI-DAQmx como
último erro.

O Base URI que o cabeçalho mostra é o nome do dispositivo atrás do esquema do driver:
`nidaqmx://cDAQ1Mod1`. Dois dispositivos deste driver podem ler o mesmo dispositivo do NI MAX, por
exemplo o mesmo módulo em dois intervalos de leitura diferentes; o nome não precisa ser único.

## Endereçamento da tag {#tag-addressing}

### O canal físico {#the-physical-channel}

Uma tag deste driver lê ou aciona um canal do seu dispositivo. O cartão Origem da tag traz a caixa
**Canal físico**, com uma dica embaixo que acompanha a medição:
"Canal de entrada analógica, p. ex. ai0 ou cDAQ1Mod1/ai0", "Linha digital, p. ex. port0/line3 ou Dev1/port0/line3",
"Canal de saída analógica, p. ex. ao0 ou Dev1/ao0" ou "Contador, p. ex. ctr0, ou _ctr0 num chassi cDAQ".

O canal é guardado relativo ao dispositivo (`ai0`), então um dispositivo renomeado no NI MAX muda um
campo só, o do dispositivo. Um canal escrito inteiro como o NI MAX o escreve (`cDAQ1Mod1/ai0`) é
guardado relativo quando nomeia o próprio dispositivo da tag, e recusado quando nomeia outro:
"Este canal pertence ao dispositivo Dev1, não a cDAQ1Mod1. Escreva um canal deste dispositivo, ou só o canal, como ai0."

### Medições {#measurements}

Abaixo do canal, **Medição** diz o que o canal mede ou aciona. A medição decide os tipos de dado
como os quais a tag é lida, o acesso que ela permite, a unidade e os campos desenhados abaixo dela.

| Medição | Canal | Tipo de dado | Acesso | Unidade |
| --- | --- | --- | --- | --- |
| **Entrada de tensão** | uma entrada analógica, `ai0` | Double ou Float | Somente leitura | volts |
| **Entrada de corrente** | uma entrada analógica, `ai0` | Double ou Float | Somente leitura | miliampères |
| **Termopar** | uma entrada analógica, `ai0` | Double ou Float | Somente leitura | graus Celsius |
| **Linha de entrada digital** | uma linha digital, `port0/line3` | Boolean | Somente leitura | |
| **Linha de saída digital** | uma linha digital, `port0/line3` | Boolean | Leitura e escrita (o padrão), Somente escrita ou Somente leitura | |
| **Saída de tensão** | uma saída analógica, `ao0` | Double ou Float | Somente escrita | volts |
| **Contagem de bordas** | um contador, `ctr0` (`_ctr0` num chassi cDAQ) | Int64 ou Double | Somente leitura | contagens |

Uma tag nova é uma entrada de tensão, lida como Double. Um canal digitado que a medição em vigor não
lê traz a medição que ele lê mais naturalmente: uma entrada analógica, uma entrada de tensão; uma
linha digital, uma linha de entrada digital; uma saída analógica, uma saída de tensão; e um
contador, uma contagem de bordas. Escolher outra medição traz a faixa dessa medição, e um tipo de
dado ou um acesso que ela não permite vira o que ela usa, então as listas Tipo de dado e Acesso
oferecem só o que a medição permite. A corrente é lida em miliampères (o NI-DAQmx lê ampères e o
driver multiplica por 1000), então uma malha de 4 a 20 mA é escrita como se fala.

Cada medição diz embaixo do seu seletor o que faz:

| Medição | A linha embaixo dela |
| --- | --- |
| **Entrada de tensão** | "Lê uma amostra em volts a cada leitura." |
| **Entrada de corrente** | "Lê uma amostra em miliampères a cada leitura." |
| **Termopar** | "Lê uma amostra em graus Celsius a cada leitura, com a junta fria compensada." |
| **Linha de entrada digital** | "Lê a linha como verdadeiro (alto) ou falso (baixo)." |
| **Linha de saída digital** | "Aciona a linha com o valor escrito e relê o estado que ela mantém." |
| **Saída de tensão** | "Aciona a saída com a tensão escrita. O NI-DAQmx não relê uma saída analógica, então a tag é somente escrita." |
| **Contagem de bordas** | "Conta bordas desde o momento em que a estação se conecta ao dispositivo e lê a contagem a cada leitura. Uma reconexão recomeça da contagem inicial." |

### Os campos da medição {#the-measurements-fields}

Um campo que a medição não lê não é desenhado nem salvo com a tag.

| Campo | Medições | Significado | Padrão |
| --- | --- | --- | --- |
| **Faixa (V)**, **Faixa (mA)** ou **Faixa (°C)** | Entrada de tensão, Entrada de corrente, Termopar, Saída de tensão | Duas caixas, **Mínimo** e **Máximo**, na unidade da medição. Numa entrada: "O NI-DAQmx escolhe a faixa de entrada do dispositivo que contém esta, então uma faixa estreita lê um sinal pequeno com mais precisão." Na saída de tensão: "A saída só aceita valores dentro desta faixa; uma escrita fora dela é recusada antes de chegar ao dispositivo." | -10 a 10 V; 0 a 20 mA; 0 a 100 °C |
| **Configuração de terminais** | Entrada de tensão, Entrada de corrente | **Padrão do canal**, **Diferencial**, **Referenciada de terminação simples (RSE)**, **Não referenciada de terminação simples (NRSE)** ou **Pseudodiferencial**: "Como a entrada está ligada: uma entrada diferencial mede entre dois terminais do canal, uma de terminação simples contra uma referência comum. O padrão do canal é o que o NI-DAQmx escolhe para este canal." | **Padrão do canal** |
| **Resistor shunt** | Entrada de corrente | **Padrão do canal**, **Interno** ou **Externo**: "O resistor que a corrente atravessa para ser medida: o embutido no dispositivo, ou um externo ligado na entrada, com a resistência escrita aqui." | **Padrão do canal** |
| **Resistência do shunt (Ω)** | Entrada de corrente, com um shunt **Externo** | A resistência do resistor externo, em ohms. | 249 |
| **Tipo de termopar** | Termopar | **Tipo J**, **Tipo K**, **Tipo N**, **Tipo R**, **Tipo S**, **Tipo T**, **Tipo B** ou **Tipo E**. | **Tipo K** |
| **Compensação de junta fria (CJC)** | Termopar | **Sensor embutido** ou **Temperatura fixa**: "A temperatura da junta fria do termopar: medida pelo sensor embutido no dispositivo ou no seu bloco de terminais, ou uma temperatura fixa escrita aqui quando a junta é mantida numa temperatura conhecida." | **Sensor embutido** |
| **Temperatura CJC (°C)** | Termopar, com uma **Temperatura fixa** | A temperatura da junta fria, em graus Celsius. | 25 |
| **Borda contada** | Contagem de bordas | **Borda de subida** ou **Borda de descida**. | **Borda de subida** |
| **Sentido da contagem** | Contagem de bordas | **Contagem crescente** ou **Contagem decrescente**. | **Contagem crescente** |
| **Contagem inicial** | Contagem de bordas | A contagem de que o contador parte toda vez que o dispositivo se conecta, de 0 a 4294967295. | 0 |
| **Terminal de entrada** | Contagem de bordas | "O terminal cujos pulsos são contados, como /Dev1/PFI8. Vazio, o contador conta no seu próprio terminal de entrada padrão." Vazia, a caixa diz "Padrão do contador". Um terminal escrito sem o dispositivo (`PFI8`) é lido no próprio dispositivo da tag. Num contador de um chassi cDAQ (`_ctr0`), que não tem terminal de entrada próprio, a caixa não mostra padrão e a nota diz "O terminal cujos pulsos são contados, como /cDAQ1Mod2/PFI0. Um contador de um chassi cDAQ não tem terminal de entrada próprio, então este é obrigatório." | vazio |

Uma tag cujos campos não conseguem funcionar não é salva, e a página da tag diz o que falta:

| Você digita | A página da tag diz |
| --- | --- |
| Nenhum canal | "Escreva o canal físico, como ai0 ou Dev1/ai0." |
| Um canal de outro tipo que o que a medição lê, como `ao0` sob um termopar | "Esta medição lê um canal de entrada analógica, como ai0.", "Uma saída de tensão aciona um canal de saída analógica, como ao0.", "Uma linha digital se escreve com a porta e a linha, como port0/line3." ou "Uma contagem de bordas lê um contador, como ctr0." |
| Um mínimo que não fica abaixo do máximo | "O mínimo tem de ser menor que o máximo." |
| Um shunt externo sem resistência acima de zero | "Um shunt externo precisa da resistência em ohms, acima de zero." |
| Uma temperatura fixa de junta fria no zero absoluto ou abaixo dele | "A temperatura CJC tem de ser uma temperatura em graus Celsius acima do zero absoluto." |
| Uma contagem inicial fora do que um contador de 32 bits comporta | "A contagem inicial é um número inteiro de 0 a 4294967295." |
| Um terminal de entrada com espaço ou vírgula | "Escreva o terminal de entrada como o NI-DAQmx o nomeia, como /Dev1/PFI8, sem espaço nem vírgula." |
| Uma contagem de bordas num contador de um chassi cDAQ (`_ctr0`) sem terminal de entrada | "Um contador de um chassi cDAQ não tem terminal de entrada próprio: escreva o terminal por onde chegam os pulsos, como /cDAQ1Mod2/PFI0." |
| Um tipo de dado ou um acesso que a medição não permite | "Esta medição é lida como Double, Float.", e para um acesso, a frase que nomeia os acessos que a medição permite |

O salvamento mantém as mesmas regras dos painéis, e o feed diz isso quando recusa um:
"O dispositivo 'Module voltages' nomeia um dispositivo NI-DAQmx que o driver não consegue ler. Abra-o e corrija o nome do dispositivo que o painel marca."
ou "A tag 'Pressure' tem um ajuste que o driver NI-DAQmx não consegue usar. Abra-a e corrija o campo que o painel da tag marca."

A linha somente leitura **Endereço de origem (barramento)** mostra o que o driver recebe: o canal
como o NI-DAQmx o nomeia e todo ajuste da medição, como
`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`.

## Leitura {#reading}

O driver cria as tarefas NI-DAQmx de um dispositivo quando a estação se conecta a ele, e as mantém
até ele se desconectar. O que uma leitura faz, e o que o NI-DAQmx responde, decidem o que a tag
mostra (veja [A cadeia de valor](connector-value-pipeline)):

| Tags | Como são lidas |
| --- | --- |
| Entradas analógicas (tensão, corrente, termopar) | Todas as entradas analógicas de um dispositivo compartilham uma tarefa, que cada leitura inicia, da qual toma uma amostra por canal e que para em seguida. Um dispositivo tem um motor de temporização analógica, e um chassi cDAQ três para todos os módulos dele, então uma tarefa mantida em andamento impediria outro módulo de ler. Uma leitura que encontra o motor ocupado por outra tarefa (NI MAX, LabVIEW) pergunta de novo duas vezes, com 25 ms entre elas. Uma amostra serve a toda tag analógica do dispositivo por metade do menor intervalo de leitura entre elas, então um módulo de termopar lento converte uma vez por passada. |
| Um canal que o NI-DAQmx recusa | Cada canal analógico é testado sozinho antes: um canal que o NI-DAQmx recusa (uma faixa que o módulo não tem, um termopar num canal que não lê nenhum) falha a própria tag, não toda tag analógica do dispositivo. |
| Linhas digitais, a saída de tensão, contadores | Uma tarefa por tag, iniciada quando o dispositivo se conecta. Um contador conta a partir daí, recomeçando da contagem inicial quando o dispositivo se reconecta. |

| O NI-DAQmx responde | O que a leitura faz |
| --- | --- |
| Um valor, ou um aviso | O valor, na unidade da medição, antes de os estágios da própria tag o converterem. |
| O dispositivo removido, inacessível ou resetado | Uma conexão perdida: o dispositivo se reconecta e as tarefas dele são criadas de novo. |
| Nenhuma resposta em 10 segundos | Silêncio: o dispositivo se reconecta, e a política da tag para [um dispositivo que não respondeu](connector-value-pipeline#the-device-did-not-answer) decide o que ela mostra. |
| Qualquer outro erro | A leitura falha daquela tag, com o próprio texto do NI-DAQmx e o código dele; o dispositivo continua lendo as outras tags. |

A escala é a cadeia da própria tag: o driver entrega volts, miliampères ou graus, e os estágios
Escala e Calibração os transformam no valor de engenharia (0 a 10 V em 0 a 16 bar). Nenhuma escala
personalizada do NI MAX é criada nem lida.

## Escrita {#writing}

Uma **Linha de saída digital** e uma **Saída de tensão** são escritas; toda outra medição é somente
leitura. Uma escrita passa pelo mesmo funil que a de qualquer outro driver: a caixa de escrita recebe
o valor de engenharia, e os estágios de conversão são invertidos antes de o valor bruto ser enviado
(veja [Connector](connector)).

| Medição | O que uma escrita faz |
| --- | --- |
| **Linha de saída digital** | Leva a linha a alto para verdadeiro e a baixo para falso. A tag relê o estado que a linha mantém, a não ser que seja Somente escrita. |
| **Saída de tensão** | Aciona a saída com a tensão escrita. Um valor fora da faixa da tag é recusado antes de qualquer coisa chegar ao dispositivo. O NI-DAQmx não relê uma saída analógica, então a tag é Somente escrita e não mostra valor próprio. |

Um valor que o NI-DAQmx recusa volta como "Escrita recusada pelo equipamento: `<motivo>`.", com o
número de erro do NI-DAQmx como motivo (`NI-DAQmx -200561`), que se lê igual em todas as línguas, enquanto
as próprias palavras do NI-DAQmx vão para o diário; nenhuma resposta em 10 segundos diz "Escrita não confirmada: o equipamento não respondeu a tempo."
Uma escrita espera a leitura em andamento no mesmo dispositivo.

## Descoberta {#discovery}

**Descobrir**, na barra do driver, pede ao NI-DAQmx todo dispositivo que o NI MAX conhece, os
simulados incluídos, e nada é enviado ao hardware. Não recebe endereço. Enquanto roda, a linha de
progresso nomeia o dispositivo que está lendo: "Lendo cDAQ1Mod1 do NI-DAQmx…". Sem o NI-DAQmx, não
lista nada e diz "O NI-DAQmx não está instalado neste computador, então nenhum dispositivo pode ser listado. O aviso no painel deste driver indica o download e os passos da instalação."

Cada dispositivo é um candidato nomeado pelo nome e pelo produto (`cDAQ1Mod1 (NI 9205)`), com os
canais como tags candidatas, cada uma nos padrões da sua medição:

| Canais | Oferecidos como |
| --- | --- |
| Entradas analógicas | **Termopar** num módulo de termopar, um dispositivo que só lê milivolts e diz que lê termopar (um NI 9211): tipo K, **Sensor embutido** e de 0 a 100 °C. Senão **Entrada de tensão** onde o canal lê uma tensão, de -10 a 10 V ou na faixa do próprio dispositivo onde ela é mais estreita, e **Entrada de corrente** ou **Termopar** onde o NI-DAQmx diz que o canal não lê tensão. Um módulo universal, que lê uma tensão real além de termopar, oferece entradas de tensão: escolha a medição na tag depois de acrescentada. |
| Linhas digitais | **Linha de entrada digital**, ou **Linha de saída digital** onde a linha só aciona. |
| Saídas analógicas | **Saída de tensão**, Somente escrita. |
| Contadores | **Contagem de bordas**. O NI-DAQmx não lista os contadores de um chassi cDAQ, então o chassi vem sem tags: acrescente à mão uma tag em `_ctr0`, com o **Terminal de entrada** por onde chegam os pulsos, porque um contador do chassi não tem um próprio. |

Um candidato cujo nome um dispositivo do driver já lê é marcado como já configurado e oferece Abrir
no lugar de Adicionar. O resto do comportamento da varredura está em [Descoberta](connector-discovery).

Um dispositivo que você já tem relê os canais dele pela própria página: **Descobrir tags**, no cabeçalho do cartão **Tags** dele, pergunta ao NI-DAQmx só por aquele dispositivo e oferece só os canais para os quais ele ainda não tem tag, com os padrões da medição deles (veja [Descobrir as tags de um dispositivo](connector-discovery#discovering-a-devices-tags)).

## Exemplo: um chassi cDAQ {#example-a-cdaq-chassis}

Um chassi cDAQ-9178, que o NI MAX chama de `cDAQ1`, tem um módulo de tensão NI 9205 no slot 1, com
um transmissor de pressão de 0 a 10 V ligado em diferencial no primeiro canal, e um módulo de
termopar NI 9211 no slot 2, com um termopar tipo K num forno. Leia os dois:

1. Na página do driver, **Acrescentar dispositivo**; dê o nome `Module voltages` e escreva
   `cDAQ1Mod1` em **Nome do dispositivo**. Depois de conectado, **Produto** diz NI 9205.
2. **Acrescentar tag**; dê o nome `Pressure`, **Canal físico** `ai0`, mantenha **Entrada de tensão**,
   ponha a faixa em 0 e 10 e a **Configuração de terminais** em **Diferencial**. No cartão Conversão,
   ligue o estágio Escala com um fator de 1,6 e dê à tag a unidade bar: 0 a 10 V lê 0 a 16 bar.
3. **Acrescentar dispositivo** de novo; dê o nome `Oven thermocouples`, **Nome do dispositivo**
   `cDAQ1Mod2`.
4. **Acrescentar tag** `Zone1`, **Canal físico** `ai0`, **Medição** **Termopar**, mantenha **Tipo K**
   e **Sensor embutido**, e ponha a faixa em 0 e 400.
5. Para contar pulsos no chassi, um dispositivo cujo **Nome do dispositivo** é `cDAQ1` guarda os
   contadores: uma tag em `_ctr0` é uma **Contagem de bordas**, com o **Terminal de entrada** onde os
   pulsos chegam, como `/cDAQ1Mod3/PFI0`.

O endereço de barramento da tag `Pressure` diz
`cDAQ1Mod1/ai0?measurement=voltageInput&terminal=diff&min=0&max=10`. Um agente faz o mesmo com as
ferramentas; o termopar nomeia a medição, porque `ai0` sozinho é lido como uma entrada de tensão:

```
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"
```

## Ferramentas do agente {#agent-tools}

O `driver_capabilities` descreve este driver em `niDaqmx`: o nome do
dispositivo e, para cada medição, um canal de exemplo, a unidade, os campos, os tipos de dado e os
acessos que ela permite, com as listas de escolha de cada campo, como leituras e escritas se
comportam e o que a descoberta oferece. O `device_upsert driver=NiDaqmx` aceita `daqmxDevice`, o
nome que o NI MAX dá ao dispositivo (`''` o apaga, e o dispositivo espera por um). O `tag_upsert`
aceita o canal como `address` e os campos da medição: `daqmxMeasurement` (`VoltageInput`,
`CurrentInput`, `Thermocouple`, `DigitalInput`, `DigitalOutput`, `VoltageOutput` ou `EdgeCount`;
omitido, o canal traz o seu), `daqmxMinimum` e `daqmxMaximum`, `daqmxTerminal` (`Default`,
`Differential`, `ReferencedSingleEnded`, `NonReferencedSingleEnded` ou `PseudoDifferential`),
`daqmxShunt` (`Default`, `Internal` ou `External`) e `daqmxShuntOhms`, `daqmxThermocouple` (`J`,
`K`, `N`, `R`, `S`, `T`, `B` ou `E`), `daqmxCjcSource` (`BuiltIn` ou `ConstantValue`) e
`daqmxCjcTemperature`, `daqmxEdge` (`Rising` ou `Falling`), `daqmxCountDirection` (`Up` ou `Down`),
`daqmxInitialCount` e `daqmxCounterTerminal`. Um campo que a medição não lê é recusado, então a
chamada nomeia só o que se aplica. Um dispositivo e uma tag que as ferramentas devolvem trazem
`niDaqmx`: o nome do dispositivo, o produto depois de conectado e se o NI-DAQmx está instalado. O
`device_discover driver=NiDaqmx` lista todo dispositivo que o NI MAX conhece com os canais como tags
candidatas. As outras ferramentas estão em [Ferramentas do agente](agent-tools).

## Limites que vale conhecer {#limits-worth-knowing}

- A aquisição contínua não é feita. O hardware consegue amostrar pelo próprio relógio, milhares de
  pontos por segundo num buffer; este driver lê uma amostra por leitura, então serve sinais lentos,
  e uma forma de onda ou uma vibração não é lida.
- O produto não inclui o NI-DAQmx: sem ele neste computador, os dispositivos ficam desconectados, e
  a página do driver diz como instalá-lo ([O NI-DAQmx neste computador](#ni-daqmx-on-this-computer)). A estação passa a usá-lo sem reiniciar.
- A junta fria de um termopar vem do sensor embutido do módulo ou de uma temperatura fixa; uma junta
  fria lida de outro canal não é oferecida.
- Uma saída analógica não é relida: uma tag de saída de tensão é Somente escrita.
- Uma tarefa, um canal global ou uma escala personalizada guardados no NI MAX não são usados: cada
  tag nomeia um canal físico, o driver monta as próprias tarefas, e a escala é a cadeia da tag.
