NI製品ディスカッション

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

LabVIEW実行後に少し時間が経つとフリーズのような状態になる現象について

長文で失礼しますが、表題の件について原因・解決策を教えていただけますと幸いです。

 

複数の計測器をノートPCに接続して、PC内のLabVIEWを用いて計測器を制御するような自作VIを実行しました。

最初はきちんと動作するのですが、数十分ほど時間が経つとフリーズした感じになって動作しなくなります。その際にエラー表示はでておらず、停止ボタンを押しても止まらない状態になってしまいます。

 

現在は出先のためVIの添付はできないのですが環境は下記の通りです。

・計測器は負荷抵抗装置で、電気的なモジュールに接続して電流・電圧などを計測する機器です

・負荷抵抗装置は2つ使用。別型番のものでそれぞれの計測設定・計測実行をする制御をLabVIEWで実施。

・計測器からPCへはRS232-USBケーブルで接続。ただし、PCのポート数が少ないためUSBハブを用いて1つのポートから計測器2つを接続。

・LabVIEWでは、2つの計測器の設定(測定モードなど)⇒(Whileループ突入)⇒計測器でデータ取得⇒取得データを別PCへHTTP送信⇒(Whileループ終了)

・Whileループ内ではms待機関数を設置。これをいじることで測定間隔の設定としています。1秒、5秒、10秒と値を大きくしていくと実行開始からフリーズするまでの時間が長くなっていく感じがします。(10秒の際は数時間ほど持続できました)

 

 

 

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

こんにちは

今の情報から特定することは難しいですが一般的な注意点を上げておきますので確認してみてください。

LabVIEWが「フリーズしたような状態」になるのは下記のケースが多いです。

①計測器などハードウェアからのデータ待ち中→タイムアウトの設定時間を見直してください暫定的に短くするのも手です

②取得データのPCへの保存待機中→タイムアウトの設定時間を見直してください暫定的に短くするのも手です。保存先が見えない、データがいっぱいになっていませんか

③PCがスリープに移行しようとしている→スリープやバッテリー保護などの電源管理を見直してください。ACアダプタを確認してください。

④処理手順が間違っている、もしくは厳密に定義できていない→例:読み込むデータが準備出来ていないのにデータ読み込みを実行している、もしくは処理や状況によって手順の入れ替わりが発生するケースがあるなど

気になったのは②に関連してHTTPで転送している点です。ネットワークが見えていない、ネットワークには入れていないなどないでしょうか

いずれにしてもエラークラスタを上手に利用してフリーズの直前がどうだったか各処理ごとのエラー情報を伝達、表示できるようにすると原因がわかるかもしれません。

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

Tas9 さんこんにちは。

 

大きな配列の連結や文字列連結を行うとパフォーマンスが下がることがあります。
下記ツールを使いメモリ使用量など確認してみて下さい。

 

「LabVIEW VIで実行時間とメモリ使用量を監視する」
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019LT1SAM&l=ja-JP

 

メモリ使用量の多いサブviに「メモリ解放要求(Request Deallocation)関数」を置くと良いでしょう。

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

返信が大変遅くなり申し訳ございません。

アドバイスありがとうございます。こちらで色々と試して少しの進展がありましたので、元投稿に返信の形で後ほど共有します。

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

スレッドを立てさせていただいてから、

こちらで試して分かったことを以下に書きます。

 

・測定間隔を30秒以上にした場合、フリーズした際にエラー表示されるようになりました

・エラー箇所はVIの「Scan From String」でError 85またはError 1が発生(ただし何回か試すと、別の箇所にも置いている同じVIでも発生することを確認)

・次に、ケースストラクチャを使用して、エラー発生時に上記VIのエラーをクリアしつつそのときの文字列をアレイに格納するように実施

・結果として、フリーズはしなくなったもののエラー発生時に測定器の駆動設定の一部が解除される(具体的にはON→OFF)ことが判明。また、記録された文字列を確認すると、0または空白。詳しいことは解析中です。

 

 

Tas9_0-1745573812099.png

 

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

Scan From Stringのエラーでは自動エラー処理が動くだけでフリーズはしません。
おそらく機器とのI/Oでトラブルが起こっていると思います。

 

VISA関数でエラーが起こったときに通知したりVIを止めるなどの処理はしていますか?

写真ではエラーワイヤがシフトレジスタになっていないようなので、処理していないとエラーの無限ループに陥ります。

 

Scan From Stringの結果を使ってコマンドを作り機器に送ったりしていませんか?
VISA Readのエラーで間違ったコマンドが送られ機器が変な動きをしたり、応答が来なくなってさらにタイムアウトが起こってVIが応答しないとか・・

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