NI製品ディスカッション

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

DAQボードでのデータ集録について

いつもお世話になっております.高橋と申します.

DAQボードを使ってデータ集録を行っています.そこで,サンプリング周波数につて質問させていただきます.

現在DAQボードで15秒間音声を集録し,データを保存したり,様々な解析を行っています.そこで,DAQボードのサンプリング周波数を以前の20kHzから,64kHzに変更したところ,エラー「1907」と,「20315」が表示されプログラムが途中で止まってしまいます.どのようにしたらこのエラーは改善されるのでしょうか?集録時間の15秒と,サンプリング周波数64kHzは固定です.

具体的な設定は以下の通りです.
データ集録方法:連続
サンプリング周波数:64kHz
サンプル数:32000
コレクタ数:960000
while ループ数:30回
STFTのtime segment:1秒

以上です.

よろしくお願いいたします.
0 件の賞賛
メッセージ1/12
6,203件の閲覧回数
高橋 様

平素より弊社製品をご使用いただき誠に有難うございます。
日本ナショナルインスツルメンツ技術部の櫻田と申します。


高橋様のプログラムコードが分からないため憶測での回答になってしまいますが
以前、高橋様が本フォーラムの別のスレッドに公開されておりましたオクターブ解析を行うプログラムを元に回答させて頂きます。

エラー「1907」につきましては、オクターブ解析を行う際の波形データのdtが0の場合か
オクターブ解析に入力する信号が無い場合に発生いたします。

後者のケースは
集録した総サンプル数 <= 一度の解析に使用するサンプル数 × (ループ回数-1)
の関係の時に起りえますので、おそらく、こちらが原因ではないかと考えております。


エラー「20315」につきましては、私の環境ではエラーコードの内容が不明なため確認できず原因の追究が出来ませんでした。
以前、他のお客様からお問い合わせいただいたデータの中に、このエラーも波形データのdtに関係しているとの内容が若干ありましたので
上記のエラーと合わせて、解決できる可能性があります。


今回のエラーに関しましては、サンプリング周波数を変更したことによるデータ集録時のエラーというよりは
取得するサンプル数が変わったことによる解析時のエラーのように思われます。
ですので、エラーが発生する際の波形データをご確認頂きたいと思います。

また、エラーの原因を詳しく探索するために
エラーの詳細(発生箇所、エラーメッセージの内容、プログラムの内容、データなど)を
お知らせ頂きたいと思います。


以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ2/12
6,162件の閲覧回数
櫻田様.

いつもお世話になっております.高橋と申します.

前回のご指摘を受け,検討してみましたところ下記のようなエラーが発生しましたので,再度質問させていただきます.

発生理由は不明なのですが,プログラムをいじっていたところ,エラー「200279」がDAQアシスタントで起こるようになりました.技術データベースで検索してみたのですが,いまいち解決できませんでした.
プログラムとして行いたいことは,DAQボードで音声を集録し,15秒間様々な解析を行いたいのです.添付したプログラムで,64kHzで集録し,15秒分解析するにはどうしたらよいのでしょか?

個人的には,バッファサイズの問題なので,動作が遅すぎるのではないかと思っているのですが,具体的な解決策が分かりません.

前回の質問で書いたエラー「1907」と「20315」は,それぞれSTFTと振動とレベル計測で発生しました.

以上です.

よろしくお願いいたします.
0 件の賞賛
メッセージ3/12
6,143件の閲覧回数
高橋 様

日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。



エラー「-200279」がDAQアシスタントで起こりましたのは
デバイスからバッファへのデータの書き込みがバッファからのデータの読み取りを上回った際に
バッファが一杯になってしまい、データが上書きされたことが原因です。
集録速度が決まっており、バッファサイズを大きくしても、根本的な解決にはならないため
「集録」と「解析」の部分を分けて実行することをお奨めします。

64kHzで集録した15秒分のデータを解析したいとのことでしたが
こちらは15秒単位で繰り返し集録と解析を行いたいのか、あるいは15秒で終了なのか、どちらになりますでしょうか。

解析をオフラインで行うことが可能なアプリケーションでしたら
64kHzで集録した15秒分のデータをファイル等のデータに保存し、別のプログラムで解析を行う。
あるいは、一方のループで集録を行い、解析を別のループで並列で動作させる。
以上のどちらかの方法が良いかと思います。

