From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

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

サンプリング速度とファイルサイズの関係

解決済み
解決策を見る

ご協力お願いします。

 

デジタル入力のtdmsファイル形式のログファイルを作成してみたのですが、

サンプリング速度の違いで、なぜかファイルサイズに大きな差が出てしまいました。

 

使用ボード

PXIe-6536

プログラム構造概略

5ms周期でロギング

 

①1MHzサンプルで32ch * 435456pointの時⇒1.858.272バイト

②100kHzサンプルで32ch * 469306pointの時⇒4.509.640バイト

 

100kHzでサンプルした時、取得ポイント数が30000ポイント以上多いので

ファイルサイズが大きくなってしまうのはわかるのですが、2倍以上になるのは

どうしてだろう?という状況です。

 

1MHzで32chの場合、1回のサンプルで32ch分あるため、4byteのデータ量。

435456pointあれば、4byteを積算して435456*4=1.741.824byte。

ヘッダ情報やプロパティなどが含まれてくるため1.858.272バイトというサイズは

妥当な大きさなのでは?と思います。

 

同様に100kHzで32chの場合、1回のサンプルで4byteのデータ量。

469306pointあるので、積算して469306*4=1.877.224byte。

ヘッダ情報やプロパティなどが含まれてきたとしても4.509.640バイトというサイズは

なんでだろう?と思います。

 

何か原因の思い当たる方はいらっしゃらないでしょうか。

ご回答お待ちしております。

0 件の賞賛
メッセージ1/14
5,406件の閲覧回数
解決策
トピック作成者sMaSaToが受理

こんにちは。

 

TDMS ファイルが簡単に閲覧できるTDMS ファイルビューアーかExcelなどで、問題となっているファイルの中身をみてみるのはいかがでしょうか。

TDMS ファイル作成時の設定で、ファイル全体で一つのヘッダとなっているのではなく、データを書き込むたびにヘッダが余分に書き込まれている気がします。 

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

ご連絡いただきありがとうございます。

 

ファイルの中身は確認してみましたが、特に差はありませんでした。

また、データを書き込むたびに余分なデータが書き込まれるのは

tdms_indexファイルのほうではなかったでしょうか?

 

実際に

①1MHzサンプルで32ch * 435456pointの時⇒1.858.272バイト

 こちらのtdms_indexファイルは⇒116.448バイト

②100kHzサンプルで32ch * 469306pointの時⇒4.509.640バイト

 こちらのtdms_indexファイルは⇒2.632.416バイト

 

サンプルポイントが同じでも、5ms間隔で計測した時間に10倍の差があり

書き込み回数の多い100kHzのほうがtdms_indexファイルのサイズも

非常に大きいです。

 

このtdms_indexファイルと同じことがTDMSファイルにも起こっているのでしょうか?

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

TDMSファイルの書き込みはどのような関数をお使いですか?

 

もし「DAQmxロギングを構成」VIをお使いで、「操作」入力に“開くまたは作成”を選択していて、既存ファイルにデータが追加されていることはありませんか?

 

日本NI 上野

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

日本NI 上野様

ご連絡いただきまことにありがとうございます。

 

使用している関数は「DAQmxロギングを構成」を使用しています。

ただ、ファイル名には日付が含まれるようにしているため

必ず新規ファイルになるようにしています。

 

また、ファイルの中身はExcelで確認しており、

既存ファイルにデータが追加されていることはありません。

 

他に何かこのようになってしまう心当たりはないでしょうか。

 

 

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

これは、ログ機能付きのデジタル入力サンプルプログラムでも同様になりますか?

私がサンプルで1 MHzと100 kHzの両方を実行して、ファイルを見比べてみましたが、それほど差はありませんでした。

こちらで再現できると助かりますので、確認いただけると幸いです。

0 件の賞賛
メッセージ6/14
5,281件の閲覧回数

ご連絡いただきまことにありがとうございます。

 

質問で申し訳ないのですが、

「ログ機能付きのデジタル入力サンプルプログラム」

とは何なのでしょうか。

 

その名称のサンプルプログラムがあるのかと思い

サンプルを検索してみたのですが、見つかりませんでした。

 

