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.
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.
02-26-2015 11:11 PM
ご協力お願いします。
デジタル入力の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バイトというサイズは
なんでだろう?と思います。
何か原因の思い当たる方はいらっしゃらないでしょうか。
ご回答お待ちしております。
解決済! 解決策の投稿を見る。
02-28-2015 09:18 PM
こんにちは。
TDMS ファイルが簡単に閲覧できるTDMS ファイルビューアーかExcelなどで、問題となっているファイルの中身をみてみるのはいかがでしょうか。
TDMS ファイル作成時の設定で、ファイル全体で一つのヘッダとなっているのではなく、データを書き込むたびにヘッダが余分に書き込まれている気がします。
03-01-2015 06:03 PM
ご連絡いただきありがとうございます。
ファイルの中身は確認してみましたが、特に差はありませんでした。
また、データを書き込むたびに余分なデータが書き込まれるのは
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ファイルにも起こっているのでしょうか?
03-03-2015 04:28 AM
TDMSファイルの書き込みはどのような関数をお使いですか?
もし「DAQmxロギングを構成」VIをお使いで、「操作」入力に“開くまたは作成”を選択していて、既存ファイルにデータが追加されていることはありませんか?
日本NI 上野
03-03-2015 06:01 PM
日本NI 上野様
ご連絡いただきまことにありがとうございます。
使用している関数は「DAQmxロギングを構成」を使用しています。
ただ、ファイル名には日付が含まれるようにしているため
必ず新規ファイルになるようにしています。
また、ファイルの中身はExcelで確認しており、
既存ファイルにデータが追加されていることはありません。
他に何かこのようになってしまう心当たりはないでしょうか。
03-04-2015 07:55 PM
これは、ログ機能付きのデジタル入力サンプルプログラムでも同様になりますか?
私がサンプルで1 MHzと100 kHzの両方を実行して、ファイルを見比べてみましたが、それほど差はありませんでした。
こちらで再現できると助かりますので、確認いただけると幸いです。
03-04-2015 10:19 PM
ご連絡いただきまことにありがとうございます。
質問で申し訳ないのですが、
「ログ機能付きのデジタル入力サンプルプログラム」
とは何なのでしょうか。
その名称のサンプルプログラムがあるのかと思い
サンプルを検索してみたのですが、見つかりませんでした。
ご回答お願いします。
また、「DAQmxロギングを構成」についても質問です。
この関数の設定の中にロギングモードがあります。
このロギングモードの設定で[ログ]を選択すると最高のパフォーマンスが得られると
ヘルプに記載されていますが、ここでいう最高のパフォーマンスとは
[ログして読み取り]に比べ読み取り処理が無い分、余分な処理が行われていない
というだけなのでしょうか。
というだけではないというのであれば、ログファイルの保存形式に何か影響があるのでしょうか。
最高のパフォーマンスとは何を指しているのでしょうか。
ご回答お願いします。
03-05-2015 03:31 AM
サンプルは、ハードウェア入力と出力 ≫ 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パレットにある関数を使うとサイズを抑えられるかもしれません。
未処理データについては、下記が参考になります。
03-05-2015 06:16 PM
日本NI 上野様
ご連絡いただきまことにありがとうございます。
現在、「DAQmxロギングを構成」を使用しております。
>ファイルI/Oパレットにある関数を使うとサイズを抑えられるかもしれません
上記の回答をいただきました。
いろいろと考え直し、プログラムの設計も検討しておりますが
以前のディスカッションフォーラムの「DAQmxロギングを構成(TDMS)の使い方」
という質問時にて日本NI 上野様より下記回答を得ていることを確認しました。
・ファイルI/Oのパレットの関数を使用すると「DAQmxロギングを構成」に比べ
8倍のサイズになってしまうことは仕様どおり
ファイルサイズを抑えるための関数として「TDMSを最適化」がありますが
「DAQmxロギングを構成」によって作成されたTDMSファイルでは
使用することができないとヘルプに記載されています。
プログラムの設定に関してですが、現状サンプルモードに連続サンプルを設定しています。
有限と連続の設定で何か差はあるのでしょうか。
最初の質問に戻るわけですが、
・サンプリング速度の違いによって保存ポイント数が同じでもファイルサイズが異なってしまった
この原因と考えられることは何かないでしょうか。
サンプリング速度以外に私が何か操作を行ってしまっている可能性もあるのでしょうが
ファイルサイズが大きくなってしまうような心当たりはないでしょうか。
ご回答お待ちしております。
03-05-2015 07:01 PM
ご質問をしっかり理解していなくて申し訳ございません。
有限集録は、指定した速度(サンプルレート)でサンプル数を集録して終了します。
たとえば、サンプルレートが1 kHzでサンプル数が5000であるなら、0.001(1/1k Hz)秒間隔で5000個のデータを収録するので5秒で集録が終わります。
連続集録は、指定した速度(サンプルレート)でループあたりのサンプル数を繰返し集録し、任意のタイミング(UIのボタンなど)で集録を止めます。
「1MHzサンプルで32ch * 435456pointの時」、「100kHzサンプルで32ch * 469306pointの時」とありましたのでサンプリング速度もサンプル数も異なるのかと思っておりました。
サンプル数が同じであれば、通常ファイルサイズは同じになります。
タイミング設定として「サンプルレート」と「サンプル数」はどのように設定していますか?
そして、連続集録をおこなっていると記載されていますが、どういうタイミングでWhileループを停止させているのですか?