06-01-2020 02:01 AM
DAQアシスタントを使用して流量計からデータを取得し、csvファイルに出力しようと試みています。
DAQアシスタントで「Nサンプル」を選び、レートを450Hz、サンプル数を10kとしたところ、計算上はサンプリングだけで22秒かかるかと思いますが、実際には6秒でcsvファイルへの出力まで完了しました。どういったことが原因と考えられますでしょうか。
解決済! 解決策の投稿を見る。
06-01-2020 07:17 PM
K.Hataさん
不思議ですね・・・。ご指摘の通り、450 Hzサンプリングでサンプル数10 kであれば計算上は22秒とちょっとかかるはずと思います。
原因を調べていくにあたって、以下のことが気になります。
・使用しているデバイス(デバイスによっては、特定のサンプリングレートしかそもそも受け付けないものがありますので)
・「実際には6秒でcsvファイルへの出力まで完了」をどのように確かめているか(プログラム的に時間を計測?それとも出力されたcsvファイルを見て?)
・他のサンプリングレート、サンプル数にしたときにどういった傾向があるか(例えば、サンプリングレートを変更しても常に6秒なのか、など)
これらについて情報があればより原因を追究しやすいかなと思います。
06-02-2020 08:18 PM
さっそくご返信いただきましてありがとうございます。
舌足らずで申し訳ありません。
>使用しているデバイス(デバイスによっては、特定のサンプリングレートしかそもそも受け付けないものがありますので)
NI 9203を使用し、流量計からデータを取得しております。
>「実際には6秒でcsvファイルへの出力まで完了」をどのように確かめているか(プログラム的に時間を計測?それとも出力されたcsvファイルを見て?)
下記の2通りの方法で確かめております。
・ブロックダイアグラムの「実行のハイライト」をONにし、ストップウォッチで計測いたしました。プログラムの流れは、(1)csvファイルを作成、(2)DAQアシスタントで電流値をNサンプル取得、(3)Nサンプルをまとめてcsvファイルに書き込み、となっておりますが、段階(2)は6秒で終了しました。
・Windowsのファイル表示画面でファイルサイズを確認いたしました。段階(1)でcsvファイルが作成された時点ではサイズは0kBですが、段階(3)で所定のファイルサイズとなります。この間の時間が6秒程度でした。
>他のサンプリングレート、サンプル数にしたときにどういった傾向があるか(例えば、サンプリングレートを変更しても常に6秒なのか、など)
現在データ収集に課題が発生しているため、申し訳ありませんがすぐには確認できない状況です。
そちらの問題が解決したらこちらの問題に対応させていただきます。
06-02-2020 08:43 PM
K.Hataさん
NI 9203でしたらサンプリングレートがとびとびの値をとるモジュールではないですし、少なくとも450 Hzというサンプリングレートは
受け付けるようですね。
時間の測り方についてですが、「実行のハイライト」をONにした状態で測るのは正しい結果を得にくいかなと思います。実行のハイライトは
プログラムの実行速度そのものに影響を与えるので、「実行のハイライト」をOFFにしているときと速度が変わっている可能性が高いからです。
(といっても、通常はハイライトがONになっているほうがより時間がかかる気がしますが・・・)
実機を持っていないのでシミュレーションデバイスで試した結果ですが、NI 9203でサンプリングレート450のサンプル数10kで確かに22秒程度で
測定できていることを確認できましたので、以下の内容をK.Hataさんの元でも試されてはいかがでしょうか?
1.サンプルファインダを開きます。(LabVIEWのメニューバーの「ヘルプ」で「サンプルを検索」)
2.ハードウェア入力と出力のフォルダからDAQmxフォルダに進み、アナログ入力フォルダの中の「電流-連続入力」のプログラムを開きます。
3.開いたプログラムは別名で保存します(サンプルそのものをいじってしまうと、後でまたサンプルファインダを使用する際にいじられた状態のサンプルとして開かれるためです)
4.チャンネル設定やタイミング設定で所望のパラメタを入力し実行します。
5.集録データのグラフが更新されるタイミングが、いわゆるデータ取得にかかった時間になります
注意点としては、サンプルのプログラムではデータの読み取りのタイムアウトがデフォルトで10秒となっている点です。今回のパラメタでは22秒と予想されるので
この設定を変更しないとエラーが起きます。タイムアウトの設定は、ブロックダイアグラム上のDAQmx読み取りにあるので(サンプルでは通常何も配線されていません)、
そこに例えば25とかそういった値を入力すればいいと思います。
あと気になっている点としては、ファイルのサイズが6秒で所定のサイズになったという点ですね。レート450Hzでサンプル数10kなら、6秒で10k分のデータが
とれるわけないですもんね・・・。
csvファイルの中身を見たときに、サンプル数はちゃんと10k分あるのでしょうか?
06-02-2020 09:14 PM
親身になって考えてくださいましてありがとうございます。
詳細にご回答いただき、大変感謝いたしております。
csvファイルには10k分のサンプルが保存されています。
実は、原因が先ほど判明いたしました。
それに伴い、プログラムの流れの書き方が誤解を招くものであったことが判明しました。
せっかく考えてくださったにもかかわらず、大変申し訳ありません。
【誤】
(1) csvファイルを作成
(2) DAQアシスタントで電流値をNサンプル取得
(3) Nサンプルをまとめてcsvファイルに書き込み
【正】
プログラムを開始すると、下記の2つの動作が同時に開始される
・ダイアログボックスが表示され、人がファイル名を打ち込むことでcsvファイルが作成される
・DAQアシスタントが電流値を取得し始める
6秒という値は「ファイルが作成されてから電流値の取得が終わるまで」ですが、
正しくはファイル名を打ち込んでいる時間も組み入れるべきでした。
これを考慮に入れると22秒となる可能性があります(現時点では接続に問題が発生しているため確認できませんが)。
初歩的なミスでお時間をとらせてしまい申し訳ありません。
大変お世話になりました。ありがとうございました。
06-02-2020 10:07 PM
K.Hataさん
csvファイルに10k分あるにもかかわらず6秒で済んでいるように見えたのはそういう事情でしたか・・・
私ももやもやがすっきりしました。
もちろんアプリケーションで実際になされたい内容にはよりますが、ファイル名を自動的につけるような
プログラムにしてもいいかもしれませんね。
ひとまずは原因がわかったようで何よりです。