06-11-2014 09:43 PM
お世話になっております。
現在、Labviewのデータ集録に関して学ぼうと思いLabview eラーニングコースを受講しています。
これまで自分で作成したVIではDAQアシスタントを使用していました。しかし、講座の中ではDAQmxを使用したプログラミングがほとんどです。
頻繁に入出力を繰り返すようなプログラムの場合には、DAQmxを使用しておいた方が良いという事でしょうか?
もう一点。
下記のような入出力を繰り返しかつ同時に実行する場合には、ふたつのDAQデバイスが必要になるのでしょうか?
ai0は常に入力を受け取っている。
あるタイミングでao0からTTLを出す、その前後(同時も含む)、数10~100msのランダムなタイミングでao1からTTLを出す、と同時にai1からNサンプルの入力を受け取る。これを繰り返す。
というようなVIです。
宜しくお願いします。
解決済! 解決策の投稿を見る。
06-14-2014 04:26 AM
silenceptさん
DAQアシスタントは対話式で簡単にプログラムをかけるといった利点がある半面、自由度が低い・処理が重いという欠点があります。
DAQアシスタントの内部処理に関してはDAQアシスタント上で右クリックし、[フロントパネルを開く]からサブVIに変換することで内容を確認することができます。
繰り返しの頻繁さというよりは、自由度が高く、処理を軽くしたい場合は個々のDAQmxの関数を用いたプログラムを作成するのがよいと思います。
ここでDAQmxの関数を使用するプログラムは多くの場合一から作成する必要はなく、LabVIEWのサンプルプログラムをベースに開発ができると思います。サンプルプログラムは以下にあります。
LabVIEWのメニューバーの[ヘルプ > サンプルを検索]でサンプルファインダが表示され、
ハードウェア入力と出力 > DAQmx
以下にすぐに使用できるサンプルが多くあります。
2つ目の質問に関してですが、多くのDAQデバイスでは例えばアナログ入力に対し1つのタスクしか作成できません。
以下の資料のケース⑥の通り、ai0は連続集録、ai1は有限集録(Nサンプル)というタスクを作成し実行することはできません。
NI-DAQmx エラー -50103 “指定したリソースは予約されています” が生じる原因
http://digital.ni.com/public.nsf/allkb/09929182FB4BCA57862575A000035443
個々のaiやaoのチャンネルを自由に制御したい場合はDAQデバイスではなくFPGAのデバイスを検討してみてはいかがでしょうか?
06-14-2014 06:08 PM
こんにちは。
Jester_n さんの内容で補足を。
DAQアシスタントは簡単に設定ができて、すぐデータ集録や出力ができるところが利点です。
あまり複雑な処理はせず、オシロスコープの様に簡単なトリガ設定をした後にデータをとりこみたい、といった時にDAQアシスタントが便利です。
ただ逆に言えば、上記の集録や出力以上に複雑なことをしたく、LabVIEWでのデータ集録を学ぶ必要性がある感じているのであれば、最初からDAQmxを習得しておいた方が後々役にたつかと。
今回DAQデバイスで実現できるかということですが、もう少し詳しい情報が必要ですね。
とくに「あるタイミング」という部分がどの様に決まるのかが気になります。そのタイミングの決まり方で、
DAQでできたり、Jester_n さんの言うとおりFPGAが必要になります。
FPGAはDAQにくらべると高価ですが、DAQだと面倒な設定もFPGAだと柔軟に行えるのが利点です。
06-16-2014 02:24 AM
Jester_nさま
Active Participantさま
早々のご回答およびご助言まことにありがとうございました。
負荷がかかりそうな場合にはDAQmx関数を駆使するよう心がけます
あるタイミングというのは開始スイッチを押してから、5~8秒後というようなタイミングです。これがForループで繰り返されます。
FPGAについて少しだけ調べましたが、DAQデバイスより高額ですので導入は難しいです。
常に入力を受け取っているai0のデータはそれほど精度を必要としていませんので、低額のDAQデバイスをもう1台購入して対応できたらと思います。
今後ともどうぞ宜しくお願い申し上げます。
06-16-2014 06:45 PM
解決策としてマークしていただきありがとうございます。
2つ目の質問に関してですが、仰る通りDAQデバイスをもう一つ使用する方法もいいですね。