02-04-2016 07:48 PM
02-08-2016 05:05 AM
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, _ "")
02-09-2016 12:00 AM
連絡ありがとうございます。
ご指摘の通り、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
02-09-2016 01:30 AM
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
定義がされていれば環境としては問題はないかと存じますが、一度上記をご確認いただければと思います。
よろしくお願いします。
02-09-2016 03:16 AM
連絡いただきまして、ありがとうございます。
NIDAQmx.hファイルの存在、DAQmx_Val_Amps定義の確認はできました。
ただ、このヘッダファイル(DAQmx_Val_Amps)をVisualBasic環境に含める方法がわかりません。
手順等、ご教授願えませんか。
02-09-2016 03:47 AM
k.kuwano様
ご確認いただきありがとうございます。
プロジェクトから Project»References を選択し、選択可能な項目から NI-DAQmx C API を選択していただくと、
DAQmxプログラミングに必要なライブラリなどが追加されます。
02-09-2016 04:13 AM
連絡ありがとうございます。
「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, _
"")
02-09-2016 05:17 AM
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
02-09-2016 05:39 AM