NI製品ディスカッション

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

波形チャートの表示の遅延

解決済み
解決策を見る

NI-9252からの電圧信号を波形チャートに表示して信号波形の履歴を計測しようとしています。

その際にチャンネル数を増やして波形チャートを増やすと、波形チャートの流れがかくかく(遅延)するようになります。

原因および対策を教えていただけないでしょうか?

 

具体的なプログラムは添付になります。

<設定値>

サンプリング周波数は50kHz

チャンネル当りのサンプル数は100

0 件の賞賛
メッセージ1/9
410件の閲覧回数

まずこの場合、チャートを利用される目的は何でしょう?
コードから、特定チャンネルを取り出しまとめて表示されたいと読み取ったので、波形グラフが適切かと思います。

 

配列からデータを抜き出す際も、チャート毎に1つ指標配列を使っていますが、この辺は1つにまとめられないでしょうか?

 

波形グラフにすべてを表示させ、チェックボックスで特定の波形だけ表示される、なんて案もあります。

 

 

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ2/9
393件の閲覧回数

ご回答、ありがとうございます!

 

チャートの目的は、試験の計測データをリアルタイムで見て計測値の増減状況から、その場で試験の様々な判断をすることです。

そのため波形グラフでは瞬間的な判断は難しいと考えています。

そしてチャートもまとめるのではなく、できれば個々に見て判断したいと思っています。

 

やはり複数のチャートを遅延なく表示するには単純にマシンスペックを上げるしかないのでしょうか?

その場合はメモリ、CPU、GPUのどれが効いてくるか分かりますでしょうか?

 

0 件の賞賛
メッセージ3/9
386件の閲覧回数

まずはやりたいこととその方法、VIの構成を整理させてください。

  • 「計測値の増減状況を(人間が?)見て試験の判断をする」にあたって、どのような現象に注目したいのでしょうか?
  • 50kS/sで100サンプルを単位に更新させたいとのことですが、それは2ms秒です。2ミリ秒で何を判断するのですか?
  • 判断に足る波形の時間幅と更新頻度はいかほどとお考えですか?
  • VIを見ると100S/sで50kサンプルになっています。毎回の読み取り数は不定(DAQ Readをコールしたときのバッファ全部)になっています。50kサンプルはバッファ長として働くだけですが、100S/sで何を見ているのでしょうか?
  • チャートの履歴が2メガサンプルになっています。巨大な循環バッファをユーザインタフェースで(表示しながら)操作していたらマシンスペック云々でどうにかなるものではありません。
  • 50kS/sで100サンプルにした場合も2ms毎の更新は不可能です。描画が遅延して(おそらく内部バッファの残量が単純増加してすぐにオーバーフローする)リアルタイム描画にはならないでしょう。
メッセージ4/9
363件の閲覧回数

ご返信、ありがとうございます。助かります。以下に回答します。

 

  • 「計測値の増減状況を(人間が?)見て試験の判断をする」にあたって、どのような現象に注目したいのでしょうか?

   →異常な振動(急激な振動)がないかを見て試験の供試体が壊れないように緊急停止させていたと考えています。

 

  • 50kS/sで100サンプルを単位に更新させたいとのことですが、それは2ms秒です。2ミリ秒で何を判断するのですか?

   →2msで判断というより、なるべくなめらかに表示させたいと考えています。

 

  • 判断に足る波形の時間幅と更新頻度はいかほどとお考えですか?

   →あいまいです。上記の通り、なるべくなめらかに表示させたいとしか考えていません。

 

  • VIを見ると100S/sで50kサンプルになっています。毎回の読み取り数は不定(DAQ Readをコールしたときのバッファ全部)になっています。50kサンプルはバッファ長として働くだけですが、100S/sで何を見ているのでしょうか?

   →上記の通りです。

 

  • チャートの履歴が2メガサンプルになっています。巨大な循環バッファをユーザインタフェースで(表示しながら)操作していたらマシンスペック云々でどうにかなるものではありません。
  • 50kS/sで100サンプルにした場合も2ms毎の更新は不可能です。描画が遅延して(おそらく内部バッファの残量が単純増加してすぐにオーバーフローする)リアルタイム描画にはならないでしょう。

  →ありがとうございます。そうすると、本当に100S/sが必要か考えて、もっと上げることができないか考える必要があるということですね。

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

一番のツッコミはサンプリングレートで、文章では50kS/sなのにVIは100S/sのところでした。どちらが正解ですか?

 

例えば100S/sでよければチャートで滑らかに表示するのは簡単です。

添付ファイルは電圧をタイミングループで読み取るサンプルVIを少し改造したものです。デフォルトは100S/sでチャート履歴は2048サンプルなのでグラフの時間レンジは20.48秒ですが、それぞれを変更してみてどこまで動くか試して下さい。

 

現れる異常振動の周波数によってサンプリングレートの目安が決まると思います。異常信号の種類によってはフィルタを通してからDAQに入れることで、低いサンプリングレートでもカバーできるかもしれません。

0 件の賞賛
メッセージ6/9
346件の閲覧回数

失礼しました。50KS/sが正しいです。

サンプルVI、ありがとうございます!色々と変更して試してみます。

 

>現れる異常振動の周波数によってサンプリングレートの目安が決まると思います。異常信号の種類によってはフィルタを通してからDAQに入れることで、>低いサンプリングレートでもカバーできるかもしれません。

 

なるほど。そういう工夫も必要ですね。こちらもありがとうございます。

0 件の賞賛
メッセージ7/9
340件の閲覧回数
解決策
トピック作成者kitagawa0が受理

50kS/sですね。それだと先の添付VIでは対応できないので、もう一つ別のVIを添付します。

こちらは50kS/sで5000サンプル単位で読み取るので更新周期は0.1sです。

チャート履歴を1Mサンプルにしましたが普通に動きます。前の投稿で巨大な循環バッファ云々と書きましたが、私の認識が古かったようで失礼しました。

 

追記:それでもチャートのスクロールが始まると書き換え頻度が落ちます。LabVIEWはデータの欠損を防ぐために表示の更新を自動的に間引きます。希望の更新頻度によってはチャート履歴の長さも調整してみてください。

0 件の賞賛
メッセージ8/9
331件の閲覧回数

ありがとうございます!

添付のサンプルVIで最適なパラメータを探ってみます。

大変、助かりました。

0 件の賞賛
メッセージ9/9
323件の閲覧回数