具体的なプログラムの構造等は高橋様のご要望に合わせて、ご助言させて頂きたいと思います。

エラー「1907」と「20315」は,入力した波形データの不備ですので、集録が無事に行われますと、解決されるかと思います。

よろしくお願いいたします.
0 件の賞賛
メッセージ4/12
6,096件の閲覧回数
櫻田様.

いつもお世話になっております.高橋と申します.

ご指摘いただいたこと了解いたしました.

こちらでは,1秒ごとにリアルタイムで集録・解析し,15秒で終了するプログラムを考えています.ですので,集録と,解析を並列で行えるプログラムに改良したいと思います.

そこで,1秒ごとに集録したデータを解析し,15秒間計測するプログラムを並列に組むにはどのようにすればよいか教えていただけるでしょうか?

以上です.

よろしくお願いいたします.
0 件の賞賛
メッセージ5/12
6,088件の閲覧回数
高橋 様

日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。
返事が遅くなり申し訳ありません。


1秒ごとに15秒間集録したデータを,並列で解析するプログラムの方法ですが、添付のプログラムをご参照下さい。
「キュー」というものを使用いたします。キューについての詳細は、ヘルプをご参照頂きたいと思います。

プログラムの内容としましては
集録したデータをキューを用いて解析側に受け渡しております。
解析側のループは集録した一秒毎のデータが渡されるまで待機状態になります。
その待機状態を理解するために、比較対象としてキューに関係なくグラフ表示するループも追加してあります。
下の2つのループタイミングの違いと、上の二つのループタイミングの一致をご理解頂きたいと思います。

以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ6/12
6,050件の閲覧回数
桜田様.
 
いつもお世話になっております.高橋と申します.
 
大変親切なアドバイス助かっております.
 
前回のご指摘非常に参考になりました.そこで,今ひとつ質問させていただきます.
 
DAQアシスタントを使わずに,DAQの一つ一つのviを使ってプログラムを組むサンプルをいただいたのですが,この場合に物理チャンネルを2つにするにはどうしたらよいのでしょうか?サンプルのプログラムをコピーして2つにしてもエラー「50103」が発生してしまいます.
 
以上です.
 
よろしくお願いいたします.
 
 
0 件の賞賛
メッセージ7/12
6,029件の閲覧回数
高橋 様

日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。


複数の物理アドレスを指定する方法は
例として、Dev2のアナログ入力チャンネル0と5のチャンネルを使用したい場合には
DAQmx関数の物理チャンネルの端子へ「Dev2/ai0, Dev2/ai5」のように「,」で区切って記入したチャンネルを接続します。

また、Dev1のアナログ入力チャンネル0から3の連続したチャンネルを使用したい場合には
「:」で最初と最後のチャンネルを繋いで「Dev1/ai0:3」と記入することも出来ます。


この方法で、使用するDAQmx関数は一つで複数のチャンネルを使用できます。
複数のチャンネルを使用する際には書き込みや読み取りを行う関数で「複数チャンネル」を選択してください。

以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ8/12
6,018件の閲覧回数
櫻田様.

いつもお世話になっております.高橋と申します.

前回のご指摘の通り2チャンネルでデータ集録することができました.
しかし,こちらが必要とする解析を組み込むと,今までと同様にデータの解析が追いつかないのか?エラー「1」(入力パラメーターが無効です)が出てしまうようになりました.どうしたらエラーが出ずに解析を終了することができるようになるのでしょか?

作成中のプログラムを添付いたしました.

以上です.

よろしくお願いいたします.
0 件の賞賛
メッセージ9/12
5,999件の閲覧回数
高橋 様

日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。


以前、提供させていただきました「キュー」を使用したサンプルに不備がありました。
「キュー解放」が集録側のループの外側で「キューに要素を追加」のキューアウトに接続されておりますが
こちらを、解析・表示側のループの外側で「キューから要素を削除」のキューアウトに接続しなおしてください。

解析に時間がかかるために、解析側ですべての要素をキューから呼び出す前にキューを解放してしまったことが原因のエラーでした。


以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ10/12
5,960件の閲覧回数