NI製品ディスカッション

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

USB-6002

USB-6002を使用しているのですが、開始トリガーをPFI0に与えて

そのタイミングでアナログ電圧をAO0、AO1から出そうとしています。

DAQmx書き込みでNチャンネル1サンプルの設定で

2チャンネル分の電圧データを1次元配列として与えています。

 

ですがプログラムを走らせると、バッファーサイズが2以上でないと

受け付けないというエラーが出て、動きません。

例えばNチャンネルNサンプルで、2サンプル以上の配列データを

渡してやると動くのですが、1サンプルだと同様に動作しません。

 

DAQmxの仕様のバグか何かでしょうか。

解決法についてご教授いただけると幸いです。

よろしくお願いします。

0 件の賞賛
メッセージ1/5
3,580件の閲覧回数

Yab731

 

恐れ入りますが現時点でお伺いしている情報の範囲では、正確な状況を把握できかねますので、
さらに以下の点についてお伺いしてもよろしいでしょうか。

  • Nチャンネル1サンプルの場合、NチャンネルNサンプルの場合それぞれで配線していらっしゃる、
    配列の要素数を教えていただけますでしょうか。
  • バッファのエラーについてエラー番号の記載をお願いいたします。

 

また、Yab731様が開発を行っていらっしゃるコードを再現して解決策を検討する方がご提案できる内容も増えるかと思いますので、

お手数ですが上記内容とともに該当のviについてのスクリーンショットを添付していただけますでしょうか。

お忙しいところ恐れ入りますが、よろしくお願い致します。

0 件の賞賛
メッセージ2/5
3,478件の閲覧回数

アドバイスありがとうございます。

下記ブロックダイアグラム中ではパラメータを定数で書き込みましたので

比較的状況がクリアになるのではないかと思います。

接続しているデータのサイズは1です。

 

ブロックダイアグラムのスクリーンショット

 

USB6003をパソコンにつないだ状態でこのプログラムを

走らせるとエラーが表示されるのが再現できるはずです。

 

バッファーのエラーはDAQmx Timing (sampling clock)に

サンプルサイズを大きめ(2)に与えた場合に言われるもので下記のものです。

エラー

 

もちろん送り出すデータとサンプルサイズを合わせるべきというのはわかるので

合わせれば(sample per channel=1)よいだろうと思ったのですが、そうすると

今度は下記のエラーが出ます。

 

エラーメッセージ

 

1サンプルを出力するライブラリに渡そうと1サンプルをつなぐと

サンプル数が足りないといわれるとても面白い状況なのですが

どうしようもないので目下別の方法でデバイスを使用してます。

DAQmx Timing (sampling clock)の内部コードがsample per channel>=2

を要求するように書かれているんじゃないかと思われます。

 

外部クロックで動くか外部トリガで電圧を一つずつ出せるとよかったのですが

どうにも無理そうなので、将来的には外部クロックで動くUSBDAQに

置き換えようかと検討しているところです。

 

0 件の賞賛
メッセージ3/5
3,471件の閲覧回数

ご連絡が遅くなってしまい申し訳ございません。
コードを添付していただきありがとうございます。
 

私の方でUSB-6002で添付していただいたコードをそのままのパラメータで実行してみると、
エラーコード
-200077を確認しました。
しかし、
DAQmx Timing (sampling clock)のバッファサイズを2にしてコードを走らせても、
エラーコード
-200609が再現できない状況です。

また、以下のリンクにございます、
yab731様の英語のご投稿のほうも拝見させていただきました。
 

How can I send one analog output from USB-6002? - Discussion Forums - National Instruments

http://forums.ni.com/t5/LabVIEW/How-can-I-send-one-analog-output-from-USB-6002/m-p/3329933

 

 

この投稿によりますと、PFI0からトリガを5KHZで出力し、
トリガのタイミングにあわせて
AO0AO1から異なる電圧値を0.2msごとに出力したい、とのお話ですが、
どのようなアナログ出力を行おうとしていらっしゃるのか、測定条件や詳細をお聞かせ願えますでしょうか。

以下のような点も含め詳細をお伺いできれば幸いです。お手数ですがよろしくお願いいたします。


2つのアナログchから提供する電圧は(AO0,AO1,AO0,AO1...というように)互い違いに出力する予定でしょうか。
 それともランダムに出力する予定でしょうか。

2つのアナログchから提供する電圧は、例えばAO0は常に2V, AO13V、、、というように一定の値でしょうか。

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

返答が遅くなってしまいました。また説明が不足していて申し訳ありません。

ご指摘のとおり、お見せしたプログラムの目的は

「PFI0にパルスが来たタイミング ( t[i] ) で、AO0=V0[i] を書き出す。」

というもので、AO1には出力していません。

 

最終的には t[i] のタイミングで AO0=V0[i] 、AO1=5V(一定) を同時に書き出したいですが

問題解決のため簡単化してAO0のみ書き出しとしてプログラムを示した次第です。

 

 

DAQmxWriteに要素数1の配列をつなぎ、DAQmx Timingにバッファサイズ2を

与えるとエラーコード-200609が出るかと思います。

(DAQmxWriteに要素数2の配列をつないだ場合にはエラーは出ません)

 

0 件の賞賛
メッセージ5/5
3,240件の閲覧回数