ご回答お願いします。

 

また、「DAQmxロギングを構成」についても質問です。

この関数の設定の中にロギングモードがあります。

このロギングモードの設定で[ログ]を選択すると最高のパフォーマンスが得られると

ヘルプに記載されていますが、ここでいう最高のパフォーマンスとは

[ログして読み取り]に比べ読み取り処理が無い分、余分な処理が行われていない

というだけなのでしょうか。

 

というだけではないというのであれば、ログファイルの保存形式に何か影響があるのでしょうか。

最高のパフォーマンスとは何を指しているのでしょうか。

 

ご回答お願いします。

0 件の賞賛
メッセージ7/14
5,276件の閲覧回数

サンプルは、ハードウェア入力と出力 ≫ DAQmx ≫ デジタル入力 ≫ デジタル - 有限入力 を使用しました。

「DAQmxロギングを構成」関数のロギングモードにある「ログ」ですが、パフォーマンスは速度のことです。下記のリンクが参考になると思います。

 

http://www.ni.com/white-paper/3727/ja/#toc7
http://zone.ni.com/reference/ja-XX/help/371361L-0112/lvconcepts/fileio_tdms_file_buffering/

 


TDMS形式は、未処理データを含む場合があるので、単純な比較はできませんが、
ファイルサイズを抑えたいのでしたら、ファイルI/Oパレットにある関数を使うとサイズを抑えられるかもしれません。

未処理データについては、下記が参考になります。


http://www.ni.com/white-paper/5696/ja/

0 件の賞賛
メッセージ8/14
5,265件の閲覧回数

日本NI 上野様

ご連絡いただきまことにありがとうございます。

 

現在、「DAQmxロギングを構成」を使用しております。

>ファイルI/Oパレットにある関数を使うとサイズを抑えられるかもしれません

上記の回答をいただきました。

 

いろいろと考え直し、プログラムの設計も検討しておりますが

以前のディスカッションフォーラムの「DAQmxロギングを構成(TDMS)の使い方」

という質問時にて日本NI 上野様より下記回答を得ていることを確認しました。

・ファイルI/Oのパレットの関数を使用すると「DAQmxロギングを構成」に比べ

 8倍のサイズになってしまうことは仕様どおり

 

ファイルサイズを抑えるための関数として「TDMSを最適化」がありますが

「DAQmxロギングを構成」によって作成されたTDMSファイルでは

使用することができないとヘルプに記載されています。

 

プログラムの設定に関してですが、現状サンプルモードに連続サンプルを設定しています。

有限と連続の設定で何か差はあるのでしょうか。

 

最初の質問に戻るわけですが、

・サンプリング速度の違いによって保存ポイント数が同じでもファイルサイズが異なってしまった

 この原因と考えられることは何かないでしょうか。

サンプリング速度以外に私が何か操作を行ってしまっている可能性もあるのでしょうが

ファイルサイズが大きくなってしまうような心当たりはないでしょうか。

 

ご回答お待ちしております。

0 件の賞賛
メッセージ9/14
5,250件の閲覧回数

ご質問をしっかり理解していなくて申し訳ございません。

 

有限集録は、指定した速度(サンプルレート)でサンプル数を集録して終了します。
たとえば、サンプルレートが1 kHzでサンプル数が5000であるなら、0.001(1/1k Hz)秒間隔で5000個のデータを収録するので5秒で集録が終わります。

 

連続集録は、指定した速度(サンプルレート)でループあたりのサンプル数を繰返し集録し、任意のタイミング(UIのボタンなど)で集録を止めます。

 

「1MHzサンプルで32ch * 435456pointの時」、「100kHzサンプルで32ch * 469306pointの時」とありましたのでサンプリング速度もサンプル数も異なるのかと思っておりました。
サンプル数が同じであれば、通常ファイルサイズは同じになります。

 

タイミング設定として「サンプルレート」と「サンプル数」はどのように設定していますか?

そして、連続集録をおこなっていると記載されていますが、どういうタイミングでWhileループを停止させているのですか?

0 件の賞賛
メッセージ10/14
5,247件の閲覧回数