NI製品ディスカッション

cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

動作が異様に遅い

お世話になります。

添付のファイルの動作が異様に遅く、棒グラフの作図やブールスイッチによるチャンネルの選択において数秒以上の時間を要しております。

ご教授賜りますと幸甚です。

0 Kudos
Message 1 of 16
(637 Views)

happynob様

平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の小出と申します。
ご質問頂きましたVIの動作が遅い件は私が担当させていただきますので宜しくお願いします。

 

VIの内容を拝見しました。
今回の目標はループの速度を早めることと理解していおります。
つきましてはどこの処理に時間がかかるかを確認し、
必要に応じて問題の処理を別ループで行うことで対処が可能と存じます。

まず、ExpressVIの「計測ファイルに書き込む」やプロットヘルパ.viから3Dのグラフを削除、またはダイアグラム無効ストラクチャで囲み、
一連のDLL処理だけでどのくらいループの速度が改善されるか確認いただけますでしょうか。

もしこの処理だけで十分に速度が改善された場合は、
今除外した処理を別ループで実行することで問題は解決するかと存じます。

しかし、DLLの処理だけで時間がかかっている場合はすぐの改善は難しいかと思われます。
DLLの配布元にご相談を頂く必要があるためです。

また、ループが遅い理由がエラー配線がされておらず、
エラーが内部的に発生していることも考えられます。
配線をして頂き、「シンプルエラー処理.vi」を配置して頂けますでしょうか。


お忙しいかとは存じますが、上記内容をご確認の上、再度ご連絡願います。
宜しくお願い申し上げます。


+---+---+---+---+---+---+---+---+---+---+---+---+
日本ナショナルインスツルメンツ株式会社
技術部 小出 健治(Kenji Koide)

弊社のサポートに関する情報は以下のサイトをご覧ください。
http://www.ni.com/support/ja
技術データベース: http://www.ni.com/kb
お問い合わせフリーダイヤル  0120-527196
+---+---+---+---+---+---+---+---+---+---+---+---+

Message 2 of 16
(588 Views)
happynob様

平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の小出でございます.

先日ご質問頂きましたVIの動作が遅い件につきまして、その後の経過はいかがでしょうか。

もし差し上げた案内に不足や不備がございましたらご指摘ください。

 

状況を確認し引き続きご案内致します。

何卒よろしくお願い申し上げます。


+---+---+---+---+---+---+---+---+---+---+---+---+
日本ナショナルインスツルメンツ株式会社
技術部 小出 健治(Kenji Koide)

弊社のサポートに関する情報は以下のサイトをご覧ください。
http://www.ni.com/support/ja
技術データベース: http://www.ni.com/kb
お問い合わせフリーダイヤル  0120-527196
+---+---+---+---+---+---+---+---+---+---+---+---+

0 Kudos
Message 3 of 16
(571 Views)

日本NIの上野です。

 

添付いただいたVIは、Pico Technology社が提供している下記のサンプルを利用したものかと思いますが、サンプルのまま動作させた場合も遅いのでしたらDLLやお使いのデバイスドライバの問題かと思います。

 

picotech/picosdk-ni-labview-examples

 

このサンプルは、実行中に任意のタイミングでチャンネルの設定をできることを示すために毎ループでSetupのDLLが実行されているようです。

もしデータ収集中に設定を変更しないのでしたら、収集ループに入る前に設定をおこなうようにすれば、DLL呼び出し回数が激減しますので改善する可能性があります。

 

また、波形チャートに表示するチャンネルを絞りたいという目的だけにチャンネルのブールボタンをご利用で、収集や保存は全チャンネルおこなっても問題ないのでしたら、チャート凡例を右クリックして「プロット表示のチェックボックス」を使用するか、波形チャートに渡すデータを絞るように配列処理をすることも考えられます。

 

もう一つの速度低下を起こす原因として、計測ファイルに書き込むExpress VIがあります。今回のようにWhileループ内に配置してロギングをおこなう用途には向きません。理由は、保存処理時にファイルを開く処理と閉じる処理に時間がかかるからです。この簡単な比較例を添付しております。

Whileループ内には、ファイルを書き込む関数のみを実行させて、開く処理や閉じる処理はループ外でおこなうと改善します。

 

以上、少しでも参考になると幸いです。

 

 

 

 

Message 4 of 16
(555 Views)

お世話になっております。

雑事に追われて返信が遅くなり、お詫び申し上げます。

ご慧眼の通、3Dグラフストラクチャーをダイアグラム無効ストラクチャで囲んだところ200msecのサイクルで正しく作動いたしました。

そこで、Forルーブやケースストラクチャー並びに両者の組み合わせ等で試したのですがやはり所期の200msecでは動きませんでした。

のちに頂きました、次善の案を試してみます。

取り急ぎ御礼まで。

0 Kudos
Message 5 of 16
(524 Views)

原因は、3D棒グラフの部分だったのですね。

 

このグラフでは毎回8点のデータを表示するという処理で合ってますでしょうか?

デバイスがないため問題再現することができず、ダミーの数値で確認しておりましたが、データ数による処理遅延が起こっているようには見えませんでしたので、気づきませんでした。

 

ちなみに3D棒グラフにデータを渡す直前のケースストラクチャ内にシンプルエラー処理関数が配置されておりますが、毎回実行させると遅くなりますので、エラー配線をWhileループの停止条件にOr関数で追加して、ループ外でエラー処理関数を1度だけ使うようにしたほうが速いと思います。

0 Kudos
Message 6 of 16
(520 Views)

お世話になっております。

ご指導の下、いろいろいじってみたところ、添付のファイルで何とか所期の動作が得られました。しかしながら、データをファイルに書き込まない状態にすると、途端に言うことを聞いてくれなくなり、極端に遅くなります。

理解に苦しんでおります。

 

 

0 Kudos
Message 7 of 16
(510 Views)

申し訳ないですが、現段階での「データをファイルに書き込まない状態」というのはどういうことでしょうか?

新しい添付ファイルがあるのでしたら、お手数ですが再投稿で添付いただけると助かります。

0 Kudos
Message 8 of 16
(506 Views)

大変失礼しました。

ファイル添付忘れです。

 

0 Kudos
Message 9 of 16
(503 Views)
Highlighted

ファイルに書き込まない状態というのは、計測ファイルに書き込むExpress VIの有効入力端子にFalseを渡して無効化するという意味ですしょうか。

 

3D棒グラフを表示する部分にWhileループがあると、そのループを停止ボタンで止めないと外側のWhileループは回らないと思います。

 

シンプルなサンプルを添付いたしますので、実際に1ループにかかる時間を各Whileループで計測してみて、どの部分が遅いかを確認していただけますか?

 

Message 10 of 16
(493 Views)