DAQmxおよび従来型DAQでデータ転送方法(DMAまたは割り込み)を構成する方法



使用ソフトウェア:
使用ソフトウェア・バージョン: 7.4.4
使用ソフトウェア・バージョンに特化: 7.4.4
二次のソフトウェア: N/A

問題:

さまざまな操作(アナログ入出力、デジタル入出力、カウンタ入出力)をおこなっており、それぞれに適したデータ転送方法を選択したいです。データ転送でDMAチャンネルおよび割り込み要求をおこなうにはどのように構成すれば良いですか?



解決策:

NI-DAQmxを使用する場合

LabVIEW API

  1. ブロックダイアグラムにDAQmxチャンネルプロパティノードを配置して、「DAQmx仮想チャンネルを作成」VI に配線します。
  2. プロパティノードを右クリックし、すべてを書き込みに変更を選択します。
  3. 操作タイプ(インスタンス)によって選択する項目が異なります。操作タイプがアナログ入出力およびデジタル入出力の場合は、 プロパティノードをクリックしてプロパティ » 操作タイプ » 一般プロパティ » 上級 » データ転送とメモリ » データ転送方法を選択します。操作タイプがカウンタ入出力の場合は、プロパティノードをクリックしてプロパティ » 操作タイプ » 一般プロパティ » オプション » 上級 » データ転送とメモリ » データ転送方法を選択します。
  4. DAQmxチャンネルプロパティノードのDataXferMechワイヤ端子で右クリックして、作成 » 定数を選択します。使用したい転送方法タイプを選択します。

DAQmxチャンネルプロパティノードでデータ転送方法に割り込みを選択。
図1. アナログ入力の構成例

C API

操作タイプにより関数が異なります。たとえば、アナログ入力タスクでデータ転送方法を設定したい場合は、以下のように呼び出します。

DAQmxSetAIDataXferMech( TaskHandle taskHandle, const char channel[ ], int32 mode);

引数のmodeは、以下の4つの値から1つを選択することができます。

  • DAQmx_Val_DMA
  • DAQmx_Val_Interrupts
  • DAQmx_Val_ProgrammedIO
  • DAQmx_Val_USBBulk

詳細については、NI-DAQmx C Reference Helpを参照してください。NI-DAQmx C Reference Helpは、スタート » すべてのプログラム » National Instruments » NI-DAQ » NI-DAQmx C Reference Helpにあります。

.NET API

.NET呼び出しも操作タイプにより異なります。操作タイプがアナログ入力の場合は、以下のように呼び出します。

Task.AIChannels.All.DataTransferMechanism = Mode

Modeは、以下の4つの値から1つを選択することができます。

  • AIDataTransferMechanism.Dma
  • AIDataTransferMechanism.Interrupts
  • AIDataTransferMechanism.ProgrammedIO
  • AIDataTransferMechanism.UsbBulk

従来型NI-DAQ(レガシー)を使用する場合

LabVIEW API
  1. ブロックダイアグラムに「Set DAQ Device Information」VIを配置します。
  2. 情報タイプの端子を右クリックして定数を作成します。作成された定数の中からデータ転送モードを変更したい操作を選択します。
  3. 情報設定の端子を右クリックして定数を作成します。同じように使用したい転送方法タイプを選択します。

従来型DAQでデータ転送方法に割り込み要求を選択。
図2. 従来型DAQの構成例

C API

従来型DAQでデータ転送方法を変更するには、以下のように呼び出します。

Set_DAQ_Device_Info( deviceNumber, infoType, infoValue )

infoTypeのパラメータは、操作タイプにより関数が異なります。たとえば、アナログ入力でデータ転送方法を変更したい場合は、以下のように呼び出します。

Set_DAQ_Device_Info( deviceNumber, ND_DATA_XFER_MODE_AI, infoValue )

infoValueパラメータは、EシリーズPCIデバイスを使用している場合なら2つの値から1つを選択することができます。

  • ND_INTERRUPTS
  • ND_UP_TO_1_DMA_CHANNEL

詳細については、Traditional NI-DAQ Function Reference Helpを参照してください。Traditional NI-DAQ Function Reference Helpは、スタート» すべてのプログラム » National Instruments » NI-DAQ » Traditional NI-DAQ Function Reference Helpにあります。



関連リンク:

KB 430FRH7E: 複数のカウンタを使用する際に、エラー「-200251」が発生します。
KB 23GF01Q1: ローコストEシリーズマルチファンクションDAQボードがDMA競合してしまう。
NI Developer Zoneチュートリアル: Programming Interrupts for DOS-Based Data Acquisition on 80x86-Based Computers
KB 0I5924EO: DMA、IRQとは何でしょう。GPIBでどのように使われているのでしょう。



添付:





報告日時: 12/16/2003
最終更新日: 11/10/2011
ドキュメントID: 34FGAFVM