MシリーズDAQデバイスでハードウェアタイミングDIOをおこなう方法

更新しました Apr 30, 2024

環境

ドライバ

  • NI-DAQmx

MシリーズマルチファンクションDAQデバイスでデジタル入出力をしています。使用しているデバイスにはデジタルI/O用のオンボードタイミングエンジンがありません。そのため、MシリーズデバイスのデジタルI/Oに対して外部クロックソースが必要です。ハードウェアタイミングデジタルI/Oをおこなうにはどのように設定すればよいですか?

  1. デバイスに搭載されているカウンタを使用してサンプルクロックソースを生成する方法

この方法は、下記の手順をおこないます。

  1. デジタル入力もしくは出力タスクのために望ましいクロック周波数でデジタルパルス列を生成するカウンタ出力タスクを作成します。
  2. デジタル入力タスクもしくはデジタル出力タスクを作成して、パルス列を生成するように構成したカウンタの内部カウンタ出力(InternalOutput)をサンプルクロックのソースとして指定します。
  3. デジタル入力もしくはデジタル出力タスクを開始します。
  4. 収集もしくは生成を開始するデジタルタスクの準備ができたら、カウンタタスクを開始するようにします。

下記のリンクにこのオプションのサンプルプログラムがあります。
サンプルプログラム: M Series Correlated Digital Input with Counter Clock Generation in ANSI C
サンプルプログラム: M Series Hardware-Timed DIO with Counter Clock Generation


 

  1. 外部サンプルクロックを使用する方法

この方法をおこなうには、デジタルI/Oタスクのタイミングに使用できる外部クロック信号が必要です。外部クロック信号は、以下のいずれかの端子を接続させることが可能です。

  • PFI <0..15>
  • RTSI <0..7>
  • PXI_STAR
  • アナログ比較イベント(アナログトリガ)

  1. サンプルクロックとして、アナログ入力サンプルクロック、アナログ入力変換クロック、もしくはアナログ出力サンプルクロックを使用する方法

この方法は、アナログI/OやデジタルI/Oの同期が必要な場合に適したオプションです。また、アナログ入力または、アナログ出力のいずれか一方を使用しない場合も動作します。このオプションの場合、デジタルI/Oのタイミングがアナログ入力もしくはアナログ出力のいずれか(使用するクロックによる)と同じサンプルレートになることに注意する必要があります。この方法は、下記の手順をおこないます。

  1. アナログ入力タスクもしくはアナログ出力タスクを構成します。デジタルI/Oタスクにとって望ましいレートで実行するようにアナログタスクのクロックを設定します。たとえアナログI/Oが不要でも、ダミータスクとしてこのタスクを構成する必要があります。
  2. デジタル入力もしくはデジタル出力タスクを構成します。/<NI-DAQmxデバイス名>/ai/SampleClock, /<NI-DAQmxデバイス名>/ai/ConvertClock、もしくは /<NI-DAQmxデバイス名>/ao/SampleClockのいずれかをサンプルクロックのソースとして指定します。
  3. デジタル入力もしくはデジタル出力タスクを開始します。
  4. アナログ入力もしくはアナログ出力タスクを開始します。開始しているアナログタスクが、デジタルI/Oタスクに対してサンプルクロックを渡します。

下記のリンクにこのオプションのサンプルプログラムがあります。
サンプルプログラム: M Series: Correlated Digital Output with Analog Output Sample Clock
サンプルプログラム: M Series Correlated Digital Input with Analog Input Sample Clock in ANSI C
サンプルプログラム: Performing Correlated Digital IO with an M Series Device in LabVIEW


 

  1. デバイスのオンボード周波数発生器からサンプルクロックを提供する方法

各Mシリーズデバイスには、周波数発生器が搭載されており、10 MHzもしくは100 kHzオンボードタイムベースを整数値(n = 1, 2, ..., 16)で除算して分周したパルス列を作り出せます。オンボード周波数発生器を使用するオプションには、利用できるサンプルクロック周波数の制限はありますが、外部クロック信号が利用できない場合やすべてのカウンタやアナログクロックが他のタスクで使用している場合には良いオプションです。この方法は、下記の手順をおこないます。

  1. 周波数発生器の分周したレートでデジタルパルス列を生成するカウンタ出力タスクを作成します。
  2. カウンタ出力タスクのチャンネル名に<NI-DAQmxデバイス名>/freqoutを指定します。
  3. デジタル入力タスクもしくはデジタル出力タスクを作成して、サンプルクロックのソースとして/<NI-DAQmxデバイス名>/FrequencyOutputを指定します。
  4. デジタル入力もしくはデジタル出力タスクを開始します。
  5. 収集もしくは生成を開始するデジタルタスクの準備ができたら、カウンタタスクを開始するようにします。

周波数発生器に関しては、Mシリーズユーザマニュアル (PDF)  の7-25ページ(PDF 132ページ)を参照してください。


 

  1. 変化検出を使用する方法

変化検出とは、ハードウェア的にグループ全体またはポートを監視し、1つ以上のデジタル入力ラインでの変化を検出するデジタル操作の1つです。変化検出はストロボ操作です。これは、遷移がハードウェア(クロック信号またはハンドシェイクライン)により制御されることを示します。変化が発生すると、バッファでデータがラッチされ、そのパターンはダイレクトメモリアクセス(DMA)またはPCメモリの割り込みを介して遷移します。変化検出はデジタルポート状態で変化を迅速に認識するため、ソフトウェアループをポーリングせずにポートの監視ができます。また、重複データを削除し、ポート全体を登録します。変化検出に関しては、M シリーズユーザマニュアル (PDF)  の6-8ページ(PDF 105ページ)を参照してください。

詳細については、下記のリンク先を参照してください。
ホワイトペーパー: NI-DAQmxでのデジタル変化検出 
技術サポートデータベース: デジタルエッジの立ち上がりと立ち下がりの両方をアナログ入出力のサンプルクロックとして利用する方法
 

Additional Information

メモ: 仕様に記載されている最大サンプルクロックレートを超えることはできません。これはクロックソースに関わらずデバイスが対応できる最大サンプルクロックレートです。これを超える設定をおこなった場合、ソフトウェア的なエラーは出力されませんが、データが不足したサンプリング結果となってしまいます。