# NI-DAQmx

> National Instruments のデータ収集ハードウェア（cDAQ シャーシとそのモジュール、USB と PCI Express の機器、NI MAX のシミュレートされた機器）を、このコンピューターにインストールされた NI-DAQmx を通して、読み出しごとに 1 サンプル読みます。「NI-DAQmx の機器」のカード、タグの物理チャネルと測定、読み取りと書き込み、機器検出、そして cDAQ シャーシでの完全な例です。

**NI-DAQmx** ドライバーは、National Instruments のデータ収集ハードウェアを読み書きします。cDAQ シャーシとその C シリーズモジュール、USB-6001 や USB-6211 のような USB の機器、そして PCI Express の機器を、National Instruments が自社のハードウェア向けに無料で配っているドライバーである NI-DAQmx を通して扱います。LabVIEW のプログラムが DAQmx のブロックで読むハードウェアを、ブロックダイアグラムで配線する代わりにパネルで設定するもので、各タグは NI MAX が付けた名前どおりの物理チャネル（`ai0`、`port0/line3`、`ao0`、`ctr0`）と、そのチャネルが測るもの、または駆動するものです。値はほかのどのタグの値とも同じところに届きます。Logic、ダッシュボード、そして [Process](process) の試験台の実行です。

このドライバーは読み出しごとに 1 サンプルを読みます。ほかのどのドライバーとも同じく、各タグの読み出し周期ごとにチャネルの値を 1 つ取ります。向いているのは遅い信号（温度、圧力、レベル、状態、カウント）で、ハードウェアが自分のクロックで行う連続収集ではありません。[知っておきたい制限](#limits-worth-knowing)を参照してください。

このドライバーの機器は NI MAX の機器 1 台で、NI MAX が付けた名前で、どこにつながっていても見つかります。USB、PCI Express のスロット、USB や Ethernet でつながる cDAQ シャーシのどれでもかまいません。NI MAX が NI のほとんどのハードウェアについて無料で作れるシミュレートされた機器も本物と同じように読めるので、ハードウェアが届く前に構成を組んで試せます。シミュレートされた機器は NI の構成 API からも作れます。このコンピューターにアクセスできる AI アシスタントは、同意を得たうえでそれを使えます。機器はドライバーの下に置かれ、フォルダーに整理でき、シリアル回線もブローカーも持たないどのドライバーとも同じく **ドライバー → フォルダー → 機器 → タグ** となります。

## このコンピューターの NI-DAQmx {#ni-daqmx-on-this-computer}

製品は NI-DAQmx を含まず、そのファイルを 1 つもインストールしません。ドライバーは、このコンピューターにインストールされた NI-DAQmx、つまり NI MAX と LabVIEW が使うものを通してハードウェアを読みます。ステーションは、それがあるかどうかを自分で確かめます。ドライバーのページ、その機器のどれかのページ、またはエージェントが最初に尋ねたときと、ないあいだは 30 秒ごとです。Connector が起動するまでは NI-DAQmx があるかどうかわからないので、それについては何も示しません。ないあいだは次のようになります。

| 場所 | 起きること |
| --- | --- |
| ドライバーのページ | 注意のお知らせ「このコンピューターには NI-DAQmx がインストールされていません」と、下の手順。リンクはコンピューターのブラウザーで NI のページを開きます。 |
| 各機器のページ | 同じお知らせ。 |
| 機器 | タグも含めて追加と設定ができます。オフラインのままで、各機器の最後のエラーが、ドライバー自身の原因と同じく英語で、同じ手順を示します。 |
| 機器検出 | 何も一覧せず、NI-DAQmx がインストールされていないこと、ダウンロード先とインストールの手順がドライバーのページのお知らせにあることを示します。 |
| エージェント | `driver_capabilities` が `prerequisite` の下に、`installed` を false として手順を示します。 |

インストールの手順：

1. NI のページ [NI-DAQ™mx Download](https://www.ni.com/en/support/downloads/drivers/download.ni-daq-mx.html) を開きます。ダウンロードの前に NI アカウントでのサインインを求められます。
2. ページの Version の一覧から、readme（**View Readme**）にこのコンピューターの Windows が載り、Device Support にお使いの機器が載っている最新のバージョンを選びます。NI-DAQmx は 64 ビット版の Windows でしか動きません。
3. インストーラーを管理者として実行します。NI Package Manager を通して NI-DAQmx がインストールされます。インストーラーから求められたら、コンピューターを再起動します。

最新の NI-DAQmx は一部の古い機器に対応していません。readme にお使いの機器が載っていなければ、Version の一覧から、readme にその機器が載っている以前のバージョンを選んでください。

インストール後 30 秒以内にお知らせは消え、Ganter Lab を再起動しなくても、このドライバーの機器は今の設定のまま接続します。NI MAX（NI Measurement & Automation Explorer）には、各機器が[「NI-DAQmx の機器」のカード](#the-ni-daqmx-device-card)に入力する名前で表示されます。

## ドライバーのページ {#the-drivers-page}

ページには、どのドライバーとも同じ**機器**の表（[機器の表](connector-drivers#the-device-table)を参照）があり、タイトルの右にある**機器を追加**で増やします。空のときは「機器はまだありません。」と表示します。ドライバーのバーには**機器検出**があり、ページにはスキャンの範囲のカードがありません。スキャンが問い合わせるのは NI-DAQmx だけだからです。

## 機器 {#device}

### 「NI-DAQmx の機器」のカード {#the-ni-daqmx-device-card}

このドライバーの機器には「接続」のカードがありません。NI-DAQmx が名前で機器を見つけるので、書くべきホストもポートも経路もないからです。その代わりに **NI-DAQmx の機器**のカードが、NI MAX のどの機器を読むかを示します。

| 項目 | 意味 | 既定値 |
| --- | --- | --- |
| **機器の名前** | 「NI MAX が機器に付けた名前です (例: Dev1、cDAQ シャーシのモジュールなら cDAQ1Mod1)。NI MAX で名前を変えた機器は、新しい名前をここに書くと再び読み取られます。」 | 空 |
| **製品** | 読み取り専用：「NI-DAQmx が示すこの機器の製品 (例: NI 9211) です。ステーションが接続するたびに読み取ります。」機器が接続するまでは「まだ読み取っていません」と表示し、接続していない状態に戻ると再びそう表示します。何も保存しません。 | |

cDAQ シャーシはそれ自体が NI MAX の機器（`cDAQ1`）で、各モジュールも同じく機器です（`cDAQ1Mod1`、`cDAQ1Mod2`）。モジュールのチャネルはモジュールの機器で読み、シャーシのカウンター（`_ctr0` から `_ctr3`）はシャーシの機器で読みます。「機器」のカードの**読み出し周期（ms）**はどのドライバーとも同じように働き、各タグで上書きできます。

新しい機器にはまだ名前がなく、名前が入るまでステーションは接続しようとしません。その行には「NI-DAQmx の機器がまだ入力されていません」と出て、タグは空欄として読まれ、ページには次の知らせが出ます：「NI-DAQmx の機器名が入力されるまで、ステーションはこの機器に接続しようとしません。そのため、まだ何も読み取っておらず、表示するエラーもありません。下の「NI-DAQmx の機器」のカードで NI MAX が付けた機器名を入力すると、ステーションが接続します。」NI-DAQmx のないコンピューターでは、その場所には NI-DAQmx がインストールされていないという知らせが出ます。

NI-DAQmx が決して読めない名前は、欄の下で拒否されます：「機器名に「/」「,」「:」は使えません。NI MAX の表示どおりに名前を書いてください (例: Dev1、cDAQ1Mod1)。」スラッシュは機器とそのチャネルを区切るものなので、`Dev1/ai0` はタグのチャネルであって機器ではありません。NI MAX がその名前を知っているかどうかは NI-DAQmx 自身の答えで、ステーションが接続するときにわかります。NI MAX が知らない機器はオフラインのままで、NI-DAQmx の言葉が最後のエラーになります。

見出しに出る基準 URI は、ドライバーのスキームの後ろに機器の名前を置いたものです：`nidaqmx://cDAQ1Mod1`。このドライバーの 2 台の機器が NI MAX の同じ機器を読むこともできます。たとえば、同じモジュールを 2 つの違う読み出し周期で読む場合です。名前は一意でなくてかまいません。

## タグのアドレス {#tag-addressing}

### 物理チャネル {#the-physical-channel}

このドライバーのタグは、その機器のチャネルを 1 つ読むか駆動します。タグの「信号源」のカードには**物理チャネル**の欄があり、その下に測定に応じた助言が出ます：「アナログ入力チャネル (例: ai0、cDAQ1Mod1/ai0)」、「デジタルライン (例: port0/line3、Dev1/port0/line3)」、「アナログ出力チャネル (例: ao0、Dev1/ao0)」、または「カウンター (例: ctr0、cDAQ シャーシでは _ctr0)」。

チャネルは機器からの相対名（`ai0`）で保存されるので、NI MAX で機器の名前を変えても、変わるのは機器の欄 1 つだけです。NI MAX の書き方どおりに丸ごと書いたチャネル（`cDAQ1Mod1/ai0`）は、タグ自身の機器を指すときは相対名で保存され、別の機器を指すときは拒否されます：「このチャネルは cDAQ1Mod1 ではなく機器 Dev1 のものです。この機器のチャネルか、チャネルだけ (例: ai0) を入力してください。」

### 測定 {#measurements}

チャネルの下の**測定**は、そのチャネルが何を測るか、何を駆動するかを示します。測定によって、タグを読むデータ型、許すアクセス、単位、その下に描かれる欄が決まります。

| 測定 | チャネル | データ型 | アクセス | 単位 |
| --- | --- | --- | --- | --- |
| **電圧入力** | アナログ入力、`ai0` | Double か Float | 読み取りのみ | ボルト |
| **電流入力** | アナログ入力、`ai0` | Double か Float | 読み取りのみ | ミリアンペア |
| **熱電対** | アナログ入力、`ai0` | Double か Float | 読み取りのみ | 摂氏 |
| **デジタル入力ライン** | デジタルライン、`port0/line3` | Boolean | 読み取りのみ | |
| **デジタル出力ライン** | デジタルライン、`port0/line3` | Boolean | 読み書き（既定）、書き込みのみ、読み取りのみ | |
| **電圧出力** | アナログ出力、`ao0` | Double か Float | 書き込みのみ | ボルト |
| **エッジカウント** | カウンター、`ctr0`（cDAQ シャーシでは `_ctr0`） | Int64 か Double | 読み取りのみ | カウント |

新しいタグは電圧入力で、Double として読みます。今の測定が読まない種類のチャネルを入力すると、そのチャネルにいちばん自然な測定に切り替わります。アナログ入力なら電圧入力、デジタルラインならデジタル入力ライン、アナログ出力なら電圧出力、カウンターならエッジカウントです。別の測定を選ぶとその測定のレンジに変わり、その測定が許さないデータ型やアクセスはその測定のものに変わるので、「データ型」と「アクセス」の一覧には測定が許すものだけが出ます。電流はミリアンペアで読む（NI-DAQmx はアンペアで読み、ドライバーが 1000 倍する）ので、4-20 mA のループはそのとおりに書けます。

各測定は、選択欄の下に自分のすることを示します。

| 測定 | その下の行 |
| --- | --- |
| **電圧入力** | 「読み出しごとに 1 サンプルをボルトで読みます。」 |
| **電流入力** | 「読み出しごとに 1 サンプルをミリアンペアで読みます。」 |
| **熱電対** | 「読み出しごとに 1 サンプルを摂氏で読みます。冷接点は補償されます。」 |
| **デジタル入力ライン** | 「ラインを true (High) か false (Low) として読みます。」 |
| **デジタル出力ライン** | 「書き込んだ値でラインを駆動し、保持している状態を読み返します。」 |
| **電圧出力** | 「書き込んだ電圧で出力を駆動します。NI-DAQmx はアナログ出力を読み返さないため、このタグは書き込みのみです。」 |
| **エッジカウント** | 「ステーションが機器に接続した時点からエッジを数え、読み出しごとにカウントを読みます。再接続すると初期カウントから数え直します。」 |

### 測定の欄 {#the-measurements-fields}

測定が読まない欄は描かれず、タグとともに保存されることもありません。

| 項目 | 測定 | 意味 | 既定値 |
| --- | --- | --- | --- |
| **レンジ (V)**、**レンジ (mA)**、**レンジ (°C)** | 電圧入力、電流入力、熱電対、電圧出力 | 測定の単位での 2 つの欄、**最小値**と**最大値**。入力では：「NI-DAQmx は、この範囲を含む機器の入力レンジを選びます。そのため、狭い範囲にすると小さな信号をより細かく読めます。」電圧出力では：「出力はこの範囲内の値だけを受け付けます。範囲外の書き込みは、機器に届く前に拒否されます。」 | -10 から 10 V、0 から 20 mA、0 から 100 °C |
| **端子構成** | 電圧入力、電流入力 | **チャネルの既定**、**差動**、**基準化シングルエンド (RSE)**、**非基準化シングルエンド (NRSE)**、**疑似差動**：「入力の配線方法です。差動入力はチャネルの 2 つの端子の間を、シングルエンド入力は共通の基準に対して測定します。チャネルの既定は、NI-DAQmx がこのチャネルに選ぶ構成です。」 | **チャネルの既定** |
| **シャント抵抗** | 電流入力 | **チャネルの既定**、**内部**、**外部**：「電流を測るために電流が流れる抵抗です。機器に内蔵されたものか、入力に配線した外部の抵抗で、外部の場合は抵抗値をここに書きます。」 | **チャネルの既定** |
| **シャント抵抗値 (Ω)** | 電流入力で、シャントが**外部**のとき | 外部の抵抗の抵抗値（オーム）。 | 249 |
| **熱電対の種類** | 熱電対 | **J 型**、**K 型**、**N 型**、**R 型**、**S 型**、**T 型**、**B 型**、**E 型**。 | **K 型** |
| **冷接点補償 (CJC)** | 熱電対 | **内蔵センサー**か**固定温度**：「熱電対の冷接点の温度です。機器か端子台に内蔵されたセンサーで測るか、冷接点を既知の温度に保つ場合はその固定温度をここに書きます。」 | **内蔵センサー** |
| **CJC 温度 (°C)** | 熱電対で、**固定温度**のとき | 冷接点の温度（摂氏）。 | 25 |
| **数えるエッジ** | エッジカウント | **立ち上がり**か**立ち下がり**。 | **立ち上がり** |
| **カウント方向** | エッジカウント | **アップカウント**か**ダウンカウント**。 | **アップカウント** |
| **初期カウント** | エッジカウント | 機器が接続するたびにカウンターが数え始める値で、0 から 4294967295。 | 0 |
| **入力端子** | エッジカウント | 「パルスを数える端子です (例: /Dev1/PFI8)。空のままにすると、カウンター自身の既定の入力端子で数えます。」空のときは欄に「カウンターの既定」と表示します。機器を書かずに書いた端子（`PFI8`）は、タグ自身の機器の端子として読みます。cDAQ シャーシのカウンター（`_ctr0`）には自身の入力端子がないので、欄に既定は表示されず、注記は「パルスを数える端子です (例: /cDAQ1Mod2/PFI0)。cDAQ シャーシのカウンターには自身の入力端子がないので、この欄は必須です。」となります。 | 空 |

欄が働かないタグは保存されず、タグのページが足りないものを示します。

| 入力したもの | タグのページの表示 |
| --- | --- |
| チャネルなし | 「物理チャネルを入力してください (例: ai0、Dev1/ai0)。」 |
| 測定が読むものと違う種類のチャネル（熱電対の下の `ao0` など） | 「この測定はアナログ入力チャネル (例: ai0) を読みます。」、「電圧出力はアナログ出力チャネル (例: ao0) を駆動します。」、「デジタルラインはポートとラインで書きます (例: port0/line3)。」、または「エッジカウントはカウンター (例: ctr0) を読みます。」 |
| 最大値より小さくない最小値 | 「最小値は最大値より小さくしてください。」 |
| 0 より大きい抵抗値のない外部シャント | 「外部シャントには、0 より大きい抵抗値 (Ω) が必要です。」 |
| 絶対零度以下の冷接点の固定温度 | 「CJC 温度は、絶対零度より高い摂氏の温度にしてください。」 |
| 32 ビットのカウンターに収まらない初期カウント | 「初期カウントは 0 から 4294967295 までの整数です。」 |
| 空白かカンマを含む入力端子 | 「入力端子は NI-DAQmx の名前どおりに、空白やカンマなしで書いてください (例: /Dev1/PFI8)。」 |
| 入力端子のない cDAQ シャーシのカウンター（`_ctr0`）のエッジカウント | 「cDAQ シャーシのカウンターには自身の入力端子がありません。パルスが届く端子を書いてください (例: /cDAQ1Mod2/PFI0)。」 |
| 測定が許さないデータ型かアクセス | 「この測定は Double, Float として読みます。」、アクセスについては測定が許すアクセスを挙げる文 |

保存もパネルと同じ規則を守り、拒否したときは操作ログ帯がそう伝えます：「機器「Module voltages」は、ドライバーが読めない NI-DAQmx の機器を指しています。機器を開き、パネルが示す機器名を直してください。」または「タグ「Pressure」に、NI-DAQmx ドライバーが使えない設定があります。タグを開き、タグのパネルが示す欄を直してください。」

読み取り専用の**取得元のアドレス（バス上）**の行は、ドライバーが受け取るものを示します。NI-DAQmx の名前どおりのチャネルと、測定のすべての設定です。たとえば `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`、`cDAQ1/_ctr0?measurement=edgeCount&edge=rising&direction=up&initial=0&input=%2FcDAQ1Mod3%2FPFI0` です。

## 読み取り {#reading}

ドライバーは、ステーションが機器に接続したときにその機器の NI-DAQmx タスクを作り、切断するまで保ちます。読み取りがすることと NI-DAQmx の答えによって、タグに出るものが決まります（[値の変換経路](connector-value-pipeline)を参照）。

| タグ | 読み方 |
| --- | --- |
| アナログ入力（電圧、電流、熱電対） | 1 台の機器のアナログ入力はすべて 1 つのタスクを共有し、読み取りのたびにそのタスクを開始して、チャネルごとに 1 サンプルを取り、停止します。機器にはアナログのタイミングエンジンが 1 つ、cDAQ シャーシには全モジュールで 3 つしかないので、開始したままのタスクがあると、ほかのモジュールが読めなくなります。エンジンがほかのタスク（NI MAX、LabVIEW）に使われていた読み取りは、25 ms おきにあと 2 回問い合わせます。1 つのサンプルは、その機器のアナログのタグのうち最も短い読み出し周期の半分のあいだ、すべてのアナログのタグに使われるので、変換の遅い熱電対モジュールも 1 巡に 1 回の変換で済みます。 |
| NI-DAQmx が拒否するチャネル | 各アナログチャネルはまず単独で試されます。NI-DAQmx が拒否するチャネル（モジュールにないレンジ、熱電対を読まないチャネルでの熱電対）は、そのタグだけを失敗させ、機器のアナログのタグ全部を巻き込みません。 |
| デジタルライン、電圧出力、カウンター | タグごとに 1 つのタスクで、機器が接続したときに開始します。カウンターはそのときから数え、機器が再接続すると初期カウントから数え直します。 |

| NI-DAQmx の答え | 読み取りがすること |
| --- | --- |
| 値、または警告 | 測定の単位での値で、タグ自身の段階が変換する前のものです。 |
| 機器の取り外し、到達不能、リセット | 接続の喪失です。機器は再接続し、タスクを作り直します。 |
| 10 秒以内に答えがない | 無応答です。機器は再接続し、何を表示するかは[応答しなかった機器](connector-value-pipeline#the-device-did-not-answer)についてのタグの方針が決めます。 |
| それ以外のエラー | そのタグの読み取りの失敗で、NI-DAQmx 自身のテキストとコードを示します。機器はほかのタグを読み続けます。 |

スケーリングはタグ自身の変換経路が担います。ドライバーはボルト、ミリアンペア、摂氏の値を渡し、スケールと校正の段階がそれを工業値に変えます（0 から 10 V を 0 から 16 bar に）。NI MAX のカスタムスケールは作りも読みもしません。

## 書き込み {#writing}

書き込めるのは**デジタル出力ライン**と**電圧出力**で、ほかの測定は読み取りのみです。書き込みは、ほかのどのドライバーとも同じ経路を通ります。書き込み欄は工業値を受け取り、生の値を送る前に変換の段階を逆にたどります（[Connector](connector) を参照）。

| 測定 | 書き込みがすること |
| --- | --- |
| **デジタル出力ライン** | true で High、false で Low にラインを駆動します。書き込みのみでなければ、タグはラインが保持している状態を読み返します。 |
| **電圧出力** | 書き込んだ電圧で出力を駆動します。タグのレンジの外の値は、機器に何も届く前に拒否されます。NI-DAQmx はアナログ出力を読み返さないため、タグは書き込みのみで、自分の値を表示しません。 |

NI-DAQmx が拒否した値は、NI-DAQmx のエラー番号（`NI-DAQmx -200561`）を理由に「現場設備が書き込みを拒否しました：`<reason>`。」として返り（この番号はどの言語でも同じに読め、NI-DAQmx 自身の言葉は診断ログに残ります）、10 秒以内に答えがなければ「書き込みを確認できませんでした：現場設備が時間内に応答しませんでした。」と表示します。書き込みは、同じ機器で進行中の読み取りが終わるのを待ちます。

## 機器検出 {#discovery}

ドライバーのバーにある**機器検出**は、NI MAX が知っているすべての機器を、シミュレートされたものも含めて NI-DAQmx に問い合わせます。ハードウェアには何も送りません。アドレスは取りません。実行中、進行の行は読み取っている機器を示します：「NI-DAQmx から cDAQ1Mod1 を読み取っています…」。NI-DAQmx がなければ何も一覧せず、「このコンピューターには NI-DAQmx がインストールされていないため、機器を一覧にできません。ダウンロード先とインストールの手順は、このドライバーのパネルのお知らせにあります。」と表示します。

各機器は、その名前と製品で名付けた候補（`cDAQ1Mod1 (NI 9205)`）になり、チャネルがそれぞれ測定の既定値のままタグの候補になります。

| チャネル | 提示のされ方 |
| --- | --- |
| アナログ入力 | 熱電対モジュール、つまりミリボルトしか読まず、熱電対を読めると示す機器（NI 9211）では**熱電対**で、K 型、**内蔵センサー**、0 から 100 °C。そうでなければ、チャネルが電圧を読めるところは**電圧入力**で、レンジは -10 から 10 V、機器自身のレンジがそれより狭ければそのレンジ。NI-DAQmx がそのチャネルは電圧を読まないと示すところは**電流入力**か**熱電対**。熱電対も本物の電圧も読めるユニバーサルモジュールは電圧入力として提示されるので、追加した後にタグで測定を選んでください。 |
| デジタルライン | **デジタル入力ライン**。駆動するだけのラインは**デジタル出力ライン**。 |
| アナログ出力 | **電圧出力**で、書き込みのみ。 |
| カウンター | **エッジカウント**。NI-DAQmx は cDAQ シャーシのカウンターを一覧に出さないので、シャーシはタグなしで提示されます。`_ctr0` のタグを手で追加し、パルスが届く**入力端子**を指定してください。シャーシのカウンターには自身の入力端子がありません。 |

このドライバーの機器がすでにその名前を読んでいる候補は、設定済みとして示され、追加の代わりに開くを出します。スキャンのそのほかの動きは[機器検出](connector-discovery)にあります。

すでにある機器は、自分のページからチャネルを読み直せます。「タグ」のカードの見出しにある**タグ検出**は NI-DAQmx にその機器だけを問い合わせ、まだタグがないチャネルだけを、測定の既定値で出します（[機器のタグを検出する](connector-discovery#discovering-a-devices-tags)を参照）。

## 例：cDAQ シャーシ {#example-a-cdaq-chassis}

NI MAX が `cDAQ1` と名付けた cDAQ-9178 シャーシのスロット 1 に、最初のチャネルに 0-10 V の圧力伝送器を差動で配線した NI 9205 電圧モジュールがあり、スロット 2 に、炉の中の K 型熱電対をつないだ NI 9211 熱電対モジュールがあります。両方を読みます。

1. ドライバーのページで**機器を追加**し、名前を `Module voltages` にして、**機器の名前**に `cDAQ1Mod1` と書きます。接続すると、**製品**に NI 9205 と表示されます。
2. **タグを追加**し、名前を `Pressure`、**物理チャネル**を `ai0` にして、**電圧入力**のまま、レンジを 0 と 10、**端子構成**を**差動**にします。「値の変換」のカードでスケールの段階を係数 1.6 で有効にし、タグの単位を bar にします。0 から 10 V が 0 から 16 bar と読めます。
3. もう一度**機器を追加**し、名前を `Oven thermocouples`、**機器の名前**を `cDAQ1Mod2` にします。
4. **タグを追加**で `Zone1` を作り、**物理チャネル**を `ai0`、**測定**を**熱電対**にして、**K 型**と**内蔵センサー**のまま、レンジを 0 と 400 にします。
5. シャーシでパルスを数えるには、**機器の名前**が `cDAQ1` の機器がカウンターを持ちます。`_ctr0` のタグは**エッジカウント**で、パルスが届く**入力端子**を `/cDAQ1Mod3/PFI0` のように指定します。

`Pressure` のタグのバス上のアドレスは `cDAQ1Mod1/ai0?measurement=voltageInput&terminal=diff&min=0&max=10` です。エージェントはツールで同じことをします。`ai0` だけでは電圧入力として読まれるので、熱電対は測定を名指しします。

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

## エージェントのツール {#agent-tools}

`driver_capabilities` は、このドライバーを `niDaqmx` の下で説明します。機器の名前、そして測定ごとに、チャネルの例、単位、欄、許すデータ型とアクセス、各欄の選択肢、読み取りと書き込みのふるまい、機器検出が提示するものです。`device_upsert driver=NiDaqmx` は、NI MAX が機器に付けた名前である `daqmxDevice` を受け取ります（`''` で消去し、機器は名前を待ちます）。`tag_upsert` は、チャネルを `address` として、測定の欄を受け取ります：`daqmxMeasurement`（`VoltageInput`、`CurrentInput`、`Thermocouple`、`DigitalInput`、`DigitalOutput`、`VoltageOutput`、`EdgeCount`。省略するとチャネルが自分のものを決めます）、`daqmxMinimum` と `daqmxMaximum`、`daqmxTerminal`（`Default`、`Differential`、`ReferencedSingleEnded`、`NonReferencedSingleEnded`、`PseudoDifferential`）、`daqmxShunt`（`Default`、`Internal`、`External`）と `daqmxShuntOhms`、`daqmxThermocouple`（`J`、`K`、`N`、`R`、`S`、`T`、`B`、`E`）、`daqmxCjcSource`（`BuiltIn` か `ConstantValue`）と `daqmxCjcTemperature`、`daqmxEdge`（`Rising` か `Falling`）、`daqmxCountDirection`（`Up` か `Down`）、`daqmxInitialCount`、`daqmxCounterTerminal` です。測定が読まない欄は拒否されるので、呼び出しには当てはまるものだけを書きます。ツールが返す機器とタグは `niDaqmx` を持ち、機器の名前、接続後はその製品、NI-DAQmx がインストールされているかが入ります。`device_discover driver=NiDaqmx` は、NI MAX が知っているすべての機器を、チャネルをタグの候補として一覧します。ほかのツールは[エージェントのツール](agent-tools)にあります。

## 知っておきたい制限 {#limits-worth-knowing}

- 連続収集は行いません。ハードウェアは自分のクロックで毎秒数千点をバッファーに取り込めますが、このドライバーは読み出しごとに 1 サンプルを読むので、向いているのは遅い信号です。波形や振動は読みません。
- 製品は NI-DAQmx を含みません。このコンピューターになければ機器はオフラインのままで、ドライバーのページがインストールの手順を示します（[このコンピューターの NI-DAQmx](#ni-daqmx-on-this-computer)）。ステーションは再起動なしでそれを使い始めます。
- 熱電対の冷接点は、モジュールの内蔵センサーか固定温度から取ります。ほかのチャネルから読む冷接点は選べません。
- アナログ出力は読み返しません。電圧出力のタグは書き込みのみです。
- NI MAX に保存したタスク、グローバルチャネル、カスタムスケールは使いません。各タグは物理チャネルを名指しし、ドライバーが自分のタスクを組み、スケーリングはタグの変換経路が担います。
