NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

DAQmxCreateAICurrentChan

今回、始めてNI6238を使用してアナログ入力(電流)の測定を行おうと NI-DAQmx C Reference Help を参考にプログラム作成しています。 VisualBasic6にて下記関数を記述しましたが、実行時「未定義のパラメータエラー」が発生しています。 本関数、Help記述以外のパラメータ設定があるのでしょうか? ちなみに「NI-DAQmx 15.0」を使用しています。 ------------------------------------------------------------ ◇下記の記述の場合、「DAQmx_Val_Amps」「DAQmx_Val_Default 」 が未定義のパラメータエラーとなる DAQmxErrChk DAQmxCreateAICurrentChan(taskH_AI, _ "Dev4/ai0:3", _ "", _ DAQmx_Val_Cfg_Default, _ 4, _ 20, _ DAQmx_Val_Amps, _ DAQmx_Val_Default, _ 0.1, _ "") ------------------------------------------------------------ ◇下記の記述の場合、ビルドは成功する  ネット検索したところ下記パラメータでの記述があり使用してみた。  Helpの記述と違うが問題はないのか? DAQmxErrChk DAQmxCreateAICurrentChan(taskH_AI, _ "Dev4/ai0:3", _ "", _ DAQmx_Val_Cfg_Default, _ 4, _ 20, _ DAQmx_Val_CurrentUnits2_Amps, _ DAQmx_Val_CurrentShuntResistorLocation1_Internal, _ 0.1, _ "") ------------------------------------------------------------
0 件の賞賛
メッセージ1/9
4,189件の閲覧回数

k.kuwano 様

 

6238の電流入力レンジは±20mA(±0.02A)でございます。

DAQmx_Val_Amps のパラメータですと単位がAとなり、記述されたレンジは 4~20Aとなるため、通常のレンジを大幅に超えています。

そのためエラーと出力されたのかと存じます。

 

DAQmx_Val_CurrentUnits2_Amps というパラメータはヘルプに記載されていないのですが、自動的にカスタムスケールが作成され、それが単位として利用されているかと存じます。

仮に4mA ~ 20mAを記述されることを希望されていたのであれば、以下のようなパラメータに変更していただくとエラーを回避できるかと存じます。

 

DAQmxErrChk DAQmxCreateAICurrentChan(taskH_AI, _ "Dev4/ai0:3", _ "", _ DAQmx_Val_Cfg_Default, _ 0.04, _ 0.02, _ DAQmx_Val_Amps, _ DAQmx_Val_Default, _ 0.1, _ "")

0 件の賞賛
メッセージ2/9
4,141件の閲覧回数

Y.Yamada様

 

連絡ありがとうございます。

ご指摘の通り、4mA ~ 20mAとなるため、パラメータ設定を変更してみました。

結果、DAQmx_Val_Ampsパラメータのところでエラーになります。

-------------------------------------

コンパイルエラー

変数が定義されていません。

-------------------------------------

DAQmxErrChk DAQmxCreateAICurrentChan(taskH_AI1, _
                                     "Dev4/ai0:3", _
                                     "", _
                                     DAQmx_Val_Cfg_Default, _
                                     0.004, _
                                     0.02, _
                                     DAQmx_Val_Amps, _
                                     DAQmx_Val_Default, _
                                     0.1, _
                                     "")

-------------------------------------

 

開発環境に問題があるのでしょうか?

Windows7

VisualBasic6 SP6

NI-DAQmx15.0

 

 


 

0 件の賞賛
メッセージ3/9
4,119件の閲覧回数

k.kuwano様

 

変更をお試しいただきありがとうございます。

下記の資料に記載されているように、NIDAQmx.h ファイルを含めていますでしょうか?

http://digital.ni.com/public.nsf/allkb/86BB2F71F7E9849D8625706E00086BDB

 

仮にされていないようでしたらお試し願います。

また下記のディレクトリにNIDAQmx.hファイルが存在しますが、開いていいただいた時に、DAQmx_Val_Amps は定義されていますでしょうか?

<Program Files>\National Instruments\Shared\ExternalCompilerSupport\C\include\NIDAQmx.h

 

定義がされていれば環境としては問題はないかと存じますが、一度上記をご確認いただければと思います。

よろしくお願いします。

0 件の賞賛
メッセージ4/9
4,114件の閲覧回数

Y.Yamada様

 

連絡いただきまして、ありがとうございます。

 

NIDAQmx.hファイルの存在、DAQmx_Val_Amps定義の確認はできました。

ただ、このヘッダファイル(DAQmx_Val_Amps)をVisualBasic環境に含める方法がわかりません。

手順等、ご教授願えませんか。

0 件の賞賛
メッセージ5/9
4,104件の閲覧回数

k.kuwano様

 

ご確認いただきありがとうございます。

プロジェクトから Project»References を選択し、選択可能な項目から NI-DAQmx C API を選択していただくと、

DAQmxプログラミングに必要なライブラリなどが追加されます。

0 件の賞賛
メッセージ6/9
4,098件の閲覧回数

Y.Yamada様

 

連絡ありがとうございます。

 

「NI-DAQmx C API」 の追加はできています。

 

ちなみに、直接定義値を書いた場合、コンパイルは正常にできました。

 

    DAQmxErrChk DAQmxCreateAICurrentChan(taskH_AI1, _
                                         "Dev4/ai0:3", _
                                         "", _
                                         DAQmx_Val_Cfg_Default, _
                                         0.004, _
                                         0.02, _
                                         10342, _   ←DAQmx_Val_Amps
                                         10200, _   ←DAQmx_Val_Default
                                         0, _
                                         "")

0 件の賞賛
メッセージ7/9
4,093件の閲覧回数

k.kuwano様

 

ご連絡いただき、ありがとうございます。

呼び出している関数パラメータが NI-DAQmx C API と Visual Basic 6.0 API ではデータタイプが違うために今回のエラーが発生しています。

結論から申し上げますと、以前利用されていた DAQmx_Val_CurrentUnits2_Amps 、int32 の数値でも問題ありません。

 

Visual Basic 6.0 ではC API と関数名やパラメータ名はほぼ同じなのですが、大きな違いは、上記でも述べた関数パラメータのデータタイプです。

そのため、幾つかの関数ではヘルプに記載されている関数やパラメータ名が、Visual Basicと同一ではございません。よって、Cと全く同じように関数のパラメータを定義すると、今回のようなエラーが発生する事がございます。

 

よって、Visual Basic 6.0 でパラメータを定義する際に、Visual Basic環境からNIDAQmxCAPI library を Object Browser からご確認いただき、

Visual Basic 6.0で定義されているパラメータ名を利用すると良いかと思います。

 

今回の場合も、Object Browser にてNIDAQmxCAPI libraryを開いていただくと、DAQmx_Val_CurrentUnits2_Amps があるかと思います。

または.h ファイルに定義されている数字でも動作しますが、おそらく名前で定義していただいた方がコードとしては可読性が高まるかと思います。

 

参考までに、上記について記載されている資料も一緒にリンクいたします:

http://digital.ni.com/public.nsf/allkb/CF0571DBDBC1AF38862571B500690A0B

 

メッセージ8/9
4,086件の閲覧回数

Y.Yamada様

 

連絡ありがとうございます。

 

丁寧な説明、ありがとうございます。

説明内容に関して、こちらでも確認できました。

 

ありがとうございました。

0 件の賞賛
メッセージ9/9
4,081件の閲覧